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.
topYou 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.
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.
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.
topRewrote desk name store algorithm to fix bug which crashed rotor with a "subscript out of bounds" message.
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
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.Released on schedule
!rotor! version 1.0 was released at the MUG RISC OS Christmas show 6 December 2008Added 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.
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.
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:-)
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.
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.
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
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
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.
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.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.>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.
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_OFFOpro turns the Num-lock key on when it has the focus and it cannot be turned off
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
John Rickman Old Bakehouse Gaydon Warwick CV35 0EU