ScreenSelect

Version 2.1

Release date: 03-Oct-93

by Markus Aalto

Copyright \begin{matrix}c \\ ◯ \end{matrix} 1992,1993 Markus Aalto

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.

1 Introduction

In version 2 of Amiga 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 left-amiga m?". Well, ScreenSelect 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 Kickstart 2.04 (V37) or greater.

2 Installation

I have provided a script for Commodore’s Installer program so if you have it then you should propably use it. Otherwise you can do following actions.

  • Move ScreenSelect to WBStartup directory.
  • Move ScreenSelectPrefs to Prefs directory.

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

3 ToolTypes and CLI usage

ScreenSelect recognizes normal commodity tooltypes and one of its own.

‘CX_POPUP’

This switch enables ScreenSelect to open its window when it’s started. Default is no popup.

‘CX_PRIORITY=xxx’

This is ScreenSelect’s priority as commodity. Here xxx is decimal number. Default is 0.

‘CX_POPKEY=HOTKEY’

Default is shift esc. For example you could use CX_POPKEY=alt shift del to change hotkey. If you specify popkey here you override the settings you have made with

          ScreenSelectPrefs program.

‘PREFSPROGRAM=PATH’

This is the path where preferences program is to be found. This name must include the name of the preferences program. Default PATH is SYS:Prefs/ScreenSelectPrefs. see Chapter 6 [Preferences], page 4.

4 Main Window

You can see the main selection window for ScreenSelect 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 (Nameless Screen).

‘Quit’ By pressing button (or Q) you can remove ScreenSelect and any patches it has installed.

‘About’ This gives you a small info about this program and its author (that’s me :^).

‘Prefs’ This one opens the separate preferences program you can use to modify ScreenSelect’s behaviour. All changes come active instantly after you have exited preferences program with pressing either Save or Use buttons.

‘Update’ This one updates the listview and default pubscreen texts to reflect current system state. This is only usefull if you haven’t installed Auto Update patches. You can install the patches with ScreenSelectPrefs program. see Chapter 6 [Preferences], page 4.

‘Listview gadget’

Click any of the names to get that screen to front. Single click just activates the name which you can then activate with Activate gadget. Double click makes an instant activation. You can also use cursor keys to move up and down in listview. Activation can be made from keyboard with a or return keys.

‘Default PubScreen’

This one shows the name of the default pubscreen. If you have installed the Change Default PubScreen hotkey you can use it to select active public screen as your default public screen.

‘Activate’

Activates the current listview selection and closes the window.

‘Cancel’ Closes the window and returns back to the screen where hotkey selection was made.

5 General Info

There are few special options you can change with preferences program. Here are brief explanations about them. see Chapter 6 [Preferences], page 4

‘Screen Types’

Currently ScreenSelect can show only Public screens or all screens.

‘AutoUpdate Patches’

This patches 4 Intuition functions to achieve automatic update in listview and in Default PubScreen textgadget. Patched functions are: OpenScreen, OpenScreenTagList, CloseScreen and SetDefaultPubScreen.

‘Window Position Modes’

You can control the position of ScreenSelect’s main window with three possible op-

tions: Fixed, Relative and SmartPointer.

Fixed mode forces window to always open to some predefined coordinates.

Relative always tries to position the window so that pointer is over the Activate gadget.

SmartPointer 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.

‘Window Autoactivation’

You can set few options to control ScreenSelect’s behaviour with window activation.

If you have Window AutoActivation 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 InputHandler is ON, then ScreenSelect ’hears’ all the changes with window actications. This helps you only with changes through ScreenSelect. If you change screen with left-amiga mScreenSelect has no way of knowing that you have switched to new screen except if you have added LoadView patch.

If LoadView patch is active then ScreenSelect can hear all the screen changes and can always change new active window. As this one says it installs a patch to LoadView 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. Window AutoActivation activates autoactivation mode. InputHandler option enables ScreenSelect to remember all changes with screens active windows and LoadView Patch enables to hear all the frontmost screen changes. For best possible operation I suggest you to select them all.

6 Preferences

6.1 Main Prefs

After you have started ScreenSelectPrefs you get a window very similar to the system preferences program. All the actions from menus and Save, Use and Cancel 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 Section 6.2 [Options], page 4 and Section 6.3 [Hotkeys], page 5. These are the buttons you should press to get one of the real preferences change windows.

6.2 Options

In this window are all the options settings.

‘Screen Types’

Selects one of the operation modes. In Public Only mode ScreenSelect uses only Public screens. In All mode all screens are used.

‘Add AutoUpdate Patches’

Toggles the state of AutoUpdate patches.

‘Window Position’

Changes window position mode. Possible modes are Fixed, Relative and SmartPointer. In Fixed mode you can set the coordinate values to Left and top numeric gadgets.

‘Window AutoActive Options’

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 Add InputHandler or Add LoadView

          Patch.

‘OK’ 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 Save or Use buttons.

‘Cancel’ This one cancels all the changes.

6.3 Hotkeys

In this window are all the hotkey settings.

‘PopUp Key’

Used as hotkey for ScreenSelect. You can override this setting with CX POPKEY tooltype.

‘Use Default PubScreen Key’

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.

‘Add’ Used to add new Screen Quickkey.

‘Delete’ Used to delete selected Screen QuickKey.

‘Screen QuickKeys’

List of screens you have set a Screen QuickKey for. Names can contain AmigaDOS patterns. For example TERM? can mean TERM1 or possibly TERM2. All standard AmigaDOS patterns are accepted. This is great help when trying to make a QuickKey for some old programs using custom screens.

‘QuickKey’

Hotkey for selected Screen QuickKey.

‘OK’ Confirm changes.

‘Cancel’ Cancel changes.

7 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 ScreenSelect I have made it possible for external programs to use ScreenSelect's selection mechanism. Now everybody can write a replacement for ScreenSelect’s interface.

The first program to utilize this possiblity is StickySelect which opens a small window to any public screen with a list of selectable names - just like the one in ScreenSelect's 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 ScreenSelect is started before StickySelect. Here are the parameters.

‘PUBSCREEN=<>’

Name of the Public screen you want StickySelect to open.

‘LEFT=<>’ Window left edge position.

‘TOP=<>’ Window top edge position.

‘WIDTH=<>’

Window width.

‘HEIGHT=<>’

Window height.

If you would like to implement your own interface to communicate with ScreenSelect you can contact me to obtain programming info and C source for StickySelect. see Appendix C [Contact address], page 13.

8 Misc

This is a common procedure ScreenSelect makes when it hears about hotkey selection.

         if hotkey pressed then
             if active screen is public screen then
                 lock it and open ScreenSelect window into it.
             else
                 lock default public screen and open window to it.

So this means that ScreenSelect 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 ScreenSelect 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 Cancel gadget you get always back to your old frontmost screen.

ScreenSelect 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!

Appendix A History

A.1 Version 1.0

First release 07-Sep-1992.

A.2 Version 1.1

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

• Changed Workbench tooltypes CX_POPUP and ALLSCREENS to simple switches. They are normally OFF, but if you specify one of them then that option comes ON.

• Added SMARTPOINTER option. When this one is active ScreenSelect 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 QUICKKEYS. 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 ScreenSelect's window is active (open) when hotkey is pressed then that window’s screen is brought to front.

• Added menus to ScreenSelect's window. Now most of the features are selectable with Menu command keys.

• Added About 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 SMARTPOINTER option does.

• Now Activate and Cancel gadgets have keyboard shortcuts.

[ Keyboard shortcuts were suggested by David Corn ]

A.3 Version 1.1a

Compilation date was 23-Sep-1992.

• Fixed a bug which happened when SMARTPOINTER option was ON and screen font was too big to be used in ScreenSelect's window and we had to use topaz80. This caused pointer to be moved to wrong position.

A.4 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.

A.5 Version 1.2

Compilation date was 07-Dec-1992.

• Previously ScreenSelect exited when it couldn’t find screens. This made it impossible to put

  it in Startup-Sequence or User-Startup file before Workbench screen is opened.

[ Reported by Andreas M. Kirchwitz ]

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

• Added AUTOACTIVATE option.

• Added SCREENKEY option which allows easy default public screen selection with hotkey.

• Added Default PubScreen text gadget.

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

A.6 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.

A.7 Version 1.4

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

• Now gadget sizes are calculated before window is opened. So now ScreenSelect window opens to the correct size initially.

• Added LEFT and TOP tooltypes and CLI-parameters.

• Now if SMARTPOINTER option is ON then ScreenSelect 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 ScreenSelect installs a input-handler to watch for WINDOWACTIVE messages, and we can properly activate right window when new screen is brought to front by ScreenSelect.

A.8 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.

A.9 Version 2.1

Compilation date was 03-Oct-1993. Mainly bugfixes.

• Fixed an enforcer hit in AutoActivation checking code.

• Screens with empty Title names (not NULL, but filled with spaces) made ScreenSelect to crash. Yes, I know, this sounds unbelievable!

• If popup hotkey is pressed when ScreenSelect window is already open then ScreenSelect window is activated.

• If LoadView patch was installed and hotkey was pressed in non-public screen, then ScreenSelect window didn’t stay active after it was opened.

• Added keyboard support for ScreenSelect’s listview gadget. Return activates selection and cursor keys are used to change selection.

• If QuickKey is pressed while ScreenSelect window is open, then screen name binded to that QuickKey is selected in listview.

• If AutoUpdate patches are not active internal Screen list is updated everytime QuickKey is pressed. This fixes problems with QuickKeys and screens opened after last ScreenSelect activation.

• Now ScreenSelect window is closed before we select new frontmost screen. This fixes a problem introduced by 4th fix (LoadView patch fix) in this release.

• Fixed a bug with SMARTPOINTER option, which happened with similar screen names which contain characters out of range of ordinary alphabets. This bug was introduced because of AmigaDOS pattern matching routine not handling characters as ’\begin{matrix}c \\ ◯ \end{matrix}’ and didn’t happen before version 2.0 of ScreenSelect.

• Added changes to internal string handling. Now it will be very easy to add localization support.

Appendix B Contents of ScreenSelect distribution

Here are listed all files and directories in current version 2.1 distribution. These files should always be present when ScreenSelect 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

Appendix C 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 ScreenSelect 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

Appendix D Future

I have noticed that several people asked me to implement a window selector to ScreenSelect. This is propably coming in next major release along with AmigaGuide online-help and localization.

But if you need window selector now I suggest you take a look at Yass (Yet Another Screen Selector) from Albert Schweizer. It supports window selection as well as screen selection, but unfortunately it lacks the QuickKeys and automatic window activation.

If you are willing to do the locale translation for future versions of ScreenSelect please contact me with EMail. There aren’t many strings to translate. see Appendix C [Contact address], page 13. You are also welcome to translate the documentation for current and future versions. Again contact me with EMail to obtain the TeXinfo file.

Table of Contents

1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 3 ToolTypes and CLI usage. . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 4 Main Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 5 General Info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 6 Preferences. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

6.1 Main Prefs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 6.2 Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 6.3 Hotkeys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

7 StickySelect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 8 Misc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Appendix A History. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

A.1 Version 1.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 A.2 Version 1.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 A.3 Version 1.1a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 A.4 Version 1.1b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 A.5 Version 1.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 A.6 Version 1.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 A.7 Version 1.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 A.8 Version 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 A.9 Version 2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

Appendix B Contents of ScreenSelect distribution

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Appendix C Contact address . . . . . . . . . . . . . . . . . . . . . . . . . 12

ii

Appendix D Future . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13