home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / programming / gui / guienv376_up1.lha / GUIEnvironment / OberonA / Source / 3rdParty / GUIEnv.mod < prev    next >
Encoding:
Text File  |  1995-02-05  |  20.3 KB  |  639 lines

  1. (****************************************************************************
  2.  
  3. $RCSfile: GUIEnv.mod $
  4.  
  5. $Revision: 1.8 $
  6.     $Date: 1994/12/18 15:16:03 $
  7.  
  8.     Oberon-2 interface module for GUIEnvironment
  9.  
  10.     Oberon-A Oberon-2 Compiler V5.18 (Release 1.5)
  11.  
  12.   Copyright © 1994, Carsten Ziegeler
  13.                     Augustin-Wibbelt-Str.7, 33106 Paderborn, Germany
  14.  
  15.  
  16. ****************************************************************************)
  17.  
  18. <* STANDARD- *> <* INITIALISE- *> <* MAIN- *>
  19. <*$ CaseChk-  IndexChk- LongVars+ NilChk-  *>
  20. <*$ RangeChk- StackChk- TypeChk-  OvflChk- *>
  21.  
  22. MODULE [2] GUIEnv;
  23.  
  24.  
  25. IMPORT K := Kernel,
  26.        E := Exec,
  27.        G := Graphics,
  28.        I := Intuition,
  29.        U := Utility;
  30.  
  31.  
  32. CONST
  33.  
  34.   Name* = "guienv.library";     (* Library name *)
  35.   Version* = 37;                (* min version / Revision 2 !*)
  36.  
  37.  
  38. (* ======================================================================= *)
  39. (*                               Error codes                               *)
  40. (* ======================================================================= *)
  41.  
  42. CONST
  43.  
  44.   geDone             *=   0;   (* no error, everything done *)
  45.   geMemoryErr        *=   1;   (* not enough memory *)
  46.   geWindowErr        *=   2;   (* no window specified *)
  47.   geVisualInfoErr    *=   3;   (* couldn't get VisualInfo *)
  48.   geDrawInfoErr      *=   4;   (* couldn't get DrawInfo *)
  49.   geGuideErr         *=  50;   (* couldn't display AmigaGuide node *)
  50.  
  51.   geGadContextErr    *= 100;   (* GadTools CreateContext failed *)
  52.   geGadCreateErr     *= 101;   (* error calling CreateGadget/NewObject *)
  53.   geGadTooManyErr    *= 102;   (* more than 256 gadgets *)
  54.   geGadKeyTwiceErr   *= 103;   (* same key equivalent for two gadgets *)
  55.   geGadUnknownKind   *= 104;   (* unknown gadget kind *)
  56.   geGadChainErr      *= 105;   (* ChainStart/ChainEnd missing *)
  57.   geGadHookErr       *= 106;   (* Hook function failed *)
  58.  
  59.   geMenuCreateErr    *= 200;   (* error calling CreateMenu *)
  60.   geMenuStripErr     *= 201;   (* error calling SetMenuStrip *)
  61.   geMenuLayoutErr    *= 202;   (* error calling LayoutMenus *)
  62.   geMenuTooManyErr   *= 203;   (* more than 256 menu items *)
  63.  
  64.  
  65. (* ======================================================================= *)
  66. (*                         GE Hook functions                               *)
  67. (* ======================================================================= *)
  68.  
  69. (* The GUIEnvironment hook functions:
  70.    - The hook functions are implemented as amiga callback hooks as
  71.      documented in the Utilities documentation
  72.    - Before a hook functions is called, the A4 register is set
  73.    - The A0 register points to Hook structure
  74.    - The A1/A2 register are used as stated below
  75.  
  76. *)
  77.  
  78. (* ------------------------ return values -------------------------------- *)
  79.  
  80.   gehKeyShifted  *= 512;
  81.   gehKeyUnknown  *= -1;
  82.  
  83. (* ------------------------ The hook functions --------------------------- *)
  84.  
  85. TYPE
  86.  
  87.          (* Hook function for key equivalents:
  88.  
  89.               A1      : Currently unused, set to NIL
  90.               A2      : LONGINT : The ASCII character code
  91.               RESULT  : LONGINT : gehKeyUnknown if the key is not a key
  92.                                   equivalent or the number of the gadget,
  93.                                   or the number of the gadget plus
  94.                                   gehKeyShifted !
  95.  
  96.          *)
  97.  
  98.          (* Handle message hook
  99.  
  100.               A1, A2  : Currently unused, set to NIL
  101.               RESULT  : LONGINT, handled as BOOLEAN
  102.                         Return TRUE, if GUIEnv should not work on the
  103.                         message anymore, otherwise FALSE
  104.  
  105.  
  106.             Refresh hook
  107.  
  108.               A1, A2  : Currently unused, set to NIL
  109.               RESULT  : Currently unused, set this always to 0 !
  110.  
  111.          *)
  112.  
  113.          (* Gadget event message hook
  114.  
  115.               A2      : Pointer to event gadget
  116.               A1      : Currently unused, set to NIL
  117.               RESULT  : LONGINT, handled as BOOLEAN
  118.                         If you want to wait for further messages return
  119.                         TRUE, otherwise FALSE to exit the message-loop.
  120.  
  121.  
  122.             Menu event message hook
  123.  
  124.               A2      : Pointer to event menu item (if possible)
  125.               A1      : Currently unused, set to NIL
  126.               RESULT  : LONGINT, handled as BOOLEAN
  127.                         If you want to wait for further messages return
  128.                         TRUE, otherwise FALSE to exit the message-loop.
  129.  
  130.  
  131.             Gadget creation hook
  132.  
  133.               A2      : Pointer to event gadget
  134.               A1      : Currently unused, set to NIL
  135.               RESULT  : LONGINT, handled as BOOLEAN
  136.                         If your creation hook has done his work, return
  137.                         TRUE, otherwise FALSE to stop creation !
  138.  
  139.          *)
  140.  
  141. (* ======================================================================= *)
  142. (*                               Gadgets                                   *)
  143. (* ======================================================================= *)
  144.  
  145. CONST
  146. (* ----------------------- gadget kinds ---------------------------------- *)
  147.  
  148.   gegKinds                 *=  65535; (* GUIEnv gadgets *)
  149.   gegProgressIndicatorKind *=  65536;
  150.   gegBevelboxKind          *=  65537;
  151.   gegBorderKind            *=  65538;
  152.  
  153.   gegBOOPSIKinds           *= 131071; (* BOOPSI gadgets *)
  154.   gegBOOPSIPublicKind      *= 131072;
  155.   gegBOOPSIPrivateKind     *= 131073;
  156.  
  157. (* ----------------------- gadget chain flags ---------------------------- *)
  158.  
  159.   gegChainUpNext     *= 0;  (* 16 bits *)
  160.   gegChainUpPrev     *= 1;
  161.   gegChainDownNext   *= 2;
  162.   gegChainDownPrev   *= 3;
  163.  
  164.  
  165. (* ----------------------- gadget description flags ---------------------- *)
  166.  
  167. CONST
  168.   gegDistNorm    *=  0;  (* Normal distance *)
  169.   gegDistAbs     *=  1;  (* absolute distance from an object *)
  170.   gegDistRel     *=  2;  (* relative distance from an object *)
  171.   gegDistPercent *=  3;  (* percentual distance *)
  172.  
  173.   gegObjBorder   *=  0;  (* window border *)
  174.   gegObjGadget   *=  4;  (* gadget (standard is previous gadget) *)
  175.  
  176.   gegObjRight    *=  0;  (* distance from which part of the object *)
  177.   gegObjBottom   *=  0;
  178.   gegObjLeft     *= 32;
  179.   gegObjTop      *= 32;
  180.  
  181. (* ----------------------- gadget tag values ----------------------------- *)
  182.  
  183.   gegACTIVATIONUP  *=  0;
  184.   gegACTIVATIONDOWN*=  1;
  185.  
  186.  
  187.   gegALLGADGETS    *= -1;
  188.  
  189. (* ----------------------- gadget tags ----------------------------------- *)
  190.  
  191.   gegBase *= U.user + 016000H;
  192.   gegText            *= gegBase +  1;
  193.   gegFlags           *= gegBase +  2;
  194.   gegFont            *= gegBase +  3;
  195.   gegUserData        *= gegBase +  4;
  196.   gegDescription     *= gegBase +  5;
  197.   gegObjects         *= gegBase +  6;
  198.   gegGuideNode       *= gegBase +  7;
  199.   gegCatalogString   *= gegBase + 10;
  200.   gegClass           *= gegBase + 11;
  201.   gegVarAddress      *= gegBase + 12;
  202.   gegHandleInternal  *= gegBase + 13;
  203.   gegStartChain      *= gegBase + 14;
  204.   gegEndChain        *= gegBase + 15;
  205.   gegActivate        *= gegBase + 16;
  206.   gegChainActivation *= gegBase + 17;
  207.   gegStatus          *= gegBase + 19;
  208.   gegUpAHook         *= gegBase + 20;
  209.   gegDownAHook       *= gegBase + 21;
  210.   gegCreationAHook   *= gegBase + 22;
  211.  
  212.   gegPIMaxValue      *= gegBase + 50;
  213.   gegPICurrentValue  *= gegBase + 51;
  214.   gegBBRecessed      *= gegBase + 52;
  215.  
  216.   gegDisable         *= gegBase + 100;
  217.   gegEnable          *= gegBase + 101;
  218.   gegSetVar          *= gegBase + 102;
  219.   gegGetVar          *= gegBase + 103;
  220.   gegActivateUp      *= gegBase + 104;
  221.   gegActivateDown    *= gegBase + 105;
  222.  
  223.   gegAddress         *= gegBase + 200;
  224.   gegLeftEdge        *= gegBase + 201;
  225.   gegTopEdge         *= gegBase + 202;
  226.   gegWidth           *= gegBase + 203;
  227.   gegHeight          *= gegBase + 204;
  228.   gegRedraw          *= gegBase + 205;
  229.  
  230.  
  231. (* ----------------------- GUIGadgetInfo structure ------------------------ *)
  232.  
  233. TYPE
  234.  
  235.   GUIGadgetInfoPtr *= POINTER TO GUIGadgetInfo; (* gadget^.userData *)
  236.  
  237.   GUIGadgetInfo *= RECORD  (* a pointer to this structure is stored in
  238.                              gadget^.userData *)
  239.     userData - : E.APTR;    (* use this for own user data *)
  240.     kind     - : LONGINT;   (* gadget kind *)
  241.  
  242.     gadgetClass - : E.APTR; (* The BOOPSI Gadget Class *)
  243.  
  244.     functionUp   - : U.HookPtr;
  245.     functionDown - : U.HookPtr;
  246.  
  247.     guideNode- : E.LSTRPTR;  (* The AmigaGuide node for this gadget *)
  248.  
  249.   END;
  250.  
  251.  
  252. (* ======================================================================= *)
  253. (*                             Menu Items                                  *)
  254. (* ======================================================================= *)
  255.  
  256. CONST
  257. (* ---------------------- menu item tags --------------------------------- *)
  258.  
  259.   gemBase *= U.user + 018000H;
  260.   gemUserData        *= gemBase + 1;
  261.   gemGuideNode       *= gemBase + 3;
  262.   gemCatalogString   *= gemBase + 4;
  263.   gemShortCut        *= gemBase + 5;
  264.   gemFlags           *= gemBase + 6;
  265.   gemMutualExclude   *= gemBase + 7;
  266.   gemAHook           *= gemBase + 8;
  267.  
  268. (* ---------------------- GUIMenuInfo structure -------------------------- *)
  269.  
  270. TYPE
  271.  
  272.   GUIMenuInfoPtr *= POINTER TO GUIMenuInfo; (* menu^.userData *)
  273.  
  274.   GUIMenuInfo *= RECORD    (* a pointer to this structure is stored in
  275.                               menuitem^.userData *)
  276.     userData - : E.APTR;     (* use this for own user data *)
  277.  
  278.     function - : U.HookPtr;
  279.  
  280.     guideNode- : E.LSTRPTR;   (* The AmigaGuide node for this menuitem *)
  281.  
  282.   END;
  283.  
  284.  
  285.  
  286. (* ======================================================================= *)
  287. (*                            GUIInfo                                      *)
  288. (* ======================================================================= *)
  289.  
  290. (* -------------------------- GUIInfo structure -------------------------- *)
  291.  
  292.   GUIInfoPtr *= POINTER TO GUIInfo;
  293.   GUIInfo *= RECORD
  294.     window     - : I.WindowPtr;         (* pointer to the used Window *)
  295.     screen     - : I.ScreenPtr;         (* pointer to window's screen *)
  296.     visualInfo - : E.APTR;              (* pointer to screen's VisualInfo *)
  297.     drawInfo   - : I.DrawInfoPtr;       (* pointer to a copy of DrawInfo *)
  298.     localeInfo - : E.APTR;              (* pointer to locale environment *)
  299.  
  300.     menuFont - : G.TextAttrPtr;         (* pointer to menu-font. Is set to
  301.                                            screens font. *)
  302.  
  303.     creationWidth  - : INTEGER;       (* window inner width *)
  304.     creationHeight - : INTEGER;       (* window inner height *)
  305.  
  306.     msgPort  - : E.MsgPortPtr;        (* Pointer to IDCMP-Port *)
  307.  
  308.     intuiMsg - : I.IntuiMessagePtr;   (* Points to a copy of the
  309.                                          FULL IntuiMessage even if it
  310.                                          is extended (OS3.0+) *)
  311.  
  312.  (* Additional information about the message: *)
  313.     msgClass - : SET;
  314.  
  315.     msgCode     - : INTEGER;
  316.     msgBoolCode - : BOOLEAN;
  317.     msgCharCode - : CHAR;
  318.  
  319.     msgGadget  - : I.GadgetPtr;
  320.  
  321.     msgItemAdr - : I.MenuItemPtr;
  322.  
  323.     msgGadNbr  - : INTEGER;
  324.  
  325.     msgMenuNum - : INTEGER;
  326.     msgItemNum - : INTEGER;
  327.     msgSubNum  - : INTEGER;
  328.  
  329.  (* Some user stuff: *)
  330.     userData      - : E.APTR;         (* for own data *)
  331.     compilerReg   - : E.APTR;         (* for compiler data reg *)
  332.  
  333.     gadgetGuide   - : E.APTR;         (* name & path for the guide *)
  334.     menuGuide     - : E.APTR;         (* name & path for the guide *)
  335.  
  336.     catalogInfo   - : E.APTR;         (* points to the catalog given
  337.                                          with the GUI_CatalogFile tag *)
  338.     gadgetCatalogString - : LONGINT;  (* The number of the next string *)
  339.     menuCatalogString   - : LONGINT;  (* in the catalog *)
  340.  
  341.     vanKeyHook    - : U.HookPtr;        (* Hook functions *)
  342.     handleMsgHook - : U.HookPtr;
  343.     refreshHook   - : U.HookPtr;
  344.  
  345.     hookInterface - : E.APTR;
  346.  
  347.     creationFont  - : G.TextAttrPtr;  (* GUIDefinition: text/gadget font *)
  348.     textFont      - : G.TextAttrPtr;  (* Font for gadgets and text *)
  349.  
  350.   END;
  351.  
  352. CONST
  353.  
  354. (* --------------------------- GUI Tags ------------------------------------ *)
  355.  
  356.   guiBase *= U.user + 015000H;
  357.   guiTextFont            *= guiBase +  1;
  358.   guiMenuFont            *= guiBase +  2;
  359.   guiCreateError         *= guiBase +  4;
  360.   guiUserData            *= guiBase +  5;
  361.   guiCompilerReg         *= guiBase +  6;
  362.   guiGadgetGuide         *= guiBase +  8;
  363.   guiMenuGuide           *= guiBase +  9;
  364.   guiCatalogFile         *= guiBase + 10;
  365.   guiGadgetCatalogOffset *= guiBase + 11;
  366.   guiMenuCatalogOffset   *= guiBase + 12;
  367.   guiCreationWidth       *= guiBase + 13;
  368.   guiCreationHeight      *= guiBase + 14;
  369.   guiMsgPort             *= guiBase + 16;
  370.   guiRefreshAHook        *= guiBase + 17;
  371.   guiHandleMsgAHook      *= guiBase + 18;
  372.   guiVanKeyAHook         *= guiBase + 19;
  373.   guiHookInterface       *= guiBase + 20;
  374.   guiCreationFont        *= guiBase + 21;
  375.   guiPreserveWindow      *= guiBase + 22;
  376.  
  377.   guiRemoveMenu          *= guiBase + 100;
  378.   guiRemoveGadgets       *= guiBase + 101;
  379.   guiClearWindow         *= guiBase + 102;
  380.   guiEmptyMsgPort        *= guiBase + 103;
  381.   guiDoBeep              *= guiBase + 104;
  382.   guiLock                *= guiBase + 105;  (* Requires ReqTools *)
  383.   guiUnLock              *= guiBase + 106;  (* Requires ReqTools *)
  384.  
  385.  
  386. (* -------------------- Preserve Window Flags ---------------------------- *)
  387.  
  388.   guiPWFull    *= 0;   (* Preserve the window and the min and max values *)
  389.   guiPWSize    *= 1;   (* Preserve only the window *)
  390.   guiPWMinMax  *= 2;   (* Preserve only the min and max values *)
  391.  
  392.  
  393. (* ======================================================================= *)
  394. (*                             Requester                                   *)
  395. (* ======================================================================= *)
  396.  
  397. (* -------------------- Requester kinds ---------------------------------- *)
  398.  
  399.   gerGeneralKind *= 0;
  400.   gerOKKind      *= 1;
  401.   gerDoItKind    *= 2;
  402.   gerYNCKind     *= 3;
  403.   gerFileKind    *= 4;
  404.   gerDirKind     *= 5;
  405.  
  406.   gerRTKind      *= 100;  (* Requires ReqTools *)
  407.   gerRTOKKind    *= 101;
  408.   gerRTDoItKind  *= 102;
  409.   gerRTYNCKind   *= 103;
  410.   gerRTFileKind  *= 104;
  411.   gerRTDirKind   *= 105;
  412.  
  413. (* --------------------- Return values ----------------------------------- *)
  414.  
  415.   gerCancel *= 0;  (* gerYNCKind / gerDoItKind / gerOKKind /
  416.                      gerFileKind / gerDirKind*)
  417.   gerYes    *= 1;  (* gerYNCKind / gerDoItKind / gerFileKind / gerDirKind *)
  418.   gerNo     *= 2;  (* gerYNCKind *)
  419.  
  420. (* --------------------- Requester tags ---------------------------------- *)
  421.  
  422.   gerBase *= U.user + 017000H;
  423.   gerGadgets        *= gerBase +  1;
  424.   gerArgs           *= gerBase +  2;
  425.   gerFlags          *= gerBase +  3;
  426.   gerTitle          *= gerBase +  4;
  427.   gerIDCMP          *= gerBase +  5;
  428.   gerPattern        *= gerBase +  6;
  429.   gerNameBuffer     *= gerBase +  7;
  430.   gerFileBuffer     *= gerBase +  8;
  431.   gerDirBuffer      *= gerBase +  9;
  432.   gerSave           *= gerBase + 10;
  433.   gerLocaleID       *= gerBase + 11;
  434.  
  435. (* ======================================================================= *)
  436. (*                              Windows                                    *)
  437. (* ======================================================================= *)
  438.  
  439. (* ---------------------- window tags ------------------------------------ *)
  440.  
  441.   gewBase *= U.user + 019000H;
  442.   gewOuterSize *= gewBase + 1;
  443.  
  444.  
  445. (* --- Library Base variable -------------------------------------------- *)
  446.  
  447. TYPE GUIEnvBase * = E.Library;
  448.      GUIEnvBasePtr * = POINTER TO GUIEnvBase;
  449.  
  450. VAR
  451.  
  452.   base *  : GUIEnvBasePtr;
  453.  
  454.  
  455. (* --- Library Functions ------------------------------------------------ *)
  456.  
  457.   PROCEDURE OpenGUIFont * [base,-30]
  458.           (name[8] : E.LSTRPTR;
  459.            size[0] : INTEGER;
  460.            font[9] : G.TextAttrPtr) : G.TextFontPtr;
  461.  
  462.   PROCEDURE CloseGUIFont * [base,-36]
  463.           (font[8] : G.TextFontPtr);
  464.  
  465.   PROCEDURE OpenGUIScreenA * [base,-42]
  466.           (id[0] : LONGINT;
  467.            depth[1]: INTEGER;
  468.            name[8] : E.LSTRPTR;
  469.            tags[9] : ARRAY OF U.TagItem) : I.ScreenPtr;
  470.  
  471.   PROCEDURE OpenGUIScreen * [base,-42]
  472.           (id[0] : LONGINT;
  473.            depth[1]: INTEGER;
  474.            name[8] : E.LSTRPTR;
  475.            tags[9].. : U.Tag) : I.ScreenPtr;
  476.  
  477.   PROCEDURE OpenGUIWindowA * [base,-48]
  478.           (left[0] : INTEGER;
  479.            top[1]  : INTEGER;
  480.            width[2]  : INTEGER;
  481.            height[3] : INTEGER;
  482.            name[8] : E.LSTRPTR;
  483.            idcmpFlags[4]  : SET;
  484.            windowFlags[5] : SET;
  485.            screen[9] : I.ScreenPtr;
  486.            tags[10]  : ARRAY OF U.TagItem) : I.WindowPtr;
  487.  
  488.   PROCEDURE OpenGUIWindow * [base,-48]
  489.           (left[0] : INTEGER;
  490.            top[1]  : INTEGER;
  491.            width[2]  : INTEGER;
  492.            height[3] : INTEGER;
  493.            name[8] : E.LSTRPTR;
  494.            idcmpFlags[4]  : SET;
  495.            windowFlags[5] : SET;
  496.            screen[9] : I.ScreenPtr;
  497.            tags[10].. : U.Tag) : I.WindowPtr;
  498.  
  499.   PROCEDURE CloseGUIWindow * [base,-54]
  500.           (window[8] : I.WindowPtr);
  501.  
  502.   PROCEDURE CloseGUIScreen * [base,-60]
  503.           (screen[8] : I.ScreenPtr);
  504.  
  505.   PROCEDURE CreateGUIInfoA * [base,-66]
  506.           (window[8] : I.WindowPtr;
  507.            tags[9] : ARRAY OF U.TagItem) : GUIInfoPtr;
  508.  
  509.   PROCEDURE CreateGUIInfo * [base,-66]
  510.           (window[8] : I.WindowPtr;
  511.            tags[9].. : U.Tag) : GUIInfoPtr;
  512.  
  513.   PROCEDURE FreeGUIInfo * [base,-72]
  514.           (gui[8] : GUIInfoPtr);
  515.  
  516.   PROCEDURE DrawGUIA * [base,-78]
  517.           (gui[8] : GUIInfoPtr;
  518.            tags[9]: ARRAY OF U.TagItem) : INTEGER;
  519.  
  520.   PROCEDURE DrawGUI * [base,-78]
  521.           (gui[8] : GUIInfoPtr;
  522.            tags[9]..: U.Tag) : INTEGER;
  523.  
  524.   PROCEDURE ChangeGUIA * [base,-84]
  525.           (gui[8]  : GUIInfoPtr;
  526.            tags[9] : ARRAY OF U.TagItem) : INTEGER;
  527.  
  528.   PROCEDURE ChangeGUI * [base,-84]
  529.           (gui[8]  : GUIInfoPtr;
  530.            tags[9].. : U.Tag) : INTEGER;
  531.  
  532.   PROCEDURE CreateGUIGadgetA * [base,-90]
  533.           (gui[8] : GUIInfoPtr;
  534.            left[0] : INTEGER;
  535.            top[1]  : INTEGER;
  536.            width[2]  : INTEGER;
  537.            height[3] : INTEGER;
  538.            kind[4] : LONGINT;
  539.            tags[9] : ARRAY OF U.TagItem);
  540.  
  541.   PROCEDURE CreateGUIGadget * [base,-90]
  542.           (gui[8] : GUIInfoPtr;
  543.            left[0] : INTEGER;
  544.            top[1]  : INTEGER;
  545.            width[2]  : INTEGER;
  546.            height[3] : INTEGER;
  547.            kind[4] : LONGINT;
  548.            tags[9].. : U.Tag);
  549.  
  550.   PROCEDURE CreateGUIMenuEntryA * [base,-96]
  551.           (gui[8]  : GUIInfoPtr;
  552.            type[0] : SHORTINT;
  553.            text[9] : E.LSTRPTR;
  554.            tags[10] : ARRAY OF U.TagItem);
  555.  
  556.   PROCEDURE CreateGUIMenuEntry * [base,-96]
  557.           (gui[8]  : GUIInfoPtr;
  558.            type[0] : SHORTINT;
  559.            text[9] : E.LSTRPTR;
  560.            tags[10].. : U.Tag);
  561.  
  562.   PROCEDURE WaitGUIMsg * [base,-102]
  563.           (gui[8] : GUIInfoPtr);
  564.  
  565.   PROCEDURE GetGUIMsg * [base,-108]
  566.           (gui[8] : GUIInfoPtr) : BOOLEAN;
  567.  
  568.  
  569.   PROCEDURE SetGUIGadgetA * [base,-114]
  570.           (gui[8] : GUIInfoPtr;
  571.            nbr[0] : INTEGER;
  572.            tags[9]: ARRAY OF U.TagItem);
  573.  
  574.   PROCEDURE SetGUIGadget * [base,-114]
  575.           (gui[8] : GUIInfoPtr;
  576.            nbr[0] : INTEGER;
  577.            tags[9]..: U.Tag);
  578.  
  579.   PROCEDURE GetGUIGadget * [base,-120]
  580.           (gui[8] : GUIInfoPtr;
  581.            nbr[0] : INTEGER;
  582.            attr[1]: LONGINT) : LONGINT;
  583.  
  584.   PROCEDURE GUIGadgetActionA * [base,-126]
  585.           (gui[8] : GUIInfoPtr;
  586.            tags[9]: ARRAY OF U.TagItem);
  587.  
  588.   PROCEDURE GUIGadgetAction * [base,-126]
  589.           (gui[8] : GUIInfoPtr;
  590.            tags[9]..: U.Tag);
  591.  
  592.   PROCEDURE GUIRequestA * [base,-132]
  593.           (gui[8] : GUIInfoPtr;
  594.            text[9] : E.LSTRPTR;
  595.            kind[0] : LONGINT;
  596.            tags[10] : ARRAY OF U.TagItem) : LONGINT;
  597.  
  598.   PROCEDURE GUIRequest * [base,-132]
  599.           (gui[8] : GUIInfoPtr;
  600.            text[9] : E.LSTRPTR;
  601.            kind[0] : LONGINT;
  602.            tags[10].. : U.Tag) : LONGINT;
  603.  
  604.   PROCEDURE ShowGuideNodeA * [base,-138]
  605.           (gui[8]   : GUIInfoPtr;
  606.            guide[9] : E.LSTRPTR;
  607.            node[10] : E.LSTRPTR;
  608.            tags[11] : ARRAY OF U.TagItem) : INTEGER;
  609.  
  610.   PROCEDURE ShowGuideNode * [base,-138]
  611.           (gui[8]   : GUIInfoPtr;
  612.            guide[9] : E.LSTRPTR;
  613.            node[10] : E.LSTRPTR;
  614.            tags[11].. : U.Tag) : INTEGER;
  615.  
  616.   PROCEDURE GetCatStr * [base,-144]
  617.           (gui[8] : GUIInfoPtr;
  618.            str[0] : LONGINT;
  619.            def[9] : E.LSTRPTR) : E.LSTRPTR;
  620.  
  621.   PROCEDURE GetLocStr * [base,-150]
  622.           (gui[8] : GUIInfoPtr;
  623.            str[0] : LONGINT;
  624.            def[9] : E.LSTRPTR) : E.LSTRPTR;
  625.  
  626.  
  627.  
  628. <*$ LongVars- *>
  629.  
  630. PROCEDURE* [0] CloseLib (VAR rc : LONGINT);
  631. BEGIN (* CloseLib *)
  632.   IF base # NIL THEN E.CloseLibrary (base) END
  633. END CloseLib;
  634.  
  635. BEGIN (* GUIEnv *)
  636.   base := E.OpenLibrary(Name, Version);
  637.   IF base # NIL THEN K.SetCleanup(CloseLib) END;
  638. END GUIEnv.
  639.