Ok, this release has taken longer than usual because I had trouble designing the new “app commands” feature in it, but after quite a few re-designs and much head-scratching, here it is… Changes are:
* major set of new classes to introduce "application commands". This is a powerful mechanism for despatching commands to command targets. It allows commands to be bound to keystrokes and easily triggered by menus, buttons, etc. New classes to support this include ApplicationCommandManager, ApplicationCommandTarget, ApplicationCommandInfo. I've rewritten the Juce demo to use commands to control its menu system, and added key-shortcuts to select the various demos. * the new app command stuff replaces a lot of the functionality that was in KeyPressMappingSet, so this class has been slimmed down with some functionality moving into the new classes. I've renamed the createXml() and restoreFromXml() methods to draw attention to the slight difference in the way they're used, (and to make the names more consistent with other code) * new class SettableTooltipClient, and made a lot of the existing widgets inherit from this, to make it easy to set tooltips for them * new flag in the Justification class - horizontallyJustified, which spreads text out to align both its left and right margins * tidied up the Uuid class and got rid of any platform-dependent libraries it was using * the constructor for the Thread class now takes a name, and on windows this gets passed to the debugger to make it easy to see which thread is which. (Haven't got mac or linux implementations for this yet) * some UI fixes for running under KDE on Linux * added a File::areFileNamesCaseSensitive() method * added a method to the MidiInputCallback class to handle incoming sections of a long sysex message. (This is only currently supported on the mac) * the XML parser now loads extended UTF-8 characters correctly
There’s quite a lot of other minor bug-fixes in here too that I’ve not listed here.
The new app command stuff will probably require some re-writing of your code if you currently use KeyMappingSet to invoke commands, but the new design is much more powerful and opens up possibilities that weren’t there before. Give me a shout if anyone has any difficulties with it or needs more explanation than is available in the comments and demo code.