One of the most useful tools I've seen in software recently is the ability to customize the interface at runtime, saving multiple interface configurations for various tasks, with the configurations including menu arrangements, toolbars and keyboard shortcuts (all basically command functions).
I've been considering implementing such a mechanism, but am daunted by the amount of custom display code I will need to produce (for the (extremely useful) drag and drop of items from one command holder to another, for instance, and for an icon editor to allow users to create new icons for their elements etc.).
From what I can see, it will be necessary to define "command" definitions which will be documents capable of storing icons, short and long descriptions, message ID values, control ID values etc. Then we'll need to create the run-time display code which will generate the menus, key bindings and toolbars.
From there, some standard dialogue to provide for explicit customization (for instance, allowing you to drag from a hierarchic list of commands into any given command holder, and allowing you to save/restore/manage your stored interface customization templates).
Some standard for creating and managing message IDs for the dynamic commands will need to be established. Similarly, will need to provide standardized mechanisms for getting the data objects of the current selection from an event.
Would be best to have the entire thing part of an IDE to allow for automatic generation of event handlers on appropriate windows or the application itself.
I don't think anyone currently has everything outlined above, but it might be interesting to see if there are parts of the code already available in an LGPL or BSD-licensed code base that could be adapted.
Pointers or ideas appreciated,
Mike
···
_______________________________________
Mike C. Fletcher
http://members.rogers.com/mcfletch/