                                 To Do
                                 

What follows is a list of suggested improvements and changes to SharedBLib.
As it stands, it's mostly things that I (Reuben Thomas) would've wanted to
add had I continued to develop for RISC OS. There's a list of simpler changes
first, followed by a couple of medium sized extensions.



Change all help pages so that heading is PROC/FN name and all parameters in
and out are displayed for all procedures. Give a commented example entry for
future maintainers.

Add a routine to get a sprite from the screen (*SGet) to Sprite library.

Allow dynamic area to have a name (or more precisely, use _prog_name$ if it
exists).

Add error handling to skeleton app from MailCheck.

Rewrite !TestApp based on skeleton app.

Change PROCwimp_init to allow icon to have text.

Add the ability for icon changing routines to change icons on the icon bar
(see PROCset_icon in MailCheck).

Add routines to get icon position and size.

Add a library to read CSV files (e.g. configuration files). Use code from
MailCheck.

Allow errors in PROCwimp_error to be non-fatal? Have FNwimp_error which
always returns the button clicked on and never quits.

Add a library to handle the Toolbox.

---------------

!Help library:

FNhelp_text(window%,icon%): if window handle -1, main menu; if -2 then
iconbar icon. Look up title of window with spaces removed (or "Iconbar" if -1
or -2); find the abbreviated token. Then add to this the icon number plus S
if it is selected, or "M" plus the menu entries selected in the current tree.
Then look up the resulting token and pass it as the help message.

PROChelp_trans(string$): use OS_PrettyPrint to translate the result (and do
we need to use the private dictionary?).

---------------

Add routines to open windows centred if they've never been opened before.
Open successive new windows vertically offset, ensuring that they stay within
a certain vertical distance of the centre of the screen. The first window
opened should be the highest.

We should be able to achieve the aim above with two procedures:

1. Initialise the dimensions of the windows to be opened (width and height;
assume they'll all be the same). Initialise a counter and the positions at
which windows should be opened.

2. Another procedure should open a new window at the correct position with a
vertical offset according to the counter, and advance the counter.
