From a0ed9c96e47dd2b86cf4b258f8e73357a19653d2 Mon Sep 17 00:00:00 2001 From: jules Date: Sun, 5 Aug 2012 22:09:26 +0100 Subject: [PATCH] New class: ConcertinaPanel. --- .../The Introjucer.xcodeproj/project.pbxproj | 4 + .../VisualStudio2005/The Introjucer.vcproj | 11 + .../VisualStudio2008/The Introjucer.vcproj | 11 + .../VisualStudio2010/The Introjucer.vcxproj | 4 + .../The Introjucer.vcxproj.filters | 6 + .../Juce Demo.xcodeproj/project.pbxproj | 4 + .../Builds/VisualStudio2005/Juce Demo.vcproj | 11 + .../Builds/VisualStudio2008/Juce Demo.vcproj | 11 + .../Builds/VisualStudio2010/Juce Demo.vcxproj | 4 + .../Juce Demo.vcxproj.filters | 6 + .../iOS/Juce Demo.xcodeproj/project.pbxproj | 4 + .../JuceDemoPlugin.xcodeproj/project.pbxproj | 4 + .../VisualStudio2005/JuceDemoPlugin.vcproj | 11 + .../VisualStudio2008/JuceDemoPlugin.vcproj | 11 + .../Plugin Host.xcodeproj/project.pbxproj | 4 + .../VisualStudio2005/Plugin Host.vcproj | 11 + .../VisualStudio2008/Plugin Host.vcproj | 11 + .../HelloWorld.xcodeproj/project.pbxproj | 4 + .../Builds/VisualStudio2005/HelloWorld.vcproj | 11 + .../Builds/VisualStudio2008/HelloWorld.vcproj | 11 + .../iOS/HelloWorld.xcodeproj/project.pbxproj | 6 +- .../Builds/VisualStudio2008/juce.vcproj | 11 + .../Builds/VisualStudio2010/juce.vcxproj | 4 + .../VisualStudio2010/juce.vcxproj.filters | 6 + .../MacOSX/Jucer.xcodeproj/project.pbxproj | 4 + .../Builds/VisualStudio2008/Jucer.vcproj | 11 + .../Builds/VisualStudio2010/Jucer.vcxproj | 4 + .../VisualStudio2010/Jucer.vcxproj.filters | 6 + .../gui/juce_AudioThumbnailBase.h | 2 +- .../juce_LowLevelGraphicsSoftwareRenderer.cpp | 1 - .../juce_win32_Direct2DGraphicsContext.cpp | 2 +- modules/juce_gui_basics/juce_gui_basics.cpp | 1 + modules/juce_gui_basics/juce_gui_basics.h | 9 +- .../layout/juce_ConcertinaPanel.cpp | 403 ++++++++++++++++++ .../layout/juce_ConcertinaPanel.h | 121 ++++++ .../lookandfeel/juce_LookAndFeel.cpp | 13 + .../lookandfeel/juce_LookAndFeel.h | 5 + .../mouse/juce_DragAndDropContainer.cpp | 2 +- .../mouse/juce_TextDragAndDropTarget.h | 2 +- .../juce_CPlusPlusCodeTokeniser.cpp | 1 - modules/juce_opengl/native/juce_OpenGL_osx.h | 1 - 41 files changed, 758 insertions(+), 11 deletions(-) create mode 100644 modules/juce_gui_basics/layout/juce_ConcertinaPanel.cpp create mode 100644 modules/juce_gui_basics/layout/juce_ConcertinaPanel.h diff --git a/extras/Introjucer/Builds/MacOSX/The Introjucer.xcodeproj/project.pbxproj b/extras/Introjucer/Builds/MacOSX/The Introjucer.xcodeproj/project.pbxproj index b73e9d3a5e..159e06267a 100644 --- a/extras/Introjucer/Builds/MacOSX/The Introjucer.xcodeproj/project.pbxproj +++ b/extras/Introjucer/Builds/MacOSX/The Introjucer.xcodeproj/project.pbxproj @@ -222,6 +222,7 @@ 3CABAAC1C4BC0D8105183D56 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CachedComponentImage.h"; path = "../../../../modules/juce_gui_basics/components/juce_CachedComponentImage.h"; sourceTree = "SOURCE_ROOT"; }; 3CD57938B4C273D0AA6E6B8B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Path.h"; path = "../../../../modules/juce_graphics/geometry/juce_Path.h"; sourceTree = "SOURCE_ROOT"; }; 3D2B51C71E3676F283B778EA = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DragAndDropContainer.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_DragAndDropContainer.h"; sourceTree = "SOURCE_ROOT"; }; + 3DBB6D91397AE61D59C90510 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ConcertinaPanel.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ConcertinaPanel.cpp"; sourceTree = "SOURCE_ROOT"; }; 3F1501FE4867042830B25DD5 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CustomTypeface.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_CustomTypeface.cpp"; sourceTree = "SOURCE_ROOT"; }; 3F222D26A164E7AD78A33B3D = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToggleButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ToggleButton.h"; sourceTree = "SOURCE_ROOT"; }; 3FAFD16944A6674164D23914 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_ASCII.h"; path = "../../../../modules/juce_core/text/juce_CharPointer_ASCII.h"; sourceTree = "SOURCE_ROOT"; }; @@ -514,6 +515,7 @@ A8DB614600D348C730AC3930 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GroupComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_GroupComponent.h"; sourceTree = "SOURCE_ROOT"; }; A8F9DE55079FC7F6440CF678 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LeakedObjectDetector.h"; path = "../../../../modules/juce_core/memory/juce_LeakedObjectDetector.h"; sourceTree = "SOURCE_ROOT"; }; A9F6985D38A1C25F0C75215B = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Windowing.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_android_Windowing.cpp"; sourceTree = "SOURCE_ROOT"; }; + A9FA71357C5B2A46A75D9230 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ConcertinaPanel.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ConcertinaPanel.h"; sourceTree = "SOURCE_ROOT"; }; AA2D4949BD61CE8B891731E4 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableComposite.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableComposite.cpp"; sourceTree = "SOURCE_ROOT"; }; AAA445B64E54BBA12D5E1358 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_osx_ObjCHelpers.h"; path = "../../../../modules/juce_core/native/juce_osx_ObjCHelpers.h"; sourceTree = "SOURCE_ROOT"; }; AAB313919EE298E25D2EAD19 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TemporaryFile.cpp"; path = "../../../../modules/juce_core/files/juce_TemporaryFile.cpp"; sourceTree = "SOURCE_ROOT"; }; @@ -1343,6 +1345,8 @@ 7D50F21E9F18C152C9C662D5, 271A1D94B96A8B7C949FD8ED, AE3E427DBCC8D50E3F356402, + 3DBB6D91397AE61D59C90510, + A9FA71357C5B2A46A75D9230, 6EE91491434D058606460AFB, A8DB614600D348C730AC3930, EA0D43AB5F47506D5CDA81BB, diff --git a/extras/Introjucer/Builds/VisualStudio2005/The Introjucer.vcproj b/extras/Introjucer/Builds/VisualStudio2005/The Introjucer.vcproj index fe5a539e61..0bd56ed820 100644 --- a/extras/Introjucer/Builds/VisualStudio2005/The Introjucer.vcproj +++ b/extras/Introjucer/Builds/VisualStudio2005/The Introjucer.vcproj @@ -2454,6 +2454,17 @@ + + + + + + + + + diff --git a/extras/Introjucer/Builds/VisualStudio2008/The Introjucer.vcproj b/extras/Introjucer/Builds/VisualStudio2008/The Introjucer.vcproj index 9e15f73d8d..04b64d4c81 100644 --- a/extras/Introjucer/Builds/VisualStudio2008/The Introjucer.vcproj +++ b/extras/Introjucer/Builds/VisualStudio2008/The Introjucer.vcproj @@ -2454,6 +2454,17 @@ + + + + + + + + + diff --git a/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj b/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj index 874b4833bb..fb5677db47 100644 --- a/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj +++ b/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj @@ -688,6 +688,9 @@ true + + true + true @@ -1239,6 +1242,7 @@ + diff --git a/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj.filters b/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj.filters index 67973cf80a..affbaf0a06 100644 --- a/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj.filters +++ b/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj.filters @@ -868,6 +868,9 @@ Juce Modules\juce_gui_basics\layout + + Juce Modules\juce_gui_basics\layout + Juce Modules\juce_gui_basics\layout @@ -2016,6 +2019,9 @@ Juce Modules\juce_gui_basics\layout + + Juce Modules\juce_gui_basics\layout + Juce Modules\juce_gui_basics\layout diff --git a/extras/JuceDemo/Builds/MacOSX/Juce Demo.xcodeproj/project.pbxproj b/extras/JuceDemo/Builds/MacOSX/Juce Demo.xcodeproj/project.pbxproj index bc90b77248..adf040fb3e 100644 --- a/extras/JuceDemo/Builds/MacOSX/Juce Demo.xcodeproj/project.pbxproj +++ b/extras/JuceDemo/Builds/MacOSX/Juce Demo.xcodeproj/project.pbxproj @@ -441,6 +441,7 @@ 687E1D120E47EEFEEB73A4BF = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableText.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableText.cpp"; sourceTree = "SOURCE_ROOT"; }; 690BE5039AADEF787D6E13D9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AudioDemoTabComponent.cpp; path = ../../Source/demos/AudioDemoTabComponent.cpp; sourceTree = "SOURCE_ROOT"; }; 6A4819E134CD45BD043C3219 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Socket.cpp"; path = "../../../../modules/juce_core/network/juce_Socket.cpp"; sourceTree = "SOURCE_ROOT"; }; + 6A9868E67963F63A4819A56B = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ConcertinaPanel.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ConcertinaPanel.cpp"; sourceTree = "SOURCE_ROOT"; }; 6B03CB11D5DEABAEE7F9E0F1 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GIFLoader.cpp"; path = "../../../../modules/juce_graphics/image_formats/juce_GIFLoader.cpp"; sourceTree = "SOURCE_ROOT"; }; 6B0F3AF3FE7B113C33112897 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MultiDocumentPanel.h"; path = "../../../../modules/juce_gui_basics/layout/juce_MultiDocumentPanel.h"; sourceTree = "SOURCE_ROOT"; }; 6BBB8746C2C1BB5F3C3F1FC2 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_UIViewComponentPeer.mm"; path = "../../../../modules/juce_gui_basics/native/juce_ios_UIViewComponentPeer.mm"; sourceTree = "SOURCE_ROOT"; }; @@ -610,6 +611,7 @@ 9C7B5E573807ED59065B54DA = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableCornerComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableCornerComponent.h"; sourceTree = "SOURCE_ROOT"; }; 9CD9B6E7197079625A165653 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_SystemStats.mm"; path = "../../../../modules/juce_core/native/juce_mac_SystemStats.mm"; sourceTree = "SOURCE_ROOT"; }; 9CF4E56974B8290F34032432 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_mac_CoreAudio.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_mac_CoreAudio.cpp"; sourceTree = "SOURCE_ROOT"; }; + 9CF6FE48B33DC0E8B4C407F6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ConcertinaPanel.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ConcertinaPanel.h"; sourceTree = "SOURCE_ROOT"; }; 9D042E1CAB03CFCD4B937951 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WebBrowserComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_WebBrowserComponent.h"; sourceTree = "SOURCE_ROOT"; }; 9D09225ABCE19597A944DEEA = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PositionableAudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_PositionableAudioSource.h"; sourceTree = "SOURCE_ROOT"; }; 9D18794763C086784ECE98D6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BubbleComponent.cpp"; path = "../../../../modules/juce_gui_basics/misc/juce_BubbleComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; @@ -1666,6 +1668,8 @@ 825BDA58C2694CE7F3FC2494, 422D4D8EE3470F57D56064AA, CF2A1897A3C5610A282A2713, + 6A9868E67963F63A4819A56B, + 9CF6FE48B33DC0E8B4C407F6, 108D97ACAEDE5A8DF0A483B7, 3B32FA1EF99322D3DED5F162, E453E312D607E60FAA6D1BF0, diff --git a/extras/JuceDemo/Builds/VisualStudio2005/Juce Demo.vcproj b/extras/JuceDemo/Builds/VisualStudio2005/Juce Demo.vcproj index 3b2a991d75..50b2a43c0b 100644 --- a/extras/JuceDemo/Builds/VisualStudio2005/Juce Demo.vcproj +++ b/extras/JuceDemo/Builds/VisualStudio2005/Juce Demo.vcproj @@ -3217,6 +3217,17 @@ + + + + + + + + + diff --git a/extras/JuceDemo/Builds/VisualStudio2008/Juce Demo.vcproj b/extras/JuceDemo/Builds/VisualStudio2008/Juce Demo.vcproj index 8b33594313..df045f4cab 100644 --- a/extras/JuceDemo/Builds/VisualStudio2008/Juce Demo.vcproj +++ b/extras/JuceDemo/Builds/VisualStudio2008/Juce Demo.vcproj @@ -3217,6 +3217,17 @@ + + + + + + + + + diff --git a/extras/JuceDemo/Builds/VisualStudio2010/Juce Demo.vcxproj b/extras/JuceDemo/Builds/VisualStudio2010/Juce Demo.vcxproj index 6739cd5433..6e38b9e146 100644 --- a/extras/JuceDemo/Builds/VisualStudio2010/Juce Demo.vcxproj +++ b/extras/JuceDemo/Builds/VisualStudio2010/Juce Demo.vcxproj @@ -880,6 +880,9 @@ true + + true + true @@ -1513,6 +1516,7 @@ + diff --git a/extras/JuceDemo/Builds/VisualStudio2010/Juce Demo.vcxproj.filters b/extras/JuceDemo/Builds/VisualStudio2010/Juce Demo.vcxproj.filters index 2b81119b2e..1cfb44bd20 100644 --- a/extras/JuceDemo/Builds/VisualStudio2010/Juce Demo.vcxproj.filters +++ b/extras/JuceDemo/Builds/VisualStudio2010/Juce Demo.vcxproj.filters @@ -1144,6 +1144,9 @@ Juce Modules\juce_gui_basics\layout + + Juce Modules\juce_gui_basics\layout + Juce Modules\juce_gui_basics\layout @@ -2472,6 +2475,9 @@ Juce Modules\juce_gui_basics\layout + + Juce Modules\juce_gui_basics\layout + Juce Modules\juce_gui_basics\layout diff --git a/extras/JuceDemo/Builds/iOS/Juce Demo.xcodeproj/project.pbxproj b/extras/JuceDemo/Builds/iOS/Juce Demo.xcodeproj/project.pbxproj index cb2df1c8d4..f8b0b8b627 100644 --- a/extras/JuceDemo/Builds/iOS/Juce Demo.xcodeproj/project.pbxproj +++ b/extras/JuceDemo/Builds/iOS/Juce Demo.xcodeproj/project.pbxproj @@ -433,6 +433,7 @@ 687E1D120E47EEFEEB73A4BF = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableText.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableText.cpp"; sourceTree = "SOURCE_ROOT"; }; 690BE5039AADEF787D6E13D9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AudioDemoTabComponent.cpp; path = ../../Source/demos/AudioDemoTabComponent.cpp; sourceTree = "SOURCE_ROOT"; }; 6A4819E134CD45BD043C3219 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Socket.cpp"; path = "../../../../modules/juce_core/network/juce_Socket.cpp"; sourceTree = "SOURCE_ROOT"; }; + 6A9868E67963F63A4819A56B = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ConcertinaPanel.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ConcertinaPanel.cpp"; sourceTree = "SOURCE_ROOT"; }; 6B03CB11D5DEABAEE7F9E0F1 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GIFLoader.cpp"; path = "../../../../modules/juce_graphics/image_formats/juce_GIFLoader.cpp"; sourceTree = "SOURCE_ROOT"; }; 6B0F3AF3FE7B113C33112897 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MultiDocumentPanel.h"; path = "../../../../modules/juce_gui_basics/layout/juce_MultiDocumentPanel.h"; sourceTree = "SOURCE_ROOT"; }; 6BBB8746C2C1BB5F3C3F1FC2 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_UIViewComponentPeer.mm"; path = "../../../../modules/juce_gui_basics/native/juce_ios_UIViewComponentPeer.mm"; sourceTree = "SOURCE_ROOT"; }; @@ -603,6 +604,7 @@ 9C7B5E573807ED59065B54DA = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableCornerComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableCornerComponent.h"; sourceTree = "SOURCE_ROOT"; }; 9CD9B6E7197079625A165653 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_SystemStats.mm"; path = "../../../../modules/juce_core/native/juce_mac_SystemStats.mm"; sourceTree = "SOURCE_ROOT"; }; 9CF4E56974B8290F34032432 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_mac_CoreAudio.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_mac_CoreAudio.cpp"; sourceTree = "SOURCE_ROOT"; }; + 9CF6FE48B33DC0E8B4C407F6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ConcertinaPanel.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ConcertinaPanel.h"; sourceTree = "SOURCE_ROOT"; }; 9D042E1CAB03CFCD4B937951 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WebBrowserComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_WebBrowserComponent.h"; sourceTree = "SOURCE_ROOT"; }; 9D09225ABCE19597A944DEEA = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PositionableAudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_PositionableAudioSource.h"; sourceTree = "SOURCE_ROOT"; }; 9D18794763C086784ECE98D6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BubbleComponent.cpp"; path = "../../../../modules/juce_gui_basics/misc/juce_BubbleComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; @@ -1658,6 +1660,8 @@ 825BDA58C2694CE7F3FC2494, 422D4D8EE3470F57D56064AA, CF2A1897A3C5610A282A2713, + 6A9868E67963F63A4819A56B, + 9CF6FE48B33DC0E8B4C407F6, 108D97ACAEDE5A8DF0A483B7, 3B32FA1EF99322D3DED5F162, E453E312D607E60FAA6D1BF0, diff --git a/extras/audio plugin demo/Builds/MacOSX/JuceDemoPlugin.xcodeproj/project.pbxproj b/extras/audio plugin demo/Builds/MacOSX/JuceDemoPlugin.xcodeproj/project.pbxproj index 3aeee4e0cb..ea1bd83c3f 100644 --- a/extras/audio plugin demo/Builds/MacOSX/JuceDemoPlugin.xcodeproj/project.pbxproj +++ b/extras/audio plugin demo/Builds/MacOSX/JuceDemoPlugin.xcodeproj/project.pbxproj @@ -350,6 +350,7 @@ 5585BCF8B17AD03D9FB4A32A = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MenuBarComponent.cpp"; path = "../../../../modules/juce_gui_basics/menus/juce_MenuBarComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 5590FBD40E8A604534345F09 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_JSON.h"; path = "../../../../modules/juce_core/json/juce_JSON.h"; sourceTree = "SOURCE_ROOT"; }; 5631EA8ECD79655B6BEDF8A3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AUCarbonViewDispatch.cpp; path = Extras/CoreAudio/AudioUnits/AUPublic/AUCarbonViewBase/AUCarbonViewDispatch.cpp; sourceTree = "DEVELOPER_DIR"; }; + 5647736926AE116B8C392630 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ConcertinaPanel.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ConcertinaPanel.h"; sourceTree = "SOURCE_ROOT"; }; 566547884532F1E16F7CF3F1 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Initialisation.h"; path = "../../../../modules/juce_gui_basics/application/juce_Initialisation.h"; sourceTree = "SOURCE_ROOT"; }; 56A295F04B7F248D0A52B878 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Fonts.mm"; path = "../../../../modules/juce_graphics/native/juce_mac_Fonts.mm"; sourceTree = "SOURCE_ROOT"; }; 56BFD67859B81D9E53F5B727 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_URL.cpp"; path = "../../../../modules/juce_core/network/juce_URL.cpp"; sourceTree = "SOURCE_ROOT"; }; @@ -769,6 +770,7 @@ D722F49E225A9A47AA348628 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DirectWriteTypeLayout.cpp"; path = "../../../../modules/juce_graphics/native/juce_win32_DirectWriteTypeLayout.cpp"; sourceTree = "SOURCE_ROOT"; }; D79B9A384D018B252B6C4D6B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Image.h"; path = "../../../../modules/juce_graphics/images/juce_Image.h"; sourceTree = "SOURCE_ROOT"; }; D7A2C53BADFE9FFDED204B6E = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_WindowsMediaAudioFormat.cpp"; path = "../../../../modules/juce_audio_formats/codecs/juce_WindowsMediaAudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; + D7FE483198CE40495DE72435 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ConcertinaPanel.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ConcertinaPanel.cpp"; sourceTree = "SOURCE_ROOT"; }; D85ABD84770A6A66B78C288B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiOutput.h"; path = "../../../../modules/juce_audio_devices/midi_io/juce_MidiOutput.h"; sourceTree = "SOURCE_ROOT"; }; D88796A40E58D524DE34989B = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MessageListener.cpp"; path = "../../../../modules/juce_events/messages/juce_MessageListener.cpp"; sourceTree = "SOURCE_ROOT"; }; D8DA09DFE4076AAD9BBFEC2A = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlacAudioFormat.h"; path = "../../../../modules/juce_audio_formats/codecs/juce_FlacAudioFormat.h"; sourceTree = "SOURCE_ROOT"; }; @@ -1627,6 +1629,8 @@ A90A45FB8790A91DF1A78BE7, 9F6A1FA82A8C412622129993, D18B1676A7BB2890B81717FD, + D7FE483198CE40495DE72435, + 5647736926AE116B8C392630, 4AB9AA07703E3BAE99B586C3, 6A3C840E1B6CD34CA8C8DB4B, C859B01B55EAB67BC10ED803, diff --git a/extras/audio plugin demo/Builds/VisualStudio2005/JuceDemoPlugin.vcproj b/extras/audio plugin demo/Builds/VisualStudio2005/JuceDemoPlugin.vcproj index b4c3f75f27..c8d903f8f3 100644 --- a/extras/audio plugin demo/Builds/VisualStudio2005/JuceDemoPlugin.vcproj +++ b/extras/audio plugin demo/Builds/VisualStudio2005/JuceDemoPlugin.vcproj @@ -3097,6 +3097,17 @@ + + + + + + + + + diff --git a/extras/audio plugin demo/Builds/VisualStudio2008/JuceDemoPlugin.vcproj b/extras/audio plugin demo/Builds/VisualStudio2008/JuceDemoPlugin.vcproj index f087a6d055..b230848172 100644 --- a/extras/audio plugin demo/Builds/VisualStudio2008/JuceDemoPlugin.vcproj +++ b/extras/audio plugin demo/Builds/VisualStudio2008/JuceDemoPlugin.vcproj @@ -3097,6 +3097,17 @@ + + + + + + + + + diff --git a/extras/audio plugin host/Builds/MacOSX/Plugin Host.xcodeproj/project.pbxproj b/extras/audio plugin host/Builds/MacOSX/Plugin Host.xcodeproj/project.pbxproj index 500ebbfefa..14763ab03b 100644 --- a/extras/audio plugin host/Builds/MacOSX/Plugin Host.xcodeproj/project.pbxproj +++ b/extras/audio plugin host/Builds/MacOSX/Plugin Host.xcodeproj/project.pbxproj @@ -356,6 +356,7 @@ 5B1692FF63FBBA5E54EA1650 = { isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_audio_utils/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; 5B2546F3B90333492AB00179 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Variant.h"; path = "../../../../modules/juce_core/containers/juce_Variant.h"; sourceTree = "SOURCE_ROOT"; }; 5B4DD89CB29AEF782C6D878C = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RectanglePlacement.h"; path = "../../../../modules/juce_graphics/placement/juce_RectanglePlacement.h"; sourceTree = "SOURCE_ROOT"; }; + 5B6A592439B2BEA9C6B14720 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ConcertinaPanel.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ConcertinaPanel.h"; sourceTree = "SOURCE_ROOT"; }; 5BB7139B57A1A26610868241 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PropertiesFile.cpp"; path = "../../../../modules/juce_data_structures/app_properties/juce_PropertiesFile.cpp"; sourceTree = "SOURCE_ROOT"; }; 5BF15549E7E4C7BA4161805D = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TreeView.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_TreeView.cpp"; sourceTree = "SOURCE_ROOT"; }; 5C24DE268797C1C7AC932837 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Socket.cpp"; path = "../../../../modules/juce_core/network/juce_Socket.cpp"; sourceTree = "SOURCE_ROOT"; }; @@ -538,6 +539,7 @@ 956BE0B32D5B1410E43A3C58 = { isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_data_structures/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; 957428BC0CD90C37ED1EB7E1 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringArray.h"; path = "../../../../modules/juce_core/text/juce_StringArray.h"; sourceTree = "SOURCE_ROOT"; }; 9647232A743A0C7BFE819385 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextPropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_TextPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; + 96E7B79CFB1B3EC9EC2505CD = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ConcertinaPanel.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ConcertinaPanel.cpp"; sourceTree = "SOURCE_ROOT"; }; 9712862E18881F1713110286 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Toolbar.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_Toolbar.h"; sourceTree = "SOURCE_ROOT"; }; 9717C28D840C93B5A17B3EAD = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_mac_CoreGraphicsContext.h"; path = "../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsContext.h"; sourceTree = "SOURCE_ROOT"; }; 972960F84A014CAEFE281044 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InputStream.h"; path = "../../../../modules/juce_core/streams/juce_InputStream.h"; sourceTree = "SOURCE_ROOT"; }; @@ -1588,6 +1590,8 @@ BDD99C777FD1F57007F3BFAF, C30597BA9A68B8B713B95A22, 6493E8C53EE6361EEA57D243, + 96E7B79CFB1B3EC9EC2505CD, + 5B6A592439B2BEA9C6B14720, E218E66CE4F1DDA0B9BED814, 559A2F8A7A121471D8026D81, F3FCF5C0D92A2991A513B0D3, diff --git a/extras/audio plugin host/Builds/VisualStudio2005/Plugin Host.vcproj b/extras/audio plugin host/Builds/VisualStudio2005/Plugin Host.vcproj index ed1eec309a..80723ba6d7 100644 --- a/extras/audio plugin host/Builds/VisualStudio2005/Plugin Host.vcproj +++ b/extras/audio plugin host/Builds/VisualStudio2005/Plugin Host.vcproj @@ -3140,6 +3140,17 @@ + + + + + + + + + diff --git a/extras/audio plugin host/Builds/VisualStudio2008/Plugin Host.vcproj b/extras/audio plugin host/Builds/VisualStudio2008/Plugin Host.vcproj index 8d6ac46aa6..4eb190deff 100644 --- a/extras/audio plugin host/Builds/VisualStudio2008/Plugin Host.vcproj +++ b/extras/audio plugin host/Builds/VisualStudio2008/Plugin Host.vcproj @@ -3140,6 +3140,17 @@ + + + + + + + + + diff --git a/extras/example projects/Builds/MacOSX/HelloWorld.xcodeproj/project.pbxproj b/extras/example projects/Builds/MacOSX/HelloWorld.xcodeproj/project.pbxproj index c7e1a70701..9c6fcbceec 100644 --- a/extras/example projects/Builds/MacOSX/HelloWorld.xcodeproj/project.pbxproj +++ b/extras/example projects/Builds/MacOSX/HelloWorld.xcodeproj/project.pbxproj @@ -282,6 +282,7 @@ 6889EF825EA839830C733D07 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PathStrokeType.h"; path = "../../../../modules/juce_graphics/geometry/juce_PathStrokeType.h"; sourceTree = "SOURCE_ROOT"; }; 69266B83D819323230CB67B9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ResizableWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_ResizableWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; 6930D056DFFC6EAA2B52E045 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativeCoordinate.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinate.h"; sourceTree = "SOURCE_ROOT"; }; + 699E20F1575B18C3D909940A = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ConcertinaPanel.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ConcertinaPanel.h"; sourceTree = "SOURCE_ROOT"; }; 6A8D0F24F0A1F95A52845506 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Threads.mm"; path = "../../../../modules/juce_core/native/juce_mac_Threads.mm"; sourceTree = "SOURCE_ROOT"; }; 6B1B6046C54E082A9E25D69C = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChangeListener.h"; path = "../../../../modules/juce_events/broadcasters/juce_ChangeListener.h"; sourceTree = "SOURCE_ROOT"; }; 6B252EAC72CB94D5DC06C284 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NamedPipe.h"; path = "../../../../modules/juce_core/network/juce_NamedPipe.h"; sourceTree = "SOURCE_ROOT"; }; @@ -629,6 +630,7 @@ FE8B93BA3F56CCC0BB37A5C8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Windowing.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_win32_Windowing.cpp"; sourceTree = "SOURCE_ROOT"; }; FEA9C3FC8BE313C619C3D195 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DocumentWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_DocumentWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; FED2586B3C7EA1BBA5512D58 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarItemComponent.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.h"; sourceTree = "SOURCE_ROOT"; }; + FF06CDF5B9CF3DE2EA741D54 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ConcertinaPanel.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ConcertinaPanel.cpp"; sourceTree = "SOURCE_ROOT"; }; FF263A986694A1ADAA51D156 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PropertySet.h"; path = "../../../../modules/juce_core/containers/juce_PropertySet.h"; sourceTree = "SOURCE_ROOT"; }; FF49DBB348CFFF3F396FB712 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Font.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_Font.cpp"; sourceTree = "SOURCE_ROOT"; }; 39BDB517F5C4ED09B374411D = { isa = PBXGroup; children = ( @@ -1120,6 +1122,8 @@ C2012B18C8652969617417E3, 90CFC8BC9D8A156A512D2A39, C22BEA19FDBE55F5AAFE9D36, + FF06CDF5B9CF3DE2EA741D54, + 699E20F1575B18C3D909940A, D5054A3D5EBDC47D51FC99F6, E143BF0720845D8A25BB16E6, B2C3D53237084A8C79EE8B16, diff --git a/extras/example projects/Builds/VisualStudio2005/HelloWorld.vcproj b/extras/example projects/Builds/VisualStudio2005/HelloWorld.vcproj index c685afacc8..a18ed36f70 100644 --- a/extras/example projects/Builds/VisualStudio2005/HelloWorld.vcproj +++ b/extras/example projects/Builds/VisualStudio2005/HelloWorld.vcproj @@ -2178,6 +2178,17 @@ + + + + + + + + + diff --git a/extras/example projects/Builds/VisualStudio2008/HelloWorld.vcproj b/extras/example projects/Builds/VisualStudio2008/HelloWorld.vcproj index c9a2751a14..8dd4ee506a 100644 --- a/extras/example projects/Builds/VisualStudio2008/HelloWorld.vcproj +++ b/extras/example projects/Builds/VisualStudio2008/HelloWorld.vcproj @@ -2178,6 +2178,17 @@ + + + + + + + + + diff --git a/extras/example projects/Builds/iOS/HelloWorld.xcodeproj/project.pbxproj b/extras/example projects/Builds/iOS/HelloWorld.xcodeproj/project.pbxproj index 0eb9a3337d..13b7e8887d 100644 --- a/extras/example projects/Builds/iOS/HelloWorld.xcodeproj/project.pbxproj +++ b/extras/example projects/Builds/iOS/HelloWorld.xcodeproj/project.pbxproj @@ -281,6 +281,7 @@ 6889EF825EA839830C733D07 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PathStrokeType.h"; path = "../../../../modules/juce_graphics/geometry/juce_PathStrokeType.h"; sourceTree = "SOURCE_ROOT"; }; 69266B83D819323230CB67B9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ResizableWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_ResizableWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; 6930D056DFFC6EAA2B52E045 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativeCoordinate.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinate.h"; sourceTree = "SOURCE_ROOT"; }; + 699E20F1575B18C3D909940A = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ConcertinaPanel.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ConcertinaPanel.h"; sourceTree = "SOURCE_ROOT"; }; 6A8D0F24F0A1F95A52845506 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Threads.mm"; path = "../../../../modules/juce_core/native/juce_mac_Threads.mm"; sourceTree = "SOURCE_ROOT"; }; 6B1B6046C54E082A9E25D69C = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChangeListener.h"; path = "../../../../modules/juce_events/broadcasters/juce_ChangeListener.h"; sourceTree = "SOURCE_ROOT"; }; 6B252EAC72CB94D5DC06C284 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NamedPipe.h"; path = "../../../../modules/juce_core/network/juce_NamedPipe.h"; sourceTree = "SOURCE_ROOT"; }; @@ -614,6 +615,7 @@ F9816E9564DF0FD05C77B845 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MultiDocumentPanel.h"; path = "../../../../modules/juce_gui_basics/layout/juce_MultiDocumentPanel.h"; sourceTree = "SOURCE_ROOT"; }; FA3161F4692D54C87001BCD7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TableListBox.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_TableListBox.cpp"; sourceTree = "SOURCE_ROOT"; }; FB1A1B08CB724305EBC233A4 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextEditor.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_TextEditor.h"; sourceTree = "SOURCE_ROOT"; }; + FB3723E1113ED13B4B8DF09A = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ToolbarButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_ToolbarButton.cpp"; sourceTree = "SOURCE_ROOT"; }; FB6FA17C00AB569935B5CFF8 = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; FB9E2985FBE36494513C83A6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Label.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_Label.h"; sourceTree = "SOURCE_ROOT"; }; FC00A16A6756DBFE0B875F5C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TableHeaderComponent.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_TableHeaderComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; @@ -621,7 +623,6 @@ FD5D001673478C39B79A9C6A = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BigInteger.h"; path = "../../../../modules/juce_core/maths/juce_BigInteger.h"; sourceTree = "SOURCE_ROOT"; }; FE9531D38CA4C273B6FB87A7 = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreText.framework; path = System/Library/Frameworks/CoreText.framework; sourceTree = SDKROOT; }; EA398D9C544440E06637C134 = { isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = HelloWorld.app; sourceTree = "BUILT_PRODUCTS_DIR"; }; - FB3723E1113ED13B4B8DF09A = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ToolbarButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_ToolbarButton.cpp"; sourceTree = "SOURCE_ROOT"; }; FB845B6C46248D66EB02A862 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_AppleRemote.mm"; path = "../../../../modules/juce_gui_extra/native/juce_mac_AppleRemote.mm"; sourceTree = "SOURCE_ROOT"; }; FD7E5A4B8C6532BD458B2A94 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CallOutBox.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_CallOutBox.cpp"; sourceTree = "SOURCE_ROOT"; }; FDDA86C3FCCC3C74F7CDA53D = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_core.h"; path = "../../../../modules/juce_core/juce_core.h"; sourceTree = "SOURCE_ROOT"; }; @@ -629,6 +630,7 @@ FE8B93BA3F56CCC0BB37A5C8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Windowing.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_win32_Windowing.cpp"; sourceTree = "SOURCE_ROOT"; }; FEA9C3FC8BE313C619C3D195 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DocumentWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_DocumentWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; FED2586B3C7EA1BBA5512D58 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarItemComponent.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.h"; sourceTree = "SOURCE_ROOT"; }; + FF06CDF5B9CF3DE2EA741D54 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ConcertinaPanel.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ConcertinaPanel.cpp"; sourceTree = "SOURCE_ROOT"; }; FF263A986694A1ADAA51D156 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PropertySet.h"; path = "../../../../modules/juce_core/containers/juce_PropertySet.h"; sourceTree = "SOURCE_ROOT"; }; FF49DBB348CFFF3F396FB712 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Font.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_Font.cpp"; sourceTree = "SOURCE_ROOT"; }; 39BDB517F5C4ED09B374411D = { isa = PBXGroup; children = ( @@ -1120,6 +1122,8 @@ C2012B18C8652969617417E3, 90CFC8BC9D8A156A512D2A39, C22BEA19FDBE55F5AAFE9D36, + FF06CDF5B9CF3DE2EA741D54, + 699E20F1575B18C3D909940A, D5054A3D5EBDC47D51FC99F6, E143BF0720845D8A25BB16E6, B2C3D53237084A8C79EE8B16, diff --git a/extras/static library/Builds/VisualStudio2008/juce.vcproj b/extras/static library/Builds/VisualStudio2008/juce.vcproj index c7c60f13a3..813cb0fd24 100644 --- a/extras/static library/Builds/VisualStudio2008/juce.vcproj +++ b/extras/static library/Builds/VisualStudio2008/juce.vcproj @@ -3102,6 +3102,17 @@ + + + + + + + + + diff --git a/extras/static library/Builds/VisualStudio2010/juce.vcxproj b/extras/static library/Builds/VisualStudio2010/juce.vcxproj index df593b6675..d11666e21b 100644 --- a/extras/static library/Builds/VisualStudio2010/juce.vcxproj +++ b/extras/static library/Builds/VisualStudio2010/juce.vcxproj @@ -858,6 +858,9 @@ true + + true + true @@ -1481,6 +1484,7 @@ + diff --git a/extras/static library/Builds/VisualStudio2010/juce.vcxproj.filters b/extras/static library/Builds/VisualStudio2010/juce.vcxproj.filters index 3ffb6270a3..e3d9a16619 100644 --- a/extras/static library/Builds/VisualStudio2010/juce.vcxproj.filters +++ b/extras/static library/Builds/VisualStudio2010/juce.vcxproj.filters @@ -1075,6 +1075,9 @@ Juce Modules\juce_gui_basics\layout + + Juce Modules\juce_gui_basics\layout + Juce Modules\juce_gui_basics\layout @@ -2373,6 +2376,9 @@ Juce Modules\juce_gui_basics\layout + + Juce Modules\juce_gui_basics\layout + Juce Modules\juce_gui_basics\layout diff --git a/extras/the jucer/Builds/MacOSX/Jucer.xcodeproj/project.pbxproj b/extras/the jucer/Builds/MacOSX/Jucer.xcodeproj/project.pbxproj index a50c185861..1bf930c775 100644 --- a/extras/the jucer/Builds/MacOSX/Jucer.xcodeproj/project.pbxproj +++ b/extras/the jucer/Builds/MacOSX/Jucer.xcodeproj/project.pbxproj @@ -236,6 +236,7 @@ 3F47FAD4F18A9AC9F31D1AF0 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_WebBrowserComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_win32_WebBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 3F75E8E94C7483C2090D5333 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AffineTransform.cpp"; path = "../../../../modules/juce_graphics/geometry/juce_AffineTransform.cpp"; sourceTree = "SOURCE_ROOT"; }; 3F78AD99200269A71518EB23 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageCache.cpp"; path = "../../../../modules/juce_graphics/images/juce_ImageCache.cpp"; sourceTree = "SOURCE_ROOT"; }; + 40140516A838A42622A94550 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ConcertinaPanel.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ConcertinaPanel.cpp"; sourceTree = "SOURCE_ROOT"; }; 4072A4A77C192E9EFFAB503F = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_CommandIDs.h"; path = "../../src/ui/jucer_CommandIDs.h"; sourceTree = "SOURCE_ROOT"; }; 417C8E8D9C316406EFF9AC74 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BubbleMessageComponent.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_BubbleMessageComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 419ED5DB2D8FF395AB605C9D = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BooleanPropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_BooleanPropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; @@ -459,6 +460,7 @@ 8AEE7FFCCC5933EDA0F0E083 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileInputStream.h"; path = "../../../../modules/juce_core/files/juce_FileInputStream.h"; sourceTree = "SOURCE_ROOT"; }; 8B315AF14598BE539480070E = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileBrowserComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.h"; sourceTree = "SOURCE_ROOT"; }; 8B928FD2BA805E1B0FD5A218 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DropShadower.cpp"; path = "../../../../modules/juce_gui_basics/misc/juce_DropShadower.cpp"; sourceTree = "SOURCE_ROOT"; }; + 8BC3E3B38EF9A601F212E5CB = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ConcertinaPanel.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ConcertinaPanel.h"; sourceTree = "SOURCE_ROOT"; }; 8C7A42B16018A7EFBCC84F13 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_win32_ComSmartPtr.h"; path = "../../../../modules/juce_core/native/juce_win32_ComSmartPtr.h"; sourceTree = "SOURCE_ROOT"; }; 8C90BEA9F42B1CD3D358BE0C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_FileChooser.mm"; path = "../../../../modules/juce_gui_basics/native/juce_mac_FileChooser.mm"; sourceTree = "SOURCE_ROOT"; }; 8C96948B01B70F125652B4A6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Variant.cpp"; path = "../../../../modules/juce_core/containers/juce_Variant.cpp"; sourceTree = "SOURCE_ROOT"; }; @@ -1380,6 +1382,8 @@ DB5E058486E309D69E538BF6, 053D5E2DEC4DC4C3F89D664C, 2C7435982321C750169EDB7D, + 40140516A838A42622A94550, + 8BC3E3B38EF9A601F212E5CB, 0DCADB8BDB13B9EBA009CA73, 3B36C611C1D8FEAA6A744E28, B32502920C2634ECD316B785, diff --git a/extras/the jucer/Builds/VisualStudio2008/Jucer.vcproj b/extras/the jucer/Builds/VisualStudio2008/Jucer.vcproj index 0b3522941d..218d6c17b6 100644 --- a/extras/the jucer/Builds/VisualStudio2008/Jucer.vcproj +++ b/extras/the jucer/Builds/VisualStudio2008/Jucer.vcproj @@ -2345,6 +2345,17 @@ + + + + + + + + + diff --git a/extras/the jucer/Builds/VisualStudio2010/Jucer.vcxproj b/extras/the jucer/Builds/VisualStudio2010/Jucer.vcxproj index daf99e8247..ce7c120499 100644 --- a/extras/the jucer/Builds/VisualStudio2010/Jucer.vcxproj +++ b/extras/the jucer/Builds/VisualStudio2010/Jucer.vcxproj @@ -664,6 +664,9 @@ true + + true + true @@ -1233,6 +1236,7 @@ + diff --git a/extras/the jucer/Builds/VisualStudio2010/Jucer.vcxproj.filters b/extras/the jucer/Builds/VisualStudio2010/Jucer.vcxproj.filters index 1b5655be90..5bfbdded11 100644 --- a/extras/the jucer/Builds/VisualStudio2010/Jucer.vcxproj.filters +++ b/extras/the jucer/Builds/VisualStudio2010/Jucer.vcxproj.filters @@ -859,6 +859,9 @@ Juce Modules\juce_gui_basics\layout + + Juce Modules\juce_gui_basics\layout + Juce Modules\juce_gui_basics\layout @@ -2061,6 +2064,9 @@ Juce Modules\juce_gui_basics\layout + + Juce Modules\juce_gui_basics\layout + Juce Modules\juce_gui_basics\layout diff --git a/modules/juce_audio_utils/gui/juce_AudioThumbnailBase.h b/modules/juce_audio_utils/gui/juce_AudioThumbnailBase.h index 4efec0b77f..b25c42d650 100644 --- a/modules/juce_audio_utils/gui/juce_AudioThumbnailBase.h +++ b/modules/juce_audio_utils/gui/juce_AudioThumbnailBase.h @@ -153,4 +153,4 @@ public: virtual int64 getHashCode() const = 0; }; -#endif +#endif // __JUCE_AUDIOTHUMBNAILBASE_JUCEHEADER__ diff --git a/modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.cpp b/modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.cpp index 973cd24929..346b83d382 100644 --- a/modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.cpp +++ b/modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.cpp @@ -23,7 +23,6 @@ ============================================================================== */ - LowLevelGraphicsSoftwareRenderer::LowLevelGraphicsSoftwareRenderer (const Image& image) : savedState (new RenderingHelpers::SoftwareRendererSavedState (image, image.getBounds())) { diff --git a/modules/juce_graphics/native/juce_win32_Direct2DGraphicsContext.cpp b/modules/juce_graphics/native/juce_win32_Direct2DGraphicsContext.cpp index fa23910d13..db69680e15 100644 --- a/modules/juce_graphics/native/juce_win32_Direct2DGraphicsContext.cpp +++ b/modules/juce_graphics/native/juce_win32_Direct2DGraphicsContext.cpp @@ -849,4 +849,4 @@ private: } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (Direct2DLowLevelGraphicsContext); -}; \ No newline at end of file +}; diff --git a/modules/juce_gui_basics/juce_gui_basics.cpp b/modules/juce_gui_basics/juce_gui_basics.cpp index 7a7786d711..2e03353dcc 100644 --- a/modules/juce_gui_basics/juce_gui_basics.cpp +++ b/modules/juce_gui_basics/juce_gui_basics.cpp @@ -182,6 +182,7 @@ namespace juce #include "layout/juce_ComponentBoundsConstrainer.cpp" #include "layout/juce_ComponentBuilder.cpp" #include "layout/juce_ComponentMovementWatcher.cpp" +#include "layout/juce_ConcertinaPanel.cpp" #include "layout/juce_GroupComponent.cpp" #include "layout/juce_MultiDocumentPanel.cpp" #include "layout/juce_ResizableBorderComponent.cpp" diff --git a/modules/juce_gui_basics/juce_gui_basics.h b/modules/juce_gui_basics/juce_gui_basics.h index 2b1943b81f..d5e2cd0735 100644 --- a/modules/juce_gui_basics/juce_gui_basics.h +++ b/modules/juce_gui_basics/juce_gui_basics.h @@ -103,9 +103,6 @@ namespace juce #ifndef __JUCE_FILEDRAGANDDROPTARGET_JUCEHEADER__ #include "mouse/juce_FileDragAndDropTarget.h" #endif -#ifndef __JUCE_TEXTDRAGANDDROPTARGET_JUCEHEADER__ - #include "mouse/juce_TextDragAndDropTarget.h" -#endif #ifndef __JUCE_LASSOCOMPONENT_JUCEHEADER__ #include "mouse/juce_LassoComponent.h" #endif @@ -124,6 +121,9 @@ namespace juce #ifndef __JUCE_SELECTEDITEMSET_JUCEHEADER__ #include "mouse/juce_SelectedItemSet.h" #endif +#ifndef __JUCE_TEXTDRAGANDDROPTARGET_JUCEHEADER__ + #include "mouse/juce_TextDragAndDropTarget.h" +#endif #ifndef __JUCE_TOOLTIPCLIENT_JUCEHEADER__ #include "mouse/juce_TooltipClient.h" #endif @@ -253,6 +253,9 @@ namespace juce #ifndef __JUCE_COMPONENTMOVEMENTWATCHER_JUCEHEADER__ #include "layout/juce_ComponentMovementWatcher.h" #endif +#ifndef __JUCE_CONCERTINAPANEL_JUCEHEADER__ + #include "layout/juce_ConcertinaPanel.h" +#endif #ifndef __JUCE_GROUPCOMPONENT_JUCEHEADER__ #include "layout/juce_GroupComponent.h" #endif diff --git a/modules/juce_gui_basics/layout/juce_ConcertinaPanel.cpp b/modules/juce_gui_basics/layout/juce_ConcertinaPanel.cpp new file mode 100644 index 0000000000..e51bcdec50 --- /dev/null +++ b/modules/juce_gui_basics/layout/juce_ConcertinaPanel.cpp @@ -0,0 +1,403 @@ +/* + ============================================================================== + + This file is part of the JUCE library - "Jules' Utility Class Extensions" + Copyright 2004-11 by Raw Material Software Ltd. + + ------------------------------------------------------------------------------ + + JUCE can be redistributed and/or modified under the terms of the GNU General + Public License (Version 2), as published by the Free Software Foundation. + A copy of the license is included in the JUCE distribution, or can be found + online at www.gnu.org/licenses. + + JUCE is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + ------------------------------------------------------------------------------ + + To release a closed-source product which uses JUCE, commercial licenses are + available: visit www.rawmaterialsoftware.com/juce for more information. + + ============================================================================== +*/ + +struct ConcertinaPanel::PanelSizes +{ + struct Panel + { + Panel() noexcept {} + + Panel (const int sz, const int mn, const int mx) noexcept + : size (sz), minSize (mn), maxSize (mx) {} + + int setSize (const int newSize) noexcept + { + jassert (minSize <= maxSize); + const int oldSize = size; + size = jlimit (minSize, maxSize, newSize); + return size - oldSize; + } + + int expand (int amount) noexcept + { + amount = jmin (amount, maxSize - size); + size += amount; + return amount; + } + + int reduce (int amount) noexcept + { + amount = jmin (amount, size - minSize); + size -= amount; + return amount; + } + + bool canExpand() const noexcept { return size < maxSize; } + bool isMinimised() const noexcept { return size <= minSize; } + + int size, minSize, maxSize; + }; + + Array sizes; + + Panel& get (const int index) const noexcept { return sizes.getReference(index); } + + PanelSizes withMovedPanel (const int index, int targetPosition, int totalSpace) const + { + const int num = sizes.size(); + totalSpace = jmax (totalSpace, getMinimumSize (0, num)); + targetPosition = jmax (targetPosition, totalSpace - getMaximumSize (index, num)); + + PanelSizes newSizes (*this); + newSizes.stretchRange (0, index, targetPosition - newSizes.getTotalSize (0, index), stretchLast); + newSizes.stretchRange (index, num, totalSpace - newSizes.getTotalSize (0, index) - newSizes.getTotalSize (index, num), stretchFirst); + return newSizes; + } + + PanelSizes fittedInto (int totalSpace) const + { + PanelSizes newSizes (*this); + const int num = newSizes.sizes.size(); + totalSpace = jmax (totalSpace, getMinimumSize (0, num)); + newSizes.stretchRange (0, num, totalSpace - newSizes.getTotalSize (0, num), stretchAll); + return newSizes; + } + + PanelSizes withResizedPanel (const int index, int panelHeight, int totalSpace) const + { + PanelSizes newSizes (*this); + + if (totalSpace <= 0) + { + newSizes.get(index).size = panelHeight; + } + else + { + const int num = sizes.size(); + const int minSize = getMinimumSize (0, num); + totalSpace = jmax (totalSpace, minSize); + + newSizes.get(index).setSize (panelHeight); + newSizes.stretchRange (0, index, totalSpace - newSizes.getTotalSize (0, num), stretchLast); + newSizes.stretchRange (index, num, totalSpace - newSizes.getTotalSize (0, num), stretchLast); + newSizes = newSizes.fittedInto (totalSpace); + } + + return newSizes; + } + +private: + enum ExpandMode + { + stretchAll, + stretchFirst, + stretchLast + }; + + void growRangeFirst (const int start, const int end, int spaceDiff) noexcept + { + for (int attempts = 4; --attempts >= 0 && spaceDiff > 0;) + for (int i = start; i < end && spaceDiff > 0; ++i) + spaceDiff -= get (i).expand (spaceDiff); + } + + void growRangeLast (const int start, const int end, int spaceDiff) noexcept + { + for (int attempts = 4; --attempts >= 0 && spaceDiff > 0;) + for (int i = end; --i >= start && spaceDiff > 0;) + spaceDiff -= get (i).expand (spaceDiff); + } + + void growRangeAll (const int start, const int end, int spaceDiff) noexcept + { + Array expandableItems; + + for (int i = start; i < end; ++i) + if (get(i).canExpand() && ! get(i).isMinimised()) + expandableItems.add (& get(i)); + + for (int attempts = 4; --attempts >= 0 && spaceDiff > 0;) + for (int i = expandableItems.size(); --i >= 0 && spaceDiff > 0;) + spaceDiff -= expandableItems.getUnchecked(i)->expand (spaceDiff / (i + 1)); + + growRangeLast (start, end, spaceDiff); + } + + void shrinkRangeFirst (const int start, const int end, int spaceDiff) noexcept + { + for (int i = start; i < end && spaceDiff > 0; ++i) + spaceDiff -= get(i).reduce (spaceDiff); + } + + void shrinkRangeLast (const int start, const int end, int spaceDiff) noexcept + { + for (int i = end; --i >= start && spaceDiff > 0;) + spaceDiff -= get(i).reduce (spaceDiff); + } + + void stretchRange (const int start, const int end, const int amountToAdd, + const ExpandMode expandMode) noexcept + { + if (end > start) + { + if (amountToAdd > 0) + { + if (expandMode == stretchAll) growRangeAll (start, end, amountToAdd); + else if (expandMode == stretchFirst) growRangeFirst (start, end, amountToAdd); + else if (expandMode == stretchLast) growRangeLast (start, end, amountToAdd); + } + else + { + if (expandMode == stretchFirst) shrinkRangeFirst (start, end, -amountToAdd); + else shrinkRangeLast (start, end, -amountToAdd); + } + } + } + + int getTotalSize (int start, const int end) const noexcept + { + int tot = 0; + while (start < end) tot += get(start++).size; + return tot; + } + + int getMinimumSize (int start, const int end) const noexcept + { + int tot = 0; + while (start < end) tot += get(start++).minSize; + return tot; + } + + int getMaximumSize (int start, const int end) const noexcept + { + int tot = 0; + while (start < end) + { + const int mx = get(start++).maxSize; + if (mx > 0x100000) + return mx; + + tot += mx; + } + + return tot; + } +}; + +//============================================================================== +class ConcertinaPanel::PanelHolder : public Component +{ +public: + PanelHolder (Component* const comp, bool takeOwnership) + : component (comp, takeOwnership) + { + setRepaintsOnMouseActivity (true); + setWantsKeyboardFocus (false); + addAndMakeVisible (comp); + } + + void paint (Graphics& g) + { + const Rectangle area (getWidth(), getHeaderSize()); + g.reduceClipRegion (area); + + getLookAndFeel().drawConcertinaPanelHeader (g, area, isMouseOver(), isMouseButtonDown(), + getPanel(), *component); + } + + void resized() + { + component->setBounds (getLocalBounds().withTop (getHeaderSize())); + } + + void mouseDown (const MouseEvent& e) + { + mouseDownY = getY(); + dragStartSizes = getPanel().getFittedSizes(); + } + + void mouseDrag (const MouseEvent& e) + { + ConcertinaPanel& panel = getPanel(); + panel.setLayout (dragStartSizes.withMovedPanel (panel.holders.indexOf (this), + mouseDownY + e.getDistanceFromDragStartY(), + panel.getHeight()), false); + } + + void mouseDoubleClick (const MouseEvent& e) + { + getPanel().panelHeaderDoubleClicked (component); + } + + OptionalScopedPointer component; + +private: + PanelSizes dragStartSizes; + int mouseDownY; + + int getHeaderSize() const noexcept + { + ConcertinaPanel& panel = getPanel(); + const int ourIndex = panel.holders.indexOf (this); + return panel.currentSizes->get(ourIndex).minSize; + } + + ConcertinaPanel& getPanel() const + { + ConcertinaPanel* const panel = dynamic_cast (getParentComponent()); + jassert (panel != nullptr); + return *panel; + } + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (PanelHolder); +}; + +//============================================================================== +ConcertinaPanel::ConcertinaPanel() + : currentSizes (new PanelSizes()), + headerHeight (20) +{ +} + +ConcertinaPanel::~ConcertinaPanel() {} + +void ConcertinaPanel::addPanel (int insertIndex, Component* component, bool takeOwnership) +{ + jassert (component != nullptr); // can't use a null pointer here! + jassert (indexOfComp (component) < 0); // You can't add the same component more than once! + + PanelHolder* const holder = new PanelHolder (component, takeOwnership); + holders.insert (insertIndex, holder); + currentSizes->sizes.insert (insertIndex, PanelSizes::Panel (headerHeight, headerHeight, std::numeric_limits::max())); + addAndMakeVisible (holder); + resized(); +} + +void ConcertinaPanel::removePanel (Component* component) +{ + const int index = indexOfComp (component); + + if (index >= 0) + { + currentSizes->sizes.remove (index); + holders.remove (index); + resized(); + } +} + +bool ConcertinaPanel::setPanelSize (Component* panelComponent, int height, const bool animate) +{ + const int index = indexOfComp (panelComponent); + jassert (index >= 0); // The specified component doesn't seem to have been added! + + const int oldSize = currentSizes->get(index).size; + setLayout (currentSizes->withResizedPanel (index, height, getHeight()), animate); + return oldSize != currentSizes->get(index).size; +} + +bool ConcertinaPanel::expandPanelFully (Component* component, const bool animate) +{ + return setPanelSize (component, getHeight(), animate); +} + +void ConcertinaPanel::setMaximumPanelSize (Component* component, int maximumSize) +{ + const int index = indexOfComp (component); + jassert (index >= 0); // The specified component doesn't seem to have been added! + + if (index >= 0) + { + currentSizes->get(index).maxSize = currentSizes->get(index).minSize + maximumSize; + resized(); + } +} + +void ConcertinaPanel::setPanelHeaderSize (Component* component, int headerSize) +{ + const int index = indexOfComp (component); + jassert (index >= 0); // The specified component doesn't seem to have been added! + + if (index >= 0) + { + currentSizes->get(index).minSize = headerSize; + resized(); + } +} + +void ConcertinaPanel::resized() +{ + applyLayout (getFittedSizes(), false); +} + +int ConcertinaPanel::indexOfComp (Component* comp) const noexcept +{ + for (int i = 0; i < holders.size(); ++i) + if (holders.getUnchecked(i)->component == comp) + return i; + + return -1; +} + +ConcertinaPanel::PanelSizes ConcertinaPanel::getFittedSizes() const +{ + return currentSizes->fittedInto (getHeight()); +} + +void ConcertinaPanel::applyLayout (const PanelSizes& sizes, const bool animate) +{ + if (! animate) + animator.cancelAllAnimations (false); + + const int animationDuration = 150; + const int w = getWidth(); + int y = 0; + + for (int i = 0; i < holders.size(); ++i) + { + PanelHolder& p = *holders.getUnchecked(i); + + const int h = sizes.get(i).size; + const Rectangle pos (0, y, w, h); + + if (animate) + animator.animateComponent (&p, pos, 1.0f, animationDuration, false, 1.0, 1.0); + else + p.setBounds (pos); + + y += h; + } +} + +void ConcertinaPanel::setLayout (const PanelSizes& sizes, const bool animate) +{ + *currentSizes = sizes; + applyLayout (getFittedSizes(), animate); +} + +void ConcertinaPanel::panelHeaderDoubleClicked (Component* component) +{ + if (! expandPanelFully (component, true)) + setPanelSize (component, 0, true); +} diff --git a/modules/juce_gui_basics/layout/juce_ConcertinaPanel.h b/modules/juce_gui_basics/layout/juce_ConcertinaPanel.h new file mode 100644 index 0000000000..8b2ecd0169 --- /dev/null +++ b/modules/juce_gui_basics/layout/juce_ConcertinaPanel.h @@ -0,0 +1,121 @@ +/* + ============================================================================== + + This file is part of the JUCE library - "Jules' Utility Class Extensions" + Copyright 2004-11 by Raw Material Software Ltd. + + ------------------------------------------------------------------------------ + + JUCE can be redistributed and/or modified under the terms of the GNU General + Public License (Version 2), as published by the Free Software Foundation. + A copy of the license is included in the JUCE distribution, or can be found + online at www.gnu.org/licenses. + + JUCE is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + ------------------------------------------------------------------------------ + + To release a closed-source product which uses JUCE, commercial licenses are + available: visit www.rawmaterialsoftware.com/juce for more information. + + ============================================================================== +*/ + +#ifndef __JUCE_CONCERTINAPANEL_JUCEHEADER__ +#define __JUCE_CONCERTINAPANEL_JUCEHEADER__ + +//============================================================================== +/** + A panel which holds a vertical stack of components which can be expanded + and contracted. + + Each section has its own header bar which can be dragged up and down + to resize it, or double-clicked to fully expand that section. +*/ +class JUCE_API ConcertinaPanel : public Component +{ +public: + /** Creates an empty concertina panel. + You can call addPanel() to add some components to it. + */ + ConcertinaPanel(); + + /** Destructor. */ + ~ConcertinaPanel(); + + /** Adds a component to the panel. + @param insertIndex the index at which this component will be inserted, or + -1 to append it to the end of the list. + @param component the component that will be shown + @param takeOwnership if true, then the ConcertinaPanel will take ownership + of the content component, and will delete it later when + it's no longer needed. If false, it won't delete it, and + you must make sure it doesn't get deleted while in use. + */ + void addPanel (int insertIndex, Component* component, bool takeOwnership); + + /** Removes one of the panels. + If the takeOwnership flag was set when the panel was added, then + this will also delete the component. + */ + void removePanel (Component* panelComponent); + + /** Returns the number of panels. + @see getPanel + */ + int getNumPanels() const noexcept; + + /** Returns one of the panels. + @see getNumPanels() + */ + Component* getPanel (int index) const noexcept; + + /** Resizes one of the panels. + The panelComponent must point to a valid panel component. + If animate is true, the panels will be animated into their new positions; + if false, they will just be immediately resized. + */ + bool setPanelSize (Component* panelComponent, int newHeight, bool animate); + + /** Attempts to make one of the panels full-height. + The panelComponent must point to a valid panel component. + If this component has had a maximum size set, then it will be + expanded to that size. Otherwise, it'll fill as much of the total + space as possible. + */ + bool expandPanelFully (Component* panelComponent, const bool animate); + + /** Sets a maximum size for one of the panels. */ + void setMaximumPanelSize (Component* panelComponent, int maximumSize); + + /** Sets the height of the header section for one of the panels. */ + void setPanelHeaderSize (Component* panelComponent, int headerSize); + +private: + void resized(); + + class PanelHolder; + struct PanelSizes; + friend class PanelHolder; + friend struct PanelSizes; + friend class ScopedPointer; + friend class OwnedArray; + + ScopedPointer currentSizes; + OwnedArray holders; + ComponentAnimator animator; + int headerHeight; + + int indexOfComp (Component*) const noexcept; + PanelSizes getFittedSizes() const; + void applyLayout (const PanelSizes&, bool animate); + void setLayout (const PanelSizes&, bool animate); + void panelHeaderDoubleClicked (Component*); + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ConcertinaPanel); +}; + + +#endif // __JUCE_CONCERTINAPANEL_JUCEHEADER__ diff --git a/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.cpp b/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.cpp index 0b4ab4710a..467999eaba 100644 --- a/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.cpp +++ b/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.cpp @@ -1685,6 +1685,19 @@ void LookAndFeel::layoutFilenameComponent (FilenameComponent& filenameComp, filenameBox->setBounds (0, 0, browseButton->getX(), filenameComp.getHeight()); } +//============================================================================== +void LookAndFeel::drawConcertinaPanelHeader (Graphics& g, const Rectangle& area, + bool isMouseOver, bool isMouseDown, + ConcertinaPanel& concertina, Component& panel) +{ + g.fillAll (Colours::grey.withAlpha (isMouseOver ? 0.9f : 0.7f)); + g.setColour (Colours::black.withAlpha (0.5f)); + g.drawRect (area); + + g.setColour (Colours::white); + g.setFont (Font (area.getHeight() * 0.7f).boldened()); + g.drawFittedText (panel.getName(), 4, 0, area.getWidth() - 6, area.getHeight(), Justification::centredLeft, 1); +} //============================================================================== void LookAndFeel::drawImageButton (Graphics& g, Image* image, diff --git a/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.h b/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.h index 93d7e82fb4..b07bad6521 100644 --- a/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.h +++ b/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.h @@ -462,6 +462,11 @@ public: virtual void layoutFilenameComponent (FilenameComponent& filenameComp, ComboBox* filenameBox, Button* browseButton); + //============================================================================== + virtual void drawConcertinaPanelHeader (Graphics& g, const Rectangle& area, + bool isMouseOver, bool isMouseDown, + ConcertinaPanel& concertina, Component& panel); + //============================================================================== virtual void drawCornerResizer (Graphics& g, int w, int h, diff --git a/modules/juce_gui_basics/mouse/juce_DragAndDropContainer.cpp b/modules/juce_gui_basics/mouse/juce_DragAndDropContainer.cpp index 3016cd0675..d285daf366 100644 --- a/modules/juce_gui_basics/mouse/juce_DragAndDropContainer.cpp +++ b/modules/juce_gui_basics/mouse/juce_DragAndDropContainer.cpp @@ -444,4 +444,4 @@ void FileDragAndDropTarget::fileDragExit (const StringArray&) {} void TextDragAndDropTarget::textDragEnter (const String&, int, int) {} void TextDragAndDropTarget::textDragMove (const String&, int, int) {} -void TextDragAndDropTarget::textDragExit (const String&) {} \ No newline at end of file +void TextDragAndDropTarget::textDragExit (const String&) {} diff --git a/modules/juce_gui_basics/mouse/juce_TextDragAndDropTarget.h b/modules/juce_gui_basics/mouse/juce_TextDragAndDropTarget.h index 51055212a3..4cf779a943 100644 --- a/modules/juce_gui_basics/mouse/juce_TextDragAndDropTarget.h +++ b/modules/juce_gui_basics/mouse/juce_TextDragAndDropTarget.h @@ -101,4 +101,4 @@ public: }; -#endif // __JTEXTDRAGANDDROPTARGET_JUCEHEADER__ +#endif // __JUCE_TEXTDRAGANDDROPTARGET_JUCEHEADER__ diff --git a/modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.cpp b/modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.cpp index f6d8e8ed99..722a2a792f 100644 --- a/modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.cpp +++ b/modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.cpp @@ -23,7 +23,6 @@ ============================================================================== */ - namespace CppTokeniser { enum TokenType diff --git a/modules/juce_opengl/native/juce_OpenGL_osx.h b/modules/juce_opengl/native/juce_OpenGL_osx.h index f81d533c8c..020ba0360f 100644 --- a/modules/juce_opengl/native/juce_OpenGL_osx.h +++ b/modules/juce_opengl/native/juce_OpenGL_osx.h @@ -23,7 +23,6 @@ ============================================================================== */ - struct ThreadSafeNSOpenGLViewClass : public ObjCClass { ThreadSafeNSOpenGLViewClass() : ObjCClass ("JUCEGLView_")