#ifndef LIBRARIES_REQTOOLS_H #define LIBRARIES_REQTOOLS_H /* ** $Filename: libraries/reqtools.h $ ** $Release: 1.0 $ ** ** (C) Copyright 1991 Nico François ** All Rights Reserved */ #ifndef EXEC_TYPES_H #include #endif /* EXEC_TYPES_H */ #ifndef EXEC_LISTS_H #include #endif /* EXEC_LISTS_H */ #ifndef EXEC_LIBRARIES_H #include #endif /* EXEC_LIBRARIES_H */ #ifndef GRAPHICS_TEXT_H #include #endif /* GRAPHICS_TEXT_H */ #ifndef UTILITY_TAGITEM_H #include #endif /* UTILITY_TAGITEM_H */ #define REQTOOLSNAME "reqtools.library" #define REQTOOLSVERSION 37L struct ReqToolsBase { struct Library LibNode; UBYTE Flags; UBYTE pad[3]; BPTR SegList; /* The following library bases may be read and used by your program */ struct IntuitionBase *IntuitionBase; struct GfxBase *GfxBase; struct DosLibrary *DOSBase; /* 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) */ struct Library *GadToolsBase; struct Library *UtilityBase; }; /* types of requesters, for rtAllocRequestA() */ #define RT_FILEREQ 0L #define RT_REQINFO 1L #define RT_FONTREQ 2L /*********************** * * * File requester * * * ***********************/ /* structure _MUST_ be allocated with rtAllocRequest() */ struct rtFileRequester { ULONG ReqPos; UWORD LeftOffset; UWORD TopOffset; ULONG Flags; struct Hook *Hook; char *Dir; /* READ ONLY! Change with rtChangeReqAttrA()! */ char *MatchPat; /* READ ONLY! Change with rtChangeReqAttrA()! */ struct TextFont *DefaultFont; ULONG WaitPointer; /* Lots of private data follows! HANDS OFF :-) */ }; /* returned by rtFileRequestA() if multiselect is enabled, free list with rtFreeFileList() */ struct rtFileList { struct rtFileList *Next; ULONG StrLen; /* -1 for directories */ char *Name; }; /*********************** * * * Font requester * * * ***********************/ /* structure _MUST_ be allocated with rtAllocRequest() */ struct rtFontRequester { ULONG ReqPos; UWORD LeftOffset; UWORD TopOffset; ULONG Flags; struct Hook *Hook; struct TextAttr Attr; /* READ ONLY! */ struct TextFont *DefaultFont; ULONG WaitPointer; /* Lots of private data follows! HANDS OFF :-) */ }; /*********************** * * * Requester Info * * * ***********************/ /* for rtEZRequestA(), rtGetLongA(), rtGetStringA() and rtPaletteRequestA(), _MUST_ be allocated with rtAllocRequest() */ struct rtReqInfo { ULONG ReqPos; UWORD LeftOffset; UWORD TopOffset; ULONG Width; /* not for rtEZRequestA() */ char *ReqTitle; /* currently only for rtEZRequestA() */ ULONG Flags; /* only for rtEZRequestA() */ struct TextFont *DefaultFont; /* currently only for rtPaletteRequestA() */ ULONG WaitPointer; /* structure may be extended in future */ }; /*********************** * * * Handler Info * * * ***********************/ /* for rtReqHandlerA(), will be allocated for you when you use the RT_ReqHandler tag, never try to allocate this yourself! */ struct rtHandlerInfo { ULONG private1; ULONG WaitMask; ULONG DoNotWait; /* Private data follows, HANDS OFF :-) */ }; /* possible return codes from rtReqHandlerA() */ #define CALL_HANDLER (ULONG)0x80000000 /************************************* * * * TAGS * * * *************************************/ #define RT_TagBase TAG_USER /*** tags understood by most requester functions *** */ /* optional pointer to window */ #define RT_Window (RT_TagBase+1) /* idcmp flags requester should abort on (useful for IDCMP_DISKINSERTED) */ #define RT_IDCMPFlags (RT_TagBase+2) /* position of requester window (see below) - default REQPOS_POINTER */ #define RT_ReqPos (RT_TagBase+3) /* signal mask to wait for abort signal */ #define RT_LeftOffset (RT_TagBase+4) /* topedge offset of requester relative to position specified by RT_ReqPos */ #define RT_TopOffset (RT_TagBase+5) /* name of public screen to put requester on (Kickstart 2.0 only!) */ #define RT_PubScrName (RT_TagBase+6) /* address of screen to put requester on */ #define RT_Screen (RT_TagBase+7) /* tagdata must hold the address of (!) an APTR variable */ #define RT_ReqHandler (RT_TagBase+8) /* font to use when screen font is rejected, _MUST_ be fixed-width font! (struct TextFont *, not struct TextAttr *!) - default GfxBase->DefaultFont */ #define RT_DefaultFont (RT_TagBase+9) /* boolean to set the standard wait pointer in window - default FALSE */ #define RT_WaitPointer (RT_TagBase+10) /*** tags specific to rtEZRequestA *** */ /* title of requester window - default "Request" or "Information" */ #define RTEZ_ReqTitle (RT_TagBase+20) /* (RT_TagBase+21) reserved /* various flags (see below) */ #define RTEZ_Flags (RT_TagBase+22) /* default response (activated by pressing RETURN) - default TRUE */ #define RTEZ_DefaultResponse (RT_TagBase+23) /*** tags specific to rtGetLongA *** */ /* minimum allowed value - default MININT */ #define RTGL_Min (RT_TagBase+30) /* maximum allowed value - default MAXINT */ #define RTGL_Max (RT_TagBase+31) /* suggested width of requester window (in pixels) */ #define RTGL_Width (RT_TagBase+32) /* boolean to show the default value - default TRUE */ #define RTGL_ShowDefault (RT_TagBase+33) /*** tags specific to rtGetStringA *** */ /* suggested width of requester window (in pixels) */ #define RTGS_Width RTGL_Width /* allow empty string to be accepted - default FALSE */ #define RTGS_AllowEmpty (RT_TagBase+80) /*** tags specific to rtFileRequestA *** */ /* various flags (see below) */ #define RTFI_Flags (RT_TagBase+40) /* suggested height of file requester */ #define RTFI_Height (RT_TagBase+41) /* replacement text for 'Ok' gadget (max 6 chars) */ #define RTFI_OkText (RT_TagBase+42) /*** tags specific to rtFontRequestA *** */ /* various flags (see below) */ #define RTFO_Flags RTFI_Flags /* suggested height of font requester */ #define RTFO_Height RTFI_Height /* replacement text for 'Ok' gadget (max 6 chars) */ #define RTFO_OkText RTFI_OkText /* suggested height of font sample display - default 24 */ #define RTFO_SampleHeight (RT_TagBase+60) /* minimum height of font displayed */ #define RTFO_MinHeight (RT_TagBase+61) /* maximum height of font displayed */ #define RTFO_MaxHeight (RT_TagBase+62) /* [(RT_TagBase+63) to (RT_TagBase+66) used below] */ /*** tags for rtChangeReqAttrA *** */ /* file requester - set directory */ #define RTFI_Dir (RT_TagBase+50) /* file requester - set wildcard pattern */ #define RTFI_MatchPat (RT_TagBase+51) /* file requester - add a file or directory to the buffer */ #define RTFI_AddEntry (RT_TagBase+52) /* file requester - remove a file or directory from the buffer */ #define RTFI_RemoveEntry (RT_TagBase+53) /* font requester - set font name of selected font */ #define RTFO_FontName (RT_TagBase+63) /* font requester - set font size */ #define RTFO_FontHeight (RT_TagBase+64) /* font requester - set font style */ #define RTFO_FontStyle (RT_TagBase+65) /* font requester - set font flags */ #define RTFO_FontFlags (RT_TagBase+66) /*** tags for rtPaletteRequestA *** */ /* initially selected color - default 1 */ #define RTPA_Color (RT_TagBase+70) /*** tags for rtReqHandlerA *** */ /* end requester by software control, set tagdata to REQ_CANCEL, REQ_OK or in case of rtEZRequest to the return value */ #define RTRH_EndRequest (RT_TagBase+60) /*** tags for rtAllocRequestA ***/ /* no tags defined yet */ /************ * RT_ReqPos * ************/ #define REQPOS_POINTER 0L #define REQPOS_CENTERWIN 1L #define REQPOS_CENTERSCR 2L #define REQPOS_TOPLEFTWIN 3L #define REQPOS_TOPLEFTSCR 4L /****************** * RTRH_EndRequest * ******************/ #define REQ_CANCEL 0L #define REQ_OK 1L /*************************************** * flags for RTFI_Flags and RTFO_Flags * * or filereq->Flags and fontreq->Flags * ***************************************/ #define FREQB_NOBUFFER 2L #define FREQF_NOBUFFER (1L<Flags * *****************************************/ #define FREQB_MULTISELECT 0L #define FREQF_MULTISELECT (1L<Flags * *****************************************/ #define FREQB_FIXEDWIDTH 5L #define FREQF_FIXEDWIDTH (1L<Flags * *****************************************/ #define EZREQB_NORETURNKEY 0L #define EZREQF_NORETURNKEY (1L<