home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Frozen Fish 1: Amiga
/
FrozenFish-Apr94.iso
/
bbs
/
alib
/
d9xx
/
d998
/
screenselect.lha
/
ScreenSelect
/
Docs
/
ScreenSelect.doc
next >
Wrap
Text File
|
1994-04-05
|
27KB
|
738 lines
ScreenSelect
************
Version: 2.2 , Release date: 30-Jan-94
Copyright (C) 1992,93,94 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 5 US$)
and no deletions is made to the original package. You may also include
it to freely distributable disks such as Fred Fish collection.
You may also review this program in Amiga specific magazines and add
it to the accompaning disks if the disk doesn't cost any extra to the
magazine byers.
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
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 screen and
for example get Workbench screen frontmost with only one key press. You
can also select a new active window and get it to front from selected
screen, change default public screen either with hotkey or let
ScreenSelect
to change every new frontmost public screen as
default public screen automatically.
And the only requirement is that you have
Kickstart 2.04
(V37) or
greater. Some features (not all are visible to the user) take advantage
of later kickstarts. Most important is the support for localisation.
The
ScreenSelect
main window uses PopUpMenu BOOPSI gadget class
designed by me for free distribution. For those of you who are
interested in using it in your own programs grab the PopUpMenuC_1.1.lha
packet from Aminet ftp sites or write to me sending 5 US$ (or 15 FIM)
for postage & handling. see Contact address.
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.
* If you want to use (Requires KS V38+) localisation feature, then
copy the language dirs you want to use from
Catalogs
directory to
LOCALE:Catalogs
directory.
ToolTypes and CLI usage
***********************
ScreenSelect
recognizes normal commodity tooltypes and one of
its own. (1)
CX_POPUP=<YES|NO>
This 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 Preferences.
---------- Footnotes ----------
(1) By using Install script provided with this release, you can set
all the tooltypes at the installation phase.
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. If you have installed
Auto
Update patches then ListView gadget, where the screen names are
located is updated automatically. However, the
Window
Selector gadget isn't so you might need to use this feature more
than in previous releases. You can install the patches with
ScreenSelectPrefs
program. see Preferences.
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.
Window selector gadget
After you have selected a screen (with one click in Listview
gadget) this gadget shows all the windows from that screen. If you
press the gadget container a new menu is popped up and you can
select one of the windows title names to get that window activated
after the screen you have selected is brought to front. Selected
window will be frontmost and if it's state was zoomed then it's
unzoomed automatically.
Default PubScreen
This one shows the name of the default pubscreen. You can use the
Preferences program to change the behaviour of Default Public
Screen change feature. see Options
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.
General Info
************
There are few special options you can change with preferences
program. Here are brief explanations about them. see Preferences
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. (1)
Window Position Modes
You can control the position of
ScreenSelect
's main window with
three possible options:
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
Detect ActiveWindow Changes
is ON, then
ScreenSelect
'hears' all the window activation changes. This
helps you only with changes through
ScreenSelect
. If you change
screen with
left-amiga m
ScreenSelect
has no way of knowing
that you have switched to a new screen except if you have added
Detect Frontmost Screen Changes
patch.
If
Detect Frontmost Screen Changes
patch is active then
ScreenSelect
can hear all the screen changes and can always
change new active window. This option 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.
Detect
ActiveWindow Changes option enables
ScreenSelect
to remember
all changes with active windows by installing a InputHandler to
Intuitions input stream and
Detect Frontmost Screen Changes
enables to hear all the frontmost screen changes. For best
possible operation I suggest you to select them all.
Default PublicScreen
This controls the behaviour of Default Public screen changes.
Disabled
- If selected then this feature is not in use. You
can still see the
Default PubScreen
text gadget in
ScreenSelect
window.
Set By Hotkey
- If selected then you can change new default
public screen via Hotkey, which you must specify in Hotkey options
window.
Frontmost PublicScreen
- If selected frontmost Public screen
is set as default one. Note that this option installs a patch to
LoadView
graphics.library function.
---------- Footnotes ----------
(1) OpenWindow functions are not currently patched. If there is
need for this then I can reconsider my decision in future releases.
Preferences
***********
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 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.
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
Detect ActiveWindow Changes
or
Detect
Frontmost Screen Changes.
Default Public Screen (DefPubScreen)
You can pick one of the 3 choices for this one. If you select
Disabled
then you cna't change DefPubScreen from
ScreenSelect
. If you select
Set By Hotkey
then you can
change DefPubScreen via hotkey, which you must specify in
Hotkeys
preferences window. And if you select
Frontmost
Public Screen then everytime you change a frontmost screen (which
has to be a Public screen) then
ScreenSelect
selects it as a
DefPubScreen.
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.
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.
Default PubScreen Key
If you have DefPubScreen option set to
Set By Hotkey
then you
have to specify the Hotkey here.
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.
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 modify the source I have provided for
StickySelect. I haven't commented the code much so if you have any
trouble with it don't hesitate to contact me. see Contact address.
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!
History
*******
Version 1.0
===========
First release 07-Sep-1992.
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 ]
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.
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
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.
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
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
.
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.
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 '(C)' 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.
Version 2.2 (ScreenSelectPrefs 1.1)
===================================
Compilation date was 30-Jan-1994.
* Added localization of strings and keyboard shortcut keys for
gadgets.
* Added notification of Locale Preferences. When new language is
changed ScreenSelect will recognize it automatically and try to
allocate new catalog.
* If Public Screen was in PRIVATE mode, then ScreenSelect couldn't
lock that screen and wasn't able to get it front. This is fixed.
* ScreenSelect and ScreenSelectPrefs programs support system
BusyPointer under KickStart version >=39.
* In V1.1 I changed the CX_POPUP to switch. Now it's changed back to
key string. Keywords TRUE or YES makes ScreenSelect to open its
window when it's started. This change was requested.
* Few cosmetic changes to ScreenSelect and ScreenSelectPrefs.
* Added new option to change Default Public screen. Now every new
frontmost Public Screen can automatically be a Default Public
screen. Added MX buttons to ScreenSelectPrefs to support this new
feature.
* Added Window selector through the use of PopUpMenuClass which
contains all the windows for specific screen and by selecting one
window it can be activated and the window brought to front. Also
windows which are in zoomed state are 'zipped' to maximum size.
* Fixed a small bug in Screen Title name copying code which was a
cause of one Mungwall hit.
* In KS >= 39 ScreenSelect uses system provided memory Pool
functions for most of the memory allocations. This reduces memory
fragmentation.
* StickySelect interface changed to ensure future compatibility.
Contents of ScreenSelect distribution
*************************************
Here are listed all files and directories in current version 2.2
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
StickySelect.c
StickySelect.c.info
StickySelect.h
StickySelect.h.info
Catalogs (dir)
suomi (dir)
screenselect.catalog
svenska (dir)
screenselect.catalog
Docs.info
Catalogs.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 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
Future
******
Next release will propably implement an AmigaGuide online-help. How
about ScreenCenter utility?
**** URGENT URGENT ****
If you are willing to do the locale translation for future versions
of
ScreenSelect
please contact me with EMail. There are less than 100
strings to translate. see Contact address. You are also welcome to
translate the documentation for current and future versions. Again
contact me with EMail to obtain the TeXinfo file.
I currently have English, Finnish and Swedish locale translations
ready.
**** URGENT URGENT ****
Acknowledgements
****************
Thanks to everyone who has submitted bug-reports or given me good
suggestions for how to improve this program. Also big thanks to
everyone who has send me money, even though it wasn't requested.
Thanks to Magnus Holmgren for Swedish translation and all the bug
reports.