home *** CD-ROM | disk | FTP | other *** search
/ Vectronix 2 / VECTRONIX2.iso / FILES_07 / ACS_PRO.LZH / ASC / DEMO_PP.PRG / DEPEND / DEPENDM.PAS < prev   
Pascal/Delphi Source File  |  1993-01-09  |  5KB  |  164 lines

  1. {
  2.     UNIT DEPENDM ab for PurePascal
  3.     (c) 1992  Stefan Bachert
  4.     PURE PASCAL Version: Michael Schlüter (@SL)
  5.     Letzte Änderung: 04.01.1993
  6. }
  7. UNIT dependm;
  8.  
  9. {$X+}
  10.  
  11. INTERFACE
  12.  
  13. USES ACS;
  14.  
  15. VAR     slavew        : AWindowPtr;                { Globale Variablen }
  16.  
  17. {$I DEPEND.I}                                    { Lade ACS-File ein }
  18.  
  19. VAR        slave_count    : INTEGER;                    { Lokale Variable }
  20.  
  21. { ----------------------------------------------------------------- }
  22. { Erzeuge Slave Fenster                                                }
  23. { ----------------------------------------------------------------- }
  24. FUNCTION slave_make(para: Pointer): AwindowPtr;
  25. BEGIN
  26.     slave_make := Awi_create (@SLAVE);                    { Erzeuge Fenster }
  27. END;
  28.  
  29. { ----------------------------------------------------------------- }
  30. { Öffne Slave Fenster                                                }
  31. { ----------------------------------------------------------------- }
  32. FUNCTION slave_open(wi: AWindowPtr) : INTEGER;
  33. BEGIN
  34.     IF slave_count > 0 THEN
  35.         slave_open := OK                        { Fenster schon offen }
  36.     ELSE
  37.         slave_open := Awi_open(wi);                { Öffne Fenster }
  38.     INC(slave_count);
  39. END;
  40.  
  41. { ----------------------------------------------------------------- }
  42. { Schlie₧e Slave Fenster                                            }
  43. { ----------------------------------------------------------------- }
  44. PROCEDURE slave_closed(wi: AWindowPtr);
  45. BEGIN
  46.     DEC(slave_count);
  47.     IF slave_count = 0 THEN                        { Fenster noch offen }
  48.     BEGIN
  49.         slave_count := 0;                        { Falls < 0 }
  50.         wi^.state := wi^.state OR AWS_TERM;        { verhindert Zeichnen d. Icons }
  51.         Awi_closed(wi);                            { Schlie₧e Fenster }
  52.         wi^.state := wi^.state AND NOT AWS_TERM;{ Flag wieder löschen }
  53.     END;
  54. END;
  55.  
  56. { ----------------------------------------------------------------- }
  57. { Service Slave Routine                                                }
  58. { ----------------------------------------------------------------- }
  59. Function slave_service (wi: AwindowPtr; task: Integer; in_out: Pointer): Boolean;
  60. VAR        root    : AWindowPtr;
  61. BEGIN
  62.     CASE task OF
  63.         AS_TERM:        IF appexit > 0 THEN
  64.                             Awi_delete(wi);        { Nun ist Schlu₧ }
  65.         AS_ACCLOSED:    BEGIN
  66.                             slave_count := 0;    { Zähler 0-setzten }
  67.                             IF wi^.icon >= 0 THEN
  68.                             BEGIN                { Nun doch Iconifiziert }
  69.                                 root := Awi_root;{ Pointer auf Rootfenster holen }
  70.                                 root^.service(root, AS_REMICON, @wi^.icon);
  71.                             END;                { Ikone freigeben }
  72.                         END
  73.         ELSE
  74.         BEGIN
  75.             slave_service := FALSE;                { task konnte nicht bearbeitet werden }
  76.             EXIT;                                { Abbrechen }
  77.         END;
  78.     END;
  79.     slave_service := TRUE;                        { task wurde bearbeitet }
  80. END;
  81.  
  82. { ----------------------------------------------------------------- }
  83. { Erzeuge Master Fenster                                            }
  84. { ----------------------------------------------------------------- }
  85. FUNCTION master_make(para: Pointer): AwindowPtr;
  86. VAR        wi        : AwindowPtr;
  87. BEGIN
  88.     wi := Awi_create (@MASTER);                    { Erzeuge Fenster }
  89.     IF wi <> NIL THEN
  90.         wi^.open(wi);                            { öffne das Fenster gleich }
  91.     master_make := wi;                            { und zurück }
  92. END;
  93.  
  94. { ----------------------------------------------------------------- }
  95. { Öffne Master Fenster                                                }
  96. { ----------------------------------------------------------------- }
  97. FUNCTION master_open(wi: AWindowPtr) : INTEGER;
  98. BEGIN
  99.     IF Awi_open(wi) = OK THEN                { Wenn das Master-Fenster geöffnet wurde }
  100.         IF slavew^.open(slavew) = FAIL THEN    { Wenn das Slave-Fenster nicht geöffnet werden konnte }
  101.         BEGIN
  102.             wi^.closed(wi);                    { Schlie₧e das Master-Fenster }
  103.             master_open := FAIL;            { Fehler }
  104.         END
  105.         ELSE
  106.             master_open := OK                { Sonst alles OK }
  107.     ELSE
  108.         master_open := FAIL;                { Fehler * konnte Masterfenster nicht öffnen }
  109. END;
  110.  
  111. { ----------------------------------------------------------------- }
  112. { Schlie₧e Master Fenster                                            }
  113. { ----------------------------------------------------------------- }
  114. PROCEDURE master_closed(wi: AWindowPtr);
  115. BEGIN
  116.     Awi_closed(wi);                            { schlie₧e Fenster }
  117.     slavew^.closed(slavew);                    { schlie₧e vielleicht Slave-Fenster }
  118. END;
  119.  
  120. { ----------------------------------------------------------------- }
  121. { Service Master Routine                                            }
  122. { ----------------------------------------------------------------- }
  123. Function master_service (wi: AwindowPtr; task: Integer; in_out: Pointer): Boolean;
  124. BEGIN
  125.     CASE task OF
  126.         AS_TERM:        Awi_delete(wi);            { Nun ist Schlu₧ }
  127.         AS_ICONIZED:    slavew^.closed(slavew)    { schlie₧e Slavefenster? }
  128.         ELSE
  129.         BEGIN
  130.             master_service := FALSE;            { task konnte nicht bearbeitet werden }
  131.             EXIT;                                { Abbrechen }
  132.         END;
  133.     END;
  134.     master_service := TRUE;                        { task wurde bearbeitet }
  135. END;
  136.  
  137. { ----------------------------------------------------------------- }
  138. { Erzeuge Desk                                                        }
  139. { ----------------------------------------------------------------- }
  140. FUNCTION make_desk(para: Pointer): AwindowPtr;
  141. BEGIN
  142.     make_desk := Awi_create(@DESK);                { Erzeuge Fenster }
  143. END;
  144.  
  145. { ----------------------------------------------------------------- }
  146. { Desk-Menu 'QUIT'                                                    }
  147. { ----------------------------------------------------------------- }
  148. PROCEDURE quit;
  149. BEGIN
  150.     Awi_sendall(AS_TERM, NIL);                    { Alle Fenster sollen sich schlie₧en }
  151.     Aev_quit;                                    { Programm wird beendet }
  152. END;
  153.  
  154. { ----------------------------------------------------------------- }
  155. { DESK-Menu 'NEU'                                                    }
  156. { ----------------------------------------------------------------- }
  157. PROCEDURE neu;
  158. BEGIN
  159.     MASTER.create(NIL);
  160. END;
  161.  
  162. BEGIN
  163.     slave_count := 0;                        {Zähler 0-setzten }
  164. END.