!rotor! - a companion for !MoreDesk


Using rotor
Version history
Things to do perhaps
Licencing conditions
Contact details


Rotor is a program which enables a user of MoreDesk to navigate backwards and forwards through a ring of virtual desks that have been accessed since rotor was started.

Why do I need it?

It is very convenient when working with two or three desks to be able to switch between them without having to think about where they are. For example you may be developing a web page with a browser open in one desk the html open in an editor on another, and perhaps a CSS manual open in another. the hot keys are particularly good for switching between desks in this scenario.

Another possible reason is peace of mind when closing down. If you have been using MD for a while you probably have quite a big array of possible screens defined. After a couple of hours use you may have visited half a dozen or more locations. How can you be sure that you have finished what you started on each? At the very least, when you close down, rotor will let you to review each screen that you have visited so that you can be make sure it can be closed safely without loss of data.

It has other functions which are described in the "Using rotor" section following.


Using rotor

You will need to buy and install a copy MoreDesk before you can use rotor. AS well as using the SWIs provided by MoreDesk, rotor also makes use of the Basic runtime Library "Routines" which are required by and shipped with MoreDesk

!rotor! can be started once MoreDesk is running. It will immediately start tracking MoreDesk switches and will create a "breadcrumb trail" to help you find your way backwards and forwards among the desktops that you have visited.

Nearly all of Rotor's functions are accessed from the iconbar menu as described below.

Rotor Iconbar Menu

Click with Select to go back to the previous desktop.

Click with Adjust to go forward to the next desktop, or back to the first desktop if you are on the last desktop currently.

When there are no more desks in a forward or backward direction, Rotor will wrap, so that you keep going forwards or backwards until you arrive back at the desk where you started in the ring of desks.

There are two menu options to help you manage the number of desks in the desk ring.

Clear desks removes all the desks from memory apart from the current desk top.

Drop desk removes the current desk from the ring and reduces the number of desks by one.

This is useful if you are working with a set of desks and want to use another for a one-off task. Exit from the current desk with "Drop desk" and you are returned to the previous desk and the temporary desk is no longer in the ring.

Make home stores the coordinates of the current desk and designates it as your "home" desk. If you don't use this option your home desk will be the default MoreDesk home desk with coordinates 0,0.

Go home switches to your home desk and makes it the current desk top.

This Help text is available from the menu, as is the usual Info window and the Quit option.

Slideshow as well as helping you to navigate around the virtual desktops, rotor provides an automatic "rolling desk" option. The parameters for this option are defined Choices, but the slideshow is started from the iconbar icon menu. Click on "Slideshow" in the menu and rotor will start counting down. When the time specified in the Choices file has elapsed rotor will switch screeens as though you had requested to go forward via the mouse Select or equivalent hot key. If you move the mouse during the count down, the timer will be reset to zero and the count will begin again.

Desk ring with MoreDesk 1.20 or later you can define names for your desktops. Rotor can display the desk name below its icon and can also display a list of the names of the desks that you are using. If you have un-named desks in the ring they will be identified by spreadsheet style cell names.

The Desk ring menu item has a submenu containing a clickable list of names of desks that have been seen. a click on a desk name will switch to that desk.

Choices... launches the Paul Reuver's !Config application to allow you to make changes to the way Rotor behaves.

Rotor Hot keys

As well as clicking with the mouse you can use special key combinations to navigate. There is a hotkey for going back which is equivalent to clicking on the Rotor iconbar icon with Adjust, and one for forward like using Select.

The hotkeys are defined in the Choices file. The default for backward is set up to use Ctrl+ the GUI key. Forwards is similarly is set to use shift + GUI. The GUI key is present on most modern keyboards. It is often referred to as the Windows key and sometimes has MS Windows logo printed on it. This key was chose because it does not appear to clash with common apps that may be running. It is also usually conveniently on the left of the keyboards beside the Ctrl and shift keys.

If your keyboard does not have a GUI key you should use the Choices dialogue to change the default. The Tab key is a good alternative but may clash with the MoreDesk's use for its switcher window. Alt+z and Alt+x is another option. These are convenient and for retro-games players familiar as left and right mover keys. They have the drawback that the sometimes the keystrokes will be grabbed, and not passed on. by some applications whose windows have the focus.

There are hotkeys defined for go home and drop desk Alternatives to the defaults are provided as is the option to switch the hotkeys off by choosing "none"

"Dog in a manger" Some applications trap all key strokes and do not pass them on, even though they are not used by, nor have any meaning to the application. In this case the hot key will not get through to rotor and you will have to use the mouse button on the icon in order to move on. See Problems for some examples of these applications.


Version history

Version 1.30 Last updated Sunday the 4th of January, 2009

bug fixed

Rewrote desk name store algorithm to fix bug which crashed rotor with a "subscript out of bounds" message.

Version 1.20 Last updated Tuesday the 9th of December, 2008

New menu option "Desk ring"

The new menu item has a submenu containing a list of names of desks that have been seen.

A click on the desk name switches to that desk

This option only works with versions of MoreDesk from 1.20 onwards.

The version number of rotor also happens to be 1.20. This is just a cooincidence

Version 1.1 Last updated Sunday the 7th of December, 2008

Function added as a result of suggestions arising from demonstrations at the Mug show.

Switched effect of Select and Adjust

The functions of Select and Adjust clicking on the iconbar icon were switched around so that Select now goes back or left through the ring and Adjust goes forward or right. This corresponds both to the direction of the arrows on the icon and their port and starboard, red and green colours.

Version 1.00

Released on schedule

!rotor! version 1.0 was released at the MUG RISC OS Christmas show 6 December 2008

Added code to prevent multiple copies running

Externalise text strings

Extracted all text strings from the code and stored them in Resources.Messages to facilitate translation.

Use !Config for Choices

This was made necessary by the addition of the Slideshow function. It also allows some validation and provides a useful way of changing hotkeys.

In addition the rotor config file is now maintained in the standard Boot:Choices location. There is code in the !Run file to create the rotor.Config file the first time !rotor! is run.

Add config for alternative desk coordinates display

MoreDesk coordinates are numbered relative to the home desktop which is 0,0. This means they can be positive or negative.

The new option means the user can choose to display desk coordinates as if the desks were cells in a spreadsheet. Thus the cells of a 2 columns by 3 rows matrix would be named a1 to b3 regardless of how it was defined in MD.

This option will also use deskid "names" as supported in MoreDesk 1.20 onwards.

This option was coded earlier than V1.00 but not debugged till now.

Version 0.9 Last updated Thursday the 20th of November, 2008

Application name changes made

Until version 0.9 !rotor! was called !Retrace. It is now !rotor! - note the trailing "!". The palidromic name, and icon, give a clue to !rotor!'s "to and fro" modus operandi.

Improvements to Help text

Added an hyperlink Contents section and wrote "Introduction" and "Using" sections.

Formalised the Debug system

All Reporter trace statements were transferred to a Debug PROC. The debug ouput is now dependent on flag settings. The default is now, no debug output, and rotor does not require Reporter to be running in order to start.

Version 0.8 Last updated Thursday the 20th of November, 2008

Put rotor help tesk on website

This help text has now been put on to the web so that it can be reviewed more easily.

!rotor! - News and Version history

New function desktop slideshow

Three new config option in Choices allow !rotor! to be used as a slideshow or ScreenSaver program.

Showtime.Interval is the number of seconds between changing desks.

Showtime.Cancel determines what happens when a user keystroke or mouse movement is detected while the Slideshow menu item is ticked.

This adds exciting possibilities to a RISC OS machine running MoreDesk and rotor.

The combination of MoreDesk and rotor gives you giant spreadsheet, or set of rooms with a different activity in each. Unlike any other presentation application eg PowerPoint, MoreDesk + rotor allows you interact with each "slide". Furthermore, while you are showing subsequent screens, programs continue to run and change the display in their own screens, and can be revisited to see the new data.

MoreDesk already, is probably the best virtual desktop program and with rotor may well be the first truly dynamic presentation application on any platform.

I think:-)

Version 0.7 Monday the 17th of November, 2008

Externalise user choices

Extracted user configuration variables from the code and put them in a Choices file.

I used Steve Revill's !Routines for the parsing and extraction of values.

Add config for left or right or no icon on icon bar

It makes sense to keep the icon near to the configurable MoreDesk icon. This option will help.

Running without an icon means running without a Quit option. You can quit via the task manager, and get the icon back by editing the config file again.

Version 0.6 Monday the 17th of November, 2008

Options to manage desktops in the stored list

There is an iconbar menu option to remove the current desk from the list and switch to the previous. The number of slots stays the same, and the freed slot becomes the next to be written to.

Shift-Adjust on the menubar icon has the same effect as above; Shift-Select does nothing, and if there is only one desk in the list there is no action.

This option means you can work with a standard set of desks, visit another desk for some temporary purpose, then return to your working set without including the "aside" desk.

There is a menu item on the item bar icon to clear all the desktop slots except the current one.

Version 0.5 Friday the 14th of November, 2008

Stack code rewritten as store/remove/retrieve

In order to facilitate the addition of forward as well as backward navigation I have exchanged the push down, pop up stack for a list and pointer.

Added forward navigation

In v0.4 It was possible to get to any desk in the list by pressing the back request enough times. However, with a large number of desks this is inconvenient.

Select on icon bar icon goes forward through the store of desks, Adjust goes back

Ctrl-Windows key is the same as Adjust on the icon bar icon. Shift-Windows key is the same as Select

Version 0.4 Wednesday the 12th of November, 2008

Option to recycle round the desktops

This option keeps desks in the stack instead of clearing it when a back request is made. It makes it possible to cycle round a number of desks without having to think about where they are.

Duplicate desks are removed from the stack automatically

Fix navigation bug when stack is empty

When a back request is made and the stack is empty an information message message is issued and the desk does not change. A subsequent back request was issuing the error and then changing to desk 00.

Show deskid on ib_icon

Update the icon bar icon with the current desk coordinates whenever the stack is updated.

works for MD select - does not change with back request - BUG

Version 0.3 Tuesday the 11th of November, 2008

Improve readability of the html Help file

This help file was simply a text file with an html wrapper. I have made an atttempt to improve it with a CSS file and coloured heading tags.

Clear stack on change of desks configuration

If the number of desktops changes the stack will be cleared.

Remove TizQuiz

Retrace was initially created by copying, then modifying !TizQuiz, a vocabulary testing program, which was written to help me learn Spanish. All TizQuiz code has now been removed.

If anyone is interested in TizQuiz please email me.

Version 0.2 Monday the 10th of November, 2008

Add hot key support

The default hot key is ctrl-windows key. This is convenient for use with one hand. Currently Retrace does not pass it on. I am not sure if this is best practice, but it is not likely to affect traditional RISC OS applications, and I am not aware of any other app that uses it. Eg StrongEd does nothing with it.

I did not use the arrow keys as a clash is very likely. In fact MD already uses them for preselecting a desktop prior to pressing enter.

Add message - last desktop.

The message is issued when the stack is empty. This will not necessarily be the starting desktop as when the stack is full the oldest records fall out of the bottom. The stacksize is currently set at 50.

Version 0.1 Saturday the 8th of November, 2008

Support for alt-adjust

Each desktop change is pushed on stack. Clicking the alt-adjust mouse button on the icon bar icon, or pressing the back hot key will remove the top item from the stack and switch to the previous desktop.


Things to do perhaps


>Read Country Code from system and open appropriate Config for language

Spin icon when mouseover and show number of desks in list on icon bar instead of deskid

Implement local history window (a bit like NetSurf) to allow select on any previously used desktop desktop.



Hot keys problems

PgUp and PgDn

These keys sometimes stop working for no apparent reason. They can be made to start working again by clicking on the iconbar icon.

TaskWindow intercepting hotkeys

!PDF intercepting hotkeys

hot key s-tab c-tab not passed on

!Firefox intercepting hotkeys

Firefox hoovers up everything if it has the focus

!StrongED intercepting hotkeys

Ovation Pro intercepting hotkeys

Hot keys does not work if OPro window has focus. OPro grabs all keys and does not pass them on. There may be an option somewhere to affect this> I must look.

Also look into message from OPro:-

[Appl/OvationPro] UKEYBOARD_OFF
[Appl/OvationPro] UKEYBOARD_ON CSN

Opro turns the Num-lock key on when it has the focus and it cannot be turned off


Licensing Conditions

Strictly speaking...

The application !rotor! is not Public Domain software.

If you use the program beyond a trial period you should let the author know.

Copyright John Rickman 08.12.2008


Contact details

Author: John Rickman

           John Rickman
           Old Bakehouse
           Warwick CV35 0EU