Ok, just got another release out - a mixture of stuff this time, with a few new goodies, a bit of eye-candy tweaking and some bugfixes. Here’s the list:
- tweaks to ComboBox to make it look and work better, and also to give control over the text justification
- buttons and menu items can now be linked to a command in a KeyPressMappingSet, to trigger commands automatically
- change to Buttons - rather than using an ActionListener, buttons now use a special ButtonListener to respond to callbacks. This allows for up/down messages as well as clicks, and provides a pointer to the button that triggered the event. You might have to alter a few of your classes to deal with this - sorry! but it’s not too difficult to change and it does make your code neater and more readable.
- Rewrote BubbleComponent to now be a base class for drawing arbitrary graphics inside a speech bubble shape. Created BubbleMessageComponent as a subclass for showing a text message in a bubble (like the old BubbleComponent used to do).
- Sliders now have an optional pop-up bubble that shows you their current value while they’re being dragged. This is handy for sliders which don’t have a text box. See Slider::setPopupDisplayEnabled()
- Sliders can now have a suffix which they append to the text string that they display, to make it easy to show units without having to write a subclass
- cosmetic improvements to combo-boxes, menus, textboxes, sliders, and a few other bits + pieces
- mouse events now have a click counter to detect triple and quadruple clicks, and the TextEditor uses these to select the current paragraph or entire document
- added methods to the Desktop class to allow “global” MouseListeners to be registered, that will be told about all mouse events to all components
- new classes : MenuBarComponent and MenuBarModel for doing menu bars (obviously). This is a lightweight menu bar component, not yet an OS-specific menubar, which I’ll eventually implement on the Mac, but the same model will apply to both.
- A few 64-bit compatibility tweaks, and the MessageCallbackFunction definition (used in MessageManager::callFunctionOnMessageThread()) now returns a void* instead of an int. This shouldn’t affect many people.
- new class: FileBasedDocument - writing all the load/save/save-as logic for documents is pretty tedious, so this handy base-class takes care of all that stuff for you, doing all the file dialog boxes and asking whether to overwrite existing files, etc.
- on Windows, you can now build juce as a DLL, and your app can link to the DLL version by simply defining the JUCE_DLL macro before including the juce headers