!Larger         Version 1.34                                  25th March 1992
=============================================================================

(c) 1991-92 Robin Watts

Introduction:

!Larger  is a RISC OS Application designed to make life easier when using the
Desktop. It performs several functions at once:

1) It  provides  a  Sticky  Backdrop  facility,  allowing applications, Basic
programs  and  datafiles  to  be  run,  dragged from, or moved by clicking or
dragging icons on the backdrop.

Features include:

      * Sprites, and System Variables saved with Backdrop.
      * Dragging  files  onto  backdrop  allows  them  to  be  saved  into  a
        directory within !Larger.
      * Shift-Drag conventions supported.
      * Automatic Gridlocking.
      * Facility to Select directories as CSD when opened from backdrop.
      * Press Ctrl-Tab to select Directory under Pointer as CSD,  or  to  set
        CSD to parent directory of file in editor under pointer.
      * Unique 'Gravity' feature separates Applications  and  Directories  as
        specified by user.
      * Launch Applications by dragging files onto them.
      * Save into directories by dragging files onto them.
      * Launch Applications by User-Definable Ctrl Keys.
      * !Help Compatible.
      * Copy Applications, Files and directories, by dragging from  Backdrop.

2) It  provides  a  Virtual  Desktop  facility,  enabling a desktop of almost
infinite size to be used, simply by 'pushing' the edge of the screen with the
pointer.  This  has  uses when using many different applications at once, and
helps prevent cluttering of Screen displays.

3) An Application Manager is provided. On Command,  an  entire  application's
windows  can  be hidden from view off screen, and brought  back  at  a  later
date unchanged. This is intended to help reduce screen clutter.

4) A facility is availiable to save details of the applications running,  and
the positions of the windows belonging to these. These can then  be  reloaded
simply by double clicking on and icon.

Menu Options:
=============

Info        =>             Opens a window containing info on Larger.

Backdrop    => Drag Onto   This  allows  the  item  over  which  the menu was
                           opened to have its 'Drag Onto' flag toggled.
            => Open Parent This  opens the directory containing the icon over
                           which the menu was opened.
            => Ctrl Key    This allows you to set a Key so that Ctrl and that
                           Key will 'run' that item.
            => Pre Params  This accepts parameters  which  will  be  inserted
                           after the command to be executed, and  before  the
                           filename of the file dragged onto the  icon.  Thus
                           if 'tar' is sat on the back drop, and  a  file  is
                           dragged onto  it,  and  the  required  command  is
                           'tar -xvf  <Filename>',  then  the  pre  paramater
                           string should be set to -xvf. This option is  only
                           used if a file is dragged to  the  icon,  and  the
                           drag onto flag is set.
            => Post Params This performs the same operation  as  Pre  Params,
                           but inserts the  parameters  after  the  filename.
                           The same conditions of use apply.
            => Run With    This option allows the user to run an  application
                           with  a  specific  string  passed   to   it.   The
                           application will be invoked with a command  string
                           consisting of:
                           <Command> <Pre params> <Run With> <Post Params>
                           This enables applications to be run with  (say)  a
                           list of filenames.
            => Remove Item This removes the item from the backdrop.
            => Help        This activates the  Help  file  (if  any)  of  the
                           application.
             
Desktop     => Home        This   moves  the  desktop  back  to  its  initial
                           position.
            => Retrieve    This  pulls  all  (non-hidden)  windows  onto  the
                           screen.
            => Cycle       This pulls the back window to the front.

Save Room   =>             This saves details of all non-hidden  Applications
                           and their windows to an icon on  the  backdrop.  A
                           double click on the icon will reload the apps, and
                           try and re-open the windows in the same places  as
                           before. Larger also saves the titles of the  files
                           (read from the title bar of the windows), and will
                           reload these into the appropriate  windows  if  it
                           can.
            
Config...                  This Opens the configuration window. This can also
                           be achieved by clicking on the icon bar  icon  (if
                           selected)

Apps...                    This allows the user to  edit  !Larger's  internal
                           list of Applications  and  their  positions.  This
                           list is used  when  restarting  applications  from
                           previously saved rooms.

Quit                       This quits !Larger.

Hot Key Options:
================

Ctrl-Tab:     Pressing  Ctrl-Tab  over  a  directory  window,  sets  the  CSD
              (currently selected  directory)  to  this  directory.  Pressing
              Ctrl-Tab, over an application which carries  the  name  of  the
              file being edited in it's title bar, will set the CSD to be the
              directory containing this file.

Shift-Tab:    Pressing Shift-Tab over a window, will  hide  all  the  windows
              belonging to that application off screen, and put  an  icon  on
              the backdrop. Double clicking this  Icon  will  cause  all  the
              windows to reappear, in the same positions as before.


Configuration Window:
=====================

This allows fine tuning of the !Larger Application for individual users.  The
possible options are listed below:

Auto Load     If  selected  !Larger  will  automatically  load  a   pre-saved
              backdrop from disk when launched.
Organise      This option turns the sorting functions of the  program  on  or
              off. With this enabled, applications  (i.e.  All  non-directory
              objects) and directories, are subjected to  the  'gravity'  set
              below. Thus  with  application  gravity  right,  and  directory 
              gravity left and organise on, objects on the backdrop  will  be
              neatly separated into the two categories.
Icon+Text     This option causes applications on the backdrop to be shown  as
              their sprite, followed by their name.
Icon Only     This option causes applications on the backdrop to be shown  as
              their sprite alone, without their name.
Scroll        This option turns the Virtual Desktop facility on and off. With
              this option set, as the pointer travels beyond the confines  of
              the screen, it causes the entire screen to move in the opposite
              direction, so offering a practically infinite screen area.
With Shift    This option works in conjunction with 'Scroll' above. With this
              set, the screen will only scroll around the Virtual Desktop, if
              Shift is held while the pointer is moved off screen.
Open Filer    With this option set,  double-clicking  a  directory  from  the
              backdrop has the effect of opening the filer window on screen.
Set CSD       With this  option  set,  double-clicking  a  directory  on  the
              backdrop has the effect of making  it  the  currently  selected
              directory.
Icon On Bar   This toggles the icon bar icon, on and off.
Large Icon    This selects what size of icon will be displayed  on  the  icon
              bar, if it is enabled with 'Icon On Bar'
Window Size   If selected, this stops windows opening up  to  vast  sizes  by
        Limit limiting the size of windows to that of screen size.
No Bounds     For those die-hard users amoung you, who object to all  windows
              having the 'No Bounds' bit set. To  use  the  Virtual  Desktop,
              this must be set. Note that this only affects  windows  created
              after the setting has been changed - Not all existing windows.
Selective     If this option is selected, only sprites used in  the  backdrop
  Sprite Save itself are saved. This means that !Larger will  start  up  much
              faster, and will take less room to store the sprites.  However,
              more time will be taken to open  directory  viewers  containing
              'unseen' applications as their sprites must be loaded. This  is
              slow at present as the code to copy sprites to a new area  uses
              repeated SWI calls, and is hence slow. Also, enough  memory  in
              the RMA must be availiable to hold the sprites  used,  as  they
              are copied across just prior to saving. If  not,  an  error  is
              given.
+ File Types  This option, only operational when Selective  Sprite  Save   is
              selected, forces !Larger to save all the filetype, and iconised
              app sprites found in the wimpsprite pool when the  backdrop  is
              saved.
Follow Caret  If this option is selected, and the user moves  the  caret  off
              screen, then the whole desktop will scroll to bring  the  caret
              back onto the screen. This  enables  windows  larger  than  the
              screen to be opened (e.g. DTP windows),  and  scrolled  around,
              without worrying about losing sight of the caret.  This  option
              will cause problems if the user  trys  to  scroll  the  desktop
              manually, so as to take the Caret off screen,  as  the  machine
              promptly scrolls it back.

To Copy !Larger:
================

1) Load up !Larger
2) Turn off Auto-Load
3) Quit !Larger
4) Drag !Larger to new disc
5) Reload Original !Larger
6) Turn Auto-Load back on (if appropriate)

In fact, any files that are saved, by dragging onto the backdrop of  !Larger,
are saved within !Larger in a directory called Internal. These can be deleted
if not required. Similarily, saved rooms  are  kept  in  a  directory  called
rooms. These can be deleted. Also the files making up a saved backdrop can be
deleted if not required. Simply delete the  files  'Details',  'SysVars'  and
'Sprites'  (NOT !Sprites).

Public Domain Notice:
=====================

This software is Shareware and may be freely copied and used, as long as  the
following conditions are met:

a) This Notice is distributed unchanged with every copy
b) Any  Changes  released  should first be Mailed to the Author at one of the
   addresses given below.
c) No  charge  (excluding  possibly a minimal Copying charge) is made for the
   software by the distributor (i.e. no profit may be made by the distributor
   either directly or indirectly,  unless  this  profit  is  donated  in  its
   entirety to a registered charitable institution, subject to  the  author's
   approval)
d) You may use the software for a suitable trial period without  registering.
   Should you continue to do so after this period,  then  you  must  register
   with the author by sending 10.00 to the author. In exchange for this, you
   will receive free updates to the software as it becomes available.  Should
   you decide not to register,  then  you  MUST  delete  your  copy  of  this
   software. DO NOT ABUSE THIS SYSTEM!

I hereby reserve the right to take action  against  any  person,  persons  or
company which infringes the above conditions. Applications for permission  to
distribute contrary to these  conditions  may  be  made  in  writing,  or  by
electronic mail to the addresses given below.

This software is provided 'as is', with no guarantee of its  suitability  for
any purpose. I will accept no responsibility for any data  lost  while  using
this program. NO WARRANTY IS GIVEN!

If  you  do change the code at all, please let me know, as I refuse to try to
support  other  peoples modifications unless I have been told about them, and
I will probably be interested.

If anyone has any ideas on improvements or new features for !Larger,  however
strange they may seem, please get in touch  with  me,  as  they  will  almost
always be useful to someone else. I will try and implement  anything  (within
reason) that people want.

Things to note:
===============

1) If  a  file  is set to 'Drag onto', and an application 'saves' a file onto
   its  plinth,  the  data  passed  is  stored  in  the  file  pointed  to by
   Wimp$Scrap. Then the application is loaded, and Wimp$Scrap is passed to it
   as  a  paramater. The application should then delete Wimp$Scrap. This does
   not  seem  to  be supported by any applications I have tried. (Or I am not
   doing it right!).

2) When  loading !Larger for the second time in a session, it may take a long
   time  to  start  up. This is due to the way *IconSprites works, and may be
   changed in later versions. To reduce  this  problem,  use  the  'Selective
   Sprite Save' option, and only the minimum number of sprites required  will
   be saved. Without this option set !Larger  saves  all  the sprites it  has
   seen, and so, ends up with an very large  sprite  file.   (Mine  is  about
   200k).

3) Problems  with  !Fonts:  There  are programs availiable now that patch the
   Font Manager to allow fast access to Large numbers of fonts. Some of these
   programs  have  fixes in to stop crashing Edit. If one of these is run and
   the  backdrop  is saved, problems may occur when rerun as System variables
   will  already  be set up, and Edit may crash. Not much I can do here until
   Acorn release a decent version of !Edit.

4) When the backdrop is saved, all the system variables (except those  to  do
   with !Larger itself, date and time) are saved. If this is a problem,  then
   simply edit the Obey file in !Larger called 'SysVars' after  the  save  to
   remove the offending lines.
                         
5) Some  programs (notably !BEdit) cannot be run with an argument. This means
   that they do not respond properly if set 'Drag onto'.            
                               
6) If the Toggle Size icon in an Edit window is hit, while  editing  a  large
   file, Edit may report a 'fatal store error' and crash. This is because  of
   the way Edit tries to open a window as large as possible, and is not a bug
   with !Larger. Hopefully Acorn will fix this in future versions  of  !Edit.
   This error will no longer be given if you have 'Window Size Limit' set.

7) I'm not getting paid for this.

Possible Future Enchancements:
==============================

1) Add option to show position of windows on icon bar icon.

2) Add facility for fixed (non-moving) windows.

3) Selective Sprite Save may be sped up considerably,  by  bypassing  the  OS
   sprite calls, and copying directly between sprite areas. This method would
   reply only on information given in the PRM, so it ought still to be legal.

4) An exception list option may be provided for saving of System Variables.
   
5) Someone Might Pay me

Changes History:
================

Changes for 1.05:

Fixed bug in (shift-)drag from filer.
Improved !Help response.
Fixed Bug in window scrolling.

Changes for 1.06:

Improved redraw speed.
Added Pre and Post Params Options.
Added Run With option.

Changes for 1.07:

Fixed Redraw Bug for Blank Backdrop.
Added Icon On/Off Option.
Added Large/Small Icon Option.
Increased WimpSlot to 128K

Changes for 1.08:

Added Config window code, and removed large chunks of menu options.
(This halved the time taken to generate the menu :-) )
Fixed bug with moving !Larger windows.

Changes for 1.09:

Corrected Mode change bug introduced in V1.08.
Put in Window Size Limit Option.
Streamlined Internals of proggy, so WimpSlot reduced to 96k.

Changes for 1.10:

Put in No Bounds Option.
Corrected Saving of icon size option.
Put Key Shortcuts in config window.
Corrected Bug with Quitting multiple instantiations of !Larger.

Changes for 1.11:

Added facility to allow drag to filer from backdrop to copy.

Changes for 1.12:

Sped up redraw.
Added selected sprite save option.

Changes for 1.13:

Corrected problem with menu generation.

Changes for 1.14:

Corrected Grabkeys Bug.
Added Rooms Option. (Involved Increasing WimpSlot to 128K :-( )
Put Setup Segment of program as an Overlay - Dumped after Start.
Removed all line number references from within program.
Altered some DIMs to claim space from RMA.
Fixed bug in redraw routine.
Added Follow Caret Option.

Changes for 1.15:

Sped up Selective Sprite Save - See note above.
Put Save/Load into an Overlay, and various Menu Options into another of  same
size, so as to save memory.

Changes for 1.16:

Fixed bug in System Variable Saving Routine.
Fixed bug in Selective Sprite Save.

Changes for 1.17:

Fixed bug with discard in Application Window.

Changes for 1.18:

Tidied bug fix for discard.
Extended Ctrl-Tab Functionality.
Fixed bug with No organise, no gravity.
Fixed bug with Details Save.

Changes for 1.19:

Fixed CSD Root problem.
Fixed backdrop to backdrop, non-organise drag bug.

Changes for 1.20:

Updated Room Save Option, to save titles of files in windows.

Changes for 1.21:

Updated Room Save Option, to cope with filer windows.

Changes for 1.22:

Rewrote menu handling routines to give instant menu creation.
Changed functionality of application manager.
Improved redraw on internal swaps.

Chnages for 1.23:

Fixed (Major) bug in Load/Save Room.
Fixed bug in Redraw Routine.
Added Help menu option.

Changes for 1.24:

Fixed Bug in Saving SysVars.
Fixed problem with Caret in Follow Caret/Hide App.
Fixed Quit Error.
Fixed Iconising IconBar Bug.
Fixed Load Room Bug.
Fixed active apps list bug.

Changes for 1.25:

Improved Scroll with Shift mouse rectangle handling.

Changes for 1.26:

Fixed run from backdrop bug.
Fixed Sysvars Saving (Again!)
Fixed bug with FS Vars.

Changes for 1.27:

Fixed bug with follow caret, and non-displayed caret.
Fixed config window click detection bug.

Changes for 1.28:
  
ARMCoded Redraw Handling Code to reduce time overhead on backdrop redraws.
Changed to Wimp handling of redraw for Config window.

Changes for 1.29:

ARMCoded Reorganise of Files.

Changes for 1.30:
  
Changed internal format to complete ARMCoding of redraw.
Changed Redraw handling of Backdrop drags/reorganises.
Fixed Help bug.
Improved Reorganisation algorithm.
Added Support Module to handle 'full size' mouse rectangles.
Fixed Wimp Keys Pressed Bug.
Upgraded Larger Module to Cope with Risc OS 3.
Decreased WimpSlot Size to 96K.
Fixed Pre and Post Params bug.

Changes for 1.31:

Improved Reorganise algorithm.
Added Support for small sprites in Selective Sprite Save.
Fixed Bug with Top Right Tile and reorganise.
Fixed dragging between columns bug.
Fixed Flickering Icon bar line bug.
Rewrote Larger and Larger Support modules to improve legality of code.
Rewrote Window Size Limit and No Bounds Handling.

Changes for 1.32:
  
Fixed reorganise bug with Apps gravity none.
Fixed reorganise bug with no organise, and changing to a smaller screen mode.
Armcoded Poll handling to further speed redraw and null events.
Added fudge to cope with better with Risc Os 3.00.
Added Support for hidden apps with Risc OS 3 sprites.
Fixed Macro saving bug.
Fixed Help Bug.

Changes for 1.33:
  
Enhanced functionality of Selective Sprite Saving, with filetypes etc.
Added Greying out of Config Items.
Fixed Hide Full Sized Window bug with Window Size Limit blocking removal.
Fixed Window Size Limit bug.
Rewrote Larger module loading code to conform to Acorn guidelines.

Changes for 1.34:
  
Fixed Annoying Mouse Rectangle bug.

Addresses To Contact the Author:
================================

217 Waterhouse Moor,
Harlow,
Essex,
CM18 6BW

St Catherines College,
Manor Road,
Oxford,
OX1 3UJ

By Janet: m90rjw@uk.ac.oxford.ecs

Thanks Go to:
=============

Brian  Brunswick  for  writing  the  original Module to Patch the wimp so all
windows are not bounded. His addresses are as follows:

Brian.Brunswick@cl.cam.ac.uk

Trinity College
Cambridge
CB2 1TQ
UK

All my many bugtesters (far too many to name individually).

Rik van der Schalie for writing to me with original code for Selective Sprite
Saving, and other ideas. His address is as follows:

Abrikozenstraat 190
2564 VZ DEN HAAG
Netherlands
Tel: 070-3258675
