ScreenSelect
************

   Version: 2.0 , Release date: 08-Aug-93

   Copyright (C) 1992,1993 Markus Aalto (1)

   ---------- Footnotes ----------

   (1)  This program is freeware. You may freely distribute it as long
as you don't charge more than nominal fee for copying it (max 3 US$)
and no deletions is made to the original package. You may also include
it to freely distributable disks such as Fred Fish collection.

   This program is distributed without warranty of any kind. So I take
no responsibility about this program, its documentation, functionality
or damages it may cause.

Introduction
************

   In version 2 of [1mAmiga[0m operating system was introduced a concept of
Public Screens. These screens can be shared by application programs
just like Workbench screen has been in previous OS versions. Although
they bring a great addition to Amiga they also introduce a problem to
users which have Workbench, several Public and propably a few custom
screens open at the same time. And the problem is - "How to get that xxx
screen to front quickly without traversing through 5 other screens with
[1mleft-amiga m[0m?". Well, [1mScreenSelect[0m is answer to that question
because it opens a small window to the active screen after hotkey
selection where you can select the new frontmost screen with just a
click of the mouse. Also you can make hotkey bindings to any screens
(not just Public ones as in older versions) and for example get
Workbench screen frontmost with only one key press. And the only
requirement is that you have [1mKickstart 2.04[0m (V37) or greater.

Installation
************

   I have provided a script for Commodore's [1mInstaller[0m program so if
you have it then you should propably use it. Otherwise you can do
following actions.

   * Move [1mScreenSelect[0m to [1mWBStartup[0m directory.

   * Move [1mScreenSelectPrefs[0m to [1mPrefs[0m directory.

   * Move one of the doc files anywhere you normally store document
     files.

ToolTypes and CLI usage
***********************

       [1mScreenSelect[0m recognizes normal commodity tooltypes and one of
its own.

[1mCX_POPUP[0m
     This switch enables [1mScreenSelect[0m to open its window when it's
     started.  Default is no popup.

[1mCX_PRIORITY=xxx[0m
     This is [1mScreenSelect[0m's priority as commodity.  Here [3mxxx[0m is
     decimal number. Default is 0.

[1mCX_POPKEY=HOTKEY[0m
     Default is [1mshift esc[0m. For example you could use [1mCX_POPKEY=alt
     shift del[0m to change hotkey. If you specify popkey here you
     override the settings you have made with [1mScreenSelectPrefs[0m
     program.

[1mPREFSPROGRAM=PATH[0m
     This is the path where preferences program is to be found. This
     name must include the name of the preferences program. Default
     PATH is [1mSYS:Prefs/ScreenSelectPrefs[0m. see Preferences.

Main Window
***********

   You can see the main selection window for [1mScreenSelect[0m by pressing
the user configurable hotkey. This brings you a small window with few
buttons and a listview with names of open screens. Public screens all
have identifiable names but there are programs which use custom screens
and doesn't specify any name for it. Screens like that are shown as
[1m(Nameless Screen)[0m.

[1mQuit[0m
     By pressing button (or [1mQ[0m) you can remove [1mScreenSelect[0m and any
     patches it has installed.

[1mAbout[0m
     This gives you a small info about this program and its author
     (that's me :^).

[1mPrefs[0m
     This one opens the separate preferences program you can use to
     modify [1mScreenSelect[0m's behaviour. All changes come active
     instantly after you have exited preferences program with pressing
     either [1mSave[0m or [1mUse[0m buttons.

[1mUpdate[0m
     This one updates the listview and default pubscreen texts to
     reflect current system state.  This is only usefull if you haven't
     installed [1mAuto Update[0m patches.  You can install the patches with
     [1mScreenSelectPrefs[0m program.  see Preferences.

[1mListview gadget[0m
     Click any of the names to get that screen to front. Single click
     just activates the name which you can then activate with
     [1mActivate[0m gadget.  Double click makes an instant activation.

[1mDefault PubScreen[0m
     This one shows the name of the default pubscreen. If you have
     installed the [1mChange Default PubScreen[0m hotkey you can use it to
     select active public screen as your default public screen.

[1mActivate[0m
     Activates the current listview selection and closes the window.

[1mCancel[0m
     Closes the window and returns back to the screen where hotkey
     selection was made.

General Info
************

   There are few special options you can change with preferences
program.  Here are brief explanations about them. see Preferences

[1mScreen Types[0m
     Currently [1mScreenSelect[0m can show only Public screens or all
     screens.

[1mAutoUpdate Patches[0m
     This patches 4 Intuition functions to achieve automatic update in
     listview and in Default PubScreen textgadget. It also pretty much
     makes possible the use of QuickKeys because they automatically
     recognizes when screens are opened or closed. Patched functions
     are: OpenScreen, OpenScreenTagList, CloseScreen and
     SetDefaultPubScreen.

[1mWindow Position Modes[0m
     You can control the position of [1mScreenSelect[0m's main window with
     three possible options: [1mFixed[0m, [1mRelative[0m and [1mSmartPointer[0m.

         [1mFixed[0m mode forces window to always open to some predefined
     coordinates.

         [1mRelative[0m always tries to position the window so that pointer
     is over the [1mActivate[0m gadget.

         [1mSmartPointer[0m first tries to position the window so that
     pointer is over the last selected screen name. If this isn't
     possible it then forces pointer to move there.

[1mWindow Autoactivation[0m
     You can set few options to control [1mScreenSelect[0m's behaviour with
     window activation.

     If you have [1mWindow AutoActivation[0m mode ON, it tries to activate
     window from screen you are changing to. It doesn't work most of
     the times because it just examines the windows and tries to be
     smart when deciding which window to activate.

     If also [1mInputHandler[0m is ON, then [1mScreenSelect[0m 'hears' all the
     changes with window actications. This helps you only with changes
     through [1mScreenSelect[0m. If you change screen with [1mleft-amiga
     m[0m [1mScreenSelect[0m has no way of knowing that you have switched to
     new screen except if you have added [1mLoadView[0m patch.

     If [1mLoadView[0m patch is active then [1mScreenSelect[0m can hear all the
     screen changes and can always change new active window. As this
     one says it installs a patch to [1mLoadView[0m function in
     graphics.library. It's a very time critical place and while I
     haven't confronted any problems, it might be a source of problem
     for users with heavy animation needs. If you encounter any
     problems with animations you should first try to take this off
     before starting to look problems elsewhere.

     So lets go all modes through one more time.  [1mWindow
     AutoActivation[0m activates autoactivation mode. [1mInputHandler[0m
     option enables [1mScreenSelect[0m to remember all changes with screens
     active windows and [1mLoadView Patch[0m enables to hear all the
     frontmost screen changes. For best possible operation I suggest
     you to select them all.

Preferences
***********

Main Prefs
==========

   After you have started [1mScreenSelectPrefs[0m you get a window very
similar to the system preferences program. All the actions from menus
and [1mSave[0m, [1mUse[0m and [1mCancel[0m buttons are exactly the same as in
system programs so they are not explained here. Please consult your
AmigaDOS manual for more info.

   However there are two buttons labeled as Options and Hotkeys.  These
are the buttons you should press to get one of the real preferences
change windows.

Options
=======

   In this window are all the options settings.

[1mScreen Types[0m
     Selects one of the operation modes. In [1mPublic Only[0m mode
     [1mScreenSelect[0m uses only Public screens. In [1mAll[0m mode all
     screens are used.

[1mAdd AutoUpdate Patches[0m
     Toggles the state of AutoUpdate patches.

[1mWindow Position[0m
     Changes window position mode. Possible modes are [1mFixed[0m,
     [1mRelative[0m and [1mSmartPointer[0m. In [1mFixed[0m mode you can set the
     coordinate values to [1mLeft[0m and [1mtop[0m numeric gadgets.

[1mWindow AutoActive Options[0m
     You can select which level of AutoActivation you want. If you
     specify all three of them you get complete automatic window
     activation in your system. If Window AutoActivation is OFF then
     you can't select either [1mAdd InputHandler[0m or [1mAdd LoadView
     Patch[0m.

[1mOK[0m
     This ones confirms all the changes and returns back to Preferences
     main window. Note that these changes are not used yet. You have to
     make global confirm with [1mSave[0m or [1mUse[0m buttons.

[1mCancel[0m
     This one cancels all the changes.

Hotkeys
=======

   In this window are all the hotkey settings.

[1mPopUp Key[0m
     Used as hotkey for [1mScreenSelect[0m. You can override this setting
     with CX_POPKEY tooltype.

[1mUse Default PubScreen Key[0m
     Use the CheckBox gadget to toggle whether you want to use Default
     PubScreen key. If you do then write the hotkey to string gadget in
     right.

[1mAdd[0m
     Used to add new Screen Quickkey.

[1mDelete[0m
     Used to delete selected Screen QuickKey.

[1mScreen QuickKeys[0m
     List of screens you have set a Screen QuickKey for. Names can
     contain AmigaDOS patterns. For example [1mTERM?[0m can mean [1mTERM1[0m or
     possibly [1mTERM2[0m. All standard AmigaDOS patterns are accepted.
     This is great help when trying to make a QuickKey for some old
     programs using custom screens.

[1mQuickKey[0m
     Hotkey for selected Screen QuickKey.

[1mOK[0m
     Confirm changes.

[1mCancel[0m
     Cancel changes.

StickySelect
************

   I have had several requests to enchange the interface to do some
operations differently. Because some of these have been contradictory
or in my opinion not something I like to add to [1mScreenSelect[0m I have
made it possible for external programs to use [1mScreenSelect's[0m
selection mechanism. Now everybody can write a replacement for
ScreenSelect's interface.

   The first program to utilize this possiblity is [1mStickySelect[0m which
opens a small window to any public screen with a list of selectable
names - just like the one in [1mScreenSelect's[0m interface. However this
window doesn't go away when you make a selection. Instead it just sits
there and wait's for new selection. You can open as many as you like to
different public screens as long as [1mScreenSelect[0m is started before
[1mStickySelect[0m. Here are the parameters.

[1mPUBSCREEN=<>[0m
     Name of the Public screen you want [1mStickySelect[0m to open.

[1mLEFT=<>[0m
     Window left edge position.

[1mTOP=<>[0m
     Window top edge position.

[1mWIDTH=<>[0m
     Window width.

[1mHEIGHT=<>[0m
     Window height.

   If you would like to implement your own interface to communicate with
[1mScreenSelect[0m you can contact me to obtain programming info and C
source for [1mStickySelect[0m. see Contact address.

Misc
****

   This is a common procedure [1mScreenSelect[0m makes when it hears about
hotkey selection.

         if hotkey pressed then
             if active screen is public screen then
                 lock it and open [1mScreenSelect[0m window into it.
             else
                 lock default public screen and open window to it.

   So this means that [1mScreenSelect[0m window isn't opened to foreign
applications screen. It's only opened to public screens. This may annoy
some users but I made this decision to make [1mScreenSelect[0m more system
friendly. Remember that if you select new frontmost screen then there
really isn't much harm done. And even if you just press [1mCancel[0m gadget
you get always back to your old frontmost screen.

       [1mScreenSelect[0m also tries to make sure that all screen pointers
passed back to OS, are always valid. This is easy with public screens
but requires little more work with normal screens. I hope I got it
right!

History
*******

Version 1.0
===========

   First release 07-Sep-1992.

Version 1.1
===========

   This version was not released. Compilation date was 14-Sep-1992.

   * Changed [1mWorkbench[0m tooltypes [1mCX_POPUP[0m and [1mALLSCREENS[0m to
     simple switches. They are normally OFF, but if you specify one of
     them then that option comes ON.

   * Added [1mSMARTPOINTER[0m option. When this one is active
     [1mScreenSelect[0m always tries to position mouse pointer over
     previous screen selection.  This makes it very easy to bounch
     between two screens.

     [ Suggested by Sfefan Boberg ]

   * Added [1mQUICKKEYS[0m. Now you can bind own hotkey to every public
     screen. This should be used only with public screens. Although it
     might work with all screens I don't support it.

     [ Suggested by Stefan Boberg ]

   * Now if [1mScreenSelect's[0m window is active (open) when hotkey is
     pressed then that window's screen is brought to front.

   * Added menus to [1mScreenSelect's[0m window. Now most of the features
     are selectable with Menu command keys.

   * Added [1mAbout[0m window to show some information.

   * Now previous screen's name is shown in listview gadgets selection
     area automatically. This makes screen bounching very easy as
     [1mSMARTPOINTER[0m option does.

   * Now [1mActivate[0m and [1mCancel[0m gadgets have keyboard shortcuts.

     [ Keyboard shortcuts were suggested by David Corn ]

Version 1.1a
============

   Compilation date was 23-Sep-1992.

   * Fixed a bug which happened when [1mSMARTPOINTER[0m option was ON and
     screen font was too big to be used in [1mScreenSelect's[0m window and
     we had to use topaz80. This caused pointer to be moved to wrong
     position.

Version 1.1b
============

   Compilation date was 13-Oct-1992.

   * Just changed a initial window height from 94 pixels to 96. Now
     normal topaz80 font shouldn't cause window resizing when only
     Workbench (or screen names of similar lenght) is in a list.

Version 1.2
===========

   Compilation date was 07-Dec-1992.

   * Previously [1mScreenSelect[0m exited when it couldn't find screens.
     This made it impossible to put it in [1mStartup-Sequence[0m or
     [1mUser-Startup[0m file before [1mWorkbench[0m screen is opened.

     [ Reported by Andreas M. Kirchwitz ]

   * From now on, version number format should be Amiga Style Guide
     compliant.

   * Added [1mAUTOACTIVATE[0m option.

   * Added [1mSCREENKEY[0m option which allows easy default public screen
     selection with hotkey.

   * Added [1mDefault PubScreen[0m text gadget.

   * First version compiled with SAS/C V6.1. Size reduced almost 2k
     compared to V1.1b.

Version 1.3
===========

   Compilation date was 27-Jan-1993. Not a public release.

   * Now listview is opened as wide as widest screen name. This works
     correctly with proportional fonts too.

Version 1.4
===========

   Compilation date was 02-Feb-1993. Not released.

   * Now gadget sizes are calculated before window is opened. So now
     [1mScreenSelect[0m window opens to the correct size initially.

   * Added [1mLEFT[0m and [1mTOP[0m tooltypes and CLI-parameters.

   * Now if [1mSMARTPOINTER[0m option is ON then [1mScreenSelect[0m tries to
     position window according to the mouse pointer. And only if it
     fails to properly do so it moves mouse pointer to the correct
     position.

   * Now [1mScreenSelect[0m installs a input-handler to watch for
     WINDOWACTIVE messages, and we can properly activate right window
     when new screen is brought to front by [1mScreenSelect[0m.

Version 2.0
===========

   Compilation date was 08-Aug-1993. Major update.

   * Whole interface code rewritten.

   * Moved settings to separate preferences program.

   * Added support for AmigaDOS patterns in QuickKey screen names.

   * Added Relative Window Position mode.

   * Moved all the patches to main program. Now patches are removable.

   * Added LoadView patch.

   * Added support for StickySelect.

   * Possibly forgotten something, but changes were too big to describe
     them fully in here.

Contents of ScreenSelect distribution
*************************************

   Here are listed all files and directories in current version 2.0
distribution. These files should always be present when
[1mScreenSelect[0m is distributed.

     ScreenSelect (dir)
          Docs (dir)
               ScreenSelect.doc

               ScreenSelect.doc.info

               ScreenSelect.dvi

               ScreenSelect.dvi.info

               ScreenSelect.guide

               ScreenSelect.guide.info
          StickySelect (dir)
               StickySelect

               StickySelect.info

          Docs.info

          StickySelect.info

          ScreenSelect

          ScreenSelect.info

          ScreenSelectPrefs

          ScreenSelectPrefs.info

          Read_Me

          Read_Me.info

          Install.info

          ScreenSelect.Install

     ScreenSelect.info

Contact address
***************

   If you really think that this program is great and you use it
extensively then you can make me very happy by sending me something for
a return.  If you are for example a author of some software package
(Commercial, Shareware, Giftware or anything) you could send me a free
program as an exchange of this program. If you don't feel like it, it
doesn't really matter. It would just make me more enthusiastic as I
continue to implement new versions. Then again if you feel like sending
a donation in US$, Deutch Marks or Finnish Marks I even might have
afford to join Commodore's official developer program someday and you
might get Localisation, Online-help support etc... implemented to
[1mScreenSelect[0m much faster that otherwise. Anyway, thank you for
using this program!

   For suggestions, bug reports etc... You can reach me at

   * Internet

          s37732v@vipunen.hut.fi

   * SnailMail

          Markus Aalto, Muurahaisentie 11a, 01490 VANTAA, FINLAND

