TaskName: New Set
  Author:  Richard Coleman, 2000
 Version: 1.03 (14 Sep 2000)
________________________________________________________________________________

Description:

I have a number of different applications that load the same file types, this is
 particularly true of graphic filetypes.
Most of the time I want my favoured application to load those particular file types,
 so I find it extremely irritating when another application decides to deal with
 that file type itself.

So having been frustrated for long enough (these magazine CD's with their own
 version of !ARCFS and a read only Fresco has been the final straw) I've finally
 managed to get round to do something about it. Hence this module.

This module aliases the Set and SetMacro commands and reads the variable being
 set and looks out for any that start with "Alias$". If it finds that it has
 already been set then it prevents it from being changed. If the variable doesn't
 exist then it creates it as one would expect.
This does mean that if you legitimately want one to be changed then you will need
 to unset it first or put a "%" in front of the Set or SetMacro command.

Not only will it intercept @LoadType_, @PlugInType_, @PrintType_ and @RunType_
 (in fact any alias starting with @) but also the Open_URI_ and URLOpen_ types.
 It will pass on everything else unaltered.

The main culprits are !Boot and !Run files. It does not intercept the OS_SetVarVal
 SWI so the programs that use this SWI will work unaffected. 


Installing:
~~~~~~~~~~
The application only needs to be "seen" by the filer in order for it's !Boot file to
 be run, so place it anywhere where it's going to be seen or run during bootup.
Running the application will run the !Boot file which is where everything gets setup.

For RISC OS 4 the easiest thing is to place !NewSet anywhere you like, then
 double-click on $.!Boot, then when the Configuration window pops up, click on Boot
 and then on "Look at". Then drag the !NewSet application into the "Boot at startup"
 window. If you have it as the first entry then it will be the first thing loaded.

For pre-RISC OS 4 (if you're using the universal !Boot structure) then copy !NewSet
 into Choices.Boot.PreDesk

For pre-Universal !Boot then just stick it somewhere it's going to be seen or run
 during boot-up.


Problems:
~~~~~~~~
There are 2 problems that I can think of:
1. When you double-click on a file a different application from the one you were
   expecting loads up.

2. When opening a directory for the first time, or running an application gives an
   error about not finding a resource or file.


Solutions:
~~~~~~~~~
1. You need to alter your boot-up sequence so that the application that you want to
   be run is "seen" before any other applications that claim the same filetype.
   Remember that you can put a "%" before any Set commands (i.e. *%Set or just %Set)
   which will bypass the NewSet protection.

2. Call up a taskwindow (Ctrl-F12) and run *Unset Alias$Set, and *Unset Alias$SetMacro
   and run the !Boot file of the application that complained, or run the application
   again. If the error message goes away then it was caused by !NewSet, otherwise it
   is a genuine error and nothing to do with !NewSet.
   If it was !NewSet then please let me know and I'll do my best to look into it.


Other:
~~~~~
This has only been tested under RISC OS 4.02 but I can't think why it shouldn't
 work from 3.50 onwards (or possibly even earlier).
Please let me know if there are any problems with it.

To stop it doing it's job just do:
 Unset Alias$Set, and
 Unset Alias$SetMacro
________________________________________________________________________________

History:

 1.00         Initial version
 1.01 + 1.02  Change to the way the code works
 1.03         Tidying up the code and release version.
 1.03 (20 Sep 2000) Amended this !Help file and added entry in !Run to run the
              !Boot file.
________________________________________________________________________________

Contact:

  E-Mail: coleman@argonet.co.uk
     Web: http://www.argonet.co.uk/users/coleman/
