                                   !MultiScrn
                                   ==========

                             1993 Michael R. Ellis

How to use !MultiScrn
=====================

        !MultiScrn provides up to ten views of the RISC OS desktop.  Each
view can be displayed singly,  or all ten views can be displayed
simultaneously.  It is also possible to remove all windows so that pinboard
items can be accessed easily.

        When !MultiScrn is first started it selects the first view,  known
as "Screen 1",  and all the windows visible are automatically placed onto 
this screen.  A row of buttons is added to the iconbar,  and it is through
these that other screens may be selected.


Basic Operation
===============

        !MultiScrn can operate in three distinct modes,  namely Selected, 
All and None. The names are pretty self-explanatory - Selected mode
displays the selected screen while All and None modes are used to display,
respectively,  all and none of the available screens.

        When first started,  !MultiScrn is in the Selected mode.  To select
a different screen you can either double-click Select over one of the
buttons above the iconbar or,  alternatively,  you can use ^f1
(Shift-Control-f1) to ^f10 to select screen 1 to 10 respectively.  In
Selected mode,  each screen can have a different screen mode and palette
which will be set up when that screen is selected.  To change the screen
mode and/or palette, simply use the palette application (or any other, 
similar utility) as normal.  To override the automatic mode and palette
change hold down Control while double-clicking the appropriate button - it
is not possible to override the mode change when using the keyboard
shortcuts.

        Double-clicking on the currently depressed button will change
!MultiScrn into None mode.  While in None mode all windows will be moved
off screen,  the screen mode and palette will remain unchanged and any
windows created will be assigned to the screen in effect before None mode
was entered.

        Double-clicking any button with Adjust or pressing ^f11 will
change !MultiScrn in All mode - the screen mode and palette will be those
in effect when All mode was entered.  Any windows created while in All mode
will be assigned to all the screens.

        Clicking Menu over the buttons produces a menu which can give
information about !MultiScrn,  quit !MultiScrn or change the text displayed
in the button: !MultiScrn will automatically shorten the name to fit the
available space if necessary.


Advanced Operation
==================

Moving Windows around
---------------------

        There comes a time when you want to move a window from one screen
to another,  and !MultiScrn allows you to do this in several different ways
which are outlined below.  All of the operations are based upon the filer
methods of moving and copying files around - it is much easier to
understand the descriptions if this is remembered.

        Moving a single window is always done by dragging from a button on
the button-bar to a window.  Two things must also be remembered.  First,
there is only ever one copy of a window - if that copy is closed (using the
normal 'close' icon on the window) then the window will disappear from all
the screens it appeared on.  Second,  iconised windows,  backdrop windows
and panes are never affected by !MultiScrn.

        Dragging with Select copies the window to the screen associated
with the button.  This is similar to the method used by the filer to copy a
file from one place to another except that the drag occurs in the 'wrong'
direction.

        To move a window to a specific screen,  shift-drag with Select just
as if you were going to copy a window as described above.  The window will
disappear from all the screens it appears on and will re-appear on the
destination screen.

        Dragging with Adjust instead will copy the window onto all the
screens. Shift-dragging with Adjust will attempt to remove the window from
the currently displayed screen.  Note that !MultiScrn will not allow you to
remove the window from the last screen it appears on.

Moving Screens around
---------------------

        It is possible to move all the windows on a screen to another
screen by dragging between two buttons on the button-bar.  Dragging and
shift-dragging with Select both work as expected - the former copies all
the windows while the latter moves the windows.  Note that in this case the
drag works 'right way round' - the windows are copied/moved from the screen
you drag from and to the screen you drag to.

        Dragging and shift-dragging with Adjust is a little more
complicated.  The former moves any window which currently appears on all
screens to all screens,  the net result of which is that it does nothing! 
The latter moves any window which currently appears on all screens to the
destination screen.

Command-line Operation
----------------------

        To ease the setting up of screens,  a means is provided whereby the
currently selected screen and the names of any of the screens may be set
from the command line or an 'Obey' file.  This is done by the "WIMP
Messenger" module included with MultiScrn.  The commands recognised are :-

SendMessage MultiScrn Name <screen> <name>
SendMessage MultiScrn Set  <screen>

where <screen> is a number between 1 and 10 (out of range values are
ignored) and <name> is a text string to be used as the name.  The "Set"
command also understands the screen known as 'all'.

Note that there is a "bug" (feature) in all current version of the RISC OS
filer which prevents the Filer_OpenDir and Filer_CloseDir commands from
working properly within scripts: all Filer_ commands are "saved up" until
the end of the obey script and are then executed in reverse order.  This
means that...

SendMessage MultiScrn Set 1
Filer_OpenDir adfs::0.$.Dir1
SendMessage MultiScrn Set 2
Filer_OpenDir adfs::0.$.Dir2

...will actually open both Dir1 and Dir2 on screen 2 with Dir1 on top of
Dir2.  Sorry,  but there really is nothing I can do about this without
re-writing the entire filer.


Known Bugs and 'Features'
=========================

        !MultiScrn assumes that you have the wimpflags (set using
!Configure or the "*configure wimpflags" command) set to allow windows to
be dragged off the
right and bottom of the visible screen.


Acknowledgements and Historical Information
===========================================

        The original idea for !MultiScrn can be traced back to the
excellent "screen" program in the UNiX ( AT&T Labs) public domain:  screen
allows the user to switch quickly between up to ten different tasks on a
single textual terminal with a couple of keystrokes.  While this approach
is not really valid in a graphical environment,  the principal was extended
in several of the
X-Windowing System window managers (in particular MOTiF and Open-Look
Windows) which implement a system of "rooms" for the various windows.

        The Archimedes followed with the excellent !Larger,  which allowed
the idea of "rooms" coupled to a large,  scrolling virtual desktop. 
However,  after only a relatively brief exposure to !Larger,  I found the
virtual desktop to be rather confusing:  it seemed very easy to lose a
window,  and the familiarity I had with the UNiX "screen" program was
missing.

        !MultiScrn is my answer to the problem - it implements "rooms", 
called "screens",  without the complexity and confusion surrounding the
virtual desktop.  Hot keys are provided to switch quickly between various
screens even when the button bar is hidden,  and it is possible to move 
all the windows off-screen so as to reveal all the items pinned to the 
pinboard.

        !MultiScrn is written using some functions from DeskLib,  a
FreeWare RISC OS Wimp library moderated by Jason Williams.

        The WIMPMessenger module was written by Michael R. Ellis and is
similar in operation to the "Dialogue" module provided with StrongEd II
(V2.50) by Guttorm Vik/Stallion Software.  WIMPMessenger was written from
scratch and has several improvements over the Dialogue module.

        Thanks to Simon Lockhart for many suggestions and ideas,  some of
which have been included in this version of !MultiScrn.  Simon also found a
few small bugs in !MultiScrn,  but I'm not going to thank him for that! (-:

        "!Larger",  by Robin Watts,  has now moved into the commercial
domain.

Version History
===============

0.xx    18/07/93        Prototype versions - many with bugs and/or missing
     to 08/08/93        features.  None were released.

1.00    10/08/93        New version,  completely re-written and greatly
                        improved
1.01    11/08/93        Some small bugs fixed.
1.02    31/08/93        Added the facility to have a window on all screens.
1.03    01/09/93        Improved the action on QUIT and upon multiple
                        invocation
1.04    04/09/93        Added WIMPMessenger facilities.
1.05    08/09/93        Minor bug fixed - "thanks" Si!!!
1.06    13/09/93        Changed the user interface and added facilities for a
                        window to appear on an arbitary set of screens.
                        First official release version.


Author's Note and Licence
=========================

        The code and other files of !MultiScrn remain the copyright  1993
of the author,  Michael R. Ellis.  No part of the code nor the supporting
files may by modified in any way without the prior written permission of
the author.  No warranty,  express or implied,  is given with this software
- you use it at your own risk.

        However,  this licence allows the distribution of !MultiScrn in an
unaltered form as FreeWare by anyone provided that :-

  *     No charge is levied other than reasonable cost to cover
        distribution and/or copying costs.  I regard more than 2 (or local
        equivalent) as unreasonable (1993 prices).

  *     All files in the !MultiScrn directory are provided unaltered.

        WIMPMessenger is freeware in its own right and may be used in your
own products provided that it is acknowledged in the !Help file of the
application and that the application is distributed as FreeWare. 
WIMPMessenger may not be used in commercial applications.  It is strongly
recommended that the first parameter in any command issued via
WIMPMessenger is the name of the application and that any application
recognising the name should claim the message to prevent multiple actions
from a single command.

        Bug reports and comments may be sent to me at the address below - I
will attempt to fix any bugs found and incorporate any good ideas for
improvements,  but I can make no promises.  If you supply a blank, 
E-formatted disc and a post-paid reply envelope,  I will return your disc
with the most up to date version of !MultiScrn and any other FreeWare
products I have written.  My address is :-

                                Michael R. Ellis,
                                 33, Barnfield Avenue,
                                  Kingston upon Thames,
                                   Surrey,  KT2 5RD,
                                    England.

                        InterNet email : mikee@dd.eng.bbc.co.uk

        Please note that the email address supplied with some of my earlier
freeware packages is no longer valid.