home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------------------------
- :Program. GadToolsBox
- :Contents. Interface to Jan van den Baard's Library
- :Author. Kai Bolay [kai]
- :Address. Snail-Mail: E-Mail:
- :Address. Hoffmannstraße 168 UUCP: kai@amokle.stgt.sub.org
- :Address. D-7250 Leonberg 1 FIDO: 2:2407/106.3
- :History. v1.0 [kai] 13-Feb-93 (translated from C)
- :History. v1.1 [kai] 28-Feb-93 (fixed reserved-Bug GadToolsConfig)
- :History. v1.1 [kai] 28-Feb-93 (windowFlags now LONGSET)
- :History. v1.2 [kai] 29-Feb-93 (FreeWindows now uses VAR parameter)
- :History. v1.3 [jan] 29-Mar-93 (Library version bump to 39)
- :Copyright. FD
- :Language. Oberon
- :Translator. AMIGA OBERON v3.01d
- ------------------------------------------------------------------------ *)
- MODULE GadToolsBox;
-
- (* using..
- forms.h (Release: 1.0, Revision: 38.10)
- prefs.h (Release: 1.0, Revision: 38.3)
- gtxbase.h (Release: 1.0, Revision: 39.1)
- gui.h (Release: 1.0, Revision: 38.6)
- hotkey.h (Release: 1.0, Revision: 38.5)
- textclass.h (Release: 1.0, Revision: 38.5)
- gtx_protos.h (Release: 1.0, Revision: 38.8)
- gtx_lib.fd (Release: ?.?, Revision: 38.8)
- *)
-
- IMPORT
- e: Exec, g: Graphics, d: Dos, I: Intuition, gt: GadTools, u: Utility,
- nf: NoFragLib,
- y: SYSTEM;
-
- CONST
- (* GadToolsBox FORM identifiers *)
- idGXMN* = y.VAL (LONGINT, "GXMN");
- idGXTX* = y.VAL (LONGINT, "GXTX");
- idGXBX* = y.VAL (LONGINT, "GXBX");
- idGXGA* = y.VAL (LONGINT, "GXGA");
- idGXWD* = y.VAL (LONGINT, "GXWD");
- idGXUI* = y.VAL (LONGINT, "GXUI");
-
- (* GadToolsBox chunk identifiers. *)
- idMEDA* = y.VAL (LONGINT, "MEDA");
- idITXT* = y.VAL (LONGINT, "ITXT");
- idBBOX* = y.VAL (LONGINT, "BBOX");
- idGADA* = y.VAL (LONGINT, "GADA");
- idWDDA* = y.VAL (LONGINT, "WDDA");
- idGGUI* = y.VAL (LONGINT, "GGUI");
-
- idVERS* = y.VAL (LONGINT, "VERS");
-
- (* Version (ID_VERS) chunk... *)
- TYPE
- VERSIONPtr* = UNTRACED POINTER TO VERSION;
- VERSION* = STRUCT
- version*: INTEGER;
- flags*: SET;
- reserved: ARRAY 4 OF LONGINT;
- END;
-
- (* NewMenu (ID_MEDA) chunk... *)
- CONST
- MaxMenuTitle* = 80;
- MaxMenuLabel* = 34;
- MaxShortcut* = 2;
-
- MenuVersion* = 0;
- TYPE
- MENUDATAPtr* = UNTRACED POINTER TO MENUDATA;
- MENUDATA* = STRUCT
- newMenu*: gt.NewMenu;
- title*: ARRAY MaxMenuTitle OF CHAR;
- label*: ARRAY MaxMenuLabel OF CHAR;
- shortCut*: ARRAY MaxShortcut OF CHAR;
- flags*: SET;
- END;
-
- (* IntuiText (ID_ITXT) chunk... *)
- CONST
- MaxTextLength* = 80;
- ITxtVersion* = 0;
- TYPE
- ITEXTDATAPtr* = UNTRACED POINTER TO ITEXTDATA;
- ITEXTDATA* = STRUCT
- iText*: I.IntuiText;
- text*: ARRAY MaxTextLength OF CHAR;
- END;
-
- (* BevelBox (ID_BBOX) chunk... *)
- CONST
- BBoxVersion* = 0;
- TYPE
- BBOXDATAPtr* = UNTRACED POINTER TO BBOXDATA;
- BBOXDATA* = STRUCT
- left*: INTEGER;
- top*: INTEGER;
- width*: INTEGER;
- height*: INTEGER;
- flags*: SET;
- END;
- CONST
- (* BevelBox flag bits *)
- recessed* = 0;
- dropBox* = 1;
-
- (* NewGadget (ID_GADA) chunk... *)
- CONST
- MaxGadgetText* = 80;
- MaxGadgetLabel* = 34;
-
- GadgetVersion* = 0;
- TYPE
- GADGETDATAPtr* = UNTRACED POINTER TO GADGETDATA;
- GADGETDATA* = STRUCT
- newGadget*: gt.NewGadget;
- gadgetText*: ARRAY MaxGadgetText OF CHAR;
- gadgetLabel*: ARRAY MaxGadgetLabel OF CHAR;
- flags*: SET;
- kind*: INTEGER;
- numTags*: INTEGER;
- reserved: ARRAY 4 OF LONGINT;
- END;
- (* NewGadget flag bits *)
- CONST
- IsLocked* = 5;
- NeedLock* = 6;
-
- (* Window (ID_WDDA) chunk... *)
- CONST
- MaxWindowName * = 34;
- MaxWindowTitle * = 80;
- MaxWdScreenTitle* = 80;
-
- WindowVersion * = 0;
- TYPE
- WINDOWDATAPtr* = UNTRACED POINTER TO WINDOWDATA;
- WINDOWDATA* = STRUCT
- name*: ARRAY MaxWindowName OF CHAR;
- title*: ARRAY MaxWindowTitle OF CHAR;
- screenTitle*: ARRAY MaxWdScreenTitle OF CHAR;
- numTags*: INTEGER;
- idCountFrom*: INTEGER;
- idcmp*: LONGSET;
- windowFlags*: LONGSET;
- tagFlags*: LONGSET;
- innerWidth*: INTEGER;
- innerHeight*: INTEGER;
- showTitle*: BOOLEAN;
- mouseQueue*: INTEGER;
- rptQueue*: INTEGER;
- flags*: SET;
- leftBorder*: INTEGER;
- topBorder*: INTEGER;
- reserved: ARRAY 10 OF SHORTINT;
- END;
- CONST
- (* Window tag flag bits *)
- InnerWidth * = 0;
- InnerHeight * = 1;
- Zoom * = 2;
- MouseQueue * = 3;
- RptQueue * = 4;
- AutoAdjust * = 5;
- DefaultZoom * = 6;
- FallBack * = 7;
-
- (* GUI (ID_GGUI) chunk... *)
- CONST
- MaxScreenTitle* = 80;
- FontNameLength* = 128;
- MaxColorSpec* = 33;
- MaxDriPens* = 10;
- MaxMoreDriPens* = 10;
-
- GuiVersion* = 0;
- TYPE
- GUIDATAPtr* = UNTRACED POINTER TO GUIDATA;
- GUIDATA* = STRUCT
- flags0*: LONGSET;
- screenTitle*: ARRAY MaxScreenTitle OF CHAR;
- left*: INTEGER;
- top*: INTEGER;
- width*: INTEGER;
- height*: INTEGER;
- depth*: INTEGER;
- displayID*: LONGINT;
- overscan*: INTEGER;
- driPens*: ARRAY MaxDriPens OF INTEGER;
- colors*: ARRAY MaxColorSpec OF I.ColorSpec;
- fontName*: ARRAY FontNameLength OF CHAR;
- font*: g.TextAttr;
- moreDriPens*: ARRAY MaxMoreDriPens OF INTEGER;
- reserved: ARRAY 5 OF LONGINT;
- flags1*: LONGSET;
- stdScreenWidth*: INTEGER;
- stdScreenHeight*: INTEGER;
- activeKind*: INTEGER;
- lastProject*: INTEGER;
- gridX*: INTEGER;
- gridY*: INTEGER;
- offX*: INTEGER;
- offY*: INTEGER;
- reserved1: ARRAY 7 OF INTEGER;
- END;
- CONST
- (* GUI gui_Flags0 flag bits *)
- AutoScroll* = 0;
- Workbench * = 1;
- Public * = 2;
- Custom * = 3;
-
- CONST
- GTBConfigSave* = "ENVARC:GadToolsBox/GadToolsBox.prefs";
- GTBConfigUse * = "ENV:GadToolsBox/GadToolsBox.prefs";
-
- GTBConfigVErsion* = 0;
- MaxUserName * = 64;
- MaxIconPath * = 128;
-
- idGTCO * = y.VAL (LONGINT, "GTCO");
-
- TYPE
- GadToolsConfigPtr* = UNTRACED POINTER TO GadToolsConfig;
- GadToolsConfig* = STRUCT
- configFlags0*: LONGSET;
- configFlags1*: LONGSET;
- crunchBuffer*: INTEGER;
- crunchType*: INTEGER;
- userName*: ARRAY MaxUserName OF CHAR;
- iconPath*: ARRAY MaxIconPath OF CHAR;
- reserved: ARRAY 4 OF LONGINT;
- END;
-
- (* flag definitions for gtc_ConfigFlags0 *)
- CONST
- Coordinates* = 0;
- WriteIcon* = 1;
- GZZAdjust* = 2;
- Crunch* = 3;
- CloseWBench* = 4;
- Password* = 5;
- Overwrite* = 6;
- ASLFReq* = 7;
- FontAdapt* = 8;
-
- CONST
- GTXName* = "gadtoolsbox.library";
- GTXVersion* = 39;
-
- TYPE
- GTXBasePtr* = UNTRACED POINTER TO GTXBase;
- GTXBase* = STRUCT (libNode*: e.Library)
- (*
- ** These library bases may be extracted from this structure
- ** for your own usage as long as the GTXBase pointer remains
- ** valid.
- **)
- dosBase*: d.DosLibraryPtr;
- intuitionBase*: I.IntuitionBasePtr;
- gfxBase*: g.GfxBasePtr;
- gadToolsBase*: e.LibraryPtr;
- utilityBase*: e.LibraryPtr;
- iffParseBase*: e.LibraryPtr;
- consoleDevice*: e.DevicePtr;
- noFragBase*: e.LibraryPtr;
- (*
- ** The next library pointer is not guaranteed to
- ** be valid! Please check this pointer *before* using
- ** it.
- **)
- ppBase*: e.LibraryPtr;
- END;
-
- TYPE
- ExtNewGadgetPtr* = UNTRACED POINTER TO ExtNewGadget;
- ExtGadgetListPtr* = UNTRACED POINTER TO ExtGadgetList;
- ExtGadgetList* = STRUCT (dummy: e.CommonList)
- head*: ExtNewGadgetPtr;
- tailPred*: ExtNewGadgetPtr;
- tail*: ExtNewGadgetPtr;
- END;
- ExtNewGadget* = STRUCT (dummy: e.CommonNode)
- succ*: ExtNewGadgetPtr;
- prev*: ExtNewGadgetPtr;
- tags*: u.TagItemPtr;
- reserved0: ARRAY 4 OF SHORTINT;
- newGadget*: gt.NewGadget;
- gadgetLabel*: ARRAY MaxGadgetLabel OF CHAR;
- gadgetText*: ARRAY MaxGadgetText OF CHAR;
- flags*: LONGSET;
- kind*: INTEGER;
- reserved1: ARRAY 138 OF SHORTINT;
- END;
-
- TYPE
- ExtNewMenuPtr* = UNTRACED POINTER TO ExtNewMenu;
- ExtMenuListPtr* = UNTRACED POINTER TO ExtMenuList;
- ExtMenuList* = STRUCT (dummy: e.CommonList)
- head*: ExtNewMenuPtr;
- tailPred*: ExtNewMenuPtr;
- tail*: ExtNewMenuPtr;
- END;
- ExtNewMenu* = STRUCT (dummy: e.CommonNode)
- succ*: ExtNewMenuPtr;
- prev*: ExtNewMenuPtr;
- reserved0: ARRAY 6 OF SHORTINT;
- newMenu*: gt.NewMenu;
- menuTitle*: ARRAY MaxMenuTitle OF CHAR;
- menuLabel*: ARRAY MaxMenuLabel OF CHAR;
- reserved1: ARRAY 4 OF SHORTINT;
- items*: ExtMenuListPtr;
- reserved2: ARRAY 2 OF SHORTINT;
- commKey*: ARRAY MaxShortcut OF CHAR;
- reserved3: ARRAY 2 OF SHORTINT;
- END;
-
-
- TYPE
- BevelBoxPtr* = UNTRACED POINTER TO BevelBox;
- BevelListPtr* = UNTRACED POINTER TO BevelList;
- BevelList* = STRUCT (dummy: e.CommonList)
- head*: BevelBoxPtr;
- tailPred*: BevelBoxPtr;
- tail*: BevelBoxPtr;
- END;
- BevelBox* = STRUCT (dummy: e.CommonNode)
- succ*: BevelBoxPtr;
- prev*: BevelBoxPtr;
- reserved0: ARRAY 4 OF SHORTINT;
- left*: INTEGER;
- top*: INTEGER;
- width*: INTEGER;
- height*: INTEGER;
- reserved1: ARRAY 32 OF SHORTINT;
- flags*: SET;
- END;
-
- TYPE
- ProjectWindowPtr* = UNTRACED POINTER TO ProjectWindow;
- WindowListPtr* = UNTRACED POINTER TO WindowList;
- WindowList* = STRUCT (dummy: e.CommonList)
- head*: ProjectWindowPtr;
- tailPred*: ProjectWindowPtr;
- tail*: ProjectWindowPtr;
- END;
- ProjectWindow* = STRUCT (dummy: e.CommonNode)
- succ*: ProjectWindowPtr;
- prev*: ProjectWindowPtr;
- reserved0: ARRAY 6 OF SHORTINT;
- name*: ARRAY MaxWindowName OF CHAR;
- countIDFrom*: INTEGER;
- tags*: u.TagItemPtr;
- leftBorder*: INTEGER;
- topBorder*: INTEGER;
- windowTitle*: ARRAY MaxWindowTitle OF CHAR;
- screenTitle*: ARRAY MaxWdScreenTitle OF CHAR;
- reserved2: ARRAY 192 OF SHORTINT;
- idcmp*: LONGSET;
- windowFlags*: LONGSET;
- windowText*: I.IntuiTextPtr;
- gadgets*: ExtGadgetList;
- menus*: ExtMenuList;
- boxes*: BevelList;
- tagFlags*: LONGSET;
- innerWidth*: INTEGER;
- innerHeight*: INTEGER;
- showTitle*: BOOLEAN;
- reserved3: ARRAY 6 OF SHORTINT;
- mouseQueue*: INTEGER;
- rptQueue*: INTEGER;
- flags*: INTEGER;
- END;
-
- (* tags for the GTX_LoadGUI() routine *)
- CONST
- rgTagBase* = u.user+512;
-
- rgGUI * = rgTagBase+1;
- rgConfig * = rgTagBase+2;
- rgCConfig * = rgTagBase+3;
- rgAsmConfig * = rgTagBase+4;
- rgLibGen * = rgTagBase+5;
- rgWindowList * = rgTagBase+6;
- rgValid * = rgTagBase+7;
- rgPasswordEntry* = rgTagBase+8;
-
- vlfGUI * = 0;
- vlfConfig * = 1;
- vlfCConfig * = 2;
- vlfAsmConfig * = 3;
- vlfLibGen * = 4;
- vlfWindowList * = 5;
-
- ErrorNoMem * = 1;
- ErrorOpen * = 2;
- ErrorRead * = 3;
- ErrorWrite * = 4;
- ErrorParse * = 5;
- ErrorPacker * = 6;
- ErrorPPLib * = 7;
- ErrorNotGUIFile* = 8;
-
-
- (* A _very_ important handle *)
- TYPE
- HotKeyHandle* = y.ADDRESS;
-
- CONST
- (* Flags for the HKH_SetRepeat tag *)
- srbMX * = 0;
- srbCycle * = 1;
- srbSlider * = 2;
- srbScroller * = 3;
- srbListView * = 4;
- srbPalette * = 5;
-
- (* tags for the hotkey system *)
- hkhTagBase * = u.user+256;
- hkhKeyMap * = hkhTagBase+1;
- hkhUseNewButton * = hkhTagBase+2;
- hkhNewText * = hkhTagBase+3;
- hkhSetRepeat * = hkhTagBase+4;
-
- txTagBase * = u.user+1;
- txtxtAttr * = txTagBase+1;
- txStyle * = txTagBase+2;
- txForceTextPen * = txTagBase+3;
- txUnderscore * = txTagBase+4;
- txFlags * = txTagBase+5;
- txText * = txTagBase+6;
- txNoBox * = txTagBase+7;
-
- VAR
- base*: GTXBasePtr;
-
- PROCEDURE TagInArray* {base, -30} (Tag{0}: u.Tag; TagList{8}: ARRAY OF u.TagItem): LONGINT;
- PROCEDURE SetTagData* {base, -36} (Tag{0}: u.Tag; Data{1}: LONGINT; TagList{8}: ARRAY OF u.TagItem): LONGINT;
- PROCEDURE GetNode* {base, -42} (List{8}: e.CommonList; NodeNum{0}: LONGINT): e.CommonNodePtr;
- PROCEDURE GetNodeNumber* {base, -48} (List{8}: e.CommonList; Node{9}: e.CommonNode): LONGINT;
- PROCEDURE CountNodes* {base, -54} (List{8}: e.CommonList): LONGINT;
- PROCEDURE MoveNode* {base, -60} (List{8}: e.CommonList; Node{9}: e.CommonNode; Direction{0}: LONGINT): LONGINT;
- PROCEDURE IFFErrToStr* {base, -66} (Error{0}, SkipEndOf{1}: LONGINT): e.STRPTR;
- PROCEDURE GetHandleA* {base, -72} (TagList{8}: ARRAY OF u.TagItem): HotKeyHandle;
- PROCEDURE GetHandle* {base, -72} (Tags{8}..: u.Tag): HotKeyHandle;
- PROCEDURE FreeHandle* {base, -78} (Handle{8}: HotKeyHandle);
- PROCEDURE RefreshWindow* {base, -84} (Handle{8}: HotKeyHandle; Window{9}: I.WindowPtr; Requester{10}: I.RequesterPtr);
- 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;
- PROCEDURE CreateGadget* {base, -90} (Handle{8}: HotKeyHandle; kind{0}: LONGINT; Pred{9}: I.GadgetPtr; NewGadget{10}: gt.NewGadget; Tags{11}..: u.Tag): I.GadgetPtr;
- PROCEDURE RawToVanilla* {base, -96} (Handle{8}: HotKeyHandle; Code{0}, Qualifier{1}: LONGINT): LONGINT;
- PROCEDURE GetIMsg* {base, -102} (Handle{8}: HotKeyHandle; Port{9}: e.MsgPortPtr): I.IntuiMessagePtr;
- PROCEDURE ReplyIMsg* {base, -108} (Handle{8}: HotKeyHandle; IMsg{9}: I.IntuiMessagePtr);
- PROCEDURE SetGadgetAttrsA* {base, -114} (Handle{8}: HotKeyHandle; Gadget{9}: I.GadgetPtr; TagList{10}: ARRAY OF u.TagItem);
- PROCEDURE SetGadgetAttrs* {base, -114} (Handle{8}: HotKeyHandle; Gadget{9}: I.GadgetPtr; Tags{10}..: u.Tag);
- PROCEDURE DetachLabels* {base, -120} (Handle{8}: HotKeyHandle; Gadget{9}: I.GadgetPtr);
- PROCEDURE DrawBox* {base, -126} (RPort{9}: g.RastPortPtr; Left{0}, Top{1}, Width{2}, Height{3}: LONGINT; dri{9}: I.DrawInfoPtr; State{4}: LONGINT);
- PROCEDURE InitTextClass* {base, -132} (): I.IClassPtr;
- PROCEDURE InitGetFileClass* {base, -138} (): I.IClassPtr;
- PROCEDURE SetHandleAttrsA* {base, -144} (Handle{8}: HotKeyHandle; TagList{9}: ARRAY OF u.TagItem);
- PROCEDURE SetHandleAttrs* {base, -144} (Handle{8}: HotKeyHandle; Tags{9}..: u.Tag);
- PROCEDURE BeginRefresh* {base, -150} (Handle{8}: HotKeyHandle);
- PROCEDURE EndRefresh* {base, -156} (Handle{8}: HotKeyHandle; All{0}: I.LONGBOOL);
- PROCEDURE FreeWindows* {base, -228} (Chain{8}: nf.MemoryChainPtr; VAR Windows{9}: WindowList);
- PROCEDURE LoadGUIA* {base, -234} (Chain{8}: nf.MemoryChainPtr; name{9}: ARRAY OF CHAR; TagList{10}: ARRAY OF u.TagItem): LONGINT;
- PROCEDURE LoadGUI* {base, -234} (Chain{8}: nf.MemoryChainPtr; name{9}: ARRAY OF CHAR; Tags{10}..: u.Tag): LONGINT;
-
- BEGIN
- base := e.OpenLibrary (GTXName, GTXVersion);
- IF base = NIL THEN
- y.SETREG (0, I.DisplayAlert (I.recoveryAlert, "\x00\x64\x14Unable to open gadtoolsbox.library\o\o", 50));
- HALT (20);
- END;
- CLOSE
- IF base # NIL THEN
- e.CloseLibrary (base); base := NIL;
- END;
- END GadToolsBox.
-