home *** CD-ROM | disk | FTP | other *** search
/ World of A1200 / World_Of_A1200.iso / programs / develop / gadtoolsbox / gtxlib / oberon / gadtoolsbox.mod next >
Text File  |  1995-02-27  |  15KB  |  479 lines

  1. (* ------------------------------------------------------------------------
  2.   :Program.       GadToolsBox
  3.   :Contents.      Interface to Jan van den Baard's Library
  4.   :Author.        Kai Bolay [kai]
  5.   :Address.       Snail-Mail:              E-Mail:
  6.   :Address.       Hoffmannstraße 168       UUCP: kai@amokle.stgt.sub.org
  7.   :Address.       D-7250 Leonberg 1        FIDO: 2:2407/106.3
  8.   :History.       v1.0 [kai] 13-Feb-93 (translated from C)
  9.   :History.       v1.1 [kai] 28-Feb-93 (fixed reserved-Bug GadToolsConfig)
  10.   :History.       v1.1 [kai] 28-Feb-93 (windowFlags now LONGSET)
  11.   :History.       v1.2 [kai] 29-Feb-93 (FreeWindows now uses VAR parameter)
  12.   :History.       v1.3 [jan] 29-Mar-93 (Library version bump to 39)
  13.   :Copyright.     FD
  14.   :Language.      Oberon
  15.   :Translator.    AMIGA OBERON v3.01d
  16. ------------------------------------------------------------------------ *)
  17. MODULE GadToolsBox;
  18.  
  19. (* using..
  20. forms.h      (Release: 1.0, Revision: 38.10)
  21. prefs.h      (Release: 1.0, Revision: 38.3)
  22. gtxbase.h    (Release: 1.0, Revision: 39.1)
  23. gui.h        (Release: 1.0, Revision: 38.6)
  24. hotkey.h     (Release: 1.0, Revision: 38.5)
  25. textclass.h  (Release: 1.0, Revision: 38.5)
  26. gtx_protos.h (Release: 1.0, Revision: 38.8)
  27. gtx_lib.fd   (Release: ?.?, Revision: 38.8)
  28. *)
  29.  
  30. IMPORT
  31.   e: Exec, g: Graphics, d: Dos, I: Intuition, gt: GadTools, u: Utility,
  32.   nf: NoFragLib,
  33.   y: SYSTEM;
  34.  
  35. CONST
  36.   (* GadToolsBox FORM identifiers *)
  37.   idGXMN* = y.VAL (LONGINT, "GXMN");
  38.   idGXTX* = y.VAL (LONGINT, "GXTX");
  39.   idGXBX* = y.VAL (LONGINT, "GXBX");
  40.   idGXGA* = y.VAL (LONGINT, "GXGA");
  41.   idGXWD* = y.VAL (LONGINT, "GXWD");
  42.   idGXUI* = y.VAL (LONGINT, "GXUI");
  43.  
  44.   (* GadToolsBox chunk identifiers. *)
  45.   idMEDA* = y.VAL (LONGINT, "MEDA");
  46.   idITXT* = y.VAL (LONGINT, "ITXT");
  47.   idBBOX* = y.VAL (LONGINT, "BBOX");
  48.   idGADA* = y.VAL (LONGINT, "GADA");
  49.   idWDDA* = y.VAL (LONGINT, "WDDA");
  50.   idGGUI* = y.VAL (LONGINT, "GGUI");
  51.  
  52.   idVERS* = y.VAL (LONGINT, "VERS");
  53.  
  54.   (* Version (ID_VERS) chunk... *)
  55. TYPE
  56.   VERSIONPtr* = UNTRACED POINTER TO VERSION;
  57.   VERSION* = STRUCT
  58.     version*: INTEGER;
  59.     flags*: SET;
  60.     reserved: ARRAY 4 OF LONGINT;
  61.   END;
  62.  
  63.   (* NewMenu (ID_MEDA) chunk... *)
  64. CONST
  65.   MaxMenuTitle* = 80;
  66.   MaxMenuLabel* = 34;
  67.   MaxShortcut* = 2;
  68.  
  69.   MenuVersion* = 0;
  70. TYPE
  71.   MENUDATAPtr* =  UNTRACED POINTER TO MENUDATA;
  72.   MENUDATA* = STRUCT
  73.     newMenu*: gt.NewMenu;
  74.     title*: ARRAY MaxMenuTitle OF CHAR;
  75.     label*: ARRAY MaxMenuLabel OF CHAR;
  76.     shortCut*: ARRAY MaxShortcut OF CHAR;
  77.     flags*: SET;
  78.   END;
  79.  
  80.   (* IntuiText (ID_ITXT) chunk... *)
  81. CONST
  82.   MaxTextLength* = 80;
  83.   ITxtVersion* = 0;
  84. TYPE
  85.   ITEXTDATAPtr* = UNTRACED POINTER TO ITEXTDATA;
  86.   ITEXTDATA* = STRUCT
  87.     iText*: I.IntuiText;
  88.     text*: ARRAY MaxTextLength OF CHAR;
  89.   END;
  90.  
  91.   (* BevelBox (ID_BBOX) chunk... *)
  92. CONST
  93.   BBoxVersion* = 0;
  94. TYPE
  95.   BBOXDATAPtr* = UNTRACED POINTER TO BBOXDATA;
  96.   BBOXDATA* = STRUCT
  97.     left*: INTEGER;
  98.     top*: INTEGER;
  99.     width*: INTEGER;
  100.     height*: INTEGER;
  101.     flags*: SET;
  102.   END;
  103. CONST
  104.   (* BevelBox flag bits *)
  105.   recessed* = 0;
  106.   dropBox* = 1;
  107.  
  108.   (* NewGadget (ID_GADA) chunk... *)
  109. CONST
  110.   MaxGadgetText* = 80;
  111.   MaxGadgetLabel* = 34;
  112.  
  113.   GadgetVersion* = 0;
  114. TYPE
  115.   GADGETDATAPtr* = UNTRACED POINTER TO GADGETDATA;
  116.   GADGETDATA* = STRUCT
  117.     newGadget*: gt.NewGadget;
  118.     gadgetText*: ARRAY MaxGadgetText OF CHAR;
  119.     gadgetLabel*: ARRAY MaxGadgetLabel OF CHAR;
  120.     flags*: SET;
  121.     kind*: INTEGER;
  122.     numTags*: INTEGER;
  123.     reserved: ARRAY 4 OF LONGINT;
  124.   END;
  125.   (* NewGadget flag bits *)
  126. CONST
  127.   IsLocked* = 5;
  128.   NeedLock* = 6;
  129.  
  130.   (* Window (ID_WDDA) chunk... *)
  131. CONST
  132.   MaxWindowName   * = 34;
  133.   MaxWindowTitle  * = 80;
  134.   MaxWdScreenTitle* = 80;
  135.  
  136.   WindowVersion   * =  0;
  137. TYPE
  138.   WINDOWDATAPtr* = UNTRACED POINTER TO WINDOWDATA;
  139.   WINDOWDATA* = STRUCT
  140.     name*: ARRAY MaxWindowName OF CHAR;
  141.     title*: ARRAY MaxWindowTitle OF CHAR;
  142.     screenTitle*: ARRAY MaxWdScreenTitle OF CHAR;
  143.     numTags*: INTEGER;
  144.     idCountFrom*: INTEGER;
  145.     idcmp*: LONGSET;
  146.     windowFlags*: LONGSET;
  147.     tagFlags*: LONGSET;
  148.     innerWidth*: INTEGER;
  149.     innerHeight*: INTEGER;
  150.     showTitle*: BOOLEAN;
  151.     mouseQueue*: INTEGER;
  152.     rptQueue*: INTEGER;
  153.     flags*: SET;
  154.     leftBorder*: INTEGER;
  155.     topBorder*: INTEGER;
  156.     reserved: ARRAY 10 OF SHORTINT;
  157.   END;
  158. CONST
  159.   (* Window tag flag bits *)
  160.   InnerWidth     * = 0;
  161.   InnerHeight    * = 1;
  162.   Zoom           * = 2;
  163.   MouseQueue     * = 3;
  164.   RptQueue       * = 4;
  165.   AutoAdjust     * = 5;
  166.   DefaultZoom    * = 6;
  167.   FallBack       * = 7;
  168.  
  169.   (* GUI (ID_GGUI) chunk... *)
  170. CONST
  171.   MaxScreenTitle* = 80;
  172.   FontNameLength* = 128;
  173.   MaxColorSpec* = 33;
  174.   MaxDriPens* = 10;
  175.   MaxMoreDriPens* = 10;
  176.  
  177.   GuiVersion* = 0;
  178. TYPE
  179.   GUIDATAPtr* = UNTRACED POINTER TO GUIDATA;
  180.   GUIDATA* = STRUCT
  181.     flags0*: LONGSET;
  182.     screenTitle*: ARRAY MaxScreenTitle OF CHAR;
  183.     left*: INTEGER;
  184.     top*: INTEGER;
  185.     width*: INTEGER;
  186.     height*: INTEGER;
  187.     depth*: INTEGER;
  188.     displayID*: LONGINT;
  189.     overscan*: INTEGER;
  190.     driPens*: ARRAY MaxDriPens OF INTEGER;
  191.     colors*: ARRAY MaxColorSpec OF I.ColorSpec;
  192.     fontName*: ARRAY FontNameLength OF CHAR;
  193.     font*: g.TextAttr;
  194.     moreDriPens*: ARRAY MaxMoreDriPens OF INTEGER;
  195.     reserved: ARRAY 5 OF LONGINT;
  196.     flags1*: LONGSET;
  197.     stdScreenWidth*: INTEGER;
  198.     stdScreenHeight*: INTEGER;
  199.     activeKind*: INTEGER;
  200.     lastProject*: INTEGER;
  201.     gridX*: INTEGER;
  202.     gridY*: INTEGER;
  203.     offX*: INTEGER;
  204.     offY*: INTEGER;
  205.     reserved1: ARRAY 7 OF INTEGER;
  206.   END;
  207. CONST
  208.   (* GUI gui_Flags0 flag bits *)
  209.   AutoScroll* = 0;
  210.   Workbench * = 1;
  211.   Public    * = 2;
  212.   Custom    * = 3;
  213.  
  214. CONST
  215.   GTBConfigSave* = "ENVARC:GadToolsBox/GadToolsBox.prefs";
  216.   GTBConfigUse * = "ENV:GadToolsBox/GadToolsBox.prefs";
  217.  
  218.   GTBConfigVErsion* =   0;
  219.   MaxUserName     * =  64;
  220.   MaxIconPath     * = 128;
  221.  
  222.   idGTCO          * =  y.VAL (LONGINT, "GTCO");
  223.  
  224. TYPE
  225.   GadToolsConfigPtr* = UNTRACED POINTER TO GadToolsConfig;
  226.   GadToolsConfig* = STRUCT
  227.     configFlags0*: LONGSET;
  228.     configFlags1*: LONGSET;
  229.     crunchBuffer*: INTEGER;
  230.     crunchType*: INTEGER;
  231.     userName*: ARRAY MaxUserName OF CHAR;
  232.     iconPath*: ARRAY MaxIconPath OF CHAR;
  233.     reserved: ARRAY 4 OF LONGINT;
  234.   END;
  235.  
  236.   (* flag definitions for gtc_ConfigFlags0 *)
  237. CONST
  238.   Coordinates* =     0;
  239.   WriteIcon* =       1;
  240.   GZZAdjust* =       2;
  241.   Crunch* =          3;
  242.   CloseWBench* =     4;
  243.   Password* =        5;
  244.   Overwrite* =       6;
  245.   ASLFReq* =         7;
  246.   FontAdapt* =       8;
  247.  
  248. CONST
  249.   GTXName* = "gadtoolsbox.library";
  250.   GTXVersion* = 39;
  251.  
  252. TYPE
  253.   GTXBasePtr* = UNTRACED POINTER TO GTXBase;
  254.   GTXBase* = STRUCT (libNode*: e.Library)
  255.     (*
  256.     ** These library bases may be extracted from this structure
  257.     ** for your own usage as long as the GTXBase pointer remains
  258.     ** valid.
  259.     **)
  260.     dosBase*: d.DosLibraryPtr;
  261.     intuitionBase*: I.IntuitionBasePtr;
  262.     gfxBase*: g.GfxBasePtr;
  263.     gadToolsBase*: e.LibraryPtr;
  264.     utilityBase*: e.LibraryPtr;
  265.     iffParseBase*: e.LibraryPtr;
  266.     consoleDevice*: e.DevicePtr;
  267.     noFragBase*: e.LibraryPtr;
  268.     (*
  269.     ** The next library pointer is not guaranteed to
  270.     ** be valid! Please check this pointer *before* using
  271.     ** it.
  272.     **)
  273.     ppBase*: e.LibraryPtr;
  274.   END;
  275.  
  276. TYPE
  277.   ExtNewGadgetPtr* = UNTRACED POINTER TO ExtNewGadget;
  278.   ExtGadgetListPtr* = UNTRACED POINTER TO ExtGadgetList;
  279.   ExtGadgetList* = STRUCT (dummy: e.CommonList)
  280.     head*:     ExtNewGadgetPtr;
  281.     tailPred*: ExtNewGadgetPtr;
  282.     tail*:     ExtNewGadgetPtr;
  283.   END;
  284.   ExtNewGadget* = STRUCT (dummy: e.CommonNode)
  285.     succ*: ExtNewGadgetPtr;
  286.     prev*: ExtNewGadgetPtr;
  287.     tags*: u.TagItemPtr;
  288.     reserved0: ARRAY 4 OF SHORTINT;
  289.     newGadget*: gt.NewGadget;
  290.     gadgetLabel*: ARRAY MaxGadgetLabel OF CHAR;
  291.     gadgetText*: ARRAY MaxGadgetText OF CHAR;
  292.     flags*: LONGSET;
  293.     kind*: INTEGER;
  294.     reserved1: ARRAY 138 OF SHORTINT;
  295.   END;
  296.  
  297. TYPE
  298.   ExtNewMenuPtr* = UNTRACED POINTER TO ExtNewMenu;
  299.   ExtMenuListPtr* = UNTRACED POINTER TO ExtMenuList;
  300.   ExtMenuList* = STRUCT  (dummy: e.CommonList)
  301.     head*:     ExtNewMenuPtr;
  302.     tailPred*: ExtNewMenuPtr;
  303.     tail*:     ExtNewMenuPtr;
  304.   END;
  305.   ExtNewMenu* = STRUCT (dummy: e.CommonNode)
  306.     succ*: ExtNewMenuPtr;
  307.     prev*: ExtNewMenuPtr;
  308.     reserved0: ARRAY 6 OF SHORTINT;
  309.     newMenu*: gt.NewMenu;
  310.     menuTitle*: ARRAY MaxMenuTitle OF CHAR;
  311.     menuLabel*: ARRAY MaxMenuLabel OF CHAR;
  312.     reserved1: ARRAY 4 OF SHORTINT;
  313.     items*: ExtMenuListPtr;
  314.     reserved2: ARRAY 2 OF SHORTINT;
  315.     commKey*: ARRAY MaxShortcut OF CHAR;
  316.     reserved3: ARRAY 2 OF SHORTINT;
  317.   END;
  318.  
  319.  
  320. TYPE
  321.   BevelBoxPtr* = UNTRACED POINTER TO BevelBox;
  322.   BevelListPtr* = UNTRACED POINTER TO BevelList;
  323.   BevelList* = STRUCT  (dummy: e.CommonList)
  324.     head*:     BevelBoxPtr;
  325.     tailPred*: BevelBoxPtr;
  326.     tail*:     BevelBoxPtr;
  327.   END;
  328.   BevelBox* = STRUCT (dummy: e.CommonNode)
  329.     succ*: BevelBoxPtr;
  330.     prev*: BevelBoxPtr;
  331.     reserved0: ARRAY 4 OF SHORTINT;
  332.     left*: INTEGER;
  333.     top*: INTEGER;
  334.     width*: INTEGER;
  335.     height*: INTEGER;
  336.     reserved1: ARRAY 32 OF SHORTINT;
  337.     flags*: SET;
  338.   END;
  339.  
  340. TYPE
  341.   ProjectWindowPtr* = UNTRACED POINTER TO ProjectWindow;
  342.   WindowListPtr* = UNTRACED POINTER TO WindowList;
  343.   WindowList* = STRUCT (dummy: e.CommonList)
  344.     head*:     ProjectWindowPtr;
  345.     tailPred*: ProjectWindowPtr;
  346.     tail*:     ProjectWindowPtr;
  347.   END;
  348.   ProjectWindow* = STRUCT (dummy: e.CommonNode)
  349.     succ*: ProjectWindowPtr;
  350.     prev*: ProjectWindowPtr;
  351.     reserved0: ARRAY 6 OF SHORTINT;
  352.     name*: ARRAY MaxWindowName OF CHAR;
  353.     countIDFrom*: INTEGER;
  354.     tags*: u.TagItemPtr;
  355.     leftBorder*: INTEGER;
  356.     topBorder*: INTEGER;
  357.     windowTitle*: ARRAY MaxWindowTitle OF CHAR;
  358.     screenTitle*: ARRAY MaxWdScreenTitle OF CHAR;
  359.     reserved2: ARRAY 192 OF SHORTINT;
  360.     idcmp*: LONGSET;
  361.     windowFlags*: LONGSET;
  362.     windowText*: I.IntuiTextPtr;
  363.     gadgets*: ExtGadgetList;
  364.     menus*: ExtMenuList;
  365.     boxes*: BevelList;
  366.     tagFlags*: LONGSET;
  367.     innerWidth*: INTEGER;
  368.     innerHeight*: INTEGER;
  369.     showTitle*: BOOLEAN;
  370.     reserved3: ARRAY 6 OF SHORTINT;
  371.     mouseQueue*: INTEGER;
  372.     rptQueue*: INTEGER;
  373.     flags*: INTEGER;
  374.   END;
  375.  
  376.   (* tags for the GTX_LoadGUI() routine *)
  377. CONST
  378.   rgTagBase* = u.user+512;
  379.  
  380.   rgGUI          * = rgTagBase+1;
  381.   rgConfig       * = rgTagBase+2;
  382.   rgCConfig      * = rgTagBase+3;
  383.   rgAsmConfig    * = rgTagBase+4;
  384.   rgLibGen       * = rgTagBase+5;
  385.   rgWindowList   * = rgTagBase+6;
  386.   rgValid        * = rgTagBase+7;
  387.   rgPasswordEntry* = rgTagBase+8;
  388.  
  389.   vlfGUI         * = 0;
  390.   vlfConfig      * = 1;
  391.   vlfCConfig     * = 2;
  392.   vlfAsmConfig   * = 3;
  393.   vlfLibGen      * = 4;
  394.   vlfWindowList  * = 5;
  395.  
  396.   ErrorNoMem     * = 1;
  397.   ErrorOpen      * = 2;
  398.   ErrorRead      * = 3;
  399.   ErrorWrite     * = 4;
  400.   ErrorParse     * = 5;
  401.   ErrorPacker    * = 6;
  402.   ErrorPPLib     * = 7;
  403.   ErrorNotGUIFile* = 8;
  404.  
  405.  
  406. (* A _very_ important handle *)
  407. TYPE
  408.   HotKeyHandle* = y.ADDRESS;
  409.  
  410. CONST
  411.   (* Flags for the HKH_SetRepeat tag *)
  412.   srbMX           * = 0;
  413.   srbCycle        * = 1;
  414.   srbSlider       * = 2;
  415.   srbScroller     * = 3;
  416.   srbListView     * = 4;
  417.   srbPalette      * = 5;
  418.  
  419.   (* tags for the hotkey system *)
  420.   hkhTagBase        * = u.user+256;
  421.   hkhKeyMap         * = hkhTagBase+1;
  422.   hkhUseNewButton   * = hkhTagBase+2;
  423.   hkhNewText        * = hkhTagBase+3;
  424.   hkhSetRepeat      * = hkhTagBase+4;
  425.  
  426.   txTagBase         * = u.user+1;
  427.   txtxtAttr         * = txTagBase+1;
  428.   txStyle           * = txTagBase+2;
  429.   txForceTextPen    * = txTagBase+3;
  430.   txUnderscore      * = txTagBase+4;
  431.   txFlags           * = txTagBase+5;
  432.   txText            * = txTagBase+6;
  433.   txNoBox           * = txTagBase+7;
  434.  
  435. VAR
  436.   base*: GTXBasePtr;
  437.  
  438. PROCEDURE TagInArray* {base, -30} (Tag{0}: u.Tag; TagList{8}: ARRAY OF u.TagItem): LONGINT;
  439. PROCEDURE SetTagData* {base, -36} (Tag{0}: u.Tag; Data{1}: LONGINT; TagList{8}: ARRAY OF u.TagItem): LONGINT;
  440. PROCEDURE GetNode* {base, -42} (List{8}: e.CommonList; NodeNum{0}: LONGINT): e.CommonNodePtr;
  441. PROCEDURE GetNodeNumber* {base, -48} (List{8}: e.CommonList; Node{9}: e.CommonNode): LONGINT;
  442. PROCEDURE CountNodes* {base, -54} (List{8}: e.CommonList): LONGINT;
  443. PROCEDURE MoveNode* {base, -60} (List{8}: e.CommonList; Node{9}: e.CommonNode; Direction{0}: LONGINT): LONGINT;
  444. PROCEDURE IFFErrToStr* {base, -66} (Error{0}, SkipEndOf{1}: LONGINT): e.STRPTR;
  445. PROCEDURE GetHandleA* {base, -72} (TagList{8}: ARRAY OF u.TagItem): HotKeyHandle;
  446. PROCEDURE GetHandle* {base, -72} (Tags{8}..: u.Tag): HotKeyHandle;
  447. PROCEDURE FreeHandle* {base, -78} (Handle{8}: HotKeyHandle);
  448. PROCEDURE RefreshWindow* {base, -84} (Handle{8}: HotKeyHandle; Window{9}: I.WindowPtr; Requester{10}: I.RequesterPtr);
  449. PROCEDURE CreateGadgetA* {base, -90} (Handle{8}: HotKeyHandle; kind{0}: LONGINT; Pred{9}: I.GadgetPtr; NewGadget{10}: gt.NewGadget; TagList{11}: ARRAY OF u.TagItem): I.GadgetPtr;
  450. PROCEDURE CreateGadget* {base, -90} (Handle{8}: HotKeyHandle; kind{0}: LONGINT; Pred{9}: I.GadgetPtr; NewGadget{10}: gt.NewGadget; Tags{11}..: u.Tag): I.GadgetPtr;
  451. PROCEDURE RawToVanilla* {base, -96} (Handle{8}: HotKeyHandle; Code{0}, Qualifier{1}: LONGINT): LONGINT;
  452. PROCEDURE GetIMsg* {base, -102} (Handle{8}: HotKeyHandle; Port{9}: e.MsgPortPtr): I.IntuiMessagePtr;
  453. PROCEDURE ReplyIMsg* {base, -108} (Handle{8}: HotKeyHandle; IMsg{9}: I.IntuiMessagePtr);
  454. PROCEDURE SetGadgetAttrsA* {base, -114} (Handle{8}: HotKeyHandle; Gadget{9}: I.GadgetPtr; TagList{10}: ARRAY OF u.TagItem);
  455. PROCEDURE SetGadgetAttrs* {base, -114} (Handle{8}: HotKeyHandle; Gadget{9}: I.GadgetPtr; Tags{10}..: u.Tag);
  456. PROCEDURE DetachLabels* {base, -120} (Handle{8}: HotKeyHandle; Gadget{9}: I.GadgetPtr);
  457. PROCEDURE DrawBox* {base, -126} (RPort{9}: g.RastPortPtr; Left{0}, Top{1}, Width{2}, Height{3}: LONGINT; dri{9}: I.DrawInfoPtr; State{4}: LONGINT);
  458. PROCEDURE InitTextClass* {base, -132} (): I.IClassPtr;
  459. PROCEDURE InitGetFileClass* {base, -138} (): I.IClassPtr;
  460. PROCEDURE SetHandleAttrsA* {base, -144} (Handle{8}: HotKeyHandle; TagList{9}: ARRAY OF u.TagItem);
  461. PROCEDURE SetHandleAttrs* {base, -144} (Handle{8}: HotKeyHandle; Tags{9}..: u.Tag);
  462. PROCEDURE BeginRefresh* {base, -150} (Handle{8}: HotKeyHandle);
  463. PROCEDURE EndRefresh* {base, -156} (Handle{8}: HotKeyHandle; All{0}: I.LONGBOOL);
  464. PROCEDURE FreeWindows* {base, -228} (Chain{8}: nf.MemoryChainPtr; VAR Windows{9}: WindowList);
  465. PROCEDURE LoadGUIA* {base, -234} (Chain{8}: nf.MemoryChainPtr; name{9}: ARRAY OF CHAR; TagList{10}: ARRAY OF u.TagItem): LONGINT;
  466. PROCEDURE LoadGUI* {base, -234} (Chain{8}: nf.MemoryChainPtr; name{9}: ARRAY OF CHAR; Tags{10}..: u.Tag): LONGINT;
  467.  
  468. BEGIN
  469.   base :=  e.OpenLibrary (GTXName, GTXVersion);
  470.   IF base = NIL THEN
  471.     y.SETREG (0, I.DisplayAlert (I.recoveryAlert, "\x00\x64\x14Unable to open gadtoolsbox.library\o\o", 50));
  472.     HALT (20);
  473.   END;
  474. CLOSE
  475.   IF base # NIL THEN
  476.     e.CloseLibrary (base); base :=  NIL;
  477.   END;
  478. END GadToolsBox.
  479.