Ok, latest version’s up there for your delectation…
Changes are:
* more flexible gradient control, allowing sequences of colours
* new class: DocumentWindow, which is a resizable window with a titlebar, nice-looking maximise/minimise/close buttons, a menubar, and lots of cool options.
* improved the ability for ResizableWindows to be used as child components as well as on the desktop, without them losing their drop-shadows
* eye-candy changes to ShinyLookAndFeel, adding glassy-looking buttons
* added a JUCE_VERSION macro to allow conditional builds against different juce versions
* added an option to PopupMenu that allows any component to be easily added as a custom component, rather than only ones derived from PopupMenuCustomComponent.
* made the win32 crt memory debugging overrides conditional with JUCE_CHECK_MEMORY_LEAKS macro in juce_Config.h
* new class: LassoComponent for easy lassoing of groups of UI objects
* additions to SelectedItemSet to improve the logic used when multi-selecting items that might be dragged.
* handy new method: File::replaceWithText()
* new class: RecentlyOpenedFilesList
* updated some crt function names for compatibility with the latest msvc pro
* misc fixes to glyph layout, text editor listener callbacks + lots of other things.
* new class: ComponentBoundsConstrainer for more flexible control over resizing and dragging components around. This replaces the ResizableBase class.
* popup menus now accept keyboard navigation (not done this for jumping between them on menubars yet, though)
There’s also a new JuceDemo up there, and a JuceAudioPlugin. The audio plugin now includes some classes to help create stand-alone versions of the plugin.
Looking very nice indeed. Don’t suppose that with that abstraction of Graphics and such that you are doing, that it would be easier to add printing support? (Yes, even with how much I hate paper, it is nice to print reports from my thing to give to laymen…)
Jules, I think you’ve forgotten to upload the new demo.
While you are at it you should change the demo size on the website (it is more 1.2Mb than 400kb).
While we’re picking at nits…
any chance you could update the pre-compiled windows help-file, as well? (or is this something i can easily do myself, offline? which app are you using to generate it? doxygen?)
it’s handy to use while offline (ie., on an airplane over the sea)…
Jules, I think you’ve forgotten to upload the new demo.
While you are at it you should change the demo size on the website (it is more 1.2Mb than 400kb).
Did you changed the behavior of Component::addToDesktop()?
I’m using it in my code since I want to use native window title bar. Following is the part of my code that works correctly in JUCE 1.23. But in JUCE 1.24, they are shown as a two different window. I’m passing an ResizableWindow for the child component of my native window.
[code]//------------------------------------------------------------------------------
// KfcWindowAttrToMacWindowAttr
// Last modified 2005/12/02
//------------------------------------------------------------------------------
static WindowAttributes KfcWindowAttrToMacWindowAttr(unsigned int iAttr)
{
WindowAttributes iMacAttr = kWindowStandardHandlerAttribute;
//iMacAttr |= kWindowMetalAttribute; // Metal!
if (iAttr & kKfcWindowAttrCloseBox) iMacAttr |= kWindowCloseBoxAttribute;
if (iAttr & kKfcWindowAttrHorizontalZoom) iMacAttr |= kWindowHorizontalZoomAttribute;
if (iAttr & kKfcWindowAttrVerticalZoom) iMacAttr |= kWindowVerticalZoomAttribute;
if (iAttr & kKfcWindowAttrCollapseBox) iMacAttr |= kWindowCollapseBoxAttribute;
if (iAttr & kKfcWindowAttrResizable) iMacAttr |= kWindowResizableAttribute;
if (iAttr & kKfcWindowAttrSideTitlebar) iMacAttr |= kWindowSideTitlebarAttribute;
if (iAttr & kKfcWindowAttrNoUpdates) iMacAttr |= kWindowNoUpdatesAttribute;
if (iAttr & kKfcWindowAttrNoActivates) iMacAttr |= kWindowNoActivatesAttribute;
if (iAttr & kKfcWindowAttrOpaqueForEvents) iMacAttr |= kWindowOpaqueForEventsAttribute;
if (iAttr & kKfcWindowAttrNoShadow) iMacAttr |= kWindowNoShadowAttribute;
if (iAttr & kKfcWindowAttrHideOnSuspend) iMacAttr |= kWindowHideOnSuspendAttribute;
if (iAttr & kKfcWindowAttrStandardHandler) iMacAttr |= kWindowStandardHandlerAttribute;
if (iAttr & kKfcWindowAttrHideOnFullScreen) iMacAttr |= kWindowHideOnFullScreenAttribute;
if (iAttr & kKfcWindowAttrInWindowMenu) iMacAttr |= kWindowInWindowMenuAttribute;
if (iAttr & kKfcWindowAttrLiveResize) iMacAttr |= kWindowLiveResizeAttribute;
return iMacAttr;
}
bool CKfcNativeWindow::Create(const String& sName, int iX, int iY, int iWidth, int iHeight, int iAttr, CKfcMenuBar* pMenuBar, CKfcNativeWindow* pParent)
{
bool bRet = false;
DocumentWindow is like ResizableWindow and such in that you add a component for it to display, but it itself you really don’t alter sans handling close events and such. What buttons are you needing to add?
[quote=“Chance”]Hi Jules,
Is there a reason that void buttonClicked (Button* button) is defined as private in DocumentWindow class?
I am using DialogWindow and need to add some buttons so have overridden this function and call DialogWindow::buttonClicked(button) in it;
It was possible with 1.21 but not with 1.24.
Of course having source code I can solve my problem but just needed to be sure.
By the way,
What you have is fantastic; I hope one day it can be fully accelerated on all platforms.[/quote]
hmm - sorry, I didn’t mean to make it private. I should really have used another class to handle the events so that DocumentWindow didn’t have to be a ButtonListener at all… but you really oughtn’t to be using the DocumentWindow as a ButtonListener either - that sort of thing belongs in your content component class!
I’m getting 16 “conversion from ‘const double’ to ‘float’, possible loss of data” warnings in VC++.NET 2003… not a problem just thought you might want to know as I’ve never had any warnings compiling previous JUCE versions.
Really? I turned a lot more warnings on for this build, though don’t get any warnings in vcexpress. If you post a copy of the list I’ll tidy it up for next time.