DEFINITION MODULE SkakScreen; (* grænseflade modul (c) E.B.Madsen 91 DK *)

(*$ DEFINE Test:=FALSE *)
(*$ LongAlign:=TRUE StackParms:=TRUE CStrings:=TRUE LargeVars:=FALSE *)
(*$ IF Test *)
  (*$ Volatile:=FALSE StackChk:=TRUE RangeChk:=TRUE OverflowChk:=TRUE
  NilChk:=TRUE EntryClear:=TRUE CaseChk:=TRUE ReturnChk:=TRUE *)
(*$ ELSE *)
  (*$ Volatile:=TRUE StackChk:=FALSE RangeChk:=FALSE OverflowChk:=FALSE
  NilChk:=FALSE EntryClear:=FALSE CaseChk:=FALSE ReturnChk:=FALSE *)
(*$ ENDIF *)

(* Re-Compile-kæde: SkakFil, Skak *)

FROM SYSTEM IMPORT
  ADDRESS;

FROM IntuitionD IMPORT
  WindowPtr;
FROM SkakBase IMPORT
  STILLINGTYPE;

CONST
  SkakScreenDefCompilation="62";

  kHome=3DH;  kEnd =1DH;  kPgUp=3FH;  kPgDn=1FH;  kHelp=5FH;  kUp  =4CH;
  kDn  =4DH;  kRt  =4EH;  kLt  =4FH;  kUpN =3EH;  kDnN =1EH;  kRtN =2FH;
  kLtN =2DH;  kF1  =50H;  kF2  =51H;  kF3  =52H;  kF4  =53H;  kF5  =54H;
  kF6  =55H;  kF7  =56H;  kF8  =57H;  kF9  =58H;  kF0  =59H;  kCr  =44H;
  kCrN =43H;  kNumL=5AH;  kScrL=5BH;  kSyRq=5CH;  kPrSc=5DH;  kEsc =45H;

  ttWORKBENCH          = 'WORKBENCH';
  ttREQFILEREQUESTER   = 'REQFILEREQUESTER';
  ttNOSPEAK            = 'NOSPEAK';
  ttSIMPLEREFRESH      = 'SIMPLEREFRESH';
  ttINTERNATIONAL      = 'INTERNATIONAL';
  ttLONGFORMWRITE      = 'LONGFORMWRITE';
  ttNOLOCALE           = 'LOCALE';
  ttMOUTHOFF           = 'MOUTHOFF';
  ttLOTMEMON           = 'LOTMEMON';
  ttNOSPEAKTASK        = 'NOSPEAKTASK';
  ttNOAUTOPGN          = 'NOAUTOPGN';
  ttQUICK              = 'QUICK';
  ttNOFIELDPOWER       = 'NOFIELDPOWER';
  ttPGN                = 'PGN';              (* in Lates3 *)

VAR
  MOVEINFOSTRING:ARRAY[0..16] OF CHAR; (* move 		*)
  TIMEINFOSTRING:ARRAY[0..40] OF CHAR; (* clock 	*)
  VARIINFOSTRING:ARRAY[0..80] OF CHAR; (* variant 	*)

(* Mode0=Ret PGN TAGS,  Mode1=Ret Filter, *)
PROCEDURE GetTextPGN(Mode:SHORTINT):BOOLEAN;

(* List games and select from list *)
TYPE
  LL20PROC=PROCEDURE(WindowPtr):INTEGER;

PROCEDURE ListPick(LoadList:LL20PROC):BOOLEAN;

PROCEDURE Config():BOOLEAN;

PROCEDURE InitGW(VAR winptr:WindowPtr); (* lav gadgets, åben vindue, ellers NIL *)

(*  Stil(ling)      ' MKDRTSLBEmkdrtslbe','.'   *)
(*  Stil[HvisTur]   'HS'                        *)
(*  Domi(nans)      ' HS'                       *)
(*  Mund            ' ','A..Z'                  *)
(*  Sele(ct)        ' S'                        *)

PROCEDURE ReDraw(VAR Stil,Domi,Mund,Sele:STILLINGTYPE);
                (* Opdaterer skærm intelligent *)

PROCEDURE Refresh(VAR Stil,Domi,Mund,Sele:STILLINGTYPE); 
                  (* Opdaterer alle ødelagte regioner *)

PROCEDURE SetOpNed(VAR Stil,Domi,Mund,Sele:STILLINGTYPE; opad:BOOLEAN);
                  (* Flytter Ikoner Hvid/Sort op/ned og opdaterer *)

PROCEDURE GetToggle(gnr:INTEGER):BOOLEAN;
                  (* gadget toggled ? *)

PROCEDURE SetToggle(gnr:INTEGER; OnOff:BOOLEAN);
                  (* Toggle gadget, hvis nødvendigt *)

PROCEDURE SetGad(gnr:INTEGER; OnOff:BOOLEAN);
                  (* Set gadget active (unghosted) *)

PROCEDURE SetGadImage(gnr:INTEGER; select:BOOLEAN; GrafikNr:INTEGER);
                  (* Set the gadget Image, select if secondary *)

PROCEDURE GetText(txt:ADDRESS);

PROCEDURE RG(gnr:INTEGER);

PROCEDURE SavePalette;

END SkakScreen.
