v1.37

Ok, it’s new version time, here’s the traditional changelist…

* new classes: Toolbar and a bunch of related classes. For creating and dynamically customising toolbars.
* new class: ComponentAnimator, which will move and resize components to new positions, taking a specified length of time to get there. There's a button to demonstrate this in the jucedemo widgets section, on the buttons page
* new class: MultiTimer, which is like a Timer, but allows multiple independent timers with different frequencies to share a callback
* fixed a few bugs in the SVG parser and a gradient-rendering bug, and added an SVG object to the "paths + transforms" demo page
* added some assertions to warn people about adding components directly to a ResizableWindow rather than using setContentComponent()
* to improve performance of the ElementComparator class, I've changed the sort routines to use a templated class rather than a virtual method. If this breaks your code, all you need to do is to no longer derive your class from ElementComparator and everything else should continue to work as normal.
* finished off the ThreadPool class, and souped-up the threading page of the demo app to show how to use it.
* added some static methods to Drawable to automatically load Drawables from some kind of image or SVG file
* fixes for some Mac VST and AU windowing bugs
* new method Component::canModalEventBeSentToComponent(), which allows a modal component to selectively allow events to reach components that it is blocking
* fixed deprecated function warnings in MSVC8
* all projects and solutions are now compatible with MS Visual Studio 2005 - I've renamed some of the vcexpress directories to "vc7", and the projects in them will load with either VCexpress or VC8
* updated the "hello world" projects to use a document window
* altered the AudioFileFormat::createReaderFor() method to specify whether the input stream should be preserved if opening fails

I try not to post requests so as not to detract from your development time, but your updates continually invalidate my requests anyway. I desparately desired more SVG capabilities and you have delivered. I have this idea of using SVG in skinnable apps. One could have a skin contained entirely within one fat, XML file using SVG. One could also utilize the scaling features with SVG drawables which wouldn’t look quite so pretty with bitmaps.

Thanks again Jules. You’re just swell. :smiley:

Whao, the toolbars really look great !!
and thanks for the AudioFileFormat::createReaderFor() modification, updating soon …

Great to see another update of JUCE and with more cool features.

Just a couple of minor points

  1. You might want to rename the vc7 build directories to vc8. The .sln files as provided do not work with VC 2002 (v7) or VC 2003 (v7.1) but only with VC 2005 (v8). Normally you can load a v8 solution in to v7.1 by opening it in a text editor and changing the Format Version to 8.00 (yes 8.00 is correct as a v8 .sln will have it set to 9.00). As you have to do this for every .sln I normally just open the v6 workspace and let v7.1 create .sln files for me as I use VS.NET 2003 Enterprise.

  2. The demo will not build as BinaryData.cpp is missing.

Daniel

[quote=“Tortyfoo”]Great to see another update of JUCE and with more cool features.

Just a couple of minor points

  1. You might want to rename the vc7 build directories to vc8. The .sln files as provided do not work with VC 2002 (v7) or VC 2003 (v7.1) but only with VC 2005 (v8). Normally you can load a v8 solution in to v7.1 by opening it in a text editor and changing the Format Version to 8.00 (yes 8.00 is correct as a v8 .sln will have it set to 9.00). As you have to do this for every .sln I normally just open the v6 workspace and let v7.1 create .sln files for me as I use VS.NET 2003 Enterprise.

  2. The demo will not build as BinaryData.cpp is missing.

Daniel[/quote]

Yeah, I probably should have called it vc8. Might change it for the next one.

And someone mentioned the binarydata.cpp thing in another thread somewhere, and I’ve updated the zip file.

I think there is a bug in the listbox

ListBox::getComponentForRowNumber() no longer seems to return my object, but a ListBoxRowComponent* instead.

[quote=“G-Mon”]I think there is a bug in the listbox

ListBox::getComponentForRowNumber() no longer seems to return my object, but a ListBoxRowComponent* instead.[/quote]

hmm. Yes, that must actually have happened in v1.36 when I made the changes for the Table class. You need to fix this method in juce_ListBox.cpp:

Component* ListBox::getComponentForRowNumber (const int row) const { Component* const listRowComp = viewport->getComponentForRowIfOnscreen (row); return listRowComp != 0 ? listRowComp->getChildComponent (0) : 0; }