You’ll like this one, I think, although it’ll probably break some of your code! Lots of new buttons and widgets. And I’ve not just done vertical sliders - I’ve thrown in rotary ones too! Check out the demo app to see some of it in action.
Here’s the change list:
- fixes to OpenGLComponent to make it work when parent components are moved
- added a flag to allow building of non-GUI apps under linux where UI libraries aren’t present
- popup menus can now be positioned to align with a button or other component
- created some static initialiseJuce() functions in juce_Initialisation.h, to make it easy to embed juce in command-line apps or apps that use their own event-loop.
- new class: GroupComponent for drawing a line around a group of components
- new sliders! Completely revamped the Slider class so that it can now do vertical and rotary sliders, as well as allowing user-defined scaling and snapping.
- updated the Mac projects for XCode 2.1 and fixed the GCC4 problems. Apple have just changed the project format for this release, so if you’re still on XCode 2.0, then sorry, you’ll need to upgrade to build this release.
- a couple of changes to Path to clean up the elliptic-arc and pie-shape drawing methods
- added a Path::addStar() method for drawing star shapes and addBubble() for drawing speech bubble shapes
- new class: ComponentDragger to easily add logic for dragging components around
- new class: ResizableBorderComponent for adding windows-style resizable edges to components
- name change: ResizerComponent is now called ResizableCornerComponent to complement ResizableBorderComponent
- new class: ResizableWindow to make it easy to create top-level windows that are resizable/maximisable, and to make it easy to save/restore their position and state. DialogWindow has also now been changed to use this as its base class.
- renamed method: UndoManager::clear() becomes UndoManager::clearUndoHistory() (just to disambiguate when subclasses are used)
- Component::setInterceptsMouseClicks() can now optionally intercept clicks on child components
- fixed a bug in Array::move
- new set of classes: Drawables - these are used to build up a tree of graphic elements that can be drawn, forming a complex image. So far there are coloured shapes, images and text, but there may be more to add in future. They also have a persistence mechanism so can be saved/loaded and used as a vector graphics format. Although the classes are quite basic at the moment, I might expand these one day to form a way of rendering SVG.
- changes to Buttons - moved all the toggle-button logic into the base class so that all buttons can now have an on/off state and belong to button groups. TextButtons and DrawableButtons use this to draw themselves in an on/off state, and the old ToggleButton class is still there for a tickbox-style toggle button.
- new button type: DrawableButton which takes some Drawables as its image and has a few different styles. This button will ultimately take over from ImageButton and ShapeButton.
- moved isEnabled()/setEnabled() into the Component base class, so that it now applies hierarchically. (previously the different widgets all had their own separate enablement methods)
- fixes and tweaks to the windowing system on Linux to hopefully make it run more happily on Gnome