@DataBase ReqChange.guide
@$VER: ReqChange.guide 3.6 (6.3.95)
@(C) Copyright © 1993-95  Magnus Holmgren
@Author Magnus Holmgren
@Index "INDEX"

@Rem $Id: ReqChange.guide,v 1.6 1994/12/28 17:11:17 cmh Exp cmh $


@Node Main "ReqChange.guide: User documentation for ReqChange"

  This file describes @{b}ReqChange@{ub}, version 3.6, a program that replaces the
most common requesters with the ones @{b}ReqTools@{ub} (copyright © Nico François)
offers. @{b}ReqChange@{ub} is similar to @{b}RTPatch@{ub}, included in the @{b}ReqTools@{ub}
distribution, but offers a lot more.

 @{b}@{u}Introduction@{uu}@{ub}

 @{" Preface             " Link PREFACE}  Please read this first.
 @{" Introduction        " Link INTRODUCTION}  Why @{b}ReqChange@{ub}?
 @{" System requirements " Link SYSTEM_REQUIREMENTS}  What you need to run @{b}ReqChange@{ub}.

 @{b}@{u}Legal issues@{uu}@{ub}

 @{" License             " Link LICENSE}  What you may and may not do with @{b}ReqChange@{ub}.
 @{" No warranty         " Link NO_WARRANTY}  Use @{b}ReqChange@{ub} at your own risk.
 @{" Disclaimer          " Link DISCLAIMER}  Software disclaimer.

 @{" Shareware           " Link SHAREWARE}  Shareware information.

 @{b}@{u}Documentation for ReqChange@{uu}@{ub}

 @{" Installation        " Link INSTALLATION}  How to install @{b}ReqChange@{ub}.

 @{" Patched requesters  " Link PATCHED_REQUESTERS}  Which requesters @{b}ReqChange@{ub} can patch.

 @{" The AssignWedge     " Link ASSIGNWEDGE}  What is an AssignWedge?
 @{" ARexx messages      " Link AREXX_MESSAGES}  How to send @{b}ARexx@{ub} messages.
 @{" Excepted programs   " Link EXCEPTED_PROGRAMS}  Except programs from patching.

 @{" The prefs editor    " Link PREFS_EDITOR}  How the prefs editor works.
 @{" StartRC             " Link STARTRC}  The starter program.

 @{" Known problems      " Link PROBLEMS}  A few problems still remain...

 @{" Acknowledgements    " Link ACKNOWLEDGEMENTS}  Who did what?
 @{" The future          " Link FUTURE}  Possible new features in @{b}ReqChange@{ub}.
 @{" Program history     " Link PROGRAM_HISTORY}  What have changed in @{b}ReqChange@{ub}.

 @{" Glossary            " Link GLOSSARY}  Explanation of some "strange" words.

 @{" Index               " Link INDEX}  Index of the various sections.

@EndNode


@Node PREFACE "ReqChange.guide/Preface"

@{b}@{u}Preface@{uu}@{ub}

  @{b}ReqChange@{ub} is offered to you under the concept of @{i}Shareware.@{ui} You may use
@{b}ReqChange@{ub} for an evaluation period of up to 30 days without paying any fee.
If you are going to use @{b}ReqChange@{ub} after the evaluation period, you have to
register.

  See @{"License" Link LICENSE} and @{"Shareware" Link SHAREWARE} for more information.

@EndNode


@Node INTRODUCTION "ReqChange.guide/Introduction"

@{b}@{u}Introduction@{uu}@{ub}

  One of the many new features with @{b}Amiga@{ub} OS 2.0, is a new @{"library" Link GLOSSARY} called
@{b}Asl@{ub}, which contains a standard file and a font requester (in OS 2.1 or
higher there is also a screenmode requester). Before OS 2.0, there were no
standard requesters of this kind, which made several programmers write
their own version(s) of a file/font requester. Some programmers put them in
a library - often with other requesters and/or functions - so that other
programs could use them as well. Of these external requesters (or rahter,
libraries), there were basically two that became really popular, @{b}Arp@{ub} and
@{b}Req@{ub}.

  @{b}Arp@{ub} was the first one, and that library also contains a number of useful
function that the @{b}Amiga@{ub} OS didn't have before version 2.0. @{b}Req@{ub} on the other
hand have a couple of extra requesters and requester-related functions, and
the combined file and font requester is rather powerful (although maybe not
the most beautiful one).

  Anyway, the thought is that all programs should use the new standard @{b}Asl@{ub}
requesters, to provide a nice looking and uniform environment for the user.
However, I think these new requesters have a couple of drawbacks. For one
thing, the file requester is slow (although this is improved in OS 2.1),
and doesn't look that good (@{"IMHO" Link GLOSSARY}). The information requester (which also
is improved in OS 2.0) is glued to the upper left corner of the screen, and
can only be confirmed with the mouse, or some cryptic key-combination
(although there @{i}is @{ui}a thought behind that).

  Another problem is that there are a lot of older programs that still use
@{b}Arp@{ub} and @{b}Req@{ub}. These requesters simply doesn't fit that well into the new OS
2.0 environment. Something had to be done about this. But what?

  One day I got a copy of @{b}ReqTools@{ub}, a library written by Nico François.
This library contains a set of requesters that looks good, and are
generally faster and better than the other possible alternatives (again,
IMHO). When I saw these requesters, I thought:

  "Why can't all programs use these requesters instead?"

  So, I decided to do the best I could so that as many programs as possible
would use the @{b}ReqTools@{ub} requesters instead, regardless if they previously
had used @{b}Asl@{ub}, @{b}Arp@{ub} or @{b}Req@{ub}.

  The result of this effort is this program, @{b}ReqChange@{ub}, which replaces most
requesters in @{b}Intuition@{ub}, @{b}Asl@{ub}, @{b}Arp@{ub} and @{b}Req@{ub} with the equivalents found in
@{b}ReqTools@{ub}. It also offers several extra features.

  @{i}Note: @{ui}@{b}ReqChange@{ub} only replaces the @{i}requester functions @{ui}in a library, not
the entire library. You still need the library in question.

@EndNode


@Node SYSTEM_REQUIREMENTS "ReqChange.guide/System requirements"

@{b}@{u}System requirements@{uu}@{ub}

  @{b}ReqChange@{ub} should work with any @{b}Amiga@{ub} that has at least OS 2.04 and 512
Kbyte of RAM.

  @{b}ReqTools@{ub} is ofcourse required, but it is included in the @{b}ReqChange@{ub}
distribution, so this shouldn't cause any problems.

  When active, @{b}ReqChange@{ub} uses about 22 Kbyte of memory, exluding the memory
used by @{b}ReqTools@{ub}, and the diskbased @{"libraries" Link GLOSSARY} @{b}ReqChange@{ub} may patch. Any so
called Rexx, deny or exception lists also takes some memory, ofcourse (see
@{"ARexx messages" Link AREXX_MESSAGES}, @{"The AssignWedge" Link ASSIGNWEDGE} and @{"Excepted programs" Link EXCEPTED_PROGRAMS}).

  The libraries are only patched when the library in question is in use, a
feature that can save quite a bit of memory. This feature was first
implemented in @{b}RTPatch@{ub} by Nico Francois.

  A program called @{b}SetMan@{ub} (Copyright (C) 1991,1992 by Nicola Salmoria) can
be nice to have installed, but it is by no means required. @{b}SetMan@{ub} is a
program that extends the way patches are handled within the system, and can
prevent system crashes with improperly written "patchers" (@{b}ReqChange@{ub} is not
"improperly written" :). @{b}SetMan@{ub} also provides a list over all patches in
the system, and which program that installed them, and a possibility to
disable (and re-enable) a patch.

@EndNode


@Node LICENSE "ReqChange.guide/License"

@{b}@{u}License@{uu}@{ub}

  · This license applies to the product called @{b}ReqChange@{ub}, a set of programs
for the Amiga computer, published by Magnus Holmgren under the concepts of
Shareware, and the accompanying documentation, example files and anything
else that comes with the original distribution. The terms "Programs" and
"@{b}ReqChange@{ub}" below, refer to this product. The licensee is addressed as
"you".

  · You may copy and distribute verbatim copies of the programs' executable
code and documentation as you receive it, in any medium, provided that you
conspicuously and appropriately publish only the original, unmodified
programs, with all copyright notices and disclaimers of warranty intact and
including all the accompanying documentation, example files and anything
else that came with the original.

  · You may not copy and/or distribute these programs without the
accompanying documentation and other additional files that came with the
original. You may not copy and/or distribute modified versions of these
programs.

  · You may not copy, modify, sublicense, distribute or transfer the
programs except as expressly provided under this license. Any attempt
otherwise to copy, modify, sublicense, distribute or transfer the programs
is void, and will automatically terminate your rights to use the programs
under this license. However, parties who have received copies, or rights to
use copies, from you under this license will not have their licenses
terminated so long as such parties remain in full compliance.

  · By copying, distributing and/or using the programs you indicate your
acceptance of this license to do so, and all its terms and conditions.

  · Each time you redistribute the programs, the recipient automatically
receives a license from the original licensor to copy, distribute and/or
use the programs subject to these terms and conditions. You may not impose
any further restrictions on the recipients' exercise of the rights granted
herein.

  · You may not disassemble, decompile, re-source or otherwise reverse
engineer the programs.

  · You may use the programs for a period of up to 30 days for evaluation.
After that, you have to register.

  · If you wish to incorporate parts of the programs into other programs,
write to the author to ask for permission.

  · You agree to cease distributing the programs and data involved if
requested to do so by the author.

  · You may charge a fee to recover distribution costs. The fee for
diskette distribution may not be more than the cost to obtain a public
domain diskette from Fred Fish.

@EndNode


@Node NO_WARRANTY "ReqChange.guide/No warranty"

@{b}@{u}No warranty@{uu}@{ub}

  THERE IS NO WARRANTY FOR THE PROGRAMS, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDER AND/OR OTHER PARTIES PROVIDE THE PROGRAMS "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAMS
IS WITH YOU. SHOULD THE PROGRAMS PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY REDISTRIBUTE THE
PROGRAMS AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAMS (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAMS TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.

@EndNode


@Node DISCLAIMER "ReqChange.guide/Disclaimer"

@{b}@{u}Disclaimer@{uu}@{ub}

  No warranty, either express or implied, is made with respect to the
fitness or merchantability of @{b}ReqChange@{ub}.

  Magnus Holgren (referred to as "the author"), reserve the right to not
develop any future versions of @{b}ReqChange@{ub}.

  The author will try to make a good faith attempt at correcting any
problems if any are discovered, but are in no way required, nor bound to
correct them.

  The author neither assume nor accept any responsibility for the use or
misuse of these programs. He also will not be held liable for damages or
any compensation due to loss of profit or any other damages arising out of
the use, or inability to use these programs.

  Magnus Holmgren will not be liable for any damage arising from the
failure of these programs to perform as described, or any destruction of
other programs or data residing on a system attempting to run the programs.
While I know of no damaging errors, the user of these programs uses it at
his or her own risk.

@EndNode


@Node SHAREWARE "ReqChange.guide/Shareware"

@{b}@{u}Shareware@{uu}@{ub}

  @{b}ReqChange@{ub} is shareware. This means that if you use this program
regularly, you are required to send me, the author, a Shareware fee as
payment for the program. This fee is US$10 (or 70 SEK).

  @{" How to register " Link REGISTER}

  @{" How to get the keyfile " Link KEYFILE}

  @{" How to get updates " Link UPDATES}

@EndNode


@Node REGISTER "ReqChange.guide/Shareware/How to register"
@Toc SHAREWARE

@{b}@{u}How to register@{uu}@{ub}

  To register @{b}ReqChange@{ub}, fill in the registration form (the file
@{"Registration.form" Link "//Registration.form/Main"}), and send it to:

  Magnus Holmgren
  Kvarnbergsvägen 5
  S-444 47  Stenungsund
  SWEDEN


  You can also e-mail me the registration form. In this case, send it to:

  "Magnus Holmgren", 2:204/404.6@fidonet.org

  Or if you prefer Internet:

  cmh@augs.se


  You also need to send me the shareware fee, US $10 (70 SEK). There are a
couple of accepted forms of payment:

  Include the cash in the letter with the registration form (preferably
wrap the money with somethine (like the registration form), so that you
can't see that it contains cash). In this case you must either send me US$
or Swedish crowns (kronor, SEK).

  Use the so called "International money order". Your locale post office
should be able to help you with this. This is the reccomended form of
payment if you don't live in Sweden. The fees are moderate, and I get the
money in SEK.

  Make a transfer of 70 SEK to the postal giro account 921 71 60-2 in
Sweden. Please note that giro transfers between countries can cost quite a
bit. This is the recommended form of payment if you live in Sweden.

  Any other way you prefer, but remember to include @{i}enough money @{ui}to cover
any expenses to get the money in a @{i}usable @{ui}form! :) Feel free to contact me
for more information.

  If you've written a shareware program yourself, we could "enchange"
registrations (assuming it is a program I'm interested in ofcourse! :).

@EndNode


@Node KEYFILE "ReqChange.guide/Shareware/How to get the keyfile"
@Toc SHAREWARE

@{b}@{u}How to get the keyfile@{uu}@{ub}

  Earlier versions of @{b}ReqChange@{ub} were released as "true" shareware. Since I
didn't get that many registrations, I've decided to make this version
"crippled". This means that you need a so called key file to unlock certain
features.

  But how do you get this keyfile? you ask. Well, the registration fee is
only for the program; not for the transfer of the keyfile to you. If I can
send you pgp-encrypted e-mail (via Internet or routed Fidonet), then all
you need to do is to send me your public @{"pgp-key" Link GLOSSARY}, and I'll send you your
keyfile in encrypted form, along with my public key. Note that it is
uncertain if routed fidonet messages works, as certain nodes dislike
encrypted mail.

  If this isn't possible, then you'll need to send me an extra US$ 5 (or 20
SEK, if you live in Sweden), or you can include a @{"SASE" Link GLOSSARY} and a disk. I'll
then return the disk with the keyfile, together with the latest version of
@{b}ReqChange@{ub}.

  If you already have registered @{b}ReqChange@{ub}, simply use any of the above
mentioned methods.

  Please allow for up to eight (8) weeks for delivery of the keyfile.
Usually it won't take that long.

  When you have the keyfile, either put it in @{b}L:@{ub} or the path specified in
the @{i}KEYPATH @{ui}environment variable (if it is defined, then @{b}L:@{ub} will not be
searched).


  @{i}Important note: @{ui}A keyfile is strictly personal. You may only copy it for
backup purposes. Your name and other unique information is encoded in it,
so I can always identify a keyfile if needed.

@EndNode


@Node UPDATES "ReqChange.guide/Shareware/How to get updates"

@{b}@{u}How to get updates@{uu}@{ub}

  If you want me to send you the latest/next version of @{b}ReqChange@{ub} when
finished, include an extra US$ 5 (20 SEK if you live in Sweden) for each
update. You can also send one @{"SASE" Link GLOSSARY} and disk per update. This is only if
you want me to send you the next update as soon as it is ready. Otherwise
you don't need to pay me anything to get an update, if you e.g. download it
from a local BBS.

  I usually upload the latest version of @{b}ReqChange@{ub} to AUGS BBS (2:204/404)
and Assimilate BBS (2:203/123). Hopefully it will spread to Aminet and
other places from there (I don't have internet access at the moment
(besides e-mail)).

@EndNode


@Node INSTALLATION "ReqChange.guide/Installation"

@{b}@{u}Installation@{uu}@{ub}

  @{b}ReqChange@{ub} is fairly easy to install. Simply use the supplied installer
script (which uses the Commodore @{b}Installer@{ub} utility). If you don't have the
@{b}Installer@{ub} (included in OS 2.1 or higher, and several commercial and
non-commercial programs. It is also available on most BBS:es), you need to
do it by hand. This isn't that hard to do, if you have some familiarity
with the Amiga.

  First of all, copy @{b}Libs/reqchange.library@{ub} and @{b}Libs/reqtools.library@{ub} to
@{b}Libs:@{ub}. If you already have @{b}reqtools.library@{ub} installed, it is a good idea to
check the version already installed, and only copy the supplied version if
it is newer (use @{b}Version@{ub} to find out which version you have). The included
version is always the latest one at the time of the release.

  @{"The prefs editor" Link PREFS_EDITOR} (@{b}Prefs/ReqChange@{ub}) should go to your @{b}Sys:Prefs@{ub} drawer,
or any other drawer you find convenient (preferably somewhere in your
command search path).

  If you have @{b}AmigaGuide@{ub}® installed on your Amiga, you may want to be able
to use online-help in the prefs editor. Then you should copy
@{b}ReqChange.guide@{ub} (either the english or the swedish version; whichever you
prefer :) to either the same directory as the prefs editor, or to any
directory in the @{b}AmigaGuide@{ub}® search path (as set by the
@{i}AmigaGuide/Path @{ui}environment variable).

  In order to start/stop @{b}ReqChange@{ub}, the small program @{b}StartRC@{ub} is needed.
Install it anywhere in your path where you find it convenient, or drop it
in your @{b}Sys:WBStartup@{ub} drawer, for automatic start every boot.

  If you don't put @{b}StartRC@{ub} in @{b}Sys:WBStartup@{ub}, a line like this in your
@{b}S:User-Startup@{ub} file will start @{b}ReqChange@{ub} each boot:

  StartRC

  If any errors occurs, you will be informed about it. See @{"StartRC" Link STARTRC} for
more information.

  Lastly, if you have OS 2.1 or higher, and would like to operate @{b}ReqChange@{ub}
in another language than english, you need to install at a couple of
@{"catalog" Link GLOSSARY} files. Copy the files in the drawer @{b}Catalogs/<language>@{ub} (were
"<language>" is the language is the language as set in the @{b}Locale@{ub}
preferences editor) to @{b}Locale:Catalogs/<language>@{ub}. There are four files for
each language, two for @{b}ReqChange@{ub} and two for @{b}ReqTools@{ub} (currently, there
aren't files for all languages).

@EndNode


@Node PATCHED_REQUESTERS "ReqChange.guide/Patched requesters"

@{b}@{u}Patched requesters@{uu}@{ub}

  @{b}ReqChange@{ub} patches a number of different requester functions, found in a
few libraries. All these patches are optional, and will only be installed
if you have activated them, and the @{"library" Link GLOSSARY} in question actually is in
memory. In order to accomplish this, one (or rather, two ;) function in
@{b}exec.library@{ub} need to be patched. This patch have been written to be
completely transparant and shouldn't cause any problems.

  These are the different libraries @{b}ReqChange@{ub} may patch:

 @{" Intuition " Link INTUITION}
 @{" Asl       " Link ASL}
 @{" Arp       " Link ARP}
 @{" Req       " Link REQ}
 @{" ReqTools  " Link REQTOOLS}

@EndNode


@Node INTUITION "ReqChange.guide/Patched requesters/Intuition"
@Toc PATCHED_REQUESTERS

@{b}@{u}Intuition@{uu}@{ub}

  @{b}Intuition@{ub} has two requesters, called @{b}AutoRequest()@{ub} and @{b}EasyRequest()@{ub}.
These requesters are very similar to the user; they only differ in the way
the are called. These requesters are used for displaying information (e.g.
an about requester) or simple queries, where there are a few, predefined,
answers.

  The requesters @{b}ReqChange@{ub} installs behaves almost like the old ones, but
with a little extra: It also contains an @{i}AssignWedge @{ui}(see
@{"The AssignWedge" Link ASSIGNWEDGE}). This AssignWedge can be turned off if you want (see
@{"The prefs editor/Main window" Link MAINWINDOW}).

  Some programs (like @{b}DiskSalv@{ub} version 2) uses the @{b}AutoRequest()@{ub}er in a way
that @{b}ReqChange@{ub} can't emulate properly. When such requesters are used,
@{b}ReqChange@{ub} will use the original one instead. @{"ARexx messages" Link AREXX_MESSAGES} will still be
sent, but with a minor catch: There will be linefeeds here and there in the
body that normally shouldn't be there.

  @{i}Note: @{ui}@{b}AutoRequest()@{ub} and @{b}EasyRequest()@{ub} also exist in asyncronous versions
(which allows the program to continue processing while the requester is
up). These functions can't be patched, since that calling interface can't
be emulated with the current version of @{b}ReqTools@{ub}.

@EndNode


@Node ASL "ReqChange.guide/Patched requesters/Asl"
@Toc PATCHED_REQUESTERS

@{b}@{u}Asl@{uu}@{ub}

  @{b}Asl@{ub} currently contains three requesters. These are a file, a font and a
screen mode requester (only in OS 2.1 or higher). If the @{b}Asl@{ub} patches are
installed, then the font and the screen mode requester patches are
optional.

  Some of the features in the @{b}Asl@{ub} font and screen mode requesters doesn't
exist in the @{b}ReqTools@{ub} requesters ¹. When any of these features are used
the patch will automatically use the original requester instead. Thus, you
can have the "Asl font requester" and "Asl screen mode requester" patch
flags on without loosing any functionality (see
@{"The prefs editor/Main window" Link MAINWINDOW}).

  Currently it isn't possible to select "no font" (i.e. clear the font name
gadget and select ok) in the font requester, as one can do in the @{b}Asl@{ub} font
requester. Because of this, a special font called " no font" is included
(the leading space is there to try to get the font at the top of the list).
It is a very small font, and if that one is selected, @{b}ReqChange@{ub} will
interpret it as if no font at all was selected. Maybe not the most elegant
solution, but it works! :) If a new version of @{b}ReqTools@{ub} is released that
supports the "no font" selection somehow, @{b}ReqChange@{ub} will be updated to use
this feature instead.

  Since the screenmode requester in th current version (as of this writing)
of @{b}ReqTools@{ub} doesn't handle depth gadgets for HAM modes that well (and it
seem like it can crash as well), @{b}ReqChange@{ub} will automatically use the @{b}Asl@{ub}
requester instead, if it suspects that a HAM mode can be visible. Since it
sometimes simply isn't possible to tell for certain if a HAM mode will be
visible, the @{b}Asl@{ub} screenmode requester may be shown even if there are no HAM
modes in the list.


  @{b}-- Footnotes --@{ub}

  ¹ The @{b}ReqTools@{ub} font requester doesn't allow you to select color(s) and
draw mode for the text, and the screen mode requester can't show a custom
screen mode list

@EndNode


@Node ARP "ReqChange.guide/Patched requesters/Arp"
@Toc PATCHED_REQUESTERS

@{b}@{u}Arp@{uu}@{ub}

  There is only one requester in @{b}Arp@{ub}, and that is a file requester. Not all
features of this requester can be emulated, but since these features are
very seldom used (in my experience at least. I've heard of one program that
use any of these features), this patch will not fall back to the original
when needed. If this is a problem for you, you can always send me a note,
or use the @{"exception" Link EXCEPTED_PROGRAMS} list.

  @{i}Note: @{ui}If you have a 68030 CPU (or better), there is a function in @{b}Arp@{ub}
that doesn't work that well, and that is @{b}ArpExit()@{ub}. It seems like earlier
versions of @{b}ReqChange@{ub} somehow managed to make @{b}ArpExit()@{ub} to work (at least
on my 68040 Amiga), if a patched requester was called just before
@{b}ArpExit()@{ub}. Since this isn't the case any more (and I haven't the foggiest
idea why! :) @{b}ReqChange@{ub} will replace the @{b}ArpExit()@{ub} function with one that
should work better ¹. This should also make programs like e.g. @{b}Move@{ub} (one of
the @{b}Arp@{ub} commands) to work better.


  @{b}-- Footnotes --@{ub}

 ¹ Technical note: it is basically the original function with a call to
@{b}CacheClearU()@{ub} added at a suitable place.

@EndNode


@Node REQ "ReqChange.guide/Patched requesters/Req"
@Toc  PATCHED_REQUESTERS

@{b}@{u}Req@{uu}@{ub}

  This is the big one. @{b}Req@{ub} contains most of the requester @{b}ReqTools@{ub} does.
Thus, rather many functions are patched. Here is a list of all requesters
patched:

  @{b}TextRequest()@{ub}

  This is a text requester, similar to @{b}AutoRequest()@{ub}/@{b}EasyRequest()@{ub} in
@{b}Intuition@{ub} (see @{"Patched requesters/Intuition" Link INTUITION}). All features are supported,
including the timeout and the waitmask.

  @{b}ReqFileRequest()@{ub}

  This is a combined file and font requester. There is only one thing one
need to think about when using this one: The original requester have a
(configurable) limit on the number of files one can multiselect (if this is
enabled).  @{b}ReqTools@{ub} doesn't have any such limitation, so you may select as
many as you can/like. @{b}ReqChange@{ub} will then only use as many as the
limitation says, and will ignore the rest of the files. This isn't really a
problem, but it can useful to know.

  @{b}GetString()@{ub}

  A simple string requester.

  @{b}GetLong()@{ub}

  An integer requester.

  @{b}ColorRequester()@{ub}

  A palette requester.

@EndNode


@Node REQTOOLS "ReqChange.guide/Patched requesters/ReqTools"
@Toc  PATCHED_REQUESTERS

  All requesters in @{b}ReqTools@{ub} are patched. The patches doesn't really do
much, they simply add the @{b}ReqChange@{ub} preferences settings and the
@{"ARexx-messages" Link AREXX_MESSAGES}.

  Anyway, here is a list over the functions patched, along some details (if
any) about them:

  @{b}rtEZRequest()@{ub}

  This is the text requester. In some cases the return code (or timeout)
from @{b}ARexx@{ub}-messages will be ignored.

  @{b}rtFileRequest()@{ub}

  A file requester.

  @{b}rtFontRequest()@{ub}

  A font requester.

  @{b}rtScreenModeRequest()@{ub}

  A screen mode requester.

  @{b}rtGetLong()@{ub}

  An integer requester.

  @{b}rtGetString()@{ub}

  A string requester.

  @{b}rtPaletteRequest()@{ub}

  A palette requester.

@EndNode


@Node ASSIGNWEDGE "ReqChange.guide/The AssignWedge"

@{b}@{u}The AssignWedge@{uu}@{ub}

  Some of you may have seen the program @{b}AssignWedge@{ub} (or maybe @{b}AssignX@{ub}, the
original program). This program improves the (in)famous "Please insert
volume" requester. What @{b}AssignWedge@{ub} does is to add a few gadgets to the
normal "Retry" and "Cancel" gadgets, so that you can do something about it,
without having to use a Shell or something like that. @{b}ReqChange@{ub} have an
AssignWedge like this builtin (but a somewhat better version).

  The following gadgets are added to the "Please insert volume" requester:

  @{b}Mount@{ub}

  This gadget will try to mount the volume in question. This requires
@{b}C:Mount@{ub} to be available. If there is no suitable entry in your
@{b}Devs:MountList@{ub} file or in the drawer @{b}Sys:Storage/DosDrivers@{ub} ¹,
this will ofcourse fail. Useful for seldom used units like @{b}Rad:@{ub} or @{b}Pc0:@{ub}.
If the mount fails, the requester will re-appear.

  @{b}Assign...@{ub}

  This gadget shows a file requester, where you can select a drawer or a
file that the volume name should be assigned to. If the assign fails (maybe
you entered a file/drawer that doesn't exist), the requester will
re-appear.

  @{i}Note: @{ui}In the requester there is a filename field. This is needed, since
an assign @{u}can@{uu} refer to a file, not only a drawer.

  @{b}Deny@{ub}

  This will make @{b}ReqChange@{ub} remember the volume name on a list (the so
called @{i}deny list@{ui}) and the next time a requester for this volume is about to
appear, @{b}ReqChange@{ub} will automatically cancel the requester before it is
shown. The name of the program is also recorded. Thus, by default other
programs requesting this volume will not be denied (this feature requires a
@{"keyfile" Link KEYFILE}).

  This deny list can be edited and saved, using the @{"Edit window" Link EDITWINDOW} and the
@{"Deny window" Link DENYWINDOW} in @{"The prefs editor" Link PREFS_EDITOR}.


  @{b}-- Footnotes --@{ub}

 ¹ This only applies if you have OS 2.1 or better.

@EndNode


@Node AREXX_MESSAGES "ReqChange.guide/ARexx messages"

@{b}@{u}ARexx messages@{uu}@{ub}

  @{b}ReqChange@{ub} have one powerful feature, and it is the ability to send an
@{b}ARexx@{ub} message when a certain requester appears. This allows you to e.g. add
sound effects to your requesters, like @{b}ARQ@{ub} does. But you can add a lot more
if you like. One thing could be to start e.g @{b}DiskSalv@{ub} each time a requester
indicating a disk is corrupt is shown. Or it could be to try to reboot the
computer if a "Task held" requester appears. Anything that can be done via
@{b}ARexx@{ub}.

  Earlier versions of @{b}ReqChange@{ub} could only send @{b}ARexx@{ub} messages like this
for the text requesters, much like @{b}ARQ@{ub} does. But as of @{b}ReqChange@{ub} 3.0, you
can send a message when any of the patched requesters appears.

  To be able to send different messages from different requesters, you can
specify the following requester attributes:

  @{b}Requester type@{ub}

  The requester must be of this type for a match. You may also specify
'Any', which will match on all requesters.

  @{b}Title@{ub}

  The title of the requester (i.e. the window title) must contain a certain
string. Case is ignored when checking. If not specified, the requester
title is ignored.

  @{b}Body@{ub}

  This attribute is only used for the text requester and the string/number
input requesters (or if you have set the requester type to 'Any'. Note that
the string/integer requesters not always have a body). The body text must
contain a certain string. Case is ignored when checking. If not specified,
the body text is ignored. If the requester that is about to open doesn't
have any body text, this string is ignored.

  @{b}Program@{ub}

  The calling program must have a certain name. Case is ignored when
checking. If not specified, the program name is ignored.


  These attributes, together with a name ¹, a message and a timeout (in
seconds), are stored in a @{i}Rexxnode. @{ui}All nodes are placed in the @{i}Rexx list, @{ui}
and you may edit the list and the nodes, using the @{"Edit window" Link EDITWINDOW} and the
@{"Rexx window" Link REXXWINDOW} in @{"The prefs editor" Link PREFS_EDITOR}.

  The message is a so called @{"string file macro" Link GLOSSARY}. This means that the
command is executed like it was executed using a command line looking like:

  Rx "say 'This is a string file macro'"

  I.e. the string after the @{b}Rx@{ub} command is the string file macro.

  When a requester is about to appear, @{b}ReqChange@{ub} will search through the
Rexx list (from top to bottom), and as soon a node that matches the current
requester is found, the corresponding @{b}ARexx@{ub} message is sent. Thus,
specific nodes should be placed near the top of the list, and more general
ones near the bottom.

  When the message returns, the return code from the message will be
checked (unless there was any error), and an automatic gadget selection may
occur for text requesters. The return value specifies which gadget to
select: '-1' equals the rightmost gadget (usually cancel), '1' equals the
leftmost gadget, '2' equals the next one, and so on. If the return doesn't
match any gadget, the requester will appear.

  Example: Lets say we have a requester that contains the gadgets "Quit",
"Save, then quit" and "Cancel". That means that a return of 1 equals
"Quit", 2 equals "Save, then quit", and finally, -1 equals "Cancel".

  @{i}A word of warning@{ui}: This auto gadget selection can cause a deadlock
situation (eating up a lot of CPU time) if you aren't careful. An example:
A "No disk present" requester is set to return 1. The OS tries to open a
requester telling you to insert a disk, while the message tells the OS to
retry, instead of opening the requester. The only way to get out of this
loop is to insert a disk.

  If a timeout is specified (i.e., the value is non-zero), then the
automatic gadget selection will not prevent the requester from opening.
Rather, the selection will only be used if the timeout expires. This is
useful for unattended @{b}Amiga@{ub}s (such as BBS:es). If you are around, then you
get a chance to do something about the requester, but if you're not around
to respond to the requester in a reasonable time, then @{b}ReqChange@{ub} will
handle the selection for you. A @{"keyfile" Link KEYFILE} is required to use this feature.

  The fact that @{b}ReqChange@{ub} waits until the message returns means you may
need to e.g. @{b}Run@{ub} a program you start, and that you should avoid doing
things that may take some time to complete. To make an @{b}ARexx@{ub} macro run
asyncronously, you'll need to write something like this in the command:

  ADDRESS COMMAND "Run Rx <Macro filename>"


  @{b}-- Footnotes --@{ub}

  ¹ This name field is ignored by @{b}ReqChange@{ub}. It is included so that you can
enter something descriptive, to make it easy to see what a Rexxnode does.
This field is what you see in the list.

@EndNode


@Node EXCEPTED_PROGRAMS "ReqChange.guide/Excepted programs"

@{b}@{u}Excepted programs@{uu}@{ub}

  In some cases there might be a problem with the patches @{b}ReqChange@{ub}
installs. If so, that program can be excepted from patching. In
@{"The Prefs editor" Link PREFS_EDITOR}, such programs can be entered via the @{"Except window" Link EXCEPTWINDOW}
(opened from the @{"Edit window" Link EDITWINDOW}). @{b}ReqChange@{ub} will try to get a name for a
given process, so that it will be the same, regardless if it was started
from the @{b}Workbench@{ub} or the @{b}Shell@{ub}.

  Hopefully, this feature won't be needed much. But if you do need it,
please tell me if you use it because of something you consider to be a
problem with @{b}ReqChange@{ub}, so that I can fix it.

@EndNode


@Node PREFS_EDITOR "ReqChange.guide/The prefs editor"

@{b}@{u}The prefs editor@{uu}@{ub}

  The prefs editor allows you to customize the behaviour of the patches,
which @{"libraries" Link GLOSSARY} to patch, etc. You can also edit the lists that holds
information about what message to send from certain requesters (see
@{"ARexx messages" Link AREXX_MESSAGES}) and which volumes that always should be denied (see
@{"The AssignWedge" Link ASSIGNWEDGE}), and if some programs shouldn't use the patches (see
@{"Excepted programs" Link EXCEPTED_PROGRAMS}). You may also install, update or remove the patches
(see @{"Main window menus/Patches" Link MAINWINDOW_PATCHES}).

  All changes you do have immidate effect, so you don't need to exit the
editor to try them.

  @{" Preview notes     " Link PREVIEW}  Notes about the window previews.

  @{" Arguments         " Link ARGUMENTS}  Command line arguments and tooltypes.
  @{" Main window       " Link MAINWINDOW}  The gadgets in the main window.
  @{" Main window menus " Link MAINWINDOW_MENUS}  The menus in the main window.
  @{" Edit window       " Link EDITWINDOW}  The gadgets in the edit window.
  @{" Edit window menus " Link EDITWINDOW_MENUS}  The menus in the edit window.
  @{" Deny window       " Link DENYWINDOW}  The gadgets in the deny window.
  @{" Rexx window       " Link REXXWINDOW}  The gadgets in the Rexx window.
  @{" Except window     " Link EXCEPTWINDOW}  The gadgets in the except window.
  @{" Program window    " Link TASKWINDOW}  The gadgets in the program window.

  Pressing the @{i}HELP @{ui}key will open an @{b}AmigaGuide@{ub}® window with help (for the
currently active window), if you have @{b}AmigaGuide@{ub}® installed, and placed the
file @{b}ReqChange.guide@{ub} somewhere in the @{b}AmigaGuide@{ub}® search path (this is
either the same directory as you have the prefs editor, or any of the
drawers specified in the @{i}AmigaGuide/Path @{ui}environment variable). You can
also press @{i}HELP @{ui}when you're in a menu, to get help about the current menu.

  The @{i}F1 @{ui}key will zip/unzip the window, and @{i}cursor left @{ui}and @{i}cursor right@{ui}
will activate the "previous" and "next" window, respectively.

  As @{b}ReqChange@{ub} is implemented as a library and doesn't have any @{b}IPrefs@{ub}-
like program (that would wait for any changes to the preferences files), a
simply copy of a preferenes file to @{b}Env:ReqChange/@{ub} will not be noticed. Use
the prefs editor argument @{b}USE@{ub} in combination with the @{b}FROM@{ub} argument do
something like this (see @{"Arguments" Link ARGUMENTS}).

  Any version of the prefs editor should work with any version of
@{b}reqchange.library@{ub} (and vice versa ofcourse. However, sometimes a new
version of the preference editor might require a new function in the
library). You maybe won't be able to edit all things, or all gadgets maybe
doesn't have any effect, but these should be the only problems. The
interface between the prefs editor and the library have been designed to
eliminate compatibility problems.

@EndNode


@Node PREVIEW "ReqChange.guide/The prefs editor/Preview notes"
@Toc  PREFS_EDITOR

  If you have OS 3.0 or higher, then you can make use of the window
previews that are included (if you selected to install them, that is).
These are pictures of the different windows that the prefs editor can open.
Simply select the "window preview" link to view them.

  If you don't have OS 3.0, you can always use a picture viewer to see
them, in case you want to.

  The pictures shows how these windows looks on my system. That may differ
quite a lot from the way you see them (but the same gadgets are there). The
largest difference is probably the font, since the windows adapts to the
current screen font. I'm using XHelvetica 11 (which is very similar to
helvetica 11), found in the @{b}MagicWB@{ub}-package.

  Another large difference can be the window border (and the gadgets in
it). These differences are due to a program I have installed, called
@{b}SysIHack@{ub} (written by "Mr. BOOPSI" :).

  Finally, in OS 3.0, the user can change the color of the text in the
window title.

@EndNode


@Node ARGUMENTS "ReqChange.guide/The prefs editor/Arguments"
@Toc  PREFS_EDITOR

@{b}@{u}Arguments@{uu}@{ub}

  The preferences editor have the following template. The arguments can be
specified on the command line, or as tooltypes in the icon:

  @{b}FROM/M,EDIT/S,USE/S,SAVE/S,PUBSCREEN/K@{ub}

  @{b}FROM@{ub}

  Here you can specify a preferences file to load into the preferences
editor. Unlike the normal preferences editors, you can enter several files
here (space separated). You can't use patterns though. @{b}ReqChange@{ub} will check
what type of file it is ¹, and if it indeed is a valid @{b}ReqChange@{ub}
preferences file, it will be loaded before any window is opened. If you
enter several files of the same kind, only the last one will have any
effect.

  @{b}EDIT@{ub}

  Normally, when either @{b}USE@{ub} or @{b}SAVE@{ub} (see below) have been used, the editor
will not open its window. This switch will make it open the window anyway.

  @{b}SAVE@{ub}

  If this option is specified, the editor will save the current
configuration to @{b}EnvArc:ReqChange@{ub}, just as if you had selected the "Save"
gadget in the @{"Main window" Link MAINWINDOW}. The main window will @{i}not @{ui}be opened. If any @{b}FROM@{ub}
files are specified, they will be read first.

  @{b}USE@{ub}

  If this option is specified, the editor will save the current
configuration to @{b}Env:ReqChange@{ub}, just as if you had selected the "Use"
gadget in the Main window. The main window will @{i}not @{ui}be opened. If any @{b}FROM@{ub}
files are specified, they will be read first

  @{b}PUBSCREEN@{ub}

  This argument lets you specify which public screen the windows should
open on. If the screen couldn't be found, they will open on the default
public screen (which also happens if you don't specify any name). Please
note that this name is case sensitive.


  @{b}-- Footnotes --@{ub}

  ¹ There are four different preferences files: The main configuration file
(@{b}ReqChange.prefs@{ub}), the denylist file (@{b}Deny.prefs@{ub}), the Rexxlist file
(@{b}Rexx.prefs@{ub}), and the exception file (@{b}Except.prefs@{ub}).

@EndNode


@Node MAINWINDOW "ReqChange.guide/The prefs editor/Main window"
@Toc  PREFS_EDITOR

@{b}@{u}Main window@{uu}@{ub}

  This window contains general flags for the patches, and the settings for
the different requester types. The settings of the gadgets and menu items
are saved in a separate file (called the main preferences file).
The following gadgets exists (@{"window preview" Link "Pictures/RC_MainWindow.Pic/Main"}):

  @{b}Asl font requester@{ub}

  If this gadget is checked, it means that the @{b}Asl@{ub} font requester will be
patched. You don't need to clear the checkmark in this gadget in order to
be able to select e.g. different colors in the @{b}Font@{ub} preferences program,
since @{b}ReqChange@{ub} automatically will use the original font requester when
needed.

  @{b}Asl screen mode requester@{ub}

  If this gadget is checked, it means that the @{b}Asl@{ub} screen mode requester
will be patched. If an unsupported feature is used (currently the "custom
screen mode list"), then @{b}ReqChange@{ub} will automatically use the original
screenmode requester.

  @{b}AssignWedge@{ub}

  If this gadget is checked, it means that @{"The AssignWedge" Link ASSIGNWEDGE} is activated.
This means that when a "Volume requester" is displayed, there will be three
extra gadgets, allowing you to mount the volume, enter an assign, or deny
this volume name.

  @{b}ARQ mode@{ub}

  If this gadget is checked, it means that all text requester patches (and
the requesters the prefs editor opens) will use the text requester function
in @{b}Intuition@{ub}. This way, another text requester patcher may be used instead
(e.g. @{b}ARQ@{ub}), while still having the @{b}AssignWedge@{ub} feature available. If you
use this feature, remember that the other patcher should be started @{i}before@{ui}
@{b}ReqChange@{ub} is started.

  You can use the @{"ARexx messages" link AREXX_MESSAGES} for these requesters, even if this gadget
is checked, but the timeout will be ignored. This is due to @{b}ARQ@{ub}, and
there's nothing I can do about it at the moment.

  @{i}Note: @{ui}The @{b}Intuition@{ub} patches must be enabled for this to work.

  Also, not all text requesters will be "passed on" to the other patcher.
If this happens, then it is due to things that the original @{b}Intuition@{ub}
function can't handle.

  @{b}Keys@{ub}

  If this gadget is checked, you can use the keyboard to select the gadgets
in the text requesters. Please refer to the @{b}ReqTools@{ub} documentation for more
information about these keys.

  Also, as of @{b}ReqChange@{ub} version 3.6, this gadget will also activate an
automatic shortcut selector. Thus, you are not limited to only select the
leftmost and the rightmost gadget. Each gadget that have an underlined char
can be activated from the keyboard. Note that in some rare cases, all
gadgets may not get a shortcut. This could perhaps be fixed for some of
these rare cases, but at the cost of some extra code (and execution time),
and I didn't consider it worth it.

  A @{"keyfile" Link KEYFILE} is needed for the automatic shortcut selector to work.

  @{b}Center text@{ub}

  If this gadget is checked, the body text in the text requesters will be
centered. This often makes the requester look better. Sometimes this
centering will be disabled, if a requester have centering "by hand". The
current algorithm for this is fairly simple: If a line starts with a space,
then the centering is disabled! ;) Please remember that this doesn't fix
all cases. Proportional fonts in the requester will also cause "troubles".
Use a fixed-width font, and the requester should look good.

  @{b}Buffer@{ub}

  If this gadget is checked, @{b}ReqChange@{ub} will try to buffer the filelist in
the different file requester patches. In some cases this isn't possible
(the @{b}Arp@{ub} requester can't be buffered, while some of the @{b}Req@{ub} and @{b}Asl@{ub} file
requesters' can be. It depends on the calling program), but when possible,
it means that the requester remembers all shown files from the previous
call. This uses a little memory, but removes the directory-reading time.
This is especially useful when you are using floppies, and you don't use
the new @{i}DirCache @{ui}filesystem that exist in OS 3.0 and higher.

  @{b}Requester type@{ub}

  This gadget specifies which requester type you currently are editing the
settings for. All gadgets within the "double" border applies to the
requester specific settings.

  @{b}Center mode@{ub}

  This gadget specifies the center mode to use for the current requester
type. There are several possible center modes, but most of them should be
rather obvious. A few comments are in place though:

  'Normal' makes the requester center as they normally would have done if
the patch wasn't installed.

  'Default' causes @{b}ReqChange@{ub} to use the current default as set in the
@{b}ReqTools@{ub} preferences editor.

  The other ones does what the name implies. However, window-relative
options may not always behave like expected. In some cases, @{b}ReqTools@{ub} can't
find any window to be relative to, and if so, the requester will be
centered relative to the screen instead. Also, the window may not always be
the one you expect. Thus the centering can be a bit odd sometimes. Mostly
it should work fine though.

  @{b}Offset@{ub}

  For the 'Top left ...' centering modes you can also specify an offset,
using the @{b}Offset@{ub} gadgets. The leftmost gadget holds the 'Left' offset, and
the rightmost holds the 'Top' offset.

  These gadgets can be disabled, depending on which center mode you are
using.  Also, if the @{b}Default@{ub} gadget is checked, these gadgets will be
disabled.

  @{b}Default@{ub}

  If this gadget is checked, the offset set in the @{b}ReqTools@{ub} preferences
will be used. Ohterwise the offset in the @{b}Offset@{ub} gadgets will be used.

  This gadget can be disabled, depending on which center mode you are
using.

  @{b}Default height@{ub}

  If this gadget is checked, the requesters that can be resized will have
the default height, as set in the @{b}ReqTools@{ub} preferences. Otherwise they will
have the height the calling program requested.

  @{b}Pop screen@{ub}

  If this gadget is checked, then @{b}ReqTools@{ub} will pop the screen a requester
appears on. This is similar to the @{b}ReqTools@{ub} option, but here you can
specify it on a requester type basis, instead of a single global option.

  @{b}Backfill@{ub}

  This gadget only applies to the string and integer requesters. If
checked, the requester will have a background pattern, like the one used in
the text requester. Otherwise the background will be blank (using the
current background color).

  @{b}ARexx messages@{ub}

  If this gadget is checked, the @{"ARexx messages" Link AREXX_MESSAGES} for this requester type
will be enabled. Otherwise no messages will be sent when a requester of
this type appears.

  @{b}Font@{ub}

  This gadget opens up a font requester, that allows you to choose a font
that will be used in the requesters. If no font is specified, the current
screen font will be used.

  @{i}Note: @{ui}@{b}ReqChange@{ub} will not issue any warning if a font can't be opened
during @{"library" Link GLOSSARY} init (i.e. when the library is loaded into memory, either
by @{"StartRC" Link STARTRC} or @{"The prefs editor" Link PREFS_EDITOR}).

  @{b}Save@{ub}

  This gadget saves the main window settings for permanent use. The lists
(in the @{"Edit window" Link EDITWINDOW}) will be restored if needed.

  @{b}Use@{ub}

  This gadget saves the main window settings. Any changes will be lost when
you reboot or turn of your computer. The lists will be restored if needed.

  @{b}Cancel@{ub}

  This gadget undos any changes you have done to the main window settings,
and exits. Any changes done to the lists are not affected. The lists will
be restored if needed.

@EndNode


@Node MAINWINDOW_MENUS "ReqChange.guide/The prefs editor/Main window menus"
@Toc  PREFS_EDITOR

@{b}@{u}Main window menus@{uu}@{ub}

  The main window have the following menus:

 @{" Project " Link MAINWINDOW_PROJECT}  File operations, etc.
 @{" Edit    " Link MAINWINDOW_EDIT}  Different edit functions.
 @{" Patches " Link MAINWINDOW_PATCHES}  Control the patches.
 @{" Options " Link MAINWINDOW_OPTIONS}  Options.

@EndNode


@Node MAINWINDOW_PROJECT "ReqChange.guide/The prefs editor/Main window menus/Project"
@Toc  MAINWINDOW_MENUS

@{b}@{u}Project@{uu}@{ub}

  @{b}Open...@{ub}

  This menu item allows you to select a previously saved main preferences
file to use. You can only load a valid preferences file.

  @{b}Save as...@{ub}

  This menu item allows you to save the current main preferences to a file
of your choise.

  @{b}About...@{ub}

  This menu item shows a requester with some information about the program
and the patches. You can see if the patches are installed, how many of the
patches that were active when you selected this menu item, and the number
of allocated requesters.

  @{b}Quit@{ub}

  This menu item quits the preferences editor.  Works like the "Cancel"
gadget in the @{"Main window" Link MAINWINDOW}.

@EndNode


@Node MAINWINDOW_EDIT "ReqChange.guide/The prefs editor/Main window menus/Edit"
@Toc  MAINWINDOW_MENUS

@{b}@{u}Edit@{uu}@{ub}

  @{b}Lists...@{ub}

  This menu item opens the list @{"editor window" Link EDITWINDOW}, where you can edit the
deny, Rexx and exception list. If the window already is open, it will be
unzoomed if needed, activated, and then brought to the front.

  @{b}Defaults@{ub}

  This menu item sets the main settings to the builtin defaults (note:
these defaults are stored in the @{"library" Link GLOSSARY}, and not in the editor).

  @{b}Last saved@{ub}

  This menu item reloads the last saved main preferences file (saved with
the "Save" gadget in the @{"main window" Link MAINWINDOW}).

  @{b}Restore@{ub}

  This menu item restores the main settings to the state they were in when
the editor was started.

@EndNode


@Node MAINWINDOW_PATCHES "ReqChange.guide/The prefs editor/Main window menus/Patches"
@Toc  MAINWINDOW_MENUS

@{b}@{u}Patches@{uu}@{ub}

  @{b}Intuition@{ub}

  If this menu item is checked, it means that the @{b}Intuition@{ub} patches are
enabled. If you change the state of it, @{b}ReqChange@{ub} will try to
install/remove the patches as needed. If it isn't possible to remove the
patches, they will remain in a disabled state, so that you won't notice
them. See @{"Patched requesters/Intuition" Link INTUITION}.

  @{b}Asl@{ub}

  If this menu item is checked, it means that the @{b}Asl@{ub} patches are enabled.
If you change the state of it, @{b}ReqChange@{ub} will try to install/remove the
patches as needed. If it isn't possible to remove the patches, they will
remain in a disabled state, so that you won't notice them. See
@{"Patched requesters/Asl" Link ASL}.

  Note however that if you install the patches, the currently running
programs may or may not use the new @{b}ReqTools@{ub} requesters. This depends on
the program (technical note: if they keep a requester structure allocated
or not). If you want them to use @{b}ReqTools@{ub} directly, quit and restart the
programs, and they should now use @{b}ReqTools@{ub}.

  So some of you says: "But can't the same thing happen when I try to
remove the patches?" No, it can't, since @{b}ReqChange@{ub} have the ability to fall
back to the original @{b}Asl@{ub} function when needed.

  @{b}Arp@{ub}

  If this menu item is checked, it means that the @{b}Arp@{ub} patches are enabled.
If you change the state of it, @{b}ReqChange@{ub} will try to install/remove the
patches as needed. If it isn't possible to remove the patches, they will
remain in a disabled state, so that you won't notice them. See
@{"Patched requesters/Arp" Link ARP}.

  @{b}Req@{ub}

  If this menu item is checked, it means that the @{b}Req@{ub} patches are enabled.
If you change the state of it, @{b}ReqChange@{ub} will try to install/remove the
patches as needed. If it isn't possible to remove the patches, they will
remain in a disabled state, so that you won't notice them. See
@{"Patched requesters/Req" Link REQ}.

  @{b}ReqTools@{ub}

  If this menu item is checked, it means that the @{b}ReqTools@{ub} patches are
enabled. If you change the state of it, @{b}ReqChange@{ub} will try to
install/remove the patches as needed. If it isn't possible to remove the
patches, they will remain in a disabled state, so that you won't notice
them. See @{"Patched requesters/ReqTools" Link REQTOOLS}.

  @{b}Update@{ub}

  This menu item will try to update the patches so that they reflect the
current settings in this menu. What this means is that @{b}ReqChange@{ub} will try
to install/remove any patches that need to be.

  Each time you alter the state of any of the patch checkmarks in this
menu, such an update will be performed, so you'll probably not need this
one that often.

  @{b}Install...@{ub}

  This menu item will install the patches. If the patches already are
installed, you will be informed about it.

  @{b}Remove...@{ub}

  This menu item will try to remove all patches. If this isn't possible,
you'll be asked if all patches should be disabled or not. Disabling all
patches is equivalent to clearing all checkmarks in this menu. See @{"StartRC" Link STARTRC}
for more information about the problems in removing patches.

@EndNode


@Node MAINWINDOW_OPTIONS "ReqChange.guide/The prefs editor/Main window menus/Options"
@Toc  MAINWINDOW_MENUS

@{b}@{u}Options@{uu}@{ub}

  @{b}Create icons@{ub}

  If this menu item is checked, @{b}ReqChange@{ub} will write an icon together with
all main preferences files that are saved using @{b}Project/Save as...@{ub} (see
@{"Project" Link MAINWINDOW_PROJECT}).

@EndNode


@Node EDITWINDOW "ReqChange.guide/The prefs editor/Edit window"
@Toc  PREFS_EDITOR

@{b}@{u}Edit window@{uu}@{ub}

  In this window you can edit the three different lists, the deny list, the
Rexx list and the except list. Each list is saved in a separate file. These
lists are not affected by anything you do in the @{"main window" Link MAINWINDOW} (except for
the gadgets that can exit the editor, which will close this window, and
restore the lists from @{b}Env:ReqChange@{ub}), and the main window is not affected
by anything you do here.

  The following gadgets exists (@{"window preview" Link "Pictures/RC_EditWindow.Pic"}):

  @{b}List type@{ub}

  This gadget lets you choose which list to edit. There are currently three
lists you can edit, the deny list, the Rexx list and the exception list.

  @{b}List contents@{ub}

  This gadget shows the contents of the current list. Use the arrow gadgets
or the drag-bar to move around in the list. Select an entry (a node) by
clicking on it. A double-click will open a window that allows you to edit
that node.  See @{"Deny window" Link DENYWINDOW}, @{"Rexx window" Link REXXWINDOW} and
@{"Except window" Link EXCEPTWINDOW}.

  @{b}Add...@{ub}

  This gadget opens an empty node-edit window so that you can enter a new
one.

  @{b}Delete...@{ub}

  This gadget deletes the currently selected node.

  @{b}Edit...@{ub}

  This gadget opens a node-edit window allowing you to edit the currently
selected node.

  @{b}Sort@{ub}

  This gadget sorts the nodes in the current list in alfabetical order.

  @{b}Up@{ub}

  This gadget moves the current node up one step in the list.

  @{b}Down@{ub}

  This gadget moves the current node down one step in the list.

  @{b}Save@{ub}

  This gadget saves the lists for permanent use, and closes the edit
window.

  @{b}Use@{ub}

  This gadget saves the lists, and closes the edit window. Any changes will
be lost when you reboot or turn off your computer.

  @{b}Cancel@{ub}

  This gadget closes the window. @{b}ReqChange@{ub} will try to restore the lists
(by reading from @{b}Env:ReqChange/@{ub}) to the way they were when you opened the
edit window.

@EndNode


@Node EDITWINDOW_MENUS "ReqChange.guide/The prefs editor/Edit window menus"
@Toc  PREFS_EDITOR

@{b}@{u}Edit window menus@{uu}@{ub}

  The edit window have the following menus:

 @{" Project " Link EDITWINDOW_PROJECT}  File operations, etc.
 @{" Edit    " Link EDITWINDOW_EDIT}  Different edit functions.
 @{" Options " Link EDITWINDOW_OPTIONS}  Options.

@EndNode


@Node EDITWINDOW_PROJECT "ReqChange.guide/The prefs editor/Edit window menus/Project"
@Toc  EDITWINDOW_MENUS

@{b}@{u}Project@{uu}@{ub}

  @{b}Open...@{ub}

  This menu item will allow you to select a list to load. The current list
will be deleted, but only if the file is of suitable type. You must select
a file of the same type as specified in list type gadget.

  @{b}Append...@{ub}

  This menu item allows you to select a list to load. The current list will
@{i}not @{ui}be deleted. You must select a file of the same type as specified in the
list type gadget. The new nodes are added to the end of the list, and no
check for duplicates is done.

  @{b}Save as...@{ub}

  This menu item allows you to save the current list to a file of your
choise.  If you specify a name that already exists, no warning is issued,
and the file will be deleted if there is an error during the saving.

  @{b}About...@{ub}

  This menu item opens the About requester, as in the main window menus.
See @{"Main window menus/Project" Link MAINWINDOW_PROJECT}.

  @{b}Quit...@{ub}

  This menu item closes the edit window, like the "Cancel" gadget in the
@{"Edit window" Link EDITWINDOW}.

@EndNode


@Node EDITWINDOW_EDIT "ReqChange.guide/The prefs editor/Edit window menus/Edit"
@Toc  EDITWINDOW_MENUS

@{b}@{u}Edit@{uu}@{ub}

  @{b}Clear list...@{ub}

  This menu item will delete the currently displayed list.

  @{b}Last saved@{ub}

  This menu item allows you to load the last saved list of the current
type, saved using the "Save" gadget (see @{"Edit window" Link EDITWINDOW}). The old list will
be replaced. Use "Append..." to append the last saved list (see @{"Project" Link EDITWINDOW_PROJECT}).

  @{b}Restore@{ub}

  This menu item will try to restore the currently selected list (by
reading from @{b}Env:ReqChange/@{ub}) to the way they were when the editor window
was opened.

@EndNode


@Node EDITWINDOW_OPTIONS "ReqChange.guide/The prefs editor/Edit window menus/Options"
@Toc  EDITWINDOW_MENUS

@{b}@{u}Options@{uu}@{ub}

  @{b}Create icons@{ub}

  If this menu item is checked, @{b}ReqChange@{ub} will write an icon together with
all list files that are saved using @{b}Project/Save as...@{ub} (see @{"Project" Link EDITWINDOW_PROJECT}).
This menu item does not affect the "Create icons" option in the
@{"Main window menus" LINK MAINWINDOW_MENUS}.

@EndNode


@Node DENYWINDOW "ReqChange.guide/The prefs editor/Deny window"
@Toc  PREFS_EDITOR

@{b}@{u}Deny window@{uu}@{ub}

  This window allows you to enter/edit a deny node. A deny node is a very
simple one. It simply contains the name of the volume to deny, and
optionally the name of the program for which program this volume is denied.
The volume name is shown in the listview gadget.

  The following gadgets exists ((@{"window preview" Link "Pictures/RC_DenyWindow.Pic/Main"}):

  @{b}Deny name@{ub}

  In this gadget you specify the name of the volume that should be denied.
Do not enter any colon (':'). E.g., to deny the volume 'DF9:' (which
normally doesn't exist! :) you should thus enter 'DF9'. You must enter
something here. An empty string, or a string that only consists of spaces
is not allowed.

  @{b}Program@{ub}

  This gadget allows you to enter the name of the program for which the
volume should be denied. If the name doesn't match, the volume will not be
disabled. If this gadget is empty, the no name check is done. If you press
@{i}Shift-@{ui}down, then the @{"Program window" Link TASKWINDOW} will appear.

  You need a @{"keyfile" Link KEYFILE} in order to be able to edit this field.

  The name can be up to 500 chars long.

  @{b}Popup gadget@{ub}

  This gadget (which contains a small arrow-down image) opens the Program
window. It containins a list of all the programs currently running, with
the name as @{b}ReqChange@{ub} sees them. The program you select will be entered
into the @{b}Program@{ub} gadget above.

  @{b}Ok@{ub}

  This gadget accepts the string as it is, and uses that name in the
new/changed node.

  @{b}Cancel@{ub}

  This gadget closes the window, and the list/node is left unchanged.

@EndNode


@Node REXXWINDOW "ReqChange.guide/The prefs editor/Rexx window"
@Toc  PREFS_EDITOR

@{b}@{u}Rexx window@{uu}@{ub}

  This window allows you to enter/edit a Rexxnode. A Rexxnode contains
several fields so that you can specify exactly which requesters that should
have a certain @{b}ARexx@{ub} message associated with them.

  The following gadgets exists (@{"window preview" Link "Pictures/RC_RexxWindow.Pic/Main"}):

  @{b}Name@{ub}

  This gadget allows you to enter a name for the node. Since there isn't
really any field that is suitable to use for identifying a node (and to
place in the listview gadget), you have this one, where you can enter a
name of your own choise for the node. You must enter something here. An
empty string, or a string that only consists of spaces is not accepted.
Since this field is for you only, why not enter something that makes it
easier for you to see what kind of requester the node matches?

  The name can be up to 500 chars long.

  @{b}Requester type@{ub}

  This gadget allows you to select a requester type to match on. Only if
the requester is of the specified type, a message can be sent for the
requester. 'Any' matches any requester.

  @{b}Title@{ub}

  This gadget allows you to enter a string that the title must contain. If
empty, the title of the requester is ignored.

  The string can be up to 500 chars long.

  @{b}Body@{ub}

  This gadget allows you to enter a string that the body must contain. If
empty, the body of the requester is ignored. You can enter a string when
the "Requester type" gadget is set to 'Any', 'Text', 'String' or 'Integer',
as these are the only cases when there is a body to compare with (although
string and integer requesters doesn't have a body that often).

  The string can be up to 500 chars long.

  @{b}Program@{ub}

  This gadget allows you to enter the name of the program that called for
the requester. If the name doesn't match, no message will be sent. If this
gadget is empty, the no name check is done. If you press @{i}Shift@{ui}-down, then
the @{"Program window" Link TASKWINDOW} will appear.

  The name can be up to 500 chars long.

  @{b}Popup gadget@{ub}

  This gadget (which contains a small arrow-down image) opens the Program
window. It containins a list of all the programs currently running, with
the name as @{b}ReqChange@{ub} sees them. The program you select will be entered
into the @{b}Program@{ub} gadget above.

  @{b}Timeout@{ub}

  This gadget allows you to enter a timeout for the return code from the
message that is sent to @{b}ARexx@{ub}. See @{"ARexx messages" Link AREXX_MESSAGES} for
more information.

  You need a @{"keyfile" Link KEYFILE} in order to be able to edit this field.

  @{b}<@{ub}

  This gadget decreases the timeout by 5 (but it will not go below zero).

  @{b}>@{ub}

  This gadget increased the timeout by 5.

  @{b}Command@{ub}

  This gadget allows you to enter the command that should be sent to @{b}ARexx@{ub}
if a requester matches this node. You must enter something. An empty
string, or a string that only contains spaces isn't accepted. See
@{"ARexx messages" Link AREXX_MESSAGES} for more information.

  The command can be up to 500 chars long.

  @{b}Ok@{ub}

  This gadget accepts the Rexxnode as it is, and places puts the
new/changed node in the list.

  @{b}Cancel@{ub}

  This gadget cancels the window, and the node/list is left unchanged.

@EndNode


@Node EXCEPTWINDOW "ReqChange.guide/The prefs editor/Except window"
@Toc  PREFS_EDITOR

@{b}@{u}Except window@{uu}@{ub}

  This window allows you to enter/edit an exceptnode. An exceptnode only
contains the name of the program that should be excepted from patching.

  The following gadgets exists (@{"window preview" Link "Pictures/RC_ExceptWindow.Pic/Main"}):

  @{b}Program@{ub}

  This gadget allows you to enter the name of the program to except. If you
press @{i}Shift@{ui}-down, the @{"Program window" Link TASKWINDOW} will appear.

  The program name can be up to 500 chars long.

  @{b}Popup gadget@{ub}

  This gadget (which contains a small arrow-down image) opens the Program
window. It containins a list of all the programs currently running, with
the name as @{b}ReqChange@{ub} sees them. The program you select will be entered
into the @{b}Program@{ub} gadget above.

  @{b}Ok@{ub}

  This gadget accepts the exceptnode as it is, and places puts the
new/changed node in the list.

  @{b}Cancel@{ub}

  This gadget cancels the window, and the list/node is left unchanged.

@EndNode


@Node TASKWINDOW "ReqChange.guide/The prefs editor/Program window"
@Toc  PREFS_EDITOR

@{b}@{u}Program window@{uu}@{ub}

  This window allows you to select a program, which name will be entered in
the @{b}Program@{ub} gadget in the @{"Deny window" Link DENYWINDOW}, in the @{"Rexx window" Link REXXWINDOW} or the
@{"Except window" Link EXCEPTWINDOW}.

  The following gadgets exists (@{"window preview" Link "Pictures/RC_ProgramWindow.Pic/Main"}):

  @{b}List contents@{ub}

  This shows the names of all programs that were running when the window
opened. Use the arrow gadgets or the drag-bar to move around in the list.
Select a program by clicking on it. A double-click will select the program,
and close the Program window.

  @{i}Technical note: @{ui}@{b}ReqChange@{ub} tries to get the "real" name of the program,
which not always match the name e.g. @{b}Exec@{ub} thinks it has. This is needed
since the @{b}Exec@{ub} name usually depends on how the program was started, and
this shouldn't make any difference in this list. And mostly it doesn't. I
don't know if the method used here is perfect, but it seems to be rather
good at least.. :)

  @{i}Note: @{ui}This list is normally sorted, but it might not be, if the sort
function failed for some reason (probably out of memory).

  @{b}Ok@{ub}

  This gadget accepts the current program, closes the window, and enters
the program name into the proper gadget (overwriting any old program name).

  @{b}Cancel@{ub}

  This gadget closes the window, but it leaves the gadget unchanged.

@EndNode


@Node STARTRC "ReqChange.guide/StartRC"

@{b}@{u}StartRC@{uu}@{ub}

  @{b}StartRC@{ub} is a small program used to start or stop @{b}ReqChange@{ub}. It simply
loads @{b}reqchange.library@{ub} (if needed) and tells it to install or remove the
patches (see @{"The prefs editor/Main window menus/Patches" Link MAINWINDOW_PATCHES}).

  If @{b}ReqChange@{ub} already is installed when @{b}StartRC@{ub} is started ( :), it will
ask you if the patches should be removed.

  The patches can't always be removed. If some other program have "patched
over" @{b}ReqChange@{ub}'s patches (and a program like @{b}SetMan@{ub} isn't installed),
there is no way for @{b}ReqChange@{ub} to exit safely, and thus, it won't be done.
Also, if there are some allocated requesters around, @{b}ReqChange@{ub} can't be
removed either, since these requesters must be freed first, and the
original functions can't handle that. And ofcourse, @{b}ReqChange@{ub} can't exit if
some patch is active (e.g. a requester window is open).

  When the patches are removed, the @{"library" Link GLOSSARY} will be removed from memory
whenever the system needs the memory for other things (assuming no one else
is using @{b}reqchange.library@{ub}, like @{"The prefs editor" Link PREFS_EDITOR}).

  @{i}Note: @{ui}Removing patches is never a completely safe operation. One can only
try to make it as safe as possible (well, there is a safe way, and that is
to never unload the patches from memory. But that isn't a good solution
either), and hope for the best. :) Normally, there shouldn't be any
problems though.

  @{b}StartRC@{ub} can be started from both the @{b}Workbench@{ub} and the @{b}Shell@{ub}.

  Note for OS 2.1+ users: Since both The prefs editor and @{b}StartRC@{ub} use the
same @{"catalog" Link GLOSSARY} file, you will either need to have two copies of
@{b}reqchange.catalog@{ub}, or place it in @{b}Locale:Catalogs/<language>@{ub} (where
"<language>" is the language you have selected in the @{b}Locale@{ub} preferences
editor).

@EndNode


@Node PROBLEMS "ReqChange.guide/Known problems"

@{b}@{u}Known problems@{uu}@{ub}

  Although I do what I can to get a bug-free program, there are bound to be
bugs left. Most of them are currently unknown though.. :) However, I have
got a few reports about things that I have been unable to reproduce,
perhaps due to lack of information. Anyway, here is a list over those
reported problems that I've been unable to do something about:

  · "ReqChange is slow." Never got any really useful information. Attemts
to reproduce the problem failed.

    It should be noted that one of the new features in @{b}ReqChange@{ub} 3.6 makes
the @{"library" Link GLOSSARY} startup a bit slower. You'll probably only notice this on
"slow" @{b}Amigas@{ub} (e.g. unaccelerated A500). This initial slowdown will on the
other hand make the automatic shortcut selection faster.

  · "Programs that use the @{b}Arp@{ub} requester crash when they exit." Not
reproducable.

  · "@{b}MFR@{ub} patches interfere with @{b}ReqChange@{ub}."  Not reproducable.

    Known workaround: Try the following tooltypes in @{b}MFR@{ub}:

    PATCHREQ=OFF
    PATCHASL=OFF
    PATCHREQTL=ON

    And perhaps these too, to make the requester look a little better:

    OVRDIM=ON
    DEFWIDTH=474
    DEFHEIGHT=212

  If you experience any of these problems, please tell me. The more
information I get about the problem(s), the greater chance that I'll be
able to find (and fix) it.

  It should be noted that I might have fixed some of these problems without
knowing it! :)

@EndNode


@Node ACKNOWLEDGEMENTS "ReqChange.guide/Acknowledgements"

@{b}@{u}Acknowledgements@{uu}@{ub}

  Thanks go to the following persons, for helping me with @{b}ReqChange@{ub} in one
way or another:

  @{b}Nico Francois@{ub} - For his great @{b}reqtools.library@{ub}, the programming help, and
the ideas "borrowed" from @{b}RTPatch@{ub}.

  @{b}Fredrik Orinius@{ub} - For being the first one to send me a donation for
@{b}ReqChange@{ub}! And this was @{i}before @{ui}@{b}ReqChange@{ub} became Shareware.

  @{b}Nicola Salmiora@{ub} - For his @{b}SetPatch()@{ub} function and the help with the
"expunge problem".

  @{b}Stefan Boberg@{ub} - For the debugging help in some of the earlier versions.

  @{b}Michael Berg@{ub} - For the BOOPSI "getalt" gadget (i.e. the arrow down
image).

  @{b}Martin Huttenloher@{ub} - For the nice @{b}MagicWB@{ub}-icons in this archive.

  @{b}Martin Taillefer@{ub} - For the @{b}FixAG@{ub} program (and for @{b}TurboText@{ub}, which was
used during the development :).

  The beta-testers (in random order): Roger Andersson, Johan Billing,
Michael Berg, Stefan Johannesdal, Stefan Zeiger, Per-Anders Josefsson,
Markus Aalto, Lieven Lema, Stu Churchill, Roger Nordin, Nikolai Waldman,
Mathias Karlsson and Dennis Björklund.

  The translators (also in random order): Michael Berg (Dansk); Stefan
Zeiger (German); Markus Aalto (Soumi); Andrea Suatoni (Italiano); Mike
Rooze and Marco Niese (Nederlands); Georges Goncalves (Français).

  All of you who have sent me some sort of feedback on @{b}ReqChange@{ub}.

  Legal information largely stolen from the documentation to @{b}TrapDoor@{ub}
(the swedish translation of the legal information was largely stolen from
the swedish translation of the documentation to @{b}Spot@{ub}).

  Icon inspiration from the icon to the @{b}ReqTools@{ub} preferences program.

  Spelling errors etc. in this manual by myself (hey, english is only my
second language! I'm doing as good as I can! :)

  Persons mentioned here by name doesn't need to send any shareware fee for
using this program (contact me for details about how to get the keyfile).
They have done enough already! :)

@EndNode


@Node FUTURE "ReqChange.guide/The future"
@Toc  Main

@{b}@{u}The future@{uu}@{ub}

  Although I've implemented most things I found important in @{b}ReqChange@{ub},
there are still things that might be implemented at some future date. And
maybe you have some idea on how to improve this program? If so, please send
me a letter, and I'll consider it. To give you some inspiration, here are
some of the ideas that popped up during the development of this program:

  · A "requested width" for the @{b}req.library@{ub}/@{b}GetString()@{ub} patch (user request
actually). But were should I place this in the prefs editor? :)

  · Formatting codes in the @{b}ARexx@{ub} commands, so that e.g. the current title,
requester type and body, can be inserted (could useful for the automatic
gadget selection).

  · A @{b}RCPrefs@{ub} program (similar to @{b}IPrefs@{ub}) that would automatically re-load
the config files if they are changed "externally" (i.e. not by the prefs
editor). I certainly don't need such a program, but some persons maybe
does?

  · A possbility to use special prefs (some or all) for selected requesters
(similar to the @{b}ARexx@{ub}-message selection).

  · Function keys to select one of the gadgets in the text requesters (ala
@{b}ARQ@{ub}). Should be in @{b}ReqTools@{ub}.. :)

@EndNode


@Node PROGRAM_HISTORY "ReqChange.guide/Program history"
@Toc  Main

@{b}@{u}Program history@{uu}@{ub}

 @{" Version 1.00-2.03 " Link ANCIENT_VERSIONS}
 @{" Version 3.0       " Link VERSION_3_0}
 @{" Version 3.1       " Link VERSION_3_1}
 @{" Version 3.2       " Link VERSION_3_2}
 @{" Version 3.3       " Link VERSION_3_3}
 @{" Version 3.4       " Link VERSION_3_4}
 @{" Version 3.5       " Link VERSION_3_5}
 @{" Version 3.6       " Link VERSION_3_6}

@EndNode


@Node ANCIENT_VERSIONS "ReqChange.guide/Program history/Version 1.00-2.03"
@Toc  PROGRAM_HISTORY

@{b}@{u}Version 1.00-2.03@{uu}@{ub}

  Ancient history.

@EndNode


@Node VERSION_3_0 "ReqChange.guide/Program history/Version 3.0"
@Toc  PROGRAM_HISTORY

@{b}@{u}Version 3.0@{uu}@{ub}

  This version is a complete rewrite from scratch!

  · All resident code is written in efficient assembler, and stored in a
@{"library" Link GLOSSARY}.

  · Patch installation/removal code a lot smaller and a bit smarter. @{b}SetMan@{ub}
is no longer treated as a special case. Thanks to Nicola Salmiora for his
@{b}SetPatch()@{ub} function, which was used as a base when I rewrote the patch
related code.

  · Stack swapper redesigned. Now uses @{b}exec.library@{ub}/@{b}SwapStack()@{ub}.

  · @{b}ARexx@{ub} messages can now be sent from any requester, based on requester
type and title (and/or body, for the text requester). These messages can be
disabled for certain requester types, for maximum efficiency.

  · Centering modes, offsets, fonts etc. can be selected for each requester
type.

  · Two new centering modes: 'Default' and 'Normal'. 'Default' will make
@{b}ReqChange@{ub} use whatever set in the @{b}ReqTools@{ub} preferences editor, while
'Normal' will make the requesters appear where they normally would have if
@{b}ReqChange@{ub} wasn't installed (although the @{b}Asl@{ub} patches won't remember their
position between calls).

  · Prefs editor that allows you to modify the behaviour of @{b}ReqChange@{ub} with
a nice user interface, complete with keyboard shortcuts and online help.
You can also edit the deny and Rexx list!

  · Complete support for @{b}Asl@{ub} V38 (as complete as it can be, I hope). This
includes the accept/reject patterns, the "dirpattern", all hooks & tags etc.

  · The @{b}Asl@{ub} patches can now fall back to the original requester if the
patches have been disabled or an unsupported feature is used. The code for
this is fairly small, thanks to a new approach of handling tags.

  · Improved localization. Will now automatically adjust to any new language
selected.

  · The @{b}AutoRequest()@{ub}/@{b}EasyRequest()@{ub} patch can now (optionally ofcource)
call the original function after the AssignWedge. I suspect some @{b}ARQ@{ub} users
will like this. ;)

  · Documentation completely rewritten in @{b}AmigaGuide@{ub}® format.

  · Requires OS 2.0, and is OS 3.0 aware.

  · No longer a Commodity.

  · Patterns will only be converted if necessary (i.e. the WILDSTAR bit in
@{b}dos.library@{ub} is cleared).

  · Tested with @{b}Enforcer@{ub} & @{b}MungWall@{ub} (earlier versions were only @{b}MungWall@{ub}
tested).

  · Uses memory pools whereever possible. This reduces memory
fragmentation.

  · Should handle text requesters with "manual" centering better.

  · @{b}Asl@{ub} font requester patch is now optional.

  · @{b}Asl@{ub} screenmode requester patch added (optional).

@EndNode


@Node VERSION_3_1 "ReqChange.guide/Program history/Version 3.1"
@Toc  PROGRAM_HISTORY

@{b}@{u}Version 3.1@{uu}@{ub}

  · Minor bugfix: Prefs files would have the wrong protection bits when
saved. This update only reflects @{b}reqchange.library@{ub}.

  · Made a few corrections to the manual (there were some references to
non-existant sections).

@EndNode


@Node VERSION_3_2 "ReqChange.guide/Program history/Version 3.2"
@Toc  PROGRAM_HISTORY

@{b}@{u}Version 3.2@{uu}@{ub}

  · Fixed incorrect fido-address in this manual.

  · The @{b}ARexx@{ub}-messages should now work without enforcer hits etc.

  · The @{b}ARexx@{ub}-messages were not always sent when they should have been. Now
this should work! :)

  · @{b}ARexx@{ub}-messages may now be sent when an @{b}Asl@{ub} patch calls the original
requester.

  · Translations for French, Italian and Dutch added.

  · In the @{b}AssignWedge@{ub}, the gadget "Assign..." will now default to the same
drawer as the program resides in, if this is defined. Otherwise @{b}Ram:@{ub} will
be used as before.

  · Leftoffset and topoffset should be properly saved now. Also improved
some other "related" code, to ensure no problems with newer OS versions (if
there will be any :( ).

  · Fixed a bug in the @{"library" Link GLOSSARY} startup code. Also changed a message to be
nonlocalized to make things a little simpler. If this message is to be
shown, it isn't likely the @{"catalog" Link GLOSSARY} will load anyway! :)

  · Included a small JPeg (8 Kb), so you can see what I look like! :) Use
e.g. PPShow (V4.0+), FastJPEG or ViewTek to view it.

  · Bug in the @{b}Asl@{ub} screenmode requester fallback fixed (usually led to
crashes. But not always).

  · Version 2.2b of @{b}ReqTools@{ub} included.

@EndNode


@Node VERSION_3_3 "ReqChange.guide/Program history/Version 3.3"
@Toc  PROGRAM_HISTORY

@{b}@{u}Version 3.3@{uu}@{ub}

  Bug fixes:

  · The initial value of the height gadget in the @{b}Asl@{ub} screenmode requester
was not correct.

  · The prefs editor will now close the @{b}workbench.library@{ub} before exiting.

  · The prefs editor will now unlock its lock on the @{b}Workbench@{ub} screen
properly (it makes the lock to see if the prefs editor is on the @{b}Workbench@{ub}
screen, and if so, activates the AppWindow support).

  · Various bugs/(layout) quirks in the prefs editor GUI code fixed, code
optimized a bit, etc.

  · Enforcer hit in the prefs editor during @{b}Workbench@{ub} start and the icon
didn't have any tooltypes removed.

  · In the "Assign..." requester, any assigns relative to a programs home
directory (i.e. when the requester opens in the home directory) was
incorrectly made.

  · The @{b}Req@{ub}/@{b}GetLong()@{ub} patch didn't fall back properly.

  · Programs requesting pen selection in the @{b}Asl@{ub} font requester would never
get a requester on OS 3.1+. A few default values weren't properly set,
causing the requester to fail.

  · A couple of other defaults weren't properly set, causing e.g. @{b}WSpeed@{ub} to
crash, when showing an @{b}Asl@{ub} screenmode requester. Was this caused by a
@{b}ReqTools@{ub} bug as well? :)


  Improvements:

  · Exception list added. A program in this list will always use the
original functions.

  · Program name field added to the Rexxnode. Don't worry, old prefs files
can still be read.

  · Automatic gadget selection added (for text requesters only). Done via
the return code from @{"ARexx messages" Link AREXX_MESSAGES}.

  · In string gadgets in the prefs editor, shortcuts can now be selected by
pressing right amiga together the key in question. Because of that (and
some persons - including me - have @{b}StringClip@{ub} installed), the shortcut for
cancel was changed from c to a (in the english translation ofcourse).

  · A few minor improvements/bug fixes in the library.

  · The prefs editor now handles larger than normal window gadgets (if
@{b}SysIHack@{ub} is installed, this may be the case. If you are interested in how
this is done, check the file called @{b}Source/BottomBorder.c@{ub} in the
distribution archive).

  · The install script now automatically installs @{b}MagicWB@{ub}-icons if @{b}MagicWB@{ub}
version 2.0 or higher is installed.

  · The prefs editor now checks for the icon @{b}def_PREF.info@{ub} (instead of
@{b}def_PREFS.info@{ub}) in the drawers @{b}Env:ReqChange@{ub} and @{b}Env:Sys@{ub} when saving
preferences files. This way, e.g. the @{b}MagicWB@{ub} preset icon will be used, if
present.

@EndNode


@Node VERSION_3_4 "ReqChange.guide/Program history/Version 3.4"
@Toc  PROGRAM_HISTORY

@{b}@{u}Version 3.4@{uu}@{ub}

  · The "Only AssignWedge" option didn't work too well. Incorrect @{b}ARexx@{ub}-
messages was sent (possibly causing @{b}Enforcer@{ub} hits), and the AssignWedge
wasn't activated at all.

  · Changed behaviour of @{b}StartRC@{ub} a little. If started when @{b}ReqChange@{ub} is
installed, and all patches are inactive, then the patches will be activated
agian (instead of a requester popping up asking if you would like to remove
the patches).

  · Did some minor changes to the prefs load/save routines, to prevent any
problems with virtual memory systems (such as @{b}VMM@{ub}).

  · The AssignWedge code trashed the current process' window pointer
(@{b}pr_WindowPtr@{ub}). I discovered the problem while looking at the code, so I
never experienced any problems.. Strange.. :)

  · The flag "Only AssignWedge" have been renamed into "ARQ mode". If
enabled, all text requesters opened by @{b}ReqChange@{ub} will use the requester in
@{b}Intuition@{ub} instead, if possible (so that e.g. @{b}ARQ@{ub} can be used instead).
@{b}ARexx@{ub}-messages will work for these requesters as well (Note to all
translators: I have changed the string for MSG_ONLYASSIGN_GAD to "ARQ".
Please send me any modification for this, if needed).

  · Did some other minor changes in the prefs editor.

  · Programs in the program list that have "high ASCII" in their names
could get the wrong name.

@EndNode


@Node VERSION_3_5 "ReqChange.guide/Program history/Version 3.5"
@Toc  PROGRAM_HISTORY

@{b}@{u}Version 3.5@{uu}@{ub}  (Library version: 4.2)

  · @{b}reqchange.library@{ub} crashed when trying to read a main preferences that
didn't exist (didn't try the new "VM-compatible" code that much.. :)

  · If you managed to doubleclick an item twice in the listwindow, the edit
window in question would be opened twice.

  · A few @{b}Enforcer@{ub} hits (that didn't always occur) when the prefs editor
was started have been removed.

  · Sending an @{b}ARexx@{ub}-message for a text requester with only one gadget
caused the requester to be cancelled (by the auto gadget selection).

  · Pressing Left Amiga + <key>, where <key> doesn't correspond to a
shortcut will not inactivate the string gadget any more.

  · The windows will now backfill with the current background color, rather
than color 0 (although these usually are the same :).

  · Removed a couple of @{b}Enforcer@{ub} hits in the program window.

  · Forgot to mention one thing about version 3.4: @{b}ReqTools@{ub} 2.2c included.

  · Corrected various incorrections in this file.

  · Made a Swedish translation of this doc file.

  · The "task name copier" didn't quite work when @{b}MungWall@{ub} was installed
(and possibly at some other times as well). This meant that @{b}ARexx@{ub}-messages
weren't sent when they should be.

@EndNode


@Node VERSION_3_6 "ReqChange.guide/Program history/Version 3.6"
@Toc  PROGRAM_HISTORY

@{b}@{u}Version 3.6@{uu}@{ub}  (Library version: 5.0)

 · The "virtual memory support" introduced in version 3.4 wasn't quite
complete.. :)

 · The @{i}Help @{ui}key didn't work in string/integer gadgets.

 · The @{b}Asl@{ub} patches used to put its parent window to sleep incorrectly.
I.e., sometimes it was done when it shouldn't happen, and vice versa.

 · The screenmode requester (in @{b}Asl@{ub}) didn't show all modes (most notably,
no HAM modes were visible). However, it was a sort of fortunate bug, since
the current version of @{b}ReqTools@{ub} doesn't handle the depth gadget for HAM
modes that well. In some cases it can even crash.

 · The program list now removes any duplicate names. Thus, it doesn't show
the number of active programs (but to find out you had to count them
yourself anyway! :).

 · The @{b}Arp@{ub} patch called the hook when it shouldn't, and vice versa.

 · The @{b}Asl@{ub} patch didn't always call the file hook when it should (technical
note: this could only happen for the "old" hook).

 · A few minor internal bug fixes and improvements (e.g. for better library
<-> prefs compatibility. I finally noticed that it wasn't quite as complete
as I had hoped.. :).

 · If the "AssignWedge" was off, and "ARQ-mode" was on, then sometimes when
a text requester was about to be appear, a requester asking for the volume
"Any:" would appear instead.

 · The "popup" gadget (arrow down) got wrong dimensions on most screens
(i.e. those not similar to "my" screen.. :)

 · Added automatic wordwrapping for this documentation, if you have OS 3.0
or higher. The document is automatically converted if you install it with
the @{b}Installer@{ub}. See the program @{b}ReqChange/C/FixAG@{ub} in the distribution
archive for details on how to do this by hand.

 · Automatic shortcut selection for text requesters added. Only active if
the "Keyboard shortcuts" flag is set.

 · Timeout field for the Rexxnodes added. If a timeout is specified, then
the requester will close when the timeout expires. If the return code from
the @{b}ARexx@{ub}-message refers to a gadget, then that selection will be used,
otherwise cancel (the rightmost gadget) is used. If the user confirms the
requester before the timeout expires, then the message return code is
ignored.

 · @{b}ReqTools@{ub} patch added. Adds most preferences settings (although they may
be overridden by the caller) and the @{b}ARexx@{ub}-messages. Note that the timeout
and automatic gadget selection will not always be used for the text
requester (technical note: if the RT_ReqHandler tag is used, then the
return code/timeout is ignored).

 · Added program name field for deny nodes.

 · Keyfile added. Most new features in this version need a keyfile to be
activated (bugfixes are always "free"). See @{"Shareware" Link SHAREWARE} for information on
how to obtain a copy of the keyfile if you alread are a registered user.

@EndNode


@Node GLOSSARY "ReqChange.guide/Glossary"

@{b}@{u}Glossary@{uu}@{ub}

  @{b}Catalog@{ub}: A file that contains all text a program uses that needs to be
translated. By loading this file (and with the help of a few OS routines) a
program can operate in several different languages with relatively small
amount of work by the programmer.

  @{b}IMHO@{ub}: Acronym for @{u}i@{uu}n @{u}m@{uu}y @{u}h@{uu}umble @{u}o@{uu}pinion.

  @{b}Library@{ub}: A module containing a set of functions which other programs may
use. These modules can be stored on disk and loaded when needed.

  @{b}pgp-key@{ub}. PGP is an acronym for @{u}P@{uu}retty @{u}G@{uu}ood @{u}P@{uu}rivacy. PGP is an encryption
program written and (c) Copyright 1990-1992 by Philip Zimmermann. It uses
so called public key encryption, which means that the sender encrypts the
data with a "private" key and the recivers "public" key. Only the receiver
of a message will be able to decrypt the message, using his own private key
and the senders public key.

  @{b}SASE@{ub}: Acronym for @{u}s@{uu}elf @{u}a@{uu}ddressed @{u}s@{uu}tamped @{u}e@{uu}nvelope.

  @{b}String file macro@{ub}: A special type of an @{b}ARexx@{ub} macro. Instead of having
the macro in a file (which is the usual form), it is simply a string that
contains all the @{b}ARexx@{ub} commands (separated with semi-colons) that
should be executed.

@EndNode


@Node INDEX "ReqChange.guide/Index"

@{b}@{u}Index@{uu}@{ub}

 @{" Acknowledgements             " Link ACKNOWLEDGEMENTS}
 @{" ARexx messages               " Link AREXX_MESSAGES}
 @{" Arguments                    " Link ARGUMENTS}
 @{" Arp                          " Link ARP}
 @{" Asl                          " Link ASL}
 @{" Asl font requester           " Link MAINWINDOW}
 @{" Asl screen mode requester    " Link MAINWINDOW}
 @{" AssignWedge                  " Link MAINWINDOW}
 @{" Author address               " Link SHAREWARE}
 @{" Catalog                      " Link GLOSSARY}
 @{" Disclaimer                   " Link DISCLAIMER}
 @{" Deny list                    " Link ASSIGNWEDGE}
 @{" Deny window                  " Link DENYWINDOW}
 @{" Edit window                  " Link EDITWINDOW}
 @{" Edit window menus            " Link EDITWINDOW_MENUS}
 @{" Except window                " Link EXCEPTWINDOW}
 @{" Excepted programs            " Link EXCEPTED_PROGRAMS}
 @{" IMHO                         " Link GLOSSARY}
 @{" Installation                 " Link INSTALLATION}
 @{" Introduction                 " Link INTRODUCTION}
 @{" Intuition                    " Link INTUITION}
 @{" Key file                     " Link SHAREWARE}
 @{" Library                      " Link GLOSSARY}
 @{" License                      " Link LICENSE}
 @{" Main window                  " Link MAINWINDOW}
 @{" Main window menus            " Link MAINWINDOW_MENUS}
 @{" Memory usage                 " Link SYSTEM_REQUIREMENTS}
 @{" No warranty                  " Link NO_WARRANTY}
 @{" Patched requesters           " Link PATCHED_REQUESTERS}
 @{" Patched requesters/Arp       " Link ARP}
 @{" Patched requesters/Asl       " Link ASL}
 @{" Patched requesters/Intuition " Link INTUITION}
 @{" Patched requesters/Req       " Link REQ}
 @{" Patched requesters/ReqTools  " Link REQTOOLS}
 @{" Patches                      " Link MAINWINDOW_PATCHES}
 @{" Preface                      " Link PREFACE}
 @{" Program history              " Link PROGRAM_HISTORY}
 @{" Program window               " Link TASKWINDOW}
 @{" Registration                 " Link REGISTER}
 @{" Req                          " Link REQ}
 @{" ReqTools                     " Link REQTOOLS}
 @{" Requester type               " Link MAINWINDOW}
 @{" Rexx list                    " Link AREXX_MESSAGES}
 @{" Rexx messages                " Link MAINWINDOW}
 @{" Rexx window                  " Link REXXWINDOW}
 @{" Rexxnode                     " Link AREXX_MESSAGES}
 @{" SASE                         " Link GLOSSARY}
 @{" SetMan                       " Link SYSTEM_REQUIREMENTS}
 @{" Shareware                    " Link SHAREWARE}
 @{" StartRC                      " Link STARTRC}
 @{" String file macro            " Link GLOSSARY}
 @{" System requirements          " Link SYSTEM_REQUIREMENTS}
 @{" The AssignWedge              " Link ASSIGNWEDGE}
 @{" The future                   " Link FUTURE}
 @{" The prefs editor             " Link PREFS_EDITOR}
 @{" Why ReqChange?               " Link INTRODUCTION}

@EndNode
