Given that the work I'm doing to the RISC OS frontend has already expanded
in scope from my original intention of giving the toolbar module an
external interface in order to make it more practical to finish off the
treeview UI and consider further updates, it seems sensible to briefly
summarise what I'm up to and where I think it might be leading.
Comments welcome: either on the plan (if that isn't too strong a word)
itself, or on how and when the new code should be brought into the trunk.
While it would be nice to get updates into test builds as I go so that it
gets wider testing, the size of the internal rework and the lack of any
user-visible changes might make it more sensible to keep the work safely in
its own branch until we reach a suitable point to bring it across as one
lump (whenever that might be -- perhaps after the next stable release,
depending upon when that is). Until visible new features start appearing,
there's less benefit to be gained from destabilising things.
The work described here is in /branches/stevef/toolbars -- the name reflects
the original optimistic intention. :-)
As noted above, the aim of the branch I took in December was to start to
make the toolbar implementation invisible to everything outside of the
toolbar module. With the exception of a few outstanding issues, this is now
largely complete. In addition, menu handling has also been moved (or is
being moved, in a couple of cases) into event handlers and split out of the
menus module into the modules that 'own' the individual menus (with the
menus module just looking after the generic menu creation, translation,
display and tracking requirements).
The code in the branch is currently (as of r11218 or so) fully functional,
and should operate from a user's POV exactly as current test builds do.
Once the remaining few bits of toolbar interface have been tidied up, I can
then finish off the holes in the RISC OS treeview UI which are still present
in the trunk, and it should be complete as far as it goes.
The next step I'm considering is to update the toolbar implementation, since
it should by then be hidden from the rest of the front-end and so 'safer'
to do. This would probably entail breaking the constituent parts up into
something approaching separate widgets within the overall toolbar and
refining their interfaces to the rest of the GUI; after this, it should be
practical to add additional bar widgets (thinking specifically about a tab
bar for the time being). At this stage, the toolbar's interface could be
refined to abstract things like button-bar selections from the Wimp
implementation (along the lines of how the menu actions currently work), and
the theme code could be split out from the toolbars (at present, despite the
new toolbar module, it's all still one lump inside to some extent).
Beyond this, I'm clearly thinking about what would be required to give the
RISC OS frontend features like tabbed browsing. Timescales are probably
best left suitably vague.
1. On starting on the work, it became apparent that my initial
investigations had seriously underestimated just how entwined toolbars and
menus were in the RISC OS GUI. On realising that the menus module would
require serious work, it seemed daft not to bring the remaining menus in
line with the new code used in the treeveiws, and then remove the messy
hacks that I'd made to the menu handling within the menus module to allow
the old and new systems to co-exist.
Steve Fryatt - Leeds, England Wakefield Acorn & RISC OS Show
Saturday 16 April 2011