home *** CD-ROM | disk | FTP | other *** search
-
- **********************************
-
- reqtools.library
-
- The requester toolkit.
-
- Release 2.0
-
- (c) 1991/1992 Nico Franτois
-
- **********************************
-
-
- First of all read the DISTRIBUTION file for information on... er well...
- distribution :-)
-
- If you have suggestions or remarks about ReqTools, or if you find any
- bugs, please let me know.
-
- Contacting the author:
-
- Fido: 2:292/603.10 (Nico Francois)
-
- UUCP: Nico.Francois@p10.f603.n292.z2.FidoNet.Org
-
- Mail: Nico Franτois
- Corbielaan 13
- B-3060 Bertem
- BELGIUM
-
- If you can please use e-mail. That way you'll stand a much better chance
- of getting a reply quickly.
-
-
- Contents
- ========
-
- 1. Introduction
-
- 2. Features
-
- 3. Installation
-
- 4. Using reqtools.library
-
-
- 1. Introduction
- ===============
-
- reqtools.library is a standard Amiga shared, runtime library. The purpose
- of ReqTools is to make it a lot quicker and easier to build standard requesters
- into your programs. ReqTools is designed with Commodore's style guidelines in
- mind, all requesters have the look-and-feel of AmigaDOS Release 2.
-
- If you use ReqTools in your programs you do not have to worry about
- requesters too much. You'll have a lot more time to concentrate on the
- really important stuff your program does.
-
- The library has been inspired by req.library (by Colin Fox & Bruce Dawson)
- and Commodore's own asl.library. You will find it shares a lot of the
- features with these two libraries, while it has some additional ones as well.
- While asl.library was great in look-and-feel I felt it lacked quite a bit in
- the power department. This power _is_ mostly available in req.library, but
- this doesn't fit in too well with AmigaDOS Release 2. So the idea for a new
- requester library was born.
-
- I tried to make all requesters in ReqTools very powerful, easy to use and
- with a very nice new-look 3D interface. Efficiency was also considered very
- important. The 2.0 version of the library is about 34K large. I'm sure you
- will agree this is not too much considering what ReqTools offers.
-
- ReqTools features the following requesters: a query requester, a string
- requester, a number requester, a file requester, a font requester, a palette
- requester and new in release 2.0 of ReqTools a volume requester and a screen
- mode requester.
-
-
- 2. Features
- ===========
-
- The requesters have following features (features marked with *NEW* are new
- features for release 2.0, version 38 of ReqTools):
-
- All requesters:
-
- o have a pixel-perfect Workbench 2.0 3D look, also on Kickstart 1.3.
- *NEW* o Completely localized! If you are using Workbench 2.1 or higher the
- text in ReqTools requesters will appear in the language of your
- Workbench (if the catalog for this language is available).
- o adjust to interlaced screens and to the screen's font (rtEZRequest,
- rtGetLong, rtGetString) or to any fixed-width font if the screen's
- font is proportional (rtPaletteRequest/rtFileRequest/rtFontRequest).
- *NEW* Requesters can also use any suitable font you specify.
- o can appear under the mouse pointer, centered on the
- screen/in a window or at the top left of the screen/a window.
- o can be used asynchronously.
- o check pr_WindowPtr of your process is to find the screen they should
- appear on (can be overridden).
- o use tags for maximum future extendibility. All standard 2.0 tags are
- supported (like TAG_SKIP, TAG_MORE, etc.).
- o bring the screen they appear on to the front. The screen that was
- in front previously will be put in front again when the requester
- finishes (if it is still open).
- *NEW* This behaviour can be switched off.
- o will always appear in the visible portion of the screen (support of
- virtual screens).
- o are extensively tested using enforcer and mungwall debugging tools.
- *NEW* o have the ability to lock the parent window from all user input and
- give it a standard wait pointer automatically.
- *NEW* o can share the IDCMP port of the parent window.
- *NEW* o support a callback hook for handling IDCMP messages from a shared
- IDCMP port.
- *NEW* o have keyboard shortcuts for gadgets (key underlined in gadget label).
- Use Right Amiga key with shortcut if a string gadget is active.
-
- rtEZRequest, the query requester:
-
- o easy keyboard shortcuts:
- - Left Amiga V and Left Amiga B (like the standard requesters).
- - Y for positive response.
- - N, R, Esc for negative response.
- - Return can also be used as a shortcut and can be
- associated with any response. The gadget in question
- will have its text printed bold.
- Default response for Return is the positive response.
- - buttons give visual feedback when keyboard shortcuts
- are used.
- - keyboard shortcuts can be canceled by pressing Shift
- before releasing the key.
- *NEW* - keyboard shortcuts can be defined to be any character in the
- button's label. The character in question will be underlined.
- o number of responses only limited by screen width.
- o allows for multiple lines of text.
- o text can be centered in requester (great for about requesters).
- o supports the use of 'printf' formatting codes in text
- and in responses.
- o can be terminated by IDCMP events.
-
- rtFileRequest, the file requester:
-
- o similar in use and look-and-feel as Asl file requester.
- o buffers directories in memory.
- o files and directories can be added or removed from the buffer
- by the calling program.
- o can be put in save mode, disabling double-clicks and asking you if
- directories that can't be found (entered manually) should be created.
- o optional callback hook for verification of files before they are
- added to the buffer.
- o supports multiple selection of files and optionally of directories.
- o when multi-select is on All, Clear and Match.. buttons are available.
- All selects, and Clear unselects all files. Match.. brings up a
- requester where the user can enter a pattern to select files.
- o can be used as a directory requester (showing no files).
- o optional pattern gadget to match files on.
- o shows all devices (with volume names) and all assigns made.
- o supports TABCYCLE under 2.0
- o pattern matching supports _ALL_ AmigaDOS 2.0 patterns.
- *NEW* o can be used as a volume requester to get a device or an assign
- from the user.
- *NEW* o can be resized in height to show more files.
- *NEW* o Shows disk percentage used next to volume names.
- *NEW* o Allows you to enter paths in the filename string gadget. If the
- requester finds a path in the filename it will change the directory
- to that path. So if you e.g. enter 'Devs:mountlist' in the filename
- gadget the requester will read the 'Devs:' directory and set the
- filename gadget to 'mountlist'. If you enter 'printers/' it will go
- into the printers directory. Enter '/' to go to the parent directory.
- *NEW* o Completely keyboard controlable: use up and down cursor keys to
- select files or directories. Use Shift-Up and Shift-Down to jump
- by one window-full.
-
- rtFontRequest, the font requester:
-
- o buffers all fonts in memory.
- o shows sample of font you click on.
- o can be also be used to select the font's style.
- o supports color fonts, can change the screen's palette.
- o supports scaled fonts (AmigaOS Release 2 only).
- o optional callback hook for verification of fonts before they are
- added to the buffer.
- o supports TABCYCLE under 2.0
- *NEW* o can be resized in height to show more fonts.
- *NEW* o makes sure selected font is visible in listview when it comes up.
-
- *NEW* rtScreenModeRequest, the display mode requester (Kickstart 2.0+ only!):
-
- *NEW* o all modes in the DisplayInfo database can be displayed.
- *NEW* o displays visible and nominal size.
- *NEW* o user may enter prefered size or choose to get the defaults.
- *NEW* o number of colors selectable.
- *NEW* o can be put up with the attributes from a given screen.
- *NEW* o optional callback hook for examining a display mode before it is
- added to the requester.
- *NEW* o can be resized in height to show more modes.
- *NEW* o makes sure selected mode is visible in listview when it comes up.
-
- rtPaletteRequest, the palette requester:
-
- o features Copy, Swap and Spread functions.
- o current values of red, green and blue are displayed.
- o returns the selected color.
-
- rtGetLong, the long integer requester:
-
- o width of requester can be set by caller.
- o a minimum and maximum can be supplied and will be displayed
- in the requester.
- o a value to show up when the requester appears can be supplied.
- *NEW* o can display buttons with several possible responses.
- *NEW* o invisible entry is possible (useful for getting a code number).
- *NEW* o patterned backfill of requester can be switched on or off.
- *NEW* o some line(s) of (centered) text may be displayed above the entry
- gadget to give the user some extra information.
-
- rtGetString, the string requester:
-
- o width of requester can be set by caller.
- o a string to show up when the requester appears can be supplied.
- *NEW* o can display buttons with several possible responses.
- *NEW* o invisible entry is possible (useful for getting a password).
- *NEW* o patterned backfill of requester can be switched on or off.
- *NEW* o some line(s) of (centered) text may be displayed above the entry
- gadget to give the user some extra information.
-
-
- 3. Installation
- ===============
-
- To install reqtools.library copy it to your Libs: directory by hand, or
- run the installation script 'Install' (by using 'Execute' from the Shell or
- by double-clicking its icon).
-
- reqtools.library is provided in two versions (that are 100% equivalent,
- meaning you don't have to care which version the user installed): one for
- Kickstart 1.2 (or higher) and one for Kickstart 2.0 and higher.
-
- The version for Kickstart 2.0 uses 2.0 ROM functions for stuff like
- pattern matching, parsing tags, the 3D look, while a lot in the Kickstart 1.3
- version is emulated. It issuggested you use the 2.0 version of the library if
- you have Kickstart 2.0 in ROM
-
- If you are running Workbench 2.1 or higher you will have the possiblity to
- use ReqTools in different languages. Just use the appropriate install script
- in the Install/Workbench_2.1+ directory.
-
-
- 4. Using reqtools.library
- =========================
-
- If you are a C programmer all you need to do is include the correct
- headers and open reqtools.library. After that you can use the functions in
- the library as if they were C functions. If your program quits it must of
- course close the library again. See 'demo.c' for an example.
-
- Glue code for several compilers/languages is included with ReqTools 2.0.
- Look in the Glue directory of the ReqTools distribution to see if glue code
- exists for your compiler and/or programming language. If it doesn't and you
- write your own please send it to me and I'll include it in the next release
- of ReqTools.
- Note that the source for the Manx C libraries is the same as for the SAS/C
- libraries. See the README.Manx file in the archive
- 'Glue/Sas-C/LibSource.lha'.
-
- Functions allowing a variable number of arguments can't be called using
- pragmas (in-line library calls, no glue code required). So if you use these
- you must always link with LIB:reqtools.lib or LIB:reqtoolsnb.lib (for SAS-C,
- or with the specific libraries for your compiler/language).
-
- Assembly programmers should also include the correct files and open
- reqtools.library. To call a function they must load A6 with the library base,
- put the arguments in the appropriate registers and jump to the library vector
- offset of the function they want to call.
-
- All library functions are explained in the autodoc file 'reqtools.doc'.
-
- Enjoy.
-
-
- LIBRARY HISTORY:
-
- *****************************************************************************
- RELEASE 1.0 (Library version 37.556 [1.3] - 37.670 [2.0])
-
- First release.
-
- *****************************************************************************
- RELEASE 1.0a (Library version 37.557 [1.3] - 37.673 [2.0])
-
- Fixed two minor bugs:
- - if a directory could not be found and you re-invoked the file
- requester it wouldn't check the directory again.
- - devices like PRT:, CON:, etc. now no longer show up in the device
- list of the 2.0 file requester.
-
- *****************************************************************************
- RELEASE 1.0b (Library version 37.566 [1.3] - 37.678 [2.0])
-
- Fixed bug: entering a pattern when a file requester's directory was
- invalid could cause a crash.
- rtGetString() and rtGetLong() 2.0 requester windows no longer have close
- gadgets.
- Font requester entries are "release verify" instead of "immediate".
- If no minimum or maximum is given for the GetLong requester it will not
- be displayed (1.0 and 1.0a displayed MAXINT or MININT).
- Minor cosmetic adjustments to file, font and palette requesters.
- Oberon interface to the library included.
-
- *****************************************************************************
- RELEASE 1.0c (Library version 37.592 [1.3] - 37.718 [2.0])
-
- Boopsi dispatch function for rtEZRequestA() buttons optimized (ReqTools
- for Kickstart 2.0). Occasional flicker just about eliminated.
- Enlarged buttons a bit in rtGetLongA(), rtGetStringA() and the file, font
- and palette requesters.
- Width of scroller gadget in file requester window increased.
- File string gadget is cleared when 'All' or 'Match..' is used. This
- wasn't done before and could result in unexpected multi-select results.
- Visual feedback for keyboard shortcuts improved (rtEZRequestA()). Button
- stays depressed as long as the key in question is held down, but still
- for a minumum of 1/10 sec. New feature: shortcuts can be canceled by
- pressing Shift before releasing the key.
- Minor bug fix: keyboard shortcuts V and B now really only work together
- with the Left Amiga key. Used to work without the qualifier.
- rtEZRequestA(), rtGetLongA() and rtGetStringA() will no longer call the
- DOS function Delay(), so they may from now on be called by tasks.
- Every ReqTools requester, except the file and font requesters (they use
- DOS for obvious reasons), can be called from a task.
- EZRequest with only one button now responds to the Return key, whether
- EZREQF_NORETURNKEY is set or not.
- Fixed small bug in libraries/reqtools.i include file. rtfi_Hook and
- rtfo_Hook were followed by a ; and this could lead to problems.
- Libraries (reqtoolss.lib and reqtoolssr.lib) for Dice C included.
- Pre-release (0.91▀) of RTPatch patcher program included.
-
- *****************************************************************************
- RELEASE 1.0d (Library version 37.600 [1.3] - 37.726 [2.0])
-
- rtEZRequestA(), rtGetStringA() and rtGetLongA() now switch the processor
- stack to ensure sufficient stack space for the function to succeed.
- Fixed bug in rtGetLong() requester in 2.0 version of ReqTools. Used to
- return TRUE and a random value if the user pressed Ok when the integer
- gadget was empty.
- File requester is somewhat larger by default.
- Improved automatic requester resizing (if requester would become too big
- for the screen).
- File requester (in save mode) no longer asks "Create drawer?" when you
- entered a drawer string containing a non-existing volume (e.g. 'FOO:').
- Entries in file requester are now sorted immediately when you select the
- slider gadget and not when you release it (1.3 version of ReqTools).
- Latest revision of Oberon interface included.
- Modula-2 interface to the library included.
- Manx C interface to the library included.
-
- *****************************************************************************
- RELEASE 1.0e (Library version 37.600 [1.3] - 37.726 [2.0])
-
- Rearranged directories a bit. All glue code now in one directory.
- Installation script now uses Commodore's Installer utility.
- Two Modula-2 interfaces to the library are now included, one for M2Sprint
- and one for M2Amiga.
- Some bugs in the Dice C libs have been fixed (thanks to Magnus Holmgren).
- Interface for HiSoft's HighSpeed Pascal included.
-
- *****************************************************************************
- RELEASE 2.0 (Library version 38.347 [1.3] - 38.693 [2.0])
-
- All requesters now have keyboard shortcuts.
- Kickstart 2.0 version of ReqTools has been localized. As long as the
- appropriate catalog file exists ReqTools will appear in the user's
- selected langauge.
- New requester: rtScreenModeRequestA(). A screen mode requester. Can be
- used to get a screen mode, size, depth and overscan type from the user.
- This requester is only available on Kickstart 2.0 or higher, but also
- present in the Kickstart 1.3 version of ReqTools.
- File, font and screenmode requesters are now resizable (in height).
- Font, volume and screen mode requesters will now make sure the current
- entry is visible in the listview when the requester first comes up.
- Improved DOWILDFUNC hook interface. New tag: RTxx_FilterFunc. Old hook
- interface (using req->Hook and FREQF_DOWILDFUNC flag) is still
- supported, but declared obsolete. Don't use in new code.
- Several new tags:
- o RT_Locale: specify a locale to be used instead of the default one.
- Ignored if locale.library isn't present in the system or you are
- using the Kickstart 1.3 version of ReqTools.
- o RT_ShareIDCMP and RT_IntuiMsgFunc: All requesters can now share
- their IDCMP port with the parent window. A callback hook for
- intuition messages received not concerning the requester can also be
- set using the RT_IntuiMsgFunc tag.
- o RT_LockWindow: Enables you to make ReqTools lock the parent window
- from all user input and give the window a standard wait pointer.
- After the requester returns the window will be unlocked and will get
- its original pointer back.
- o RT_Underscore: With this tag it is possible to define keyboard
- shortcuts for buttons. You can ask ReqTools to underline a character
- in the button's label and use this as a shortcut.
- o for rtGetString() and rtGetLong(): RTGS_GadFmt, RTGS_GadFmtArgs,
- RTGL_GadFmt and RTGL_GadFmtArgs. With these tags you may give the
- user several ways out of the string/long requester.
- o for rtGetString() and rtGetLong(): RTGS_Invisible and RTGL_Invisible.
- Can be used to switch on invisible typing to get a password or a code
- number from the user.
- o RTGS_TextFmt, RTGL_TextFmt, RTGS_TextFmtArgs and RTGL_TextFmtArgs:
- These tags allow you to supply some line(s) of text that should be
- printed above the string/integer gadget in the rtGetString() or
- rtGetLong() requesters.
- o RTGS_Flags and RTGL_Flags: Set certain flags for rtGetString() and
- rtGetLong() requesters. Used to set the GSREQF_CENTERTEXT or
- GLREQF_CENTERTEXT flags.
- o RTGS_Backfill and RTGL_Backfill: Switch the patterned backfill in
- the rtGetString() and rtGetLong() requesters on or off.
- o RT_ScreenToFront: Allows you to switch of the default behaviour of
- popping the screen the requester appears on to the front.
- o RT_TextAttr: Allows you to specify a font a requester should use
- instead of the screen or default font.
- o RTFI_VolumeRequest: New flavor of file requester: volume requester.
- Allows you to easily get a device/assign from the user.
- o RTFI_AllowEmpty: Enables you to allow the file requester to accept
- an empty filename. Normally cancels the requester if no filename
- was entered.
- Changes to file requester:
- o Shows disk percentage used next to volume names.
- o 'Hide .info' cycle gadget gadget in file requester replaced by
- '.info' toggle gadget next to filename string gadget.
- o Will no longer automatically change directories to their full
- pathname. Will only do so when needed (e.g. parent of an assign).
- o Allows you to enter paths in the filename string gadget. If the
- requester finds a path in the filename it will change the directory
- to that path.
- o Completely keyboard controlable: use up and down cursor keys to
- select files or directories. Use Shift-Up and Shift-Down to jump
- by one window-full.
- o 1.3 version has a 2.0-look sizing gadget and bottom border.
- o Changed 'Disks' to 'Volumes'.
- o Changed '(dir)' to 'Drawer' (right justified).
- o Assigns now displayed differently (with 'Assign' right justified).
- o Added an indicator for number of selected files (if multiselect on).
- o No longer shows 'Add', 'Match..' and 'Clear' gadgets if no multi-
- select is possible.
- New library functions:
- o rtLockWindow() and rtUnlockWindow(): easily lock a window from user
- input and give it a standard wait pointer.
- o rtCloseWindowSafely(): close a window with a shared IDCMP port.
- Updated glue code:
- o Oberon interface updated for ReqTools V38.
- o SAS/C, Manx C and Dice glue code updated for ReqTools V38.
- o New HighSpeed Pascal (for ReqTools V38) interface written by
- Gunter Indenhoek included.
- Demo updated to demonstrate new features of ReqTools 2.0.
- Version 1.0 of RTPatch patcher program included. Patches req.library,
- arp.library and asl.library to use ReqTools requesters instead.
-
- *****************************************************************************
-
- reqtools.library written by Nico Franτois (Yes, Nico is my first name :-)
-
- Thanks to o Kai Bolay for writing the Oberon interface,
- o Frank L÷mker and Michael Griebling for writing the Modula-2
- interfaces,
- o Jan van den Baard for writing the Dice libraries,
- o Martin Steppler for writing the Manx C libraries,
- o Richard Waspe and Gunter Indenhoek for writing the HighSpeed
- Pascal interfaces,
- o Federico Giannici for the useful suggestions
- o Peter Stuer, Gunter Indenhoek, Jorrit Tyberghein and Ives Aerts
- for beta-testing.
- o Herman Stevens for being my Fido boss node and having such a
- great Amiga BBS.
- o All registered ReqTools users/developers.
-
-
- "What you got buried? In your backyard
- What secret do you sleep with when the black moon comes?" - The Black Crowes
-
-
- (C) 1991/1992 Nico Franτois
-
- //
- Thanks to \X/ Amiga for being the best computer ever !
-
-