home *** CD-ROM | disk | FTP | other *** search
Modula Definition | 1993-10-23 | 5.5 KB | 170 lines |
- DEFINITION MODULE Application; (* Hans Endl 25. 9. 86
- 4. 3. 87 *)
- FROM SYSTEM IMPORT ADDRESS;
-
- IMPORT GEMVDIbase;
-
-
- CONST
- maxlevel = 8;
-
- TYPE
- pipetype = (MenuMessage, WindowMessage);
- messagetype = RECORD
- message: INTEGER;
- AppID: INTEGER;
- length: INTEGER;
- CASE : pipetype OF
- MenuMessage: menu, item: INTEGER |
- WindowMessage: handle, x, y, w, h: INTEGER
- END
- END;
-
-
- AppEntryType = RECORD
- rscaddr: ADDRESS;
- desktree: ADDRESS;
- menutree: ADDRESS;
- res1: ADDRESS;
- res2: ADDRESS;
- END;
-
- AppListType = ARRAY [0..maxlevel] OF AppEntryType;
-
-
- VAR
- Appl: INTEGER; (* Applikationsnummer *)
-
- applist: AppListType; (* Liste der verschacht. App. *)
-
- applevel: INTEGER; (* Zähler für verschacht. Ap. *)
-
- VDIHandle: INTEGER; (* Nummer des Gerätekanals *)
-
- DeskTree: ADDRESS; (* Adresse des akt. Desktops *)
-
- MenuTree: ADDRESS; (* Adresse des akt. Menübaums *)
-
- Colour: BOOLEAN; (* Flag für Farbmonitor *)
-
- workOut: GEMVDIbase.VDIWorkOutType; (* Parameter der Workstation *)
-
- WidthChar, (* Breite eines Zeichens *)
- HeightChar, (* Höhe eines Zeichens *)
- WidthFont, (* Breite eines Zeichenfeldes *)
- HeightFont: INTEGER; (* Höhe eines Zeichenfeldes *)
-
- deskx,
- desky,
- deskw,
- deskh: INTEGER; (* Koordinaten des Desktop *)
- maxX, maxY: INTEGER; (* Bildschirmformat (Raster) *)
-
-
-
-
- (* ------------------------------------------------------------------- *)
-
-
- PROCEDURE CheckItem (item: INTEGER; check: BOOLEAN);
-
- (* item: Menüeintrag, der mit einem Häkchen versehen werden soll
- check: TRUE: Häkchen zeichnen, FALSE: Häkchen löschen
- *)
-
-
- PROCEDURE EnableItem (item: INTEGER; enable: BOOLEAN);
-
- (* item: Menüeintrag, der aktiviert oder deaktiviert werden soll
- enable: TRUE: aktivieren, FALSE: deaktivieren
- *)
-
-
- PROCEDURE ShowNormal (menu: INTEGER);
-
- (* menu: Dieser Menütitel wird wieder normal dargestellt *)
-
-
- PROCEDURE ShowMenuBar (show: BOOLEAN);
-
- (* Die Menütitelzeile wird angezeigt oder gelöscht *)
-
-
- PROCEDURE EventMessage (VAR message: messagetype);
-
- (* Es wird auf ein Menüereignis gewartet *)
-
-
- PROCEDURE Init;
-
- (*
- - "applevel" wird um eins erhöht
- Falls "applevel" gleich Null war (unterste Applikation), dann wird
- bei GEM eine Applikation angemeldet, d, h.
- - es wird eine Applikationsnummer zugeteilt
- - ein Graphik-Kanal wird eröffnet
- - eine virtuelle Workstation wird eröffnet
-
- Dabei werden die entsprechenden Werte der exportierten Variablen
- (siehe oben) belegt.
-
- W i c h t i g: Diese Prozedur muss vom Anwender am Anfang des Haupt-
- programms aufgerufen werden, wenn mit VDI oder Fenstern
- gearbeitet wird.
-
- Am Ende des Hauptprogramms muss ein korrespondierendes
- "Terminate" vorhanden sein.
-
- Beim Arbeiten mit dem dynamischen Modula-2-System ist es unschädlich,
- wenn ein geladenes Programm ein weiteres Programm lädt, in dem
- ebenfalls "Init" aufgerufen wird. Wichtig ist nur, dass jedem "Init"
- ein "Terminate" zugeordnet ist.
- *)
-
-
-
- PROCEDURE Terminate;
-
- (* Diese Prozedur muß am Ende des Programms aufgerufen werden.
- Es werden folgende Funktionen ausgeführt:
- - "applevel" wird um eins erniedrigt
- - die Menütitelzeile wird, falls vorhanden, gelöscht
- - der Speicher für die Resource-Objekte wird, falls vorhanden,
- freigegeben
- - falls verschachtelte Resourcen vorhanden sind, dann wird die
- nächsttiefere wieder aktiviert.
- Falls "Terminate" in der untersten Applikationsebene aufgerufen
- wird (applevel = 0), dann wird
- - die virtuelle Workstation geschlossen
- - die Applikation beendet
- *)
-
-
-
- PROCEDURE InitResource (deskindex, menuindex: INTEGER;
- ResourceFileName: ARRAY OF CHAR): BOOLEAN;
-
- (* deskindex: Index des neuen Desktop in der Resource-Datei
- oder -1, falls keine neues Desktop vorhanden
- menuindex: Index des Menübaums in der Resource-Datei
- oder -1, falls kein Menübaum existiert
- ResourceFileName: Name zugehörigen .RSC-Datei
- Funktionswert: TRUE, falls RSC-Datei geladen werden konnte
-
-
- W i c h t i g : Jedem "InitResource" muss ein "TerminateResource"
- zugeordnet sein, wobei Verschachtelungen möglich
- sind.
-
- Es wird die Resource-Datei geladen, falls deskindex > -1,
- ein neues Desktop bildschirmfüllend installiert und falls
- menuindex > -1, die Menuezeile aufgebaut.
-
- Dabei werden die entsprechenden Werte der exportierten Variablen
- (siehe oben) belegt, wobei die Adressen der Resource-Struktur, des
- Desktop- und/oder Menübaums in "applist" unter dem aktuellen "app-
- level" eingetragen werden.
- *)
-
- END Application.
-