home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d5xx / d575 / reqtools.lha / ReqTools / include / libraries / reqtools.h < prev    next >
C/C++ Source or Header  |  1991-12-22  |  10KB  |  337 lines

  1. #ifndef LIBRARIES_REQTOOLS_H
  2. #define LIBRARIES_REQTOOLS_H
  3. /*
  4. **    $Filename: libraries/reqtools.h $
  5. **    $Release: 1.0 $
  6. **
  7. **    (C) Copyright 1991 Nico François
  8. **        All Rights Reserved
  9. */
  10.  
  11. #ifndef    EXEC_TYPES_H
  12. #include <exec/types.h>
  13. #endif    /* EXEC_TYPES_H */
  14.  
  15. #ifndef    EXEC_LISTS_H
  16. #include <exec/lists.h>
  17. #endif    /* EXEC_LISTS_H */
  18.  
  19. #ifndef    EXEC_LIBRARIES_H
  20. #include <exec/libraries.h>
  21. #endif    /* EXEC_LIBRARIES_H */
  22.  
  23. #ifndef    GRAPHICS_TEXT_H
  24. #include <graphics/text.h>
  25. #endif    /* GRAPHICS_TEXT_H */
  26.  
  27. #ifndef UTILITY_TAGITEM_H
  28. #include <utility/tagitem.h>
  29. #endif    /* UTILITY_TAGITEM_H */
  30.  
  31. #define    REQTOOLSNAME         "reqtools.library"
  32. #define    REQTOOLSVERSION         37L
  33.  
  34. struct ReqToolsBase {
  35.    struct Library LibNode;
  36.    UBYTE Flags;
  37.    UBYTE pad[3];
  38.    BPTR SegList;
  39.    /* The following library bases may be read and used by your program */
  40.    struct IntuitionBase *IntuitionBase;
  41.    struct GfxBase *GfxBase;
  42.    struct DosLibrary *DOSBase;
  43.    /* Next two library bases are only (and always) valid on Kickstart 2.0!
  44.       (1.3 version of reqtools also initializes these when run on 2.0) */
  45.    struct Library *GadToolsBase;
  46.    struct Library *UtilityBase;
  47.    };
  48.  
  49. /* types of requesters, for rtAllocRequestA() */
  50. #define RT_FILEREQ         0L
  51. #define RT_REQINFO         1L
  52. #define RT_FONTREQ         2L
  53.  
  54. /***********************
  55. *                      *
  56. *    File requester    *
  57. *                      *
  58. ***********************/
  59.  
  60. /* structure _MUST_ be allocated with rtAllocRequest() */
  61.  
  62. struct rtFileRequester {
  63.    ULONG ReqPos;
  64.    UWORD LeftOffset;
  65.    UWORD TopOffset;
  66.    ULONG Flags;
  67.    struct Hook *Hook;
  68.    char *Dir;                /* READ ONLY! Change with rtChangeReqAttrA()! */
  69.    char *MatchPat;           /* READ ONLY! Change with rtChangeReqAttrA()! */
  70.    struct TextFont *DefaultFont;
  71.    ULONG WaitPointer;
  72.    /* Lots of private data follows! HANDS OFF :-) */
  73.    };
  74.  
  75. /* returned by rtFileRequestA() if multiselect is enabled,
  76.    free list with rtFreeFileList() */
  77.  
  78. struct rtFileList {
  79.    struct rtFileList *Next;
  80.    ULONG StrLen;             /* -1 for directories */
  81.    char *Name;
  82.    };
  83.  
  84. /***********************
  85. *                      *
  86. *    Font requester    *
  87. *                      *
  88. ***********************/
  89.  
  90. /* structure _MUST_ be allocated with rtAllocRequest() */
  91.  
  92. struct rtFontRequester {
  93.    ULONG ReqPos;
  94.    UWORD LeftOffset;
  95.    UWORD TopOffset;
  96.    ULONG Flags;
  97.    struct Hook *Hook;
  98.    struct TextAttr Attr;        /* READ ONLY! */
  99.    struct TextFont *DefaultFont;
  100.    ULONG WaitPointer;
  101.    /* Lots of private data follows! HANDS OFF :-) */
  102.    };
  103.  
  104. /***********************
  105. *                      *
  106. *    Requester Info    *
  107. *                      *
  108. ***********************/
  109.  
  110. /* for rtEZRequestA(), rtGetLongA(), rtGetStringA() and rtPaletteRequestA(),
  111.    _MUST_ be allocated with rtAllocRequest() */
  112.  
  113. struct rtReqInfo {
  114.    ULONG ReqPos;
  115.    UWORD LeftOffset;
  116.    UWORD TopOffset;
  117.    ULONG Width;                   /* not for rtEZRequestA() */
  118.    char *ReqTitle;                /* currently only for rtEZRequestA() */
  119.    ULONG Flags;                   /* only for rtEZRequestA() */
  120.    struct TextFont *DefaultFont;  /* currently only for rtPaletteRequestA() */
  121.    ULONG WaitPointer;
  122.    /* structure may be extended in future */
  123.    };
  124.  
  125. /***********************
  126. *                      *
  127. *     Handler Info     *
  128. *                      *
  129. ***********************/
  130.  
  131. /* for rtReqHandlerA(), will be allocated for you when you use
  132.    the RT_ReqHandler tag, never try to allocate this yourself! */
  133.  
  134. struct rtHandlerInfo {
  135.    ULONG private1;
  136.    ULONG WaitMask;
  137.    ULONG DoNotWait;
  138.    /* Private data follows, HANDS OFF :-) */
  139.    };
  140.  
  141. /* possible return codes from rtReqHandlerA() */
  142.  
  143. #define CALL_HANDLER         (ULONG)0x80000000
  144.  
  145.  
  146. /*************************************
  147. *                                    *
  148. *                TAGS                *
  149. *                                    *
  150. *************************************/
  151.  
  152. #define RT_TagBase         TAG_USER
  153.  
  154. /*** tags understood by most requester functions ***
  155. */
  156. /* optional pointer to window */
  157. #define RT_Window         (RT_TagBase+1)
  158. /* idcmp flags requester should abort on (useful for IDCMP_DISKINSERTED) */
  159. #define RT_IDCMPFlags         (RT_TagBase+2)
  160. /* position of requester window (see below) - default REQPOS_POINTER */
  161. #define RT_ReqPos         (RT_TagBase+3)
  162. /* signal mask to wait for abort signal */
  163. #define RT_LeftOffset         (RT_TagBase+4)
  164. /* topedge offset of requester relative to position specified by RT_ReqPos */
  165. #define RT_TopOffset         (RT_TagBase+5)
  166. /* name of public screen to put requester on (Kickstart 2.0 only!) */
  167. #define RT_PubScrName         (RT_TagBase+6)
  168. /* address of screen to put requester on */
  169. #define RT_Screen         (RT_TagBase+7)
  170. /* tagdata must hold the address of (!) an APTR variable */
  171. #define RT_ReqHandler         (RT_TagBase+8)
  172. /* font to use when screen font is rejected, _MUST_ be fixed-width font!
  173.    (struct TextFont *, not struct TextAttr *!)
  174.    - default GfxBase->DefaultFont */
  175. #define RT_DefaultFont         (RT_TagBase+9)
  176. /* boolean to set the standard wait pointer in window - default FALSE */
  177. #define RT_WaitPointer         (RT_TagBase+10)
  178.  
  179. /*** tags specific to rtEZRequestA ***
  180. */
  181. /* title of requester window - default "Request" or "Information" */
  182. #define RTEZ_ReqTitle         (RT_TagBase+20)
  183. /* (RT_TagBase+21) reserved
  184. /* various flags (see below) */
  185. #define RTEZ_Flags         (RT_TagBase+22)
  186. /* default response (activated by pressing RETURN) - default TRUE */
  187. #define RTEZ_DefaultResponse     (RT_TagBase+23)
  188.  
  189. /*** tags specific to rtGetLongA ***
  190. */
  191. /* minimum allowed value - default MININT */
  192. #define RTGL_Min         (RT_TagBase+30)
  193. /* maximum allowed value - default MAXINT */
  194. #define RTGL_Max         (RT_TagBase+31)
  195. /* suggested width of requester window (in pixels) */
  196. #define RTGL_Width         (RT_TagBase+32)
  197. /* boolean to show the default value - default TRUE */
  198. #define RTGL_ShowDefault     (RT_TagBase+33)
  199.  
  200. /*** tags specific to rtGetStringA ***
  201. */
  202. /* suggested width of requester window (in pixels) */
  203. #define RTGS_Width         RTGL_Width
  204. /* allow empty string to be accepted - default FALSE */
  205. #define RTGS_AllowEmpty         (RT_TagBase+80)
  206.  
  207. /*** tags specific to rtFileRequestA ***
  208. */
  209. /* various flags (see below) */
  210. #define RTFI_Flags         (RT_TagBase+40)
  211. /* suggested height of file requester */
  212. #define RTFI_Height         (RT_TagBase+41)
  213. /* replacement text for 'Ok' gadget (max 6 chars) */
  214. #define RTFI_OkText         (RT_TagBase+42)
  215.  
  216. /*** tags specific to rtFontRequestA ***
  217. */
  218. /* various flags (see below) */
  219. #define RTFO_Flags         RTFI_Flags
  220. /* suggested height of font requester */
  221. #define RTFO_Height         RTFI_Height
  222. /* replacement text for 'Ok' gadget (max 6 chars) */
  223. #define RTFO_OkText         RTFI_OkText
  224. /* suggested height of font sample display - default 24 */
  225. #define RTFO_SampleHeight     (RT_TagBase+60)
  226. /* minimum height of font displayed */
  227. #define RTFO_MinHeight         (RT_TagBase+61)
  228. /* maximum height of font displayed */
  229. #define RTFO_MaxHeight         (RT_TagBase+62)
  230. /* [(RT_TagBase+63) to (RT_TagBase+66) used below] */
  231.  
  232. /*** tags for rtChangeReqAttrA ***
  233. */
  234. /* file requester - set directory */
  235. #define RTFI_Dir         (RT_TagBase+50)
  236. /* file requester - set wildcard pattern */
  237. #define RTFI_MatchPat         (RT_TagBase+51)
  238. /* file requester - add a file or directory to the buffer */
  239. #define RTFI_AddEntry         (RT_TagBase+52)
  240. /* file requester - remove a file or directory from the buffer */
  241. #define RTFI_RemoveEntry     (RT_TagBase+53)
  242. /* font requester - set font name of selected font */
  243. #define RTFO_FontName         (RT_TagBase+63)
  244. /* font requester - set font size */
  245. #define RTFO_FontHeight         (RT_TagBase+64)
  246. /* font requester - set font style */
  247. #define RTFO_FontStyle         (RT_TagBase+65)
  248. /* font requester - set font flags */
  249. #define RTFO_FontFlags         (RT_TagBase+66)
  250.  
  251. /*** tags for rtPaletteRequestA ***
  252. */
  253. /* initially selected color - default 1 */
  254. #define RTPA_Color         (RT_TagBase+70)
  255.  
  256. /*** tags for rtReqHandlerA ***
  257. */
  258. /* end requester by software control, set tagdata to REQ_CANCEL, REQ_OK or
  259.    in case of rtEZRequest to the return value */
  260. #define RTRH_EndRequest         (RT_TagBase+60)
  261.  
  262. /*** tags for rtAllocRequestA ***/
  263. /* no tags defined yet */
  264.  
  265.  
  266. /************
  267. * RT_ReqPos *
  268. ************/
  269. #define REQPOS_POINTER         0L
  270. #define REQPOS_CENTERWIN     1L
  271. #define REQPOS_CENTERSCR     2L
  272. #define REQPOS_TOPLEFTWIN     3L
  273. #define REQPOS_TOPLEFTSCR     4L
  274.  
  275. /******************
  276. * RTRH_EndRequest *
  277. ******************/
  278. #define REQ_CANCEL         0L
  279. #define REQ_OK             1L
  280.  
  281. /***************************************
  282. * flags for RTFI_Flags and RTFO_Flags  *
  283. * or filereq->Flags and fontreq->Flags *
  284. ***************************************/
  285. #define FREQB_NOBUFFER         2L
  286. #define FREQF_NOBUFFER         (1L<<FREQB_NOBUFFER)
  287. #define FREQB_DOWILDFUNC     11L
  288. #define FREQF_DOWILDFUNC     (1L<<FREQB_DOWILDFUNC)
  289.  
  290. /*****************************************
  291. * flags for RTFI_Flags or filereq->Flags *
  292. *****************************************/
  293. #define FREQB_MULTISELECT     0L
  294. #define FREQF_MULTISELECT     (1L<<FREQB_MULTISELECT)
  295. #define FREQB_SAVE         1L
  296. #define FREQF_SAVE         (1L<<FREQB_SAVE)
  297. #define FREQB_NOFILES         3L
  298. #define FREQF_NOFILES         (1L<<FREQB_NOFILES)
  299. #define FREQB_PATGAD         4L
  300. #define FREQF_PATGAD         (1L<<FREQB_PATGAD)
  301. #define FREQB_SELECTDIRS     12L
  302. #define FREQF_SELECTDIRS     (1L<<FREQB_SELECTDIRS)
  303.  
  304. /*****************************************
  305. * flags for RTFO_Flags or fontreq->Flags *
  306. *****************************************/
  307. #define FREQB_FIXEDWIDTH     5L
  308. #define FREQF_FIXEDWIDTH     (1L<<FREQB_FIXEDWIDTH)
  309. #define FREQB_COLORFONTS     6L
  310. #define FREQF_COLORFONTS     (1L<<FREQB_COLORFONTS)
  311. #define FREQB_CHANGEPALETTE     7L
  312. #define FREQF_CHANGEPALETTE     (1L<<FREQB_CHANGEPALETTE)
  313. #define FREQB_LEAVEPALETTE     8L
  314. #define FREQF_LEAVEPALETTE     (1L<<FREQB_LEAVEPALETTE)
  315. #define FREQB_SCALE         9L
  316. #define FREQF_SCALE         (1L<<FREQB_SCALE)
  317. #define FREQB_STYLE         10L
  318. #define FREQF_STYLE         (1L<<FREQB_STYLE)
  319.  
  320. /*****************************************
  321. * flags for RTEZ_Flags or reqinfo->Flags *
  322. *****************************************/
  323. #define EZREQB_NORETURNKEY     0L
  324. #define EZREQF_NORETURNKEY     (1L<<EZREQB_NORETURNKEY)
  325. #define EZREQB_LAMIGAQUAL     1L
  326. #define EZREQF_LAMIGAQUAL     (1L<<EZREQB_LAMIGAQUAL)
  327. #define EZREQB_CENTERTEXT     2L
  328. #define EZREQF_CENTERTEXT     (1L<<EZREQB_CENTERTEXT)
  329.  
  330. /********
  331. * hooks *
  332. ********/
  333. #define REQHOOK_WILDFILE     0L
  334. #define REQHOOK_WILDFONT     1L
  335.  
  336. #endif /* LIBRARIES_REQTOOLS_H */
  337.