1 #ifndef LIBRARIES_REQTOOLS_H
2 #define LIBRARIES_REQTOOLS_H
4 ** $Filename: libraries/reqtools.h $
8 ** reqtools.library definitions
10 ** (C) Copyright 1991-1994 Nico François
11 ** All Rights Reserved
15 #include <exec/types.h>
16 #endif /* EXEC_TYPES_H */
19 #include <exec/lists.h>
20 #endif /* EXEC_LISTS_H */
22 #ifndef EXEC_LIBRARIES_H
23 #include <exec/libraries.h>
24 #endif /* EXEC_LIBRARIES_H */
26 #ifndef EXEC_SEMAPHORES_H
27 #include <exec/semaphores.h>
28 #endif /* EXEC_SEMAPHORES_H */
30 #ifndef LIBRARIES_DOS_H
31 #include <libraries/dos.h>
32 #endif /* LIBRARIES_DOS_H */
34 #ifndef LIBRARIES_DOSEXTENS_H
35 #include <libraries/dosextens.h>
36 #endif /* LIBRARIES_DOSEXTENS_H */
38 #ifndef LIBRARIES_DISKFONT_H
39 #include <libraries/diskfont.h>
40 #endif /* LIBRARIES_DISKFONT_H */
42 #ifndef GRAPHICS_TEXT_H
43 #include <graphics/text.h>
44 #endif /* GRAPHICS_TEXT_H */
46 #ifndef UTILITY_TAGITEM_H
47 #include <utility/tagitem.h>
48 #endif /* UTILITY_TAGITEM_H */
50 #define REQTOOLSNAME "reqtools.library"
51 #define REQTOOLSVERSION 38L
53 /***********************
57 ***********************/
59 #define RTPREF_FILEREQ 0L
60 #define RTPREF_FONTREQ 1L
61 #define RTPREF_PALETTEREQ 2L
62 #define RTPREF_SCREENMODEREQ 3L
63 #define RTPREF_VOLUMEREQ 4L
64 #define RTPREF_OTHERREQ 5L
65 #define RTPREF_NR_OF_REQ 6L
76 struct ReqToolsPrefs {
77 /* Size of preferences (_without_ this field and the semaphore) */
79 struct SignalSemaphore PrefsSemaphore;
80 /* Start of real preferences */
82 struct ReqDefaults ReqDefaults[RTPREF_NR_OF_REQ];
85 #define RTPREFS_SIZE \
86 (sizeof (struct ReqToolsPrefs) - sizeof (struct SignalSemaphore) - 4)
90 #define RTPRB_DIRSFIRST 0L
91 #define RTPRF_DIRSFIRST (1L<<RTPRB_DIRSFIRST)
92 #define RTPRB_DIRSMIXED 1L
93 #define RTPRF_DIRSMIXED (1L<<RTPRB_DIRSMIXED)
94 #define RTPRB_IMMSORT 2L
95 #define RTPRF_IMMSORT (1L<<RTPRB_IMMSORT)
96 #define RTPRB_NOSCRTOFRONT 3L
97 #define RTPRF_NOSCRTOFRONT (1L<<RTPRB_NOSCRTOFRONT)
98 #define RTPRB_NOLED 4L
99 #define RTPRF_NOLED (1L<<RTPRB_NOLED)
101 /***********************
105 ***********************/
107 struct ReqToolsBase {
108 struct Library LibNode;
115 /* NOTE: Some versions of the Manx C compiler contain a bug so it gets
116 confused by the library bases below. Add the rt_ prefix to the
117 library names to fix the problem (e.g. rt_IntuitionBase). */
119 /* The following library bases may be read and used by your program */
120 struct IntuitionBase *IntuitionBase;
121 struct GfxBase *GfxBase;
122 struct DosLibrary *DOSBase;
123 /* Next two library bases are only (and always) valid on Kickstart 2.0!
124 (1.3 version of reqtools also initializes these when run on 2.0) */
125 struct Library *GadToolsBase;
126 struct Library *UtilityBase;
128 /* PRIVATE FIELDS, THESE WILL CHANGE FROM RELEASE TO RELEASE! */
130 /* The RealOpenCnt is for the buffered AvailFonts feature. Since
131 Kickstart 3.0 offers low memory handlers a release of ReqTools for 3.0
132 will not use this field and start using the normal OpenCnt again. */
134 UWORD AvailFontsLock;
135 struct AvailFontsHeader *AvailFontsHeader;
136 ULONG FontsAssignType;
137 BPTR FontsAssignLock;
138 struct AssignList *FontsAssignList;
139 struct ReqToolsPrefs ReqToolsPrefs;
143 /* types of requesters, for rtAllocRequestA() */
144 #define RT_FILEREQ 0L
145 #define RT_REQINFO 1L
146 #define RT_FONTREQ 2L
148 #define RT_SCREENMODEREQ 3L
150 /***********************
154 ***********************/
156 /* structure _MUST_ be allocated with rtAllocRequest() */
158 struct rtFileRequester {
163 /* OBSOLETE IN V38! DON'T USE! */ struct Hook *Hook;
165 char *Dir; /* READ ONLY! Change with rtChangeReqAttrA()! */
166 char *MatchPat; /* READ ONLY! Change with rtChangeReqAttrA()! */
168 struct TextFont *DefaultFont;
173 struct Hook *IntuiMsgFunc;
177 UWORD ReqHeight; /* READ ONLY! Use RTFI_Height tag! */
178 /* Private data follows! HANDS OFF :-) */
181 /* returned by rtFileRequestA() if multiselect is enabled,
182 free list with rtFreeFileList() */
185 struct rtFileList *Next;
186 ULONG StrLen; /* -1 for directories */
190 /* structure passed to RTFI_FilterFunc callback hook by
191 volume requester (see RTFI_VolumeRequest tag) */
193 struct rtVolumeEntry {
194 ULONG Type; /* DLT_DEVICE or DLT_DIRECTORY */
198 /***********************
202 ***********************/
204 /* structure _MUST_ be allocated with rtAllocRequest() */
206 struct rtFontRequester {
211 /* OBSOLETE IN V38! DON'T USE! */ struct Hook *Hook;
213 struct TextAttr Attr; /* READ ONLY! */
215 struct TextFont *DefaultFont;
220 struct Hook *IntuiMsgFunc;
224 UWORD ReqHeight; /* READ ONLY! Use RTFO_Height tag! */
225 /* Private data follows! HANDS OFF :-) */
228 /*************************
230 * ScreenMode requester *
232 *************************/
234 /* structure _MUST_ be allocated with rtAllocRequest() */
236 struct rtScreenModeRequester {
243 ULONG DisplayID; /* READ ONLY! */
244 UWORD DisplayWidth; /* READ ONLY! */
245 UWORD DisplayHeight; /* READ ONLY! */
247 struct TextFont *DefaultFont;
251 struct Hook *IntuiMsgFunc;
255 UWORD ReqHeight; /* READ ONLY! Use RTSC_Height tag! */
257 UWORD DisplayDepth; /* READ ONLY! */
258 UWORD OverscanType; /* READ ONLY! */
259 ULONG AutoScroll; /* READ ONLY! */
260 /* Private data follows! HANDS OFF :-) */
263 /***********************
267 ***********************/
269 /* for rtEZRequestA(), rtGetLongA(), rtGetStringA() and rtPaletteRequestA(),
270 _MUST_ be allocated with rtAllocRequest() */
276 ULONG Width; /* not for rtEZRequestA() */
277 char *ReqTitle; /* currently only for rtEZRequestA() */
279 struct TextFont *DefaultFont; /* currently only for rtPaletteRequestA() */
284 struct Hook *IntuiMsgFunc;
285 /* structure may be extended in future */
288 /***********************
292 ***********************/
294 /* for rtReqHandlerA(), will be allocated for you when you use
295 the RT_ReqHandler tag, never try to allocate this yourself! */
297 struct rtHandlerInfo {
301 /* Private data follows, HANDS OFF :-) */
304 /* possible return codes from rtReqHandlerA() */
306 #define CALL_HANDLER (ULONG)0x80000000
309 /*************************************
313 *************************************/
315 #define RT_TagBase TAG_USER
317 /*** tags understood by most requester functions ***
319 /* optional pointer to window */
320 #define RT_Window (RT_TagBase+1)
321 /* idcmp flags requester should abort on (useful for IDCMP_DISKINSERTED) */
322 #define RT_IDCMPFlags (RT_TagBase+2)
323 /* position of requester window (see below) - default REQPOS_POINTER */
324 #define RT_ReqPos (RT_TagBase+3)
325 /* leftedge offset of requester relative to position specified by RT_ReqPos */
326 #define RT_LeftOffset (RT_TagBase+4)
327 /* topedge offset of requester relative to position specified by RT_ReqPos */
328 #define RT_TopOffset (RT_TagBase+5)
329 /* name of public screen to put requester on (Kickstart 2.0 only!) */
330 #define RT_PubScrName (RT_TagBase+6)
331 /* address of screen to put requester on */
332 #define RT_Screen (RT_TagBase+7)
333 /* tagdata must hold the address of (!) an APTR variable */
334 #define RT_ReqHandler (RT_TagBase+8)
335 /* font to use when screen font is rejected, _MUST_ be fixed-width font!
336 (struct TextFont *, not struct TextAttr *!)
337 - default GfxBase->DefaultFont */
338 #define RT_DefaultFont (RT_TagBase+9)
339 /* boolean to set the standard wait pointer in window - default FALSE */
340 #define RT_WaitPointer (RT_TagBase+10)
341 /* (V38) char preceding keyboard shortcut characters (will be underlined) */
342 #define RT_Underscore (RT_TagBase+11)
343 /* (V38) share IDCMP port with window - default FALSE */
344 #define RT_ShareIDCMP (RT_TagBase+12)
345 /* (V38) lock window and set standard wait pointer - default FALSE */
346 #define RT_LockWindow (RT_TagBase+13)
347 /* (V38) boolean to make requester's screen pop to front - default TRUE */
348 #define RT_ScreenToFront (RT_TagBase+14)
349 /* (V38) Requester should use this font - default: screen font */
350 #define RT_TextAttr (RT_TagBase+15)
351 /* (V38) call this hook for every IDCMP message not for requester */
352 #define RT_IntuiMsgFunc (RT_TagBase+16)
353 /* (V38) Locale ReqTools should use for text */
354 #define RT_Locale (RT_TagBase+17)
356 /*** tags specific to rtEZRequestA ***
358 /* title of requester window - english default "Request" or "Information" */
359 #define RTEZ_ReqTitle (RT_TagBase+20)
360 /* (RT_TagBase+21) reserved */
361 /* various flags (see below) */
362 #define RTEZ_Flags (RT_TagBase+22)
363 /* default response (activated by pressing RETURN) - default TRUE */
364 #define RTEZ_DefaultResponse (RT_TagBase+23)
366 /*** tags specific to rtGetLongA ***
368 /* minimum allowed value - default MININT */
369 #define RTGL_Min (RT_TagBase+30)
370 /* maximum allowed value - default MAXINT */
371 #define RTGL_Max (RT_TagBase+31)
372 /* suggested width of requester window (in pixels) */
373 #define RTGL_Width (RT_TagBase+32)
374 /* boolean to show the default value - default TRUE */
375 #define RTGL_ShowDefault (RT_TagBase+33)
376 /* (V38) string with possible responses - english default " _Ok |_Cancel" */
377 #define RTGL_GadFmt (RT_TagBase+34)
378 /* (V38) optional arguments for RTGL_GadFmt */
379 #define RTGL_GadFmtArgs (RT_TagBase+35)
380 /* (V38) invisible typing - default FALSE */
381 #define RTGL_Invisible (RT_TagBase+36)
382 /* (V38) window backfill - default TRUE */
383 #define RTGL_BackFill (RT_TagBase+37)
384 /* (V38) optional text above gadget */
385 #define RTGL_TextFmt (RT_TagBase+38)
386 /* (V38) optional arguments for RTGS_TextFmt */
387 #define RTGL_TextFmtArgs (RT_TagBase+39)
388 /* (V38) various flags (see below) */
389 #define RTGL_Flags RTEZ_Flags
391 /*** tags specific to rtGetStringA ***
393 /* suggested width of requester window (in pixels) */
394 #define RTGS_Width RTGL_Width
395 /* allow empty string to be accepted - default FALSE */
396 #define RTGS_AllowEmpty (RT_TagBase+80)
397 /* (V38) string with possible responses - english default " _Ok |_Cancel" */
398 #define RTGS_GadFmt RTGL_GadFmt
399 /* (V38) optional arguments for RTGS_GadFmt */
400 #define RTGS_GadFmtArgs RTGL_GadFmtArgs
401 /* (V38) invisible typing - default FALSE */
402 #define RTGS_Invisible RTGL_Invisible
403 /* (V38) window backfill - default TRUE */
404 #define RTGS_BackFill RTGL_BackFill
405 /* (V38) optional text above gadget */
406 #define RTGS_TextFmt RTGL_TextFmt
407 /* (V38) optional arguments for RTGS_TextFmt */
408 #define RTGS_TextFmtArgs RTGL_TextFmtArgs
409 /* (V38) various flags (see below) */
410 #define RTGS_Flags RTEZ_Flags
412 /*** tags specific to rtFileRequestA ***
414 /* various flags (see below) */
415 #define RTFI_Flags (RT_TagBase+40)
416 /* suggested height of file requester */
417 #define RTFI_Height (RT_TagBase+41)
418 /* replacement text for 'Ok' gadget (max 6 chars) */
419 #define RTFI_OkText (RT_TagBase+42)
420 /* (V38) bring up volume requester, tag data holds flags (see below) */
421 #define RTFI_VolumeRequest (RT_TagBase+43)
422 /* (V38) call this hook for every file in the directory */
423 #define RTFI_FilterFunc (RT_TagBase+44)
424 /* (V38) allow empty file to be accepted - default FALSE */
425 #define RTFI_AllowEmpty (RT_TagBase+45)
427 /*** tags specific to rtFontRequestA ***
429 /* various flags (see below) */
430 #define RTFO_Flags RTFI_Flags
431 /* suggested height of font requester */
432 #define RTFO_Height RTFI_Height
433 /* replacement text for 'Ok' gadget (max 6 chars) */
434 #define RTFO_OkText RTFI_OkText
435 /* suggested height of font sample display - default 24 */
436 #define RTFO_SampleHeight (RT_TagBase+60)
437 /* minimum height of font displayed */
438 #define RTFO_MinHeight (RT_TagBase+61)
439 /* maximum height of font displayed */
440 #define RTFO_MaxHeight (RT_TagBase+62)
441 /* [(RT_TagBase+63) to (RT_TagBase+66) used below] */
442 /* (V38) call this hook for every font */
443 #define RTFO_FilterFunc RTFI_FilterFunc
445 /*** (V38) tags for rtScreenModeRequestA ***
447 /* various flags (see below) */
448 #define RTSC_Flags RTFI_Flags
449 /* suggested height of screenmode requester */
450 #define RTSC_Height RTFI_Height
451 /* replacement text for 'Ok' gadget (max 6 chars) */
452 #define RTSC_OkText RTFI_OkText
453 /* property flags (see also RTSC_PropertyMask) */
454 #define RTSC_PropertyFlags (RT_TagBase+90)
455 /* property mask - default all bits in RTSC_PropertyFlags considered */
456 #define RTSC_PropertyMask (RT_TagBase+91)
457 /* minimum display width allowed */
458 #define RTSC_MinWidth (RT_TagBase+92)
459 /* maximum display width allowed */
460 #define RTSC_MaxWidth (RT_TagBase+93)
461 /* minimum display height allowed */
462 #define RTSC_MinHeight (RT_TagBase+94)
463 /* maximum display height allowed */
464 #define RTSC_MaxHeight (RT_TagBase+95)
465 /* minimum display depth allowed */
466 #define RTSC_MinDepth (RT_TagBase+96)
467 /* maximum display depth allowed */
468 #define RTSC_MaxDepth (RT_TagBase+97)
469 /* call this hook for every display mode id */
470 #define RTSC_FilterFunc RTFI_FilterFunc
472 /*** tags for rtChangeReqAttrA ***
474 /* file requester - set directory */
475 #define RTFI_Dir (RT_TagBase+50)
476 /* file requester - set wildcard pattern */
477 #define RTFI_MatchPat (RT_TagBase+51)
478 /* file requester - add a file or directory to the buffer */
479 #define RTFI_AddEntry (RT_TagBase+52)
480 /* file requester - remove a file or directory from the buffer */
481 #define RTFI_RemoveEntry (RT_TagBase+53)
482 /* font requester - set font name of selected font */
483 #define RTFO_FontName (RT_TagBase+63)
484 /* font requester - set font size */
485 #define RTFO_FontHeight (RT_TagBase+64)
486 /* font requester - set font style */
487 #define RTFO_FontStyle (RT_TagBase+65)
488 /* font requester - set font flags */
489 #define RTFO_FontFlags (RT_TagBase+66)
490 /* (V38) screenmode requester - get display attributes from screen */
491 #define RTSC_ModeFromScreen (RT_TagBase+80)
492 /* (V38) screenmode requester - set display mode id (32-bit extended) */
493 #define RTSC_DisplayID (RT_TagBase+81)
494 /* (V38) screenmode requester - set display width */
495 #define RTSC_DisplayWidth (RT_TagBase+82)
496 /* (V38) screenmode requester - set display height */
497 #define RTSC_DisplayHeight (RT_TagBase+83)
498 /* (V38) screenmode requester - set display depth */
499 #define RTSC_DisplayDepth (RT_TagBase+84)
500 /* (V38) screenmode requester - set overscan type, 0 for regular size */
501 #define RTSC_OverscanType (RT_TagBase+85)
502 /* (V38) screenmode requester - set autoscroll */
503 #define RTSC_AutoScroll (RT_TagBase+86)
505 /*** tags for rtPaletteRequestA ***
507 /* initially selected color - default 1 */
508 #define RTPA_Color (RT_TagBase+70)
510 /*** tags for rtReqHandlerA ***
512 /* end requester by software control, set tagdata to REQ_CANCEL, REQ_OK or
513 in case of rtEZRequest to the return value */
514 #define RTRH_EndRequest (RT_TagBase+60)
516 /*** tags for rtAllocRequestA ***/
517 /* no tags defined yet */
523 #define REQPOS_POINTER 0L
524 #define REQPOS_CENTERWIN 1L
525 #define REQPOS_CENTERSCR 2L
526 #define REQPOS_TOPLEFTWIN 3L
527 #define REQPOS_TOPLEFTSCR 4L
532 #define REQ_CANCEL 0L
535 /***************************************
536 * flags for RTFI_Flags and RTFO_Flags *
537 * or filereq->Flags and fontreq->Flags *
538 ***************************************/
539 #define FREQB_NOBUFFER 2L
540 #define FREQF_NOBUFFER (1L<<FREQB_NOBUFFER)
542 /*****************************************
543 * flags for RTFI_Flags or filereq->Flags *
544 *****************************************/
545 #define FREQB_MULTISELECT 0L
546 #define FREQF_MULTISELECT (1L<<FREQB_MULTISELECT)
547 #define FREQB_SAVE 1L
548 #define FREQF_SAVE (1L<<FREQB_SAVE)
549 #define FREQB_NOFILES 3L
550 #define FREQF_NOFILES (1L<<FREQB_NOFILES)
551 #define FREQB_PATGAD 4L
552 #define FREQF_PATGAD (1L<<FREQB_PATGAD)
553 #define FREQB_SELECTDIRS 12L
554 #define FREQF_SELECTDIRS (1L<<FREQB_SELECTDIRS)
556 /*****************************************
557 * flags for RTFO_Flags or fontreq->Flags *
558 *****************************************/
559 #define FREQB_FIXEDWIDTH 5L
560 #define FREQF_FIXEDWIDTH (1L<<FREQB_FIXEDWIDTH)
561 #define FREQB_COLORFONTS 6L
562 #define FREQF_COLORFONTS (1L<<FREQB_COLORFONTS)
563 #define FREQB_CHANGEPALETTE 7L
564 #define FREQF_CHANGEPALETTE (1L<<FREQB_CHANGEPALETTE)
565 #define FREQB_LEAVEPALETTE 8L
566 #define FREQF_LEAVEPALETTE (1L<<FREQB_LEAVEPALETTE)
567 #define FREQB_SCALE 9L
568 #define FREQF_SCALE (1L<<FREQB_SCALE)
569 #define FREQB_STYLE 10L
570 #define FREQF_STYLE (1L<<FREQB_STYLE)
572 /*****************************************************
573 * (V38) flags for RTSC_Flags or screenmodereq->Flags *
574 *****************************************************/
575 #define SCREQB_SIZEGADS 13L
576 #define SCREQF_SIZEGADS (1L<<SCREQB_SIZEGADS)
577 #define SCREQB_DEPTHGAD 14L
578 #define SCREQF_DEPTHGAD (1L<<SCREQB_DEPTHGAD)
579 #define SCREQB_NONSTDMODES 15L
580 #define SCREQF_NONSTDMODES (1L<<SCREQB_NONSTDMODES)
581 #define SCREQB_GUIMODES 16L
582 #define SCREQF_GUIMODES (1L<<SCREQB_GUIMODES)
583 #define SCREQB_AUTOSCROLLGAD 18L
584 #define SCREQF_AUTOSCROLLGAD (1L<<SCREQB_AUTOSCROLLGAD)
585 #define SCREQB_OVERSCANGAD 19L
586 #define SCREQF_OVERSCANGAD (1L<<SCREQB_OVERSCANGAD)
588 /*****************************************
589 * flags for RTEZ_Flags or reqinfo->Flags *
590 *****************************************/
591 #define EZREQB_NORETURNKEY 0L
592 #define EZREQF_NORETURNKEY (1L<<EZREQB_NORETURNKEY)
593 #define EZREQB_LAMIGAQUAL 1L
594 #define EZREQF_LAMIGAQUAL (1L<<EZREQB_LAMIGAQUAL)
595 #define EZREQB_CENTERTEXT 2L
596 #define EZREQF_CENTERTEXT (1L<<EZREQB_CENTERTEXT)
598 /***********************************************
599 * (V38) flags for RTGL_Flags or reqinfo->Flags *
600 ***********************************************/
601 #define GLREQB_CENTERTEXT EZREQB_CENTERTEXT
602 #define GLREQF_CENTERTEXT EZREQF_CENTERTEXT
603 #define GLREQB_HIGHLIGHTTEXT 3L
604 #define GLREQF_HIGHLIGHTTEXT (1L<<GLREQB_HIGHLIGHTTEXT)
606 /***********************************************
607 * (V38) flags for RTGS_Flags or reqinfo->Flags *
608 ***********************************************/
609 #define GSREQB_CENTERTEXT EZREQB_CENTERTEXT
610 #define GSREQF_CENTERTEXT EZREQF_CENTERTEXT
611 #define GSREQB_HIGHLIGHTTEXT GLREQB_HIGHLIGHTTEXT
612 #define GSREQF_HIGHLIGHTTEXT GLREQF_HIGHLIGHTTEXT
614 /*****************************************
615 * (V38) flags for RTFI_VolumeRequest tag *
616 *****************************************/
617 #define VREQB_NOASSIGNS 0L
618 #define VREQF_NOASSIGNS (1L<<VREQB_NOASSIGNS)
619 #define VREQB_NODISKS 1L
620 #define VREQF_NODISKS (1L<<VREQB_NODISKS)
621 #define VREQB_ALLDISKS 2L
622 #define VREQF_ALLDISKS (1L<<VREQB_ALLDISKS)
625 Following things are obsolete in ReqTools V38.
626 DON'T USE THESE IN NEW CODE!
628 #ifndef NO_REQTOOLS_OBSOLETE
629 #define REQHOOK_WILDFILE 0L
630 #define REQHOOK_WILDFONT 1L
631 #define FREQB_DOWILDFUNC 11L
632 #define FREQF_DOWILDFUNC (1L<<FREQB_DOWILDFUNC)
635 #endif /* LIBRARIES_REQTOOLS_H */