home *** CD-ROM | disk | FTP | other *** search
Modula Definition | 1992-06-29 | 15.4 KB | 439 lines |
- (* ------------------------------------------------------------------------
- :Program. ReqTools
- :Contents. Interface to Nico Franτois' reqtools.library
- :Author. Kai Bolay [kai] (C-Version by Nico Franτois)
- :Address. Hoffmannstra▀e 168
- :Address. D-7250 Leonberg 1 (Germany)
- :Address. UUCP: ...!cbmvax!cbmehq!cbmger!depot1!amokle!kai
- :Address. FIDO: 2:247/706.3
- :History. v1.0 [kai] 22-Nov-91 (translated from C)
- :History. v1.0m [Frank L÷mker] 24-Feb-92 Umsetzung nach Modula
- :Copyright. Freeware
- :Language. Modula-2
- :Translator. M2Amiga V4.0d
- :Remark. Thanks to Nico for his great library
- :Bugs. ReqTools/Arq should support each other
- :Bugs. Font-Hook: ta.name can contain odd pointer :-(
- ------------------------------------------------------------------------ *)
-
- (*
- ** Filename: reqtools.mod
- ** Release: 1.0
- ** Revision: 37.3
- **
- ** Modula interface.
- **
- ** (C) Copyright 1991 Nico Franτois
- ** All Rights Reserved
- *)
-
- DEFINITION MODULE ReqTools{"reqtools.library",37};
-
- FROM IntuitionD IMPORT IntuitionBasePtr,WindowPtr,ScreenPtr,NewWindow;
- FROM GraphicsD IMPORT GfxBasePtr,TextFontPtr,TextAttr;
- FROM DosD IMPORT DosLibraryPtr;
- FROM ExecD IMPORT Library,LibraryPtr;
- FROM SYSTEM IMPORT ADDRESS,SHORTSET,LONGSET,BPTR;
- FROM UtilityD IMPORT HookPtr,TagItem,TagItemPtr,Tag,tagUser;
-
- TYPE STRPTR=ADDRESS;
- CONST
- ReqToolsName = "reqtools.library";
- ReqToolsVersion = 37;
-
- TYPE
- ReqToolsBasePtr = POINTER TO ReqToolsBase;
-
- VAR reqToolsVersion:INTEGER;
- reqToolsBase:ReqToolsBasePtr;
-
- TYPE
- ReqToolsBase = RECORD
- libNode: Library;
- flags: SHORTSET;
- pad: ARRAY [0..2] OF SHORTINT;
- segList: BPTR;
- (* The following library bases may be read and used by your program *)
- intuitionBase: IntuitionBasePtr;
- gfxBase: GfxBasePtr;
- dosBase: DosLibraryPtr;
- (* Next two library bases are only (and always) valid on Kickstart 2.0!
- (1.3 version of reqtools also initializes these when run on 2.0) *)
- gadToolsBase: LibraryPtr;
- utilityBase: LibraryPtr;
- END;
-
- CONST
- (* types of requesters, for AllocRequestA() *)
- TypeFileReq = 0;
- TypeReqInfo = 1;
- TypeFontReq = 2;
-
- (***********************
- * *
- * File requester *
- * *
- ***********************)
-
- (* structure _MUST_ be allocated with AllocRequest() *)
-
- TYPE
- FileRequesterPtr = POINTER TO FileRequester;
- FileRequester = RECORD
- reqPos: LONGINT;
- leftOffset: INTEGER;
- topOffset: INTEGER;
- flags: LONGSET;
- hook: HookPtr;
- dir: STRPTR; (* READ ONLY! Change with ChangeReqAttrA()! *)
- matchPat: STRPTR; (* READ ONLY! Change with ChangeReqAttrA()! *)
- defaultFont: TextFontPtr;
- waitPointer: ADDRESS;
- (* Lots of private data follows! HANDS OFF :-) *)
- END;
-
- (* returned by FileRequestA() if multiselect is enabled,
- free list with FreeFileList() *)
-
- FileListPtr = POINTER TO FileList;
- FileList = RECORD
- next: FileListPtr;
- strLen: LONGINT; (* -1 for directories *)
- name: STRPTR;
- END;
-
- (***********************
- * *
- * Font requester *
- * *
- ***********************)
-
- (* structure _MUST_ be allocated with AllocRequest() *)
-
- FontRequesterPtr = POINTER TO FontRequester;
- FontRequester = RECORD
- reqPos: LONGINT;
- leftOffset: INTEGER;
- topOffset: INTEGER;
- flags: LONGSET;
- hook: HookPtr;
- attr: TextAttr; (* READ ONLY! *)
- defaultFont: TextFontPtr;
- waitPointer: ADDRESS;
- (* Lots of private data follows! HANDS OFF :-) *)
- END;
-
- (***********************
- * *
- * Requester Info *
- * *
- ***********************)
-
- (* for EZRequestA(), GetLongA(), GetStringA() and PaletteRequestA(),
- _MUST_ be allocated with AllocRequest() *)
-
- ReqInfoPtr = POINTER TO ReqInfo;
- ReqInfo = RECORD
- reqPos: LONGINT;
- leftOffset: INTEGER;
- topOffset: INTEGER;
- width: LONGINT; (* not for EZRequestA() *)
- reqTitle: STRPTR; (* currently only for EZRequestA() *)
- flags: LONGSET; (* only for EZRequestA() *)
- defaultFont: TextFontPtr; (* currently only for PaletteRequestA() *)
- waitPointer: ADDRESS;
- (* structure may be extended in future *)
- END;
-
- (***********************
- * *
- * Handler Info *
- * *
- ***********************)
-
- (* for ReqHandlerA(), will be allocated for you when you use
- the ReqHandler tag, never try to allocate this yourself! *)
-
- HandlerInfoPtr = POINTER TO HandlerInfo;
- HandlerInfo = RECORD
- private1: LONGINT;
- waitMask: LONGSET;
- doNotWait: LONGINT (* LONGBOOL *); (* ? *)
- (* Private data follows, HANDS OFF :-) *)
- END;
-
- (* possible return codes from ReqHandlerA() *)
- CONST
- CallHandler = 080000000H;
-
-
- (*************************************
- * *
- * TAGS *
- * *
- *************************************)
-
- TagBase = tagUser;
-
- (*** tags understood by most requester functions ***)
- (* optional pointer to window *)
- Window = TagBase+1;
- (* idcmp flags requester should abort on (useful for IDCMP_DISKINSERTED) *)
- IDCMPFlags = TagBase+2;
- (* position of requester window (see below) - default REQPOS_POINTER *)
- ReqPos = TagBase+3;
- (* signal mask to wait for abort signal *)
- LeftOffset = TagBase+4;
- (* topedge offset of requester relative to position specified by ReqPos *)
- TopOffset = TagBase+5;
- (* name of public screen to put requester on (Kickstart 2.0 only!) *)
- PubScrName = TagBase+6;
- (* address of screen to put requester on *)
- Screen = TagBase+7;
- (* tagdata must hold the address of (!) an APTR variable *)
- DoReqHandler = TagBase+8;
- (* font to use when screen font is rejected, _MUST_ be fixed-width font!
- (struct TextFont *, not struct TextAttr *!)
- - default GfxBase->DefaultFont *)
- DefaultFont = TagBase+9;
- (* boolean to set the standard wait pointer in window - default FALSE *)
- WaitPointer = TagBase+10;
-
- (*** tags specific to EZRequestA ***
- *)
- (* title of requester window - default "Request" or "Information" *)
- ezReqTitle = TagBase+20;
- (* TagBase+21 reserved *)
- (* various flags (see below) *)
- ezFlags = TagBase+22;
- (* default response (activated by pressing RETURN) - default TRUE *)
- ezDefaultResponse = TagBase+23;
-
- (*** tags specific to GetLongA ***
- *)
- (* minimum allowed value - default MININT *)
- glMin = TagBase+30;
- (* maximum allowed value - default MAXINT *)
- glMax = TagBase+31;
- (* suggested width of requester window (in pixels) *)
- glWidth = TagBase+32;
- (* boolean to show the default value - default TRUE *)
- glShowDefault = TagBase+33;
-
- (*** tags specific to GetStringA ***
- *)
- (* suggested width of requester window (in pixels) *)
- gsWidth = glWidth;
- (* allow empty string to be accepted - default FALSE *)
- gsAllowEmpty = TagBase+80;
-
- (*** tags specific to FileRequestA ***
- *)
- (* various flags (see below) *)
- fiFlags = TagBase+40;
- (* suggested height of file requester *)
- fiHeight = TagBase+41;
- (* replacement text for 'Ok' gadget (max 6 chars) *)
- fiOkText = TagBase+42;
-
- (*** tags specific to FontRequestA ***
- *)
- (* various flags (see below) *)
- foflags = fiFlags;
- (* suggested height of font requester *)
- foHeight = fiHeight;
- (* replacement text for 'Ok' gadget (max 6 chars) *)
- foOkText = fiOkText;
- (* suggested height of font sample display - default 24 *)
- foSampleHeight= TagBase+60;
- (* minimum height of font displayed *)
- foMinHeight = TagBase+61;
- (* maximum height of font displayed *)
- foMaxHeight = TagBase+62;
- (* [TagBase+63 to TagBase+66 used below] *)
-
- (*** tags for ChangeReqAttrA ***
- *)
- (* file requester - set directory *)
- fiDir = TagBase+50;
- (* file requester - set wildcard pattern *)
- fiMatchPat = TagBase+51;
- (* file requester - add a file or directory to the buffer *)
- fiAddEntry = TagBase+52;
- (* file requester - remove a file or directory from the buffer *)
- fiRemoveEntry = TagBase+53;
- (* font requester - set font name of selected font *)
- foFontName = TagBase+63;
- (* font requester - set font size *)
- foFontHeight = TagBase+64;
- (* font requester - set font style *)
- foFontStyle = TagBase+65;
- (* font requester - set font flags *)
- foFontFlags = TagBase+66;
-
- (*** tags for PaletteRequestA ***
- *)
- (* initially selected color - default 1 *)
- paColor = TagBase+70;
-
- (*** tags for ReqHandlerA ***
- *)
- (* end requester by software control, set tagdata to REQ_CANCEL, REQ_OK or
- in case of EZRequest to the return value *)
- rhEndRequest = TagBase+60;
-
- (*** tags for AllocRequestA ***)
- (* no tags defined yet *)
-
-
- (************
- * ReqPos *
- ************)
- ReqPosPointer = 0;
- ReqPosCenterWin = 1;
- ReqPosCenterScr = 2;
- ReqPosTopLeftWin = 3;
- ReqPosTopLeftScr = 4;
-
- (******************
- * RTRH_EndRequest *
- ******************)
- ReqCancel = 0;
- ReqOK = 1;
-
- (***************************************
- * flags for RTFI_Flags and RTFO_Flags *
- * or filereq->Flags and fontreq->Flags *
- ***************************************)
- fReqNoBuffer = 2;
- fReqDoWildFunc = 11;
-
- (*****************************************
- * flags for RTFI_Flags or filereq->Flags *
- *****************************************)
- fReqMultiSelect = 0;
- fReqSave = 1;
- fReqNoFiles = 3;
- fReqPatGad = 4;
- fReqSelectDirs = 12;
-
- (*****************************************
- * flags for RTFO_Flags or fontreq->Flags *
- *****************************************)
- fReqFixedWidth = 5;
- fReqColorFonts = 6;
- fReqChangePalette = 7;
- fReqLeavePalette = 8;
- fReqScale = 9;
- fReqStyle = 10;
-
- (*****************************************
- * flags for RTEZ_Flags or reqinfo->Flags *
- *****************************************)
- ezReqNoReturnKey = 0;
- ezReqLamigaQual = 1;
- ezReqCenterText = 2;
-
- (********
- * hooks *
- ********)
- ReqHookWildFile = 0;
- ReqHookWildFont = 1;
-
- PROCEDURE AllocRequestA (type{0}: LONGINT;
- tagList{8}: TagItemPtr): ADDRESS; CODE -30;
- PROCEDURE AllocRequest (type{0}: LONGINT;
- tag1{8}: TagItemPtr): ADDRESS; CODE -30;
- PROCEDURE FreeRequest (req{9}: ADDRESS); CODE -36;
- PROCEDURE FreeReqBuffer (req{9}: ADDRESS); CODE -42;
- PROCEDURE ChangeReqAttrA (req{9}: ADDRESS;
- tagList{8}: TagItemPtr); CODE -48;
- PROCEDURE ChangeReqAttr (req{9}: ADDRESS;
- tag1{8}: TagItemPtr); CODE -48;
- PROCEDURE FileRequestA (fileReq{9}: FileRequesterPtr;
- (*VAR*) fileName{10}: ADDRESS (*ARRAY OF CHAR*);
- title{11}: ADDRESS (*ARRAY OF CHAR*);
- tagList{8}: TagItemPtr): BOOLEAN; CODE -54;
- PROCEDURE FileRequest (fileReq{9}: FileRequesterPtr;
- (*VAR*) fileName{10}: ADDRESS (*ARRAY OF CHAR*);
- title{11}: ADDRESS (*ARRAY OF CHAR*);
- tag1{8}: TagItemPtr): BOOLEAN; CODE -54;
- PROCEDURE FreeFileList (fileList{8}: FileListPtr); CODE -60;
-
- (* Die nΣchsten 6 Prozeduren k÷nnen nicht direkt aus Modula benutzt werden,
- da sie das Register A4 ben÷tigen. Statt dessen k÷nnen die Prozeduren aus
- ReqToolsSupport benutzt werden. *)
-
- PROCEDURE EZRequestA (bodyfmt{9}, gadfmt{10}: ADDRESS (*ARRAY OF CHAR*);
- reqInfo{11}: ReqInfoPtr;
- argarray{12}: ADDRESS;
- tagList{8}: TagItemPtr): LONGINT; CODE -66;
- PROCEDURE EZRequestTags (bodyfmt{9}, gadfmt{10}: ADDRESS (*ARRAY OF CHAR*);
- reqInfo{11}: ReqInfoPtr;
- argarray{12}: ADDRESS;
- tag1{8}: TagItemPtr):LONGINT; CODE -66;
- PROCEDURE EZRequest (bodyfmt{9}, gadfmt{10}: ADDRESS (*ARRAY OF CHAR*);
- reqInfo{11}: ReqInfoPtr;
- tagList{8}: TagItemPtr;
- argarray{12}: ADDRESS (*LONGINT*)): LONGINT; CODE -66;
- (* Without result.... *)
- PROCEDURE vEZRequestA (bodyfmt{9}, gadfmt{10}: ADDRESS (*ARRAY OF CHAR*);
- reqInfo{11}: ReqInfoPtr;
- argarray{12}: ADDRESS;
- tagList{8}: TagItemPtr); CODE -66;
- PROCEDURE vEZRequestTags (bodyfmt{9}, gadfmt{10}: ADDRESS (*ARRAY OF CHAR*);
- reqInfo{11}: ReqInfoPtr;
- argarray{12}: ADDRESS;
- tag1{8}: TagItemPtr); CODE -66;
- PROCEDURE vEZRequest (bodyfmt{9}, gadfmt{10}: ADDRESS (*ARRAY OF CHAR*);
- reqInfo{11}: ReqInfoPtr;
- tagList{8}: TagItemPtr;
- argarray{12}: ADDRESS (*LONGINT*)); CODE -66;
- PROCEDURE GetStringA ((*VAR*) buffer{9}: ADDRESS (*ARRAY OF CHAR*);
- maxchars{0}: LONGINT;
- title{10}: ADDRESS (*ARRAY OF CHAR*);
- reqInfo{11}: ReqInfoPtr;
- tagList{8}: TagItemPtr): BOOLEAN; CODE -72;
- PROCEDURE GetString ((*VAR*) buffer{9}: ADDRESS (*ARRAY OF CHAR*);
- maxchars{0}: LONGINT;
- title{10}: ADDRESS (*ARRAY OF CHAR*);
- reqInfo{11}: ReqInfoPtr;
- tag1{8}: TagItemPtr): BOOLEAN; CODE -72;
- PROCEDURE GetLongA (VAR long{9}: LONGINT; title{10}: ADDRESS (*ARRAY OF CHAR*);
- reqInfo{11}: ReqInfoPtr;
- tagList{8}: TagItemPtr): BOOLEAN; CODE -78;
- PROCEDURE GetLong (VAR long{9}: LONGINT; title{10}: ADDRESS (*ARRAY OF CHAR*);
- reqInfo{11}: ReqInfoPtr;
- tag1{8}: TagItemPtr): BOOLEAN; CODE -78;
- PROCEDURE FontRequestA (fontReq{9}: FontRequesterPtr;
- title{11}: ADDRESS (*ARRAY OF CHAR*);
- tagList{8}: TagItemPtr): BOOLEAN ; CODE -96;
- PROCEDURE FontRequest (fontReq{9}: FontRequesterPtr;
- title{11}: ADDRESS (*ARRAY OF CHAR*);
- tag1{8}: TagItemPtr):BOOLEAN ; CODE -96;
- PROCEDURE PaletteRequestA (title{10}: ADDRESS (*ARRAY OF CHAR*);
- reqInfo{11}: ReqInfoPtr;
- tagList{8}: TagItemPtr): LONGINT; CODE -102;
- PROCEDURE PaletteRequest (title{10}: ADDRESS (*ARRAY OF CHAR*);
- reqInfo{11}: ReqInfoPtr;
- tag1{8}: TagItemPtr): LONGINT; CODE -102;
- PROCEDURE ReqHandlerA (hinfo{9}: HandlerInfoPtr;
- sigs{0}: LONGSET;
- tagList{8}: TagItemPtr): LONGINT; CODE -108;
- PROCEDURE ReqHandler (hinfo{9}: HandlerInfoPtr;
- sigs{0}: LONGSET;
- tag1{8}: TagItemPtr): LONGINT; CODE -108;
- PROCEDURE SetWaitPointer (window{8}: WindowPtr); CODE -114;
- PROCEDURE GetVScreenSize (screen{8}: ScreenPtr;
- VAR width{9},height{10}: LONGINT); CODE -120;
- PROCEDURE SetReqPosition (reqpos{0}: LONGINT;
- VAR nw{8}: NewWindow;
- screen{9}: ScreenPtr;
- window{10}: WindowPtr); CODE -126;
- PROCEDURE Spread ((*VAR*) posarray{8}: ADDRESS (*ARRAY OF LONGINT*);
- sizearray{9}: ADDRESS (*ARRAY OF LONGINT*);
- totalsize{0}, min{1}, max{2}, num{3}: LONGINT); CODE -132;
- PROCEDURE ScreenToFrontSafely (screen{8}: ScreenPtr); CODE -138;
-
- END ReqTools.
-