DEFINITION MODULE mtDials; FROM SYSTEM IMPORT ADDRESS; FROM MagicSys IMPORT Byte, ByteSet, sWORD, sINTEGER, sCARDINAL, sBITSET, lWORD, lINTEGER, lCARDINAL, lBITSET; CONST MoveBox = 17; (* Neue Objekttypen *) SpecButton = 18; SpecText = 19; FrameBox = 20; TYPE DIALOG; PROCEDURE NewDial (tree: ADDRESS; VAR dial: DIALOG): BOOLEAN; (* Liefert die zu tree passende Dialogvariable *) PROCEDURE DisposeDial (VAR dial: DIALOG); (* L”scht die Dialogvariable *) PROCEDURE ObjectType (dial: DIALOG; entry, extyp: sINTEGER); (* Setzt erweiterten Typ *) PROCEDURE InclFlag (dial: DIALOG; entry, bit: sINTEGER); PROCEDURE ExclFlag (dial: DIALOG; entry, bit: sINTEGER); (* Setzt bzw. l”scht bit in OBJECT.obFlags *) PROCEDURE InFlag (dial: DIALOG; entry, bit: sINTEGER): BOOLEAN; (* TRUE wenn bit in OBJECT.obFlags *) PROCEDURE InclState (dial: DIALOG; entry, bit: sINTEGER); PROCEDURE ExclState (dial: DIALOG; entry, bit: sINTEGER); (* Setzt bzw. l”scht Bit in OBJECT.obState *) PROCEDURE InState (dial: DIALOG; entry, bit: sINTEGER): BOOLEAN; (* TRUE wenn bit in OBJECT.obState *) PROCEDURE GetObjectString (dial: DIALOG; entry: sINTEGER; VAR str: ARRAY OF CHAR); (* Liefert den String der folgenden Objekte: * GBOXCHAR, GTEXT, GBOXTEXT, GFTEXT, GFBOXTEXT, GBUTTON, * GSTRING, GTITLE *) PROCEDURE ObjectStringAdr (dial: DIALOG; entry: sINTEGER; str: ADDRESS); (* Setzt den String der folgenden Objekte durch Austausch des entsprechenden * Pointers: GBOXCHAR, GTEXT, GBOXTEXT, GFTEXT, GFBOXTEXT, GBUTTON, * GSTRING, GTITLE *) PROCEDURE ObjectString (dial: DIALOG; entry: sINTEGER; str: ARRAY OF CHAR); (* Setzt den String der folgenden Objekte indem str direkt in die Resource * kopiert wird: GBOXCHAR, GTEXT, GBOXTEXT, GFTEXT, GFBOXTEXT, GBUTTON, * GSTRING, GTITLE * * Ist der String krzer als die maximale L„nge wird mit Blanks bis zur * maximalen L„nge aufgefllt. Dies gilt nicht fr TEDINFO-Objekte! *) CONST CSCREEN = 0; CMOUSE = 1; CPOS = 2; PROCEDURE DialCenter (dial: DIALOG; flag, x, y: sINTEGER); (* Zentriert den Dialog. * * flag = CSCREEN Dialog wird auf dem Bildschirm zentriert * flag = CMOUSE Dialog wird um die Maus zentriert * flag = CPOS Dialog wird auf die in x, y bergebene Pos gesetzt *) CONST DSTART = 0; DGROW = 1; DSHRINK = 2; DFINISH = 3; DDISABLE = 4; PROCEDURE DialForm (dial: DIALOG; flag: sINTEGER); (* wie bei FormDial, nur daž bei DSTART tats„chlich der Hintergrund gebuffert * wird und bei DFINISH wieder freigegeben wird. * * Zus„tzliches Flag DDISABLE: Der Dialog wird im "Desktop-Grau" dargestellt, * um zu verdeutlichen, daž seine Funktionen derzeit nicht zu erreichen sind. * Sinnvoll, wenn man ber einen Dialog einen anderen legt - der untere wird * grau (nur die gesetzen Pixel). Wieder normal darstellen muž derzeit ber * DialDraw gemacht werden. *) PROCEDURE DialDraw (dial: DIALOG; entry, depth: sINTEGER); (* Zeichnet den bergebenen Dialog, handling wie ObjcDraw *) PROCEDURE DialDo (dial: DIALOG; edit: sINTEGER): sINTEGER; (* form_do fr MagicDials, edit ist die Nummer des ersten EDITABLE-Objekts *) (* * Das Modul initialisiert und deinitilisiert sich jetzt selbstt„tig. * Am Programmende braucht dazu nur die Prozedur mtAppl.ApplTerm * Aufgerufen zu werden! *) CONST UseUndo = 0; PROCEDURE DialConfig (flag: sINTEGER; set: BOOLEAN); (* Setzt die Konfiguration der MagicDials. Bisher ist nur UseUndo implememtiert, * alle andern Flags werden ignoriert. Wenn UseUndo mit TRUE bergeben wird, * bricht DialDo beim drcken von UNDO den Dialog ab und returniert -1. * UseUndo ist mit TRUE voreingestellt. *) END mtDials.