diff --git a/extras/Introjucer/Builds/Linux/Makefile b/extras/Introjucer/Builds/Linux/Makefile index 7ebd802475..a9d71d0fd6 100644 --- a/extras/Introjucer/Builds/Linux/Makefile +++ b/extras/Introjucer/Builds/Linux/Makefile @@ -50,13 +50,13 @@ OBJECTS := \ $(OBJDIR)/jucer_Main_f8488f5b.o \ $(OBJDIR)/jucer_MainWindow_1e163aeb.o \ $(OBJDIR)/jucer_OpenDocumentManager_4c72d210.o \ + $(OBJDIR)/jucer_ConfigPage_99b07caa.o \ $(OBJDIR)/jucer_GroupInformationComponent_631ccf01.o \ $(OBJDIR)/jucer_Module_3f7666a5.o \ $(OBJDIR)/jucer_NewFileWizard_b8a19ef8.o \ $(OBJDIR)/jucer_NewProjectWizard_7a15bf5d.o \ $(OBJDIR)/jucer_Project_c131864a.o \ $(OBJDIR)/jucer_ProjectContentComponent_60de0eee.o \ - $(OBJDIR)/jucer_ProjectInformationComponent_4746e69b.o \ $(OBJDIR)/jucer_ProjectTreeViewBase_63c2bdbe.o \ $(OBJDIR)/jucer_ProjectType_1bc27a24.o \ $(OBJDIR)/jucer_TreeViewTypes_4a765287.o \ @@ -127,6 +127,11 @@ $(OBJDIR)/jucer_OpenDocumentManager_4c72d210.o: ../../Source/Application/jucer_O @echo "Compiling jucer_OpenDocumentManager.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" +$(OBJDIR)/jucer_ConfigPage_99b07caa.o: ../../Source/Project/jucer_ConfigPage.cpp + -@mkdir -p $(OBJDIR) + @echo "Compiling jucer_ConfigPage.cpp" + @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" + $(OBJDIR)/jucer_GroupInformationComponent_631ccf01.o: ../../Source/Project/jucer_GroupInformationComponent.cpp -@mkdir -p $(OBJDIR) @echo "Compiling jucer_GroupInformationComponent.cpp" @@ -157,11 +162,6 @@ $(OBJDIR)/jucer_ProjectContentComponent_60de0eee.o: ../../Source/Project/jucer_P @echo "Compiling jucer_ProjectContentComponent.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/jucer_ProjectInformationComponent_4746e69b.o: ../../Source/Project/jucer_ProjectInformationComponent.cpp - -@mkdir -p $(OBJDIR) - @echo "Compiling jucer_ProjectInformationComponent.cpp" - @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" - $(OBJDIR)/jucer_ProjectTreeViewBase_63c2bdbe.o: ../../Source/Project/jucer_ProjectTreeViewBase.cpp -@mkdir -p $(OBJDIR) @echo "Compiling jucer_ProjectTreeViewBase.cpp" diff --git a/extras/Introjucer/Builds/MacOSX/The Introjucer.xcodeproj/project.pbxproj b/extras/Introjucer/Builds/MacOSX/The Introjucer.xcodeproj/project.pbxproj index 574913bbe4..87c22415a6 100644 --- a/extras/Introjucer/Builds/MacOSX/The Introjucer.xcodeproj/project.pbxproj +++ b/extras/Introjucer/Builds/MacOSX/The Introjucer.xcodeproj/project.pbxproj @@ -19,13 +19,13 @@ 95B44E6C74B1DED31DBE37EB = { isa = PBXBuildFile; fileRef = 8C52A3DDA62A746AA7A68535; }; AA9D0B8E23F3D87A23DE9F8A = { isa = PBXBuildFile; fileRef = 9069981E414A631B036CC9AC; }; 244BA1BDA5FAA465EA3F9C6D = { isa = PBXBuildFile; fileRef = 2247EE920DF0610CAF9F4513; }; + D1A1998A202A88C617C9AB73 = { isa = PBXBuildFile; fileRef = E7F7033084AC10FB77B0F77A; }; 349B4C837D996E71E08657A5 = { isa = PBXBuildFile; fileRef = 6FA01AEDB9DB70FD1EA6D380; }; 3FCA61C401007B243E2E9035 = { isa = PBXBuildFile; fileRef = F797071D88542C813CF7222A; }; 5BC89E7905397ABECD25ACCD = { isa = PBXBuildFile; fileRef = F1163B7856FDABA413A88D90; }; FBE57B26FE59319AA2E8B59D = { isa = PBXBuildFile; fileRef = 69A5D13490A62DAE9A7D5A22; }; 30B921C38DCEE787B294B746 = { isa = PBXBuildFile; fileRef = BAC43B20E14A340CCF14119C; }; 676D2E1E750E61AA2FAA335E = { isa = PBXBuildFile; fileRef = 86E468DE6556BB2AD76A3D80; }; - BB1D52AE45F40BEDCEBC993F = { isa = PBXBuildFile; fileRef = ADDCB0920D467DF2A309A5E3; }; 9CBD0A9A700D28081C8182C5 = { isa = PBXBuildFile; fileRef = 4BAF0975F0958432B17D0D41; }; 8012E6487639A7368E4C4470 = { isa = PBXBuildFile; fileRef = E70CA21960A64CCB835725FF; }; B18DEBB2CBB335AFAE249E8E = { isa = PBXBuildFile; fileRef = F94ACCC426AB439B871699E3; }; @@ -183,7 +183,6 @@ 2CB90BE5027B202896EBCE9D = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OutputStream.h"; path = "../../../../modules/juce_core/streams/juce_OutputStream.h"; sourceTree = "SOURCE_ROOT"; }; 2CD0B485ED8C5E8402671D36 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableEdgeComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.h"; sourceTree = "SOURCE_ROOT"; }; 2CD34A70B4032C0426F7AA10 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_MainWindow.h"; path = "../../Source/Application/jucer_MainWindow.h"; sourceTree = "SOURCE_ROOT"; }; - 2CFEE0E15C0ABF07EFE27FBF = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ProjectInformationComponent.h"; path = "../../Source/Project/jucer_ProjectInformationComponent.h"; sourceTree = "SOURCE_ROOT"; }; 2DF5213993DF1380E29C848A = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SliderPropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_SliderPropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 2E1F83CE00F5855083AFA246 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_SystemStats.cpp"; path = "../../../../modules/juce_core/native/juce_win32_SystemStats.cpp"; sourceTree = "SOURCE_ROOT"; }; 2E540A9137E245EFADCFABB3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_SystemTrayIcon.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_linux_SystemTrayIcon.cpp"; sourceTree = "SOURCE_ROOT"; }; @@ -467,6 +466,7 @@ 9B3F6F800DC0AD8C92D70E9A = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TableHeaderComponent.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_TableHeaderComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 9B9CAD20E1243B4351B4C8D8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_CodeHelpers.cpp"; path = "../../Source/Utility/jucer_CodeHelpers.cpp"; sourceTree = "SOURCE_ROOT"; }; 9BB612A0BA1E2174488B5D0C = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Typeface.h"; path = "../../../../modules/juce_graphics/fonts/juce_Typeface.h"; sourceTree = "SOURCE_ROOT"; }; + 9BC8AE609A07657CEF587548 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_StoredSettings.h"; path = "../../Source/Utility/jucer_StoredSettings.h"; sourceTree = "SOURCE_ROOT"; }; 9BD2CA4A6C8DA8FF236F3AF1 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ShapeButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_ShapeButton.cpp"; sourceTree = "SOURCE_ROOT"; }; 9BDE235186FA9648EEECB373 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LookAndFeel.cpp"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.cpp"; sourceTree = "SOURCE_ROOT"; }; 9BFC2FD520814B736535DB8F = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_mac_CoreGraphicsContext.h"; path = "../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsContext.h"; sourceTree = "SOURCE_ROOT"; }; @@ -521,7 +521,6 @@ AD0AB6FA2DE544D6C77E69AC = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CodeEditorComponent.cpp"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; AD3C946C260F68C4AD2B491F = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationProperties.h"; path = "../../../../modules/juce_data_structures/app_properties/juce_ApplicationProperties.h"; sourceTree = "SOURCE_ROOT"; }; AD44FFB01387088222D0E98F = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyMappingEditorComponent.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; - ADDCB0920D467DF2A309A5E3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ProjectInformationComponent.cpp"; path = "../../Source/Project/jucer_ProjectInformationComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; AE1786BA679872921797AE25 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TreeView.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_TreeView.h"; sourceTree = "SOURCE_ROOT"; }; AE3E427DBCC8D50E3F356402 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentMovementWatcher.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.h"; sourceTree = "SOURCE_ROOT"; }; AE84254C46407F84EB70A370 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LookAndFeel.h"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.h"; sourceTree = "SOURCE_ROOT"; }; @@ -531,6 +530,7 @@ AF9D42A4C5359EE904DCAF8E = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WindowsRegistry.h"; path = "../../../../modules/juce_core/misc/juce_WindowsRegistry.h"; sourceTree = "SOURCE_ROOT"; }; AFAF4EF669407663DCB0F452 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Colour.cpp"; path = "../../../../modules/juce_graphics/colour/juce_Colour.cpp"; sourceTree = "SOURCE_ROOT"; }; AFDCCE90EAB0DDCE50A5B89A = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseInputSource.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseInputSource.h"; sourceTree = "SOURCE_ROOT"; }; + AFEBD8423B07599B1DE175A3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ModulesPanel.h"; path = "../../Source/Project/jucer_ModulesPanel.h"; sourceTree = "SOURCE_ROOT"; }; AFF72BA2B130F3F9AC029080 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_AudioPluginEditorTemplate.h"; path = "../../Source/BinaryData/jucer_AudioPluginEditorTemplate.h"; sourceTree = "SOURCE_ROOT"; }; B01CBF496E7C88105DF4B52A = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableShape.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableShape.h"; sourceTree = "SOURCE_ROOT"; }; B1B44E3A7614189E65CB9FBE = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WaitableEvent.h"; path = "../../../../modules/juce_core/threads/juce_WaitableEvent.h"; sourceTree = "SOURCE_ROOT"; }; @@ -572,9 +572,11 @@ BE94248CF8069E6707174CDB = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_JuceUpdater.cpp"; path = "../../Source/Application/jucer_JuceUpdater.cpp"; sourceTree = "SOURCE_ROOT"; }; BE97579323E97AF084D41476 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DirectoryContentsList.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.cpp"; sourceTree = "SOURCE_ROOT"; }; BF171B0762D5550B797869F2 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Expression.h"; path = "../../../../modules/juce_core/maths/juce_Expression.h"; sourceTree = "SOURCE_ROOT"; }; + BF3CEF080FA013E2778DCE90 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_Project.h"; path = "../../Source/Project/jucer_Project.h"; sourceTree = "SOURCE_ROOT"; }; BF92CA3FD8F9A61AE358D151 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ActionBroadcaster.cpp"; path = "../../../../modules/juce_events/broadcasters/juce_ActionBroadcaster.cpp"; sourceTree = "SOURCE_ROOT"; }; C061E0D3680889C69B1F0E95 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LowLevelGraphicsContext.h"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsContext.h"; sourceTree = "SOURCE_ROOT"; }; C1FDD2DDB01AC8C4DECB2C10 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableImage.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableImage.cpp"; sourceTree = "SOURCE_ROOT"; }; + C2080119AEDFDE0D477756FA = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ConfigPage.h"; path = "../../Source/Project/jucer_ConfigPage.h"; sourceTree = "SOURCE_ROOT"; }; C22E03FEBEB6921978C5612A = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChangeBroadcaster.h"; path = "../../../../modules/juce_events/broadcasters/juce_ChangeBroadcaster.h"; sourceTree = "SOURCE_ROOT"; }; C2D43E4F571D16F0E9B1E44E = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileTreeComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.h"; sourceTree = "SOURCE_ROOT"; }; C2ECD077AC4C784A67BC3DDE = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Socket.h"; path = "../../../../modules/juce_core/network/juce_Socket.h"; sourceTree = "SOURCE_ROOT"; }; @@ -598,26 +600,17 @@ C7E19F79947BEFC7DB7A9CE7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GlowEffect.cpp"; path = "../../../../modules/juce_graphics/effects/juce_GlowEffect.cpp"; sourceTree = "SOURCE_ROOT"; }; C83992DA0BE30EA3CD06EA98 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ProgressBar.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ProgressBar.h"; sourceTree = "SOURCE_ROOT"; }; C85B4D62B96F4A44890F20E2 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SortedSet.h"; path = "../../../../modules/juce_core/containers/juce_SortedSet.h"; sourceTree = "SOURCE_ROOT"; }; - C90C66C5727759D5CBD5FB07 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AbstractFifo.cpp"; path = "../../../../modules/juce_core/containers/juce_AbstractFifo.cpp"; sourceTree = "SOURCE_ROOT"; }; - C9871C46DEDD05103443DC33 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NewLine.h"; path = "../../../../modules/juce_core/text/juce_NewLine.h"; sourceTree = "SOURCE_ROOT"; }; - CC63B9EC2E95FD4AF7608D8E = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharacterFunctions.h"; path = "../../../../modules/juce_core/text/juce_CharacterFunctions.h"; sourceTree = "SOURCE_ROOT"; }; - CF6C8BD0DA3D8CD4E99EBADA = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; }; - CF8011B3C67B609032974DA5 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_NewCppFileTemplate.cpp"; path = "../../Source/BinaryData/jucer_NewCppFileTemplate.cpp"; sourceTree = "SOURCE_ROOT"; }; - D00F311BFC3C2625C457CB9B = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; }; - D1F9B0E9F5D54FE48BEB46EA = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; - E5D6C36496F5BC84D7213BE8 = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; - E96597BBC6A98255B51B94DC = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = System/Library/Frameworks/IOKit.framework; sourceTree = SDKROOT; }; - 25F52316D256B4534BED16D1 = { isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Introjucer.app; sourceTree = "BUILT_PRODUCTS_DIR"; }; - 9BC8AE609A07657CEF587548 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_StoredSettings.h"; path = "../../Source/Utility/jucer_StoredSettings.h"; sourceTree = "SOURCE_ROOT"; }; - BF3CEF080FA013E2778DCE90 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_Project.h"; path = "../../Source/Project/jucer_Project.h"; sourceTree = "SOURCE_ROOT"; }; C8A229ACD244F402C57286CD = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ProjectExport_MSVC.h"; path = "../../Source/Project Saving/jucer_ProjectExport_MSVC.h"; sourceTree = "SOURCE_ROOT"; }; + C90C66C5727759D5CBD5FB07 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AbstractFifo.cpp"; path = "../../../../modules/juce_core/containers/juce_AbstractFifo.cpp"; sourceTree = "SOURCE_ROOT"; }; C9616830BB2474066AC8C910 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ResourceFile.h"; path = "../../Source/Project Saving/jucer_ResourceFile.h"; sourceTree = "SOURCE_ROOT"; }; + C9871C46DEDD05103443DC33 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NewLine.h"; path = "../../../../modules/juce_core/text/juce_NewLine.h"; sourceTree = "SOURCE_ROOT"; }; C9DCA94BF8A4C583E5392755 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MultiTimer.cpp"; path = "../../../../modules/juce_events/timers/juce_MultiTimer.cpp"; sourceTree = "SOURCE_ROOT"; }; CA62F9F7C5F0D77D8E33D91F = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SplashScreen.h"; path = "../../../../modules/juce_gui_extra/misc/juce_SplashScreen.h"; sourceTree = "SOURCE_ROOT"; }; CB36CD7F57D0F4231DC98686 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Message.h"; path = "../../../../modules/juce_events/messages/juce_Message.h"; sourceTree = "SOURCE_ROOT"; }; CB48495010366C2E371BEFDB = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SystemStats.cpp"; path = "../../../../modules/juce_core/system/juce_SystemStats.cpp"; sourceTree = "SOURCE_ROOT"; }; CBE0B96838EE76C9CB8E1230 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ColourGradient.cpp"; path = "../../../../modules/juce_graphics/colour/juce_ColourGradient.cpp"; sourceTree = "SOURCE_ROOT"; }; CC3F5263B16932FF4E74B9D8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CodeEditorComponent.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.h"; sourceTree = "SOURCE_ROOT"; }; + CC63B9EC2E95FD4AF7608D8E = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharacterFunctions.h"; path = "../../../../modules/juce_core/text/juce_CharacterFunctions.h"; sourceTree = "SOURCE_ROOT"; }; CD140A1C0161176682F6CA29 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ResizableWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_ResizableWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; CD3216F23C7B273B010A8D12 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CustomTypeface.h"; path = "../../../../modules/juce_graphics/fonts/juce_CustomTypeface.h"; sourceTree = "SOURCE_ROOT"; }; CD8F40A9EF6ECAD083543974 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WildcardFileFilter.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_WildcardFileFilter.h"; sourceTree = "SOURCE_ROOT"; }; @@ -626,19 +619,20 @@ CDF8F65F9079B2C14A740F0F = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ImageButton.h"; sourceTree = "SOURCE_ROOT"; }; CE1DFE4E3908943656E180AD = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_UnitTest.cpp"; path = "../../../../modules/juce_core/unit_tests/juce_UnitTest.cpp"; sourceTree = "SOURCE_ROOT"; }; CF0615A1AF1A514A60322B50 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseCursor.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseCursor.h"; sourceTree = "SOURCE_ROOT"; }; + CF6C8BD0DA3D8CD4E99EBADA = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; }; + D00F311BFC3C2625C457CB9B = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; }; D0F1614CC861E8E0B59B7A06 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Messaging.cpp"; path = "../../../../modules/juce_events/native/juce_linux_Messaging.cpp"; sourceTree = "SOURCE_ROOT"; }; D10D51A0A2D63F38B4D86A60 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ResourceFile.cpp"; path = "../../Source/Project Saving/jucer_ResourceFile.cpp"; sourceTree = "SOURCE_ROOT"; }; D141433D3FE81F20490DE928 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Desktop.h"; path = "../../../../modules/juce_gui_basics/components/juce_Desktop.h"; sourceTree = "SOURCE_ROOT"; }; + D1F9B0E9F5D54FE48BEB46EA = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; D253F74B7F5734984E568CA7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Files.cpp"; path = "../../../../modules/juce_core/native/juce_linux_Files.cpp"; sourceTree = "SOURCE_ROOT"; }; D2F1CF252F7EC62B35A21CB6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DropShadowEffect.cpp"; path = "../../../../modules/juce_graphics/effects/juce_DropShadowEffect.cpp"; sourceTree = "SOURCE_ROOT"; }; - D2F80DA0946A5EE01FC016CA = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_UTF32.h"; path = "../../../../modules/juce_core/text/juce_CharPointer_UTF32.h"; sourceTree = "SOURCE_ROOT"; }; D376B9B54EC944E766AFEC45 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PopupMenu.cpp"; path = "../../../../modules/juce_gui_basics/menus/juce_PopupMenu.cpp"; sourceTree = "SOURCE_ROOT"; }; D4697A0232AECE5DAC5E332E = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChoicePropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; D4E56676E2EF83404EDCBA8C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TextEditor.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_TextEditor.cpp"; sourceTree = "SOURCE_ROOT"; }; D4F2D42C58F4D86E00E76F31 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandID.h"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandID.h"; sourceTree = "SOURCE_ROOT"; }; D503780AB98993E8F0BA1311 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageComponent.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ImageComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; D5057D7B18ABD5E810A6F830 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DirectWriteTypeface.cpp"; path = "../../../../modules/juce_graphics/native/juce_win32_DirectWriteTypeface.cpp"; sourceTree = "SOURCE_ROOT"; }; - D526C38D581425949BA0E4AC = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_FilePreviewComponent.h"; path = "../../Source/Application/jucer_FilePreviewComponent.h"; sourceTree = "SOURCE_ROOT"; }; D53B54D1786A1FFC024BF064 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_cryptography.mm"; path = "../../../../modules/juce_cryptography/juce_cryptography.mm"; sourceTree = "SOURCE_ROOT"; }; D5A6D00DEFDC650AF432A698 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Initialisation.h"; path = "../../../../modules/juce_gui_basics/application/juce_Initialisation.h"; sourceTree = "SOURCE_ROOT"; }; D678882D133090214AF681BC = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ThreadLocalValue.h"; path = "../../../../modules/juce_core/threads/juce_ThreadLocalValue.h"; sourceTree = "SOURCE_ROOT"; }; @@ -646,20 +640,29 @@ D75EAC16FAECCC51E3669193 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandInfo.h"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.h"; sourceTree = "SOURCE_ROOT"; }; D780ED33573AED5AD383A036 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CaretComponent.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_CaretComponent.h"; sourceTree = "SOURCE_ROOT"; }; D782DA091AD3ECE158FC6A5F = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ButtonPropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; - D7A7F1AA9F313B0CCAAA73A0 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MathsFunctions.h"; path = "../../../../modules/juce_core/maths/juce_MathsFunctions.h"; sourceTree = "SOURCE_ROOT"; }; D800DE818BEDBF4579D15B1D = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_AppleRemote.mm"; path = "../../../../modules/juce_gui_extra/native/juce_mac_AppleRemote.mm"; sourceTree = "SOURCE_ROOT"; }; D926E13AB5AD647A7A00F486 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Network.cpp"; path = "../../../../modules/juce_core/native/juce_linux_Network.cpp"; sourceTree = "SOURCE_ROOT"; }; D9342535EA61901A1AD816C6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_WebBrowserComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_linux_WebBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; + D9E59DE07A815AB303A297D9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_data_structures.mm"; path = "../../../../modules/juce_data_structures/juce_data_structures.mm"; sourceTree = "SOURCE_ROOT"; }; + DD985A60FB76E976AF91852D = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SHA256.h"; path = "../../../../modules/juce_cryptography/hashing/juce_SHA256.h"; sourceTree = "SOURCE_ROOT"; }; + E5D6C36496F5BC84D7213BE8 = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; + E60E28D1B7491047DEA236AE = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ProjectContentComponent.h"; path = "../../Source/Project/jucer_ProjectContentComponent.h"; sourceTree = "SOURCE_ROOT"; }; + E70CA21960A64CCB835725FF = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ProjectType.cpp"; path = "../../Source/Project/jucer_ProjectType.cpp"; sourceTree = "SOURCE_ROOT"; }; + E7F7033084AC10FB77B0F77A = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ConfigPage.cpp"; path = "../../Source/Project/jucer_ConfigPage.cpp"; sourceTree = "SOURCE_ROOT"; }; + E96597BBC6A98255B51B94DC = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = System/Library/Frameworks/IOKit.framework; sourceTree = SDKROOT; }; + 25F52316D256B4534BED16D1 = { isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Introjucer.app; sourceTree = "BUILT_PRODUCTS_DIR"; }; + CF8011B3C67B609032974DA5 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_NewCppFileTemplate.cpp"; path = "../../Source/BinaryData/jucer_NewCppFileTemplate.cpp"; sourceTree = "SOURCE_ROOT"; }; + D2F80DA0946A5EE01FC016CA = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_UTF32.h"; path = "../../../../modules/juce_core/text/juce_CharPointer_UTF32.h"; sourceTree = "SOURCE_ROOT"; }; + D526C38D581425949BA0E4AC = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_FilePreviewComponent.h"; path = "../../Source/Application/jucer_FilePreviewComponent.h"; sourceTree = "SOURCE_ROOT"; }; + D7A7F1AA9F313B0CCAAA73A0 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MathsFunctions.h"; path = "../../../../modules/juce_core/maths/juce_MathsFunctions.h"; sourceTree = "SOURCE_ROOT"; }; D95D7B49EC6C6BDCB5A1B988 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_MessageManager.mm"; path = "../../../../modules/juce_events/native/juce_ios_MessageManager.mm"; sourceTree = "SOURCE_ROOT"; }; D9B077E2ECDDA94961E134D7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringPairArray.h"; path = "../../../../modules/juce_core/text/juce_StringPairArray.h"; sourceTree = "SOURCE_ROOT"; }; - D9E59DE07A815AB303A297D9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_data_structures.mm"; path = "../../../../modules/juce_data_structures/juce_data_structures.mm"; sourceTree = "SOURCE_ROOT"; }; DB20268A566DABEAE3F2CBEE = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RectanglePlacement.cpp"; path = "../../../../modules/juce_graphics/placement/juce_RectanglePlacement.cpp"; sourceTree = "SOURCE_ROOT"; }; DB876F7873F42DC685A58CA7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_JPEGLoader.cpp"; path = "../../../../modules/juce_graphics/image_formats/juce_JPEGLoader.cpp"; sourceTree = "SOURCE_ROOT"; }; DC5E7FF30B01118F6DAEC38F = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Time.cpp"; path = "../../../../modules/juce_core/time/juce_Time.cpp"; sourceTree = "SOURCE_ROOT"; }; DCCB75165B7C73A589498E87 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Windowing.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_linux_Windowing.cpp"; sourceTree = "SOURCE_ROOT"; }; DD00494140C86144306A9356 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Array.h"; path = "../../../../modules/juce_core/containers/juce_Array.h"; sourceTree = "SOURCE_ROOT"; }; DD2494D5F1C081898D616AF5 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyListener.cpp"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyListener.cpp"; sourceTree = "SOURCE_ROOT"; }; - DD985A60FB76E976AF91852D = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SHA256.h"; path = "../../../../modules/juce_cryptography/hashing/juce_SHA256.h"; sourceTree = "SOURCE_ROOT"; }; DE40B42B57F29C650CB7F2AD = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RecentlyOpenedFilesList.h"; path = "../../../../modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.h"; sourceTree = "SOURCE_ROOT"; }; DE5F3C9EF6BFFDE73AF9E7FC = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DirectoryContentsDisplayComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; DE8DF5D263F40F65581CFDE4 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChildProcess.cpp"; path = "../../../../modules/juce_core/threads/juce_ChildProcess.cpp"; sourceTree = "SOURCE_ROOT"; }; @@ -678,12 +681,10 @@ E530742870F07704E9616358 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarItemComponent.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.h"; sourceTree = "SOURCE_ROOT"; }; E54D0994D31E20A0A05EBA2B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SystemTrayIconComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.h"; sourceTree = "SOURCE_ROOT"; }; E570E57CC1FCEF78B54A7084 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileOutputStream.h"; path = "../../../../modules/juce_core/files/juce_FileOutputStream.h"; sourceTree = "SOURCE_ROOT"; }; - E60E28D1B7491047DEA236AE = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ProjectContentComponent.h"; path = "../../Source/Project/jucer_ProjectContentComponent.h"; sourceTree = "SOURCE_ROOT"; }; E642193A9990C48CFB6479A9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileListComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileListComponent.h"; sourceTree = "SOURCE_ROOT"; }; E654E3A3CD45A888C5F773DF = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MenuBarModel.h"; path = "../../../../modules/juce_gui_basics/menus/juce_MenuBarModel.h"; sourceTree = "SOURCE_ROOT"; }; E65A820D34BF39478B7C5925 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_DocumentEditorComponent.h"; path = "../../Source/Application/jucer_DocumentEditorComponent.h"; sourceTree = "SOURCE_ROOT"; }; E6F5CEC32EDC917B054467EF = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ReadWriteLock.cpp"; path = "../../../../modules/juce_core/threads/juce_ReadWriteLock.cpp"; sourceTree = "SOURCE_ROOT"; }; - E70CA21960A64CCB835725FF = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ProjectType.cpp"; path = "../../Source/Project/jucer_ProjectType.cpp"; sourceTree = "SOURCE_ROOT"; }; E73C7E17116F6085765622E3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Drawable.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_Drawable.h"; sourceTree = "SOURCE_ROOT"; }; E7A4604F766ABC8BE26C94A1 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeParallelogram.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeParallelogram.cpp"; sourceTree = "SOURCE_ROOT"; }; E7B6A0CBA0D27A095E83F5B7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_WebBrowserComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_win32_WebBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; @@ -767,10 +768,13 @@ 563091B0916AD9AAA36C7DC5 ); name = Application; sourceTree = ""; }; 891F84627A03FA733F37A199 = { isa = PBXGroup; children = ( 93D03B2BC76998A3BDA747E8, + E7F7033084AC10FB77B0F77A, + C2080119AEDFDE0D477756FA, 6FA01AEDB9DB70FD1EA6D380, C7B47372A9D5970E3D9A5400, F797071D88542C813CF7222A, 7211101FFA28400ADBB1D47A, + AFEBD8423B07599B1DE175A3, F1163B7856FDABA413A88D90, 5852830ECC222BA36A30EC20, 69A5D13490A62DAE9A7D5A22, @@ -779,8 +783,6 @@ BF3CEF080FA013E2778DCE90, 86E468DE6556BB2AD76A3D80, E60E28D1B7491047DEA236AE, - ADDCB0920D467DF2A309A5E3, - 2CFEE0E15C0ABF07EFE27FBF, 4BAF0975F0958432B17D0D41, 922DB1DA01DAF63CE86B5E53, E70CA21960A64CCB835725FF, @@ -1607,7 +1609,6 @@ 0FFEF043CA89142B18C79ABE, 92ABB8016546F41128399E9D ); name = Source; sourceTree = ""; }; EA0BCC969703B2D179089E55 = { isa = XCBuildConfiguration; buildSettings = { - SRCROOT = "../.."; HEADER_SEARCH_PATHS = "../../JuceLibraryCode $(inherited)"; GCC_OPTIMIZATION_LEVEL = 0; INFOPLIST_FILE = Info.plist; @@ -1624,7 +1625,6 @@ "DEBUG=1", "JUCER_XCODE_MAC_F6D2F4CF=1"); }; name = Debug; }; B159CF4275B8A90122629FF4 = { isa = XCBuildConfiguration; buildSettings = { - SRCROOT = "../.."; ARCHS = "$(ARCHS_STANDARD_32_BIT)"; HEADER_SEARCH_PATHS = "../../JuceLibraryCode $(inherited)"; GCC_OPTIMIZATION_LEVEL = 3; @@ -1687,13 +1687,13 @@ 95B44E6C74B1DED31DBE37EB, AA9D0B8E23F3D87A23DE9F8A, 244BA1BDA5FAA465EA3F9C6D, + D1A1998A202A88C617C9AB73, 349B4C837D996E71E08657A5, 3FCA61C401007B243E2E9035, 5BC89E7905397ABECD25ACCD, FBE57B26FE59319AA2E8B59D, 30B921C38DCEE787B294B746, 676D2E1E750E61AA2FAA335E, - BB1D52AE45F40BEDCEBC993F, 9CBD0A9A700D28081C8182C5, 8012E6487639A7368E4C4470, B18DEBB2CBB335AFAE249E8E, diff --git a/extras/Introjucer/Builds/VisualStudio2005/The Introjucer.vcproj b/extras/Introjucer/Builds/VisualStudio2005/The Introjucer.vcproj index c3246168b9..7ea27cda4f 100644 --- a/extras/Introjucer/Builds/VisualStudio2005/The Introjucer.vcproj +++ b/extras/Introjucer/Builds/VisualStudio2005/The Introjucer.vcproj @@ -150,10 +150,13 @@ + + + @@ -162,8 +165,6 @@ - - diff --git a/extras/Introjucer/Builds/VisualStudio2008/The Introjucer.vcproj b/extras/Introjucer/Builds/VisualStudio2008/The Introjucer.vcproj index 989a3085b8..6399f860e0 100644 --- a/extras/Introjucer/Builds/VisualStudio2008/The Introjucer.vcproj +++ b/extras/Introjucer/Builds/VisualStudio2008/The Introjucer.vcproj @@ -150,10 +150,13 @@ + + + @@ -162,8 +165,6 @@ - - diff --git a/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj b/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj index 6676978c4c..d67c75f5af 100644 --- a/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj +++ b/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj @@ -133,13 +133,13 @@ + - @@ -976,13 +976,14 @@ + + - diff --git a/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj.filters b/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj.filters index 06c5dea17d..51672cbd61 100644 --- a/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj.filters +++ b/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj.filters @@ -250,6 +250,9 @@ The Introjucer\Application + + The Introjucer\Project + The Introjucer\Project @@ -268,9 +271,6 @@ The Introjucer\Project - - The Introjucer\Project - The Introjucer\Project @@ -1227,12 +1227,18 @@ The Introjucer\Project + + The Introjucer\Project + The Introjucer\Project The Introjucer\Project + + The Introjucer\Project + The Introjucer\Project @@ -1245,9 +1251,6 @@ The Introjucer\Project - - The Introjucer\Project - The Introjucer\Project diff --git a/extras/Introjucer/Introjucer.jucer b/extras/Introjucer/Introjucer.jucer index 6e46e00664..7f93feb06f 100644 --- a/extras/Introjucer/Introjucer.jucer +++ b/extras/Introjucer/Introjucer.jucer @@ -102,6 +102,10 @@ + + + - - (JUCEApplication::getInstance()); @@ -405,13 +403,17 @@ public: return ModuleList::isJuceOrModulesFolder (list.getModulesFolder()); } - ScopedPointer menuModel; + //============================================================================== + virtual void doExtraInitialisation() {} + virtual void addExtraConfigItems (Project&, TreeViewItem&) {} virtual Component* createProjectContentComponent() const { return new ProjectContentComponent(); } + //============================================================================== + ScopedPointer menuModel; MainWindowList mainWindowList; private: diff --git a/extras/Introjucer/Source/Project/jucer_ConfigPage.cpp b/extras/Introjucer/Source/Project/jucer_ConfigPage.cpp new file mode 100644 index 0000000000..4a98bc7a03 --- /dev/null +++ b/extras/Introjucer/Source/Project/jucer_ConfigPage.cpp @@ -0,0 +1,478 @@ +/* + ============================================================================== + + 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. + + ============================================================================== +*/ + +#include "../Project Saving/jucer_ProjectExporter.h" +#include "../Application/jucer_Application.h" +#include "jucer_ConfigPage.h" +#include "jucer_ModulesPanel.h" + + +//============================================================================== +void SettingsTreeViewItemBase::showSettingsPage (Component* content) +{ + content->setComponentID (getUniqueName()); + + ScopedPointer comp (content); + ProjectContentComponent* pcc = getProjectContentComponent(); + + if (pcc != nullptr) + pcc->setEditorComponent (new PropertyPanelViewport (comp.release()), nullptr); +} + +void SettingsTreeViewItemBase::closeSettingsPage() +{ + ProjectContentComponent* pcc = getProjectContentComponent(); + + if (pcc != nullptr) + { + PropertyPanelViewport* ppv = dynamic_cast (pcc->getEditorComponent()); + + if (ppv != nullptr && ppv->viewport.getViewedComponent()->getComponentID() == getUniqueName()) + pcc->hideEditor(); + } +} + +//============================================================================== +namespace ProjectSettingsTreeClasses +{ + class ConfigItem : public SettingsTreeViewItemBase + { + public: + ConfigItem (const ProjectExporter::BuildConfiguration::Ptr& config_, const String& exporterName_) + : config (config_), exporterName (exporterName_), configTree (config->config) + { + jassert (config != nullptr); + configTree.addListener (this); + } + + bool isRoot() const { return false; } + bool isMissing() { return false; } + bool canBeSelected() const { return true; } + bool mightContainSubItems() { return false; } + String getUniqueName() const { return config->project.getProjectUID() + "_config_" + config->getName(); } + String getRenamingName() const { return getDisplayName(); } + String getDisplayName() const { return config->getName(); } + void setName (const String&) {} + const Drawable* getIcon() const { return StoredSettings::getInstance()->getCogIcon(); } + + void showDocument() { showSettingsPage (new SettingsComp (config, exporterName)); } + void itemOpennessChanged (bool) {} + + void deleteItem() + { + if (AlertWindow::showOkCancelBox (AlertWindow::WarningIcon, "Delete Configuration", + "Are you sure you want to delete this configuration?")) + { + closeSettingsPage(); + config->removeFromExporter(); + } + } + + void showPopupMenu() + { + PopupMenu menu; + menu.addItem (1, "Create a copy of this configuration"); + menu.addSeparator(); + menu.addItem (2, "Delete this configuration"); + + launchPopupMenu (menu); + } + + void handlePopupMenuResult (int resultCode) + { + if (resultCode == 2) + { + deleteAllSelectedItems(); + } + else if (resultCode == 1) + { + for (Project::ExporterIterator exporter (config->project); exporter.next();) + { + if (config->config.isAChildOf (exporter.exporter->settings)) + { + exporter.exporter->addNewConfiguration (config); + break; + } + } + } + } + + var getDragSourceDescription() + { + return getParentItem()->getUniqueName() + "||" + config->getName(); + } + + void valueTreePropertyChanged (ValueTree&, const Identifier&) { repaintItem(); } + + private: + ProjectExporter::BuildConfiguration::Ptr config; + String exporterName; + ValueTree configTree; + + //============================================================================== + class SettingsComp : public Component + { + public: + SettingsComp (ProjectExporter::BuildConfiguration* config, const String& exporterName) + { + addAndMakeVisible (&group); + + PropertyListBuilder props; + config->createPropertyEditors (props); + group.setProperties (props); + group.setName (exporterName + " / " + config->getName()); + parentSizeChanged(); + } + + void parentSizeChanged() { updateSize (*this, group); } + + private: + PropertyGroup group; + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (SettingsComp); + }; + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ConfigItem); + }; + + //============================================================================== + class ExporterItem : public SettingsTreeViewItemBase + { + public: + ExporterItem (Project& project_, ProjectExporter* exporter_, int exporterIndex_) + : project (project_), exporter (exporter_), configListTree (exporter->getConfigurations()), + exporterIndex (exporterIndex_) + { + configListTree.addListener (this); + jassert (exporter != nullptr); + } + + bool isRoot() const { return false; } + bool canBeSelected() const { return true; } + bool mightContainSubItems() { return exporter->getNumConfigurations() > 0; } + String getUniqueName() const { return project.getProjectUID() + "_exporter_" + String (exporterIndex); } + String getRenamingName() const { return getDisplayName(); } + String getDisplayName() const { return exporter->getName(); } + void setName (const String&) {} + bool isMissing() { return false; } + const Drawable* getIcon() const { return LookAndFeel::getDefaultLookAndFeel().getDefaultDocumentFileImage(); } + void showDocument() { showSettingsPage (new SettingsComp (exporter)); } + + void deleteItem() + { + if (AlertWindow::showOkCancelBox (AlertWindow::WarningIcon, "Delete Exporter", + "Are you sure you want to delete this export target?")) + { + closeSettingsPage(); + ValueTree parent (exporter->settings.getParent()); + parent.removeChild (exporter->settings, project.getUndoManagerFor (parent)); + } + } + + void addSubItems() + { + for (ProjectExporter::ConfigIterator config (*exporter); config.next();) + addSubItem (new ConfigItem (config.config, exporter->getName())); + } + + void showPopupMenu() + { + PopupMenu menu; + menu.addItem (1, "Add a new configuration"); + menu.addSeparator(); + menu.addItem (2, "Delete this exporter"); + + launchPopupMenu (menu); + } + + void handlePopupMenuResult (int resultCode) + { + if (resultCode == 2) + deleteAllSelectedItems(); + else if (resultCode == 1) + exporter->addNewConfiguration (nullptr); + } + + var getDragSourceDescription() + { + return getParentItem()->getUniqueName() + "/" + String (exporterIndex); + } + + bool isInterestedInDragSource (const DragAndDropTarget::SourceDetails& dragSourceDetails) + { + return dragSourceDetails.description.toString().startsWith (getUniqueName()); + } + + void itemDropped (const DragAndDropTarget::SourceDetails& dragSourceDetails, int insertIndex) + { + const int oldIndex = indexOfConfig (dragSourceDetails.description.toString().fromLastOccurrenceOf ("||", false, false)); + + if (oldIndex >= 0) + configListTree.moveChild (oldIndex, insertIndex, project.getUndoManagerFor (configListTree)); + } + + int indexOfConfig (const String& configName) + { + int i = 0; + for (ProjectExporter::ConfigIterator config (*exporter); config.next(); ++i) + if (config->getName() == configName) + return i; + + return -1; + } + + //============================================================================== + void valueTreeChildAdded (ValueTree& parentTree, ValueTree&) { refreshIfNeeded (parentTree); } + void valueTreeChildRemoved (ValueTree& parentTree, ValueTree&) { refreshIfNeeded (parentTree); } + void valueTreeChildOrderChanged (ValueTree& parentTree) { refreshIfNeeded (parentTree); } + + void refreshIfNeeded (ValueTree& changedTree) + { + if (changedTree == configListTree) + refreshSubItems(); + } + + private: + Project& project; + ScopedPointer exporter; + ValueTree configListTree; + int exporterIndex; + + //============================================================================== + class SettingsComp : public Component + { + public: + SettingsComp (ProjectExporter* exporter) + { + addAndMakeVisible (&group); + + PropertyListBuilder props; + exporter->createPropertyEditors (props); + group.setProperties (props); + group.setName ("Export target: " + exporter->getName()); + parentSizeChanged(); + } + + void parentSizeChanged() { updateSize (*this, group); } + + private: + PropertyGroup group; + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (SettingsComp); + }; + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ExporterItem); + }; + + //============================================================================== + class ModulesItem : public SettingsTreeViewItemBase + { + public: + ModulesItem (Project& project_) : project (project_) {} + + bool isRoot() const { return false; } + bool canBeSelected() const { return true; } + bool mightContainSubItems() { return false; } + String getUniqueName() const { return project.getProjectUID() + "_modules"; } + String getRenamingName() const { return getDisplayName(); } + String getDisplayName() const { return "Modules"; } + void setName (const String&) {} + bool isMissing() { return false; } + const Drawable* getIcon() const { return project.getMainGroup().getIcon(); } + void showDocument() { showSettingsPage (new SettingsComp (project)); } + + private: + Project& project; + + //============================================================================== + class SettingsComp : public Component + { + public: + SettingsComp (Project& project_) : project (project_) + { + addAndMakeVisible (&group); + + PropertyListBuilder props; + props.add (new ModulesPanel (project)); + group.setProperties (props); + group.setName ("Modules"); + + parentSizeChanged(); + } + + void parentSizeChanged() + { + updateSize (*this, group); + } + + private: + Project& project; + var lastProjectType; + PropertyGroup group; + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (SettingsComp); + }; + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ModulesItem); + }; + + //============================================================================== + class RootItem : public SettingsTreeViewItemBase + { + public: + RootItem (Project& project_) + : project (project_), exportersTree (project_.getExporters()) + { + exportersTree.addListener (this); + } + + bool isRoot() const { return true; } + String getRenamingName() const { return getDisplayName(); } + String getDisplayName() const { return project.getTitle(); } + void setName (const String&) {} + bool isMissing() { return false; } + const Drawable* getIcon() const { return project.getMainGroup().getIcon(); } + void showDocument() { showSettingsPage (new SettingsComp (project)); } + bool canBeSelected() const { return true; } + bool mightContainSubItems() { return project.getNumExporters() > 0; } + String getUniqueName() const { return project.getProjectUID() + "_config_root"; } + + void addSubItems() + { + addSubItem (new ModulesItem (project)); + + int i = 0; + for (Project::ExporterIterator exporter (project); exporter.next(); ++i) + addSubItem (new ExporterItem (project, exporter.exporter.release(), i)); + + JucerApplication::getApp()->addExtraConfigItems (project, *this); + } + + void showPopupMenu() + { + PopupMenu menu; + + const StringArray exporters (ProjectExporter::getExporterNames()); + + for (int i = 0; i < exporters.size(); ++i) + menu.addItem (i + 1, "Create a new " + exporters[i] + " target"); + + launchPopupMenu (menu); + } + + void handlePopupMenuResult (int resultCode) + { + if (resultCode > 0) + { + String exporterName (ProjectExporter::getExporterNames() [resultCode - 1]); + + if (exporterName.isNotEmpty()) + project.addNewExporter (exporterName); + } + } + + bool isInterestedInDragSource (const DragAndDropTarget::SourceDetails& dragSourceDetails) + { + return dragSourceDetails.description.toString().startsWith (getUniqueName()); + } + + void itemDropped (const DragAndDropTarget::SourceDetails& dragSourceDetails, int insertIndex) + { + int oldIndex = dragSourceDetails.description.toString().getTrailingIntValue(); + exportersTree.moveChild (oldIndex, insertIndex, project.getUndoManagerFor (exportersTree)); + } + + //============================================================================== + void valueTreeChildAdded (ValueTree& parentTree, ValueTree&) { refreshIfNeeded (parentTree); } + void valueTreeChildRemoved (ValueTree& parentTree, ValueTree&) { refreshIfNeeded (parentTree); } + void valueTreeChildOrderChanged (ValueTree& parentTree) { refreshIfNeeded (parentTree); } + + void refreshIfNeeded (ValueTree& changedTree) + { + if (changedTree == exportersTree) + refreshSubItems(); + } + + private: + Project& project; + ValueTree exportersTree; + + //============================================================================== + class SettingsComp : public Component, + private ChangeListener + { + public: + SettingsComp (Project& project_) + : project (project_) + { + addAndMakeVisible (&group); + + updatePropertyList(); + project.addChangeListener (this); + } + + ~SettingsComp() + { + project.removeChangeListener (this); + } + + void parentSizeChanged() + { + updateSize (*this, group); + } + + void updatePropertyList() + { + PropertyListBuilder props; + project.createPropertyEditors (props); + group.setProperties (props); + group.setName ("Project Settings"); + + lastProjectType = project.getProjectTypeValue().getValue(); + parentSizeChanged(); + } + + void changeListenerCallback (ChangeBroadcaster*) + { + if (lastProjectType != project.getProjectTypeValue().getValue()) + updatePropertyList(); + } + + private: + Project& project; + var lastProjectType; + PropertyGroup group; + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (SettingsComp); + }; + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (RootItem); + }; +} + +JucerTreeViewBase* createProjectConfigTreeViewRoot (Project& project) +{ + return new ProjectSettingsTreeClasses::RootItem (project); +} diff --git a/extras/Introjucer/Source/Project/jucer_ConfigPage.h b/extras/Introjucer/Source/Project/jucer_ConfigPage.h new file mode 100644 index 0000000000..fbbb272cf6 --- /dev/null +++ b/extras/Introjucer/Source/Project/jucer_ConfigPage.h @@ -0,0 +1,163 @@ +/* + ============================================================================== + + 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 __JUCER_PROJECTINFORMATIONCOMPONENT_H_30FFCD07__ +#define __JUCER_PROJECTINFORMATIONCOMPONENT_H_30FFCD07__ + +#include "jucer_Project.h" +#include "../Utility/jucer_JucerTreeViewBase.h" + +//============================================================================== +JucerTreeViewBase* createProjectConfigTreeViewRoot (Project& project); + + +//============================================================================== +class PropertyGroup : public Component +{ +public: + PropertyGroup() {} + + void setProperties (const PropertyListBuilder& newProps) + { + properties.clear(); + properties.addArray (newProps.components); + + for (int i = properties.size(); --i >= 0;) + addAndMakeVisible (properties.getUnchecked(i)); + } + + int updateSize (int x, int y, int width) + { + int height = 36; + + for (int i = 0; i < properties.size(); ++i) + { + PropertyComponent* pp = properties.getUnchecked(i); + pp->setBounds (10, height, width - 20, pp->getPreferredHeight()); + height += pp->getHeight(); + } + + height += 16; + setBounds (x, y, width, height); + return height; + } + + void paint (Graphics& g) + { + g.setColour (Colours::white.withAlpha (0.3f)); + g.fillRect (0, 28, getWidth(), getHeight() - 38); + + g.setColour (Colours::black.withAlpha (0.4f)); + g.drawRect (0, 28, getWidth(), getHeight() - 38); + + g.setFont (Font (14.0f, Font::bold)); + g.setColour (Colours::black); + g.drawFittedText (getName(), 12, 0, getWidth() - 16, 26, Justification::bottomLeft, 1); + } + + OwnedArray properties; + +private: + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (PropertyGroup); +}; + +//============================================================================== +class PropertyPanelViewport : public Component +{ +public: + PropertyPanelViewport (Component* content) + { + addAndMakeVisible (&viewport); + addAndMakeVisible (&rolloverHelp); + viewport.setViewedComponent (content, true); + } + + void paint (Graphics& g) + { + g.setTiledImageFill (ImageCache::getFromMemory (BinaryData::brushed_aluminium_png, + BinaryData::brushed_aluminium_pngSize), + 0, 0, 1.0f); + g.fillAll(); + drawRecessedShadows (g, getWidth(), getHeight(), 14); + } + + void resized() + { + Rectangle r (getLocalBounds()); + rolloverHelp.setBounds (r.removeFromBottom (70).reduced (10, 0)); + viewport.setBounds (r); + } + + Viewport viewport; + RolloverHelpComp rolloverHelp; + +private: + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (PropertyPanelViewport); +}; + +//============================================================================== +class SettingsTreeViewItemBase : public JucerTreeViewBase, + public ValueTree::Listener +{ +public: + SettingsTreeViewItemBase() {} + + void showSettingsPage (Component* content); + void closeSettingsPage(); + + void deleteAllSelectedItems() + { + TreeView* const tree = getOwnerView(); + jassert (tree->getNumSelectedItems() <= 1); // multi-select should be disabled + + if (SettingsTreeViewItemBase* s = dynamic_cast (tree->getSelectedItem (0))) + s->deleteItem(); + } + + void itemOpennessChanged (bool isNowOpen) + { + if (isNowOpen) + refreshSubItems(); + } + + void valueTreePropertyChanged (ValueTree&, const Identifier&) {} + void valueTreeChildAdded (ValueTree&, ValueTree&) {} + void valueTreeChildRemoved (ValueTree&, ValueTree&) {} + void valueTreeChildOrderChanged (ValueTree&) {} + void valueTreeParentChanged (ValueTree&) {} + + static void updateSize (Component& comp, PropertyGroup& group) + { + const int width = jmax (550, comp.getParentWidth() - 20); + + int y = 0; + y += group.updateSize (12, y, width - 12); + + comp.setSize (width, y); + } +}; + + +#endif // __JUCER_PROJECTINFORMATIONCOMPONENT_H_30FFCD07__ diff --git a/extras/Introjucer/Source/Project/jucer_ModulesPanel.h b/extras/Introjucer/Source/Project/jucer_ModulesPanel.h new file mode 100644 index 0000000000..e86f86fbc6 --- /dev/null +++ b/extras/Introjucer/Source/Project/jucer_ModulesPanel.h @@ -0,0 +1,504 @@ +/* + ============================================================================== + + 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 __JUCER_MODULESPANEL_H_D0C12034__ +#define __JUCER_MODULESPANEL_H_D0C12034__ + + +class ModulesPanel : public PropertyComponent, + public FilenameComponentListener, + public ButtonListener +{ +public: + ModulesPanel (Project& project_) + : PropertyComponent ("Modules", 500), + project (project_), + modulesLocation ("modules", ModuleList::getLocalModulesFolder (&project), + true, true, false, "*", String::empty, + "Select a folder containing your JUCE modules..."), + modulesLabel (String::empty, "Module source folder:"), + updateModulesButton ("Check for module updates..."), + moduleListBox (moduleList), + copyingMessage (project_, moduleList) + { + moduleList.rescan (ModuleList::getLocalModulesFolder (&project)); + + addAndMakeVisible (&modulesLocation); + modulesLocation.setBounds ("150, 3, parent.width - 180, 28"); + modulesLocation.addListener (this); + + modulesLabel.attachToComponent (&modulesLocation, true); + + addAndMakeVisible (&updateModulesButton); + updateModulesButton.setBounds ("parent.width - 175, 3, parent.width - 4, 28"); + updateModulesButton.addListener (this); + + moduleListBox.setOwner (this); + addAndMakeVisible (&moduleListBox); + moduleListBox.setBounds ("4, 31, parent.width / 2 - 4, parent.height - 32"); + + addAndMakeVisible (©ingMessage); + copyingMessage.setBounds ("4, parent.height - 30, parent.width - 4, parent.height - 1"); + copyingMessage.refresh(); + } + + void filenameComponentChanged (FilenameComponent*) + { + moduleList.rescan (modulesLocation.getCurrentFile()); + modulesLocation.setCurrentFile (moduleList.getModulesFolder(), false, false); + ModuleList::setLocalModulesFolder (moduleList.getModulesFolder()); + moduleListBox.refresh(); + } + + void buttonClicked (Button*) + { + JuceUpdater::show (moduleList, getTopLevelComponent(), ""); + + filenameComponentChanged (nullptr); + } + + bool isEnabled (const ModuleList::Module* m) const + { + return project.isModuleEnabled (m->uid); + } + + void setEnabled (const ModuleList::Module* m, bool enable) + { + if (enable) + project.addModule (m->uid, true); + else + project.removeModule (m->uid); + + refresh(); + } + + bool areDependenciesMissing (const ModuleList::Module* m) + { + return moduleList.getExtraDependenciesNeeded (project, *m).size() > 0; + } + + void selectionChanged (const ModuleList::Module* selectedModule) + { + settings = nullptr; + + if (selectedModule != nullptr) + { + addAndMakeVisible (settings = new ModuleSettingsPanel (project, moduleList, selectedModule->uid)); + settings->setBounds ("parent.width / 2 + 1, 31, parent.width - 3, parent.height - 32"); + } + + copyingMessage.refresh(); + } + + void refresh() + { + moduleListBox.refresh(); + + if (settings != nullptr) + settings->refreshAll(); + + copyingMessage.refresh(); + } + + void paint (Graphics& g) // (overridden to avoid drawing the name) + { + getLookAndFeel().drawPropertyComponentBackground (g, getWidth(), getHeight(), *this); + } + + //============================================================================== + class ModuleSelectionListBox : public ListBox, + public ListBoxModel + { + public: + ModuleSelectionListBox (ModuleList& list_) + : list (list_), owner (nullptr) + { + setColour (ListBox::backgroundColourId, Colours::white.withAlpha (0.4f)); + setTooltip ("Use this list to select which modules should be included in your app.\n" + "Any modules which have missing dependencies will be shown in red."); + } + + void setOwner (ModulesPanel* owner_) + { + owner = owner_; + setModel (this); + } + + void refresh() + { + updateContent(); + repaint(); + } + + int getNumRows() + { + return list.modules.size(); + } + + void paintListBoxItem (int rowNumber, Graphics& g, int width, int height, bool rowIsSelected) + { + if (rowIsSelected) + g.fillAll (findColour (TextEditor::highlightColourId)); + + const ModuleList::Module* const m = list.modules [rowNumber]; + + if (m != nullptr) + { + const float tickSize = height * 0.7f; + + getLookAndFeel().drawTickBox (g, *this, (height - tickSize) / 2, (height - tickSize) / 2, tickSize, tickSize, + owner->isEnabled (m), true, false, false); + + if (owner->isEnabled (m) && owner->areDependenciesMissing (m)) + g.setColour (Colours::red); + else + g.setColour (Colours::black); + + g.setFont (Font (height * 0.7f, Font::bold)); + g.drawFittedText (m->uid, height, 0, 200, height, Justification::centredLeft, 1); + + g.setFont (Font (height * 0.55f, Font::italic)); + g.drawText (m->name, height + 200, 0, width - height - 200, height, Justification::centredLeft, true); + } + } + + void listBoxItemClicked (int row, const MouseEvent& e) + { + if (e.x < getRowHeight()) + flipRow (row); + } + + void listBoxItemDoubleClicked (int row, const MouseEvent& e) + { + flipRow (row); + } + + void returnKeyPressed (int row) + { + flipRow (row); + } + + void selectedRowsChanged (int lastRowSelected) + { + owner->selectionChanged (list.modules [lastRowSelected]); + } + + void flipRow (int row) + { + const ModuleList::Module* const m = list.modules [row]; + + if (m != nullptr) + owner->setEnabled (m, ! owner->isEnabled (m)); + } + + private: + ModuleList& list; + ModulesPanel* owner; + }; + + //============================================================================== + class ModuleSettingsPanel : public PropertyPanel + { + public: + ModuleSettingsPanel (Project& project_, ModuleList& moduleList_, const String& moduleID_) + : project (project_), moduleList (moduleList_), moduleID (moduleID_) + { + refreshAll(); + } + + void refreshAll() + { + setEnabled (project.isModuleEnabled (moduleID)); + + clear(); + PropertyListBuilder props; + + ScopedPointer module (moduleList.loadModule (moduleID)); + + if (module != nullptr) + { + props.add (new ModuleInfoComponent (project, moduleList, moduleID)); + + if (project.isModuleEnabled (moduleID)) + { + const ModuleList::Module* m = moduleList.findModuleInfo (moduleID); + if (m != nullptr && moduleList.getExtraDependenciesNeeded (project, *m).size() > 0) + props.add (new MissingDependenciesComponent (project, moduleList, moduleID)); + } + + props.add (new BooleanPropertyComponent (project.shouldShowAllModuleFilesInProject (moduleID), + "Add source to project", "Make module files browsable in projects"), + "If this is enabled, then the entire source tree from this module will be shown inside your project, " + "making it easy to browse/edit the module's classes. If disabled, then only the minimum number of files " + "required to compile it will appear inside your project."); + + props.add (new BooleanPropertyComponent (project.shouldCopyModuleFilesLocally (moduleID), + "Create local copy", "Copy the module into the project folder"), + "If this is enabled, then a local copy of the entire module will be made inside your project (in the auto-generated JuceLibraryFiles folder), " + "so that your project will be self-contained, and won't need to contain any references to files in other folders. " + "This also means that you can check the module into your source-control system to make sure it is always in sync with your own code."); + + StringArray possibleValues; + possibleValues.add ("(Use Default)"); + possibleValues.add ("Enabled"); + possibleValues.add ("Disabled"); + + Array mappings; + mappings.add (Project::configFlagDefault); + mappings.add (Project::configFlagEnabled); + mappings.add (Project::configFlagDisabled); + + OwnedArray flags; + module->getConfigFlags (project, flags); + + for (int i = 0; i < flags.size(); ++i) + { + ChoicePropertyComponent* c = new ChoicePropertyComponent (flags[i]->value, flags[i]->symbol, possibleValues, mappings); + c->setTooltip (flags[i]->description); + props.add (c); + } + } + + addProperties (props.components); + } + + private: + Project& project; + ModuleList& moduleList; + String moduleID; + + //============================================================================== + class ModuleInfoComponent : public PropertyComponent + { + public: + ModuleInfoComponent (Project& project_, ModuleList& moduleList_, const String& moduleID_) + : PropertyComponent ("Module", 100), project (project_), moduleList (moduleList_), moduleID (moduleID_) + { + } + + void refresh() {} + + void paint (Graphics& g) + { + g.setColour (Colours::white.withAlpha (0.4f)); + g.fillRect (0, 0, getWidth(), getHeight() - 1); + + const ModuleList::Module* module = moduleList.findModuleInfo (moduleID); + + if (module != nullptr) + { + String text; + text << module->name << newLine << "Version: " << module->version << newLine << newLine + << module->description; + + GlyphArrangement ga; + ga.addJustifiedText (Font (13.0f), text, 4.0f, 16.0f, getWidth() - 8.0f, Justification::topLeft); + g.setColour (Colours::black); + ga.draw (g); + } + } + + private: + Project& project; + ModuleList& moduleList; + String moduleID; + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ModuleInfoComponent); + }; + + //============================================================================== + class MissingDependenciesComponent : public PropertyComponent, + public ButtonListener + { + public: + MissingDependenciesComponent (Project& project_, ModuleList& moduleList_, const String& moduleID_) + : PropertyComponent ("Dependencies", 100), + project (project_), moduleList (moduleList_), moduleID (moduleID_), + fixButton ("Enable Required Modules") + { + const ModuleList::Module* module = moduleList.findModuleInfo (moduleID); + + if (module != nullptr) + missingDependencies = moduleList.getExtraDependenciesNeeded (project, *module); + + addAndMakeVisible (&fixButton); + fixButton.setColour (TextButton::buttonColourId, Colours::red); + fixButton.setColour (TextButton::textColourOffId, Colours::white); + fixButton.setBounds ("right - 160, parent.height - 26, parent.width - 8, top + 22"); + fixButton.addListener (this); + } + + void refresh() {} + + void paint (Graphics& g) + { + g.setColour (Colours::white.withAlpha (0.4f)); + g.fillRect (0, 0, getWidth(), getHeight() - 1); + + String text ("This module requires the following dependencies:\n"); + text << missingDependencies.joinIntoString (", "); + + GlyphArrangement ga; + ga.addJustifiedText (Font (13.0f), text, 4.0f, 16.0f, getWidth() - 8.0f, Justification::topLeft); + g.setColour (Colours::red); + ga.draw (g); + } + + void buttonClicked (Button*) + { + bool isModuleCopiedLocally = project.shouldCopyModuleFilesLocally (moduleID).getValue(); + + for (int i = missingDependencies.size(); --i >= 0;) + project.addModule (missingDependencies[i], isModuleCopiedLocally); + + ModulesPanel* mp = findParentComponentOfClass(); + if (mp != nullptr) + mp->refresh(); + } + + private: + Project& project; + ModuleList& moduleList; + String moduleID; + StringArray missingDependencies; + TextButton fixButton; + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MissingDependenciesComponent); + }; + }; + + //============================================================================== + class ModuleCopyingInfo : public Component, + public ButtonListener, + public Timer + { + public: + ModuleCopyingInfo (Project& project_, ModuleList& list_) + : project (project_), list (list_), + copyModeButton ("Set Copying Mode...") + { + addAndMakeVisible (©ModeButton); + copyModeButton.setBounds ("4, parent.height / 2 - 10, 160, parent.height / 2 + 10"); + copyModeButton.addListener (this); + + startTimer (1500); + } + + void paint (Graphics& g) + { + g.setFont (11.0f); + g.setColour (Colours::darkred); + g.drawFittedText (getName(), copyModeButton.getRight() + 10, 0, + getWidth() - copyModeButton.getRight() - 16, getHeight(), + Justification::centredRight, 4); + } + + void refresh() + { + int numCopied, numNonCopied; + countCopiedModules (numCopied, numNonCopied); + + String newName; + + if (numCopied > 0 && numNonCopied > 0) + newName = "Warning! Some of your modules are set to use local copies, and others are using remote references.\n" + "This may create problems if some modules expect to share the same parent folder, so you may " + "want to make sure that they are all either copied or not."; + + if (project.isAudioPluginModuleMissing()) + newName = "Warning! Your project is an audio plugin, but you haven't enabled the 'juce_audio_plugin_client' module!"; + + if (newName != getName()) + { + setName (newName); + repaint(); + } + } + + void countCopiedModules (int& numCopied, int& numNonCopied) + { + numCopied = numNonCopied = 0; + + for (int i = list.modules.size(); --i >= 0;) + { + const String moduleID (list.modules.getUnchecked(i)->uid); + + if (project.isModuleEnabled (moduleID)) + { + if (project.shouldCopyModuleFilesLocally (moduleID).getValue()) + ++numCopied; + else + ++numNonCopied; + } + } + } + + void buttonClicked (Button*) + { + PopupMenu menu; + menu.addItem (1, "Enable local copying for all modules"); + menu.addItem (2, "Disable local copying for all modules"); + + menu.showMenuAsync (PopupMenu::Options().withTargetComponent (©ModeButton), + ModalCallbackFunction::forComponent (copyMenuItemChosen, this)); + } + + static void copyMenuItemChosen (int resultCode, ModuleCopyingInfo* comp) + { + if (resultCode > 0 && comp != nullptr) + comp->setCopyModeForAllModules (resultCode == 1); + } + + void setCopyModeForAllModules (bool copyEnabled) + { + for (int i = list.modules.size(); --i >= 0;) + project.shouldCopyModuleFilesLocally (list.modules.getUnchecked(i)->uid) = copyEnabled; + + refresh(); + } + + void timerCallback() + { + refresh(); + } + + private: + Project& project; + ModuleList& list; + TextButton copyModeButton; + }; + +private: + Project& project; + ModuleList moduleList; + FilenameComponent modulesLocation; + Label modulesLabel; + TextButton updateModulesButton; + ModuleSelectionListBox moduleListBox; + ModuleCopyingInfo copyingMessage; + ScopedPointer settings; +}; + +#endif diff --git a/extras/Introjucer/Source/Project/jucer_ProjectContentComponent.cpp b/extras/Introjucer/Source/Project/jucer_ProjectContentComponent.cpp index 40bf31fe1e..d154133c3f 100644 --- a/extras/Introjucer/Source/Project/jucer_ProjectContentComponent.cpp +++ b/extras/Introjucer/Source/Project/jucer_ProjectContentComponent.cpp @@ -26,7 +26,7 @@ #include "jucer_ProjectContentComponent.h" #include "../Application/jucer_MainWindow.h" #include "../Code Editor/jucer_SourceCodeEditor.h" -#include "jucer_ProjectInformationComponent.h" +#include "jucer_ConfigPage.h" #include "jucer_TreeViewTypes.h" #include "../Project Saving/jucer_ProjectExporter.h" diff --git a/extras/Introjucer/Source/Project/jucer_ProjectInformationComponent.cpp b/extras/Introjucer/Source/Project/jucer_ProjectInformationComponent.cpp deleted file mode 100644 index 06cdadd19a..0000000000 --- a/extras/Introjucer/Source/Project/jucer_ProjectInformationComponent.cpp +++ /dev/null @@ -1,1074 +0,0 @@ -/* - ============================================================================== - - 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. - - ============================================================================== -*/ - -#include "../Project Saving/jucer_ProjectExporter.h" -#include "jucer_Module.h" -#include "../Application/jucer_JuceUpdater.h" -#include "../Project/jucer_ProjectContentComponent.h" -#include "jucer_ProjectInformationComponent.h" - - -//============================================================================== -class ModulesPanel : public PropertyComponent, - public FilenameComponentListener, - public ButtonListener -{ -public: - ModulesPanel (Project& project_) - : PropertyComponent ("Modules", 500), - project (project_), - modulesLocation ("modules", ModuleList::getLocalModulesFolder (&project), - true, true, false, "*", String::empty, - "Select a folder containing your JUCE modules..."), - modulesLabel (String::empty, "Module source folder:"), - updateModulesButton ("Check for module updates..."), - moduleListBox (moduleList), - copyingMessage (project_, moduleList) - { - moduleList.rescan (ModuleList::getLocalModulesFolder (&project)); - - addAndMakeVisible (&modulesLocation); - modulesLocation.setBounds ("150, 3, parent.width - 180, 28"); - modulesLocation.addListener (this); - - modulesLabel.attachToComponent (&modulesLocation, true); - - addAndMakeVisible (&updateModulesButton); - updateModulesButton.setBounds ("parent.width - 175, 3, parent.width - 4, 28"); - updateModulesButton.addListener (this); - - moduleListBox.setOwner (this); - addAndMakeVisible (&moduleListBox); - moduleListBox.setBounds ("4, 31, parent.width / 2 - 4, parent.height - 32"); - - addAndMakeVisible (©ingMessage); - copyingMessage.setBounds ("4, parent.height - 30, parent.width - 4, parent.height - 1"); - copyingMessage.refresh(); - } - - void filenameComponentChanged (FilenameComponent*) - { - moduleList.rescan (modulesLocation.getCurrentFile()); - modulesLocation.setCurrentFile (moduleList.getModulesFolder(), false, false); - ModuleList::setLocalModulesFolder (moduleList.getModulesFolder()); - moduleListBox.refresh(); - } - - void buttonClicked (Button*) - { - JuceUpdater::show (moduleList, getTopLevelComponent(), ""); - - filenameComponentChanged (nullptr); - } - - bool isEnabled (const ModuleList::Module* m) const - { - return project.isModuleEnabled (m->uid); - } - - void setEnabled (const ModuleList::Module* m, bool enable) - { - if (enable) - project.addModule (m->uid, true); - else - project.removeModule (m->uid); - - refresh(); - } - - bool areDependenciesMissing (const ModuleList::Module* m) - { - return moduleList.getExtraDependenciesNeeded (project, *m).size() > 0; - } - - void selectionChanged (const ModuleList::Module* selectedModule) - { - settings = nullptr; - - if (selectedModule != nullptr) - { - addAndMakeVisible (settings = new ModuleSettingsPanel (project, moduleList, selectedModule->uid)); - settings->setBounds ("parent.width / 2 + 1, 31, parent.width - 3, parent.height - 32"); - } - - copyingMessage.refresh(); - } - - void refresh() - { - moduleListBox.refresh(); - - if (settings != nullptr) - settings->refreshAll(); - - copyingMessage.refresh(); - } - - void paint (Graphics& g) // (overridden to avoid drawing the name) - { - getLookAndFeel().drawPropertyComponentBackground (g, getWidth(), getHeight(), *this); - } - - //============================================================================== - class ModuleSelectionListBox : public ListBox, - public ListBoxModel - { - public: - ModuleSelectionListBox (ModuleList& list_) - : list (list_), owner (nullptr) - { - setColour (ListBox::backgroundColourId, Colours::white.withAlpha (0.4f)); - setTooltip ("Use this list to select which modules should be included in your app.\n" - "Any modules which have missing dependencies will be shown in red."); - } - - void setOwner (ModulesPanel* owner_) - { - owner = owner_; - setModel (this); - } - - void refresh() - { - updateContent(); - repaint(); - } - - int getNumRows() - { - return list.modules.size(); - } - - void paintListBoxItem (int rowNumber, Graphics& g, int width, int height, bool rowIsSelected) - { - if (rowIsSelected) - g.fillAll (findColour (TextEditor::highlightColourId)); - - const ModuleList::Module* const m = list.modules [rowNumber]; - - if (m != nullptr) - { - const float tickSize = height * 0.7f; - - getLookAndFeel().drawTickBox (g, *this, (height - tickSize) / 2, (height - tickSize) / 2, tickSize, tickSize, - owner->isEnabled (m), true, false, false); - - if (owner->isEnabled (m) && owner->areDependenciesMissing (m)) - g.setColour (Colours::red); - else - g.setColour (Colours::black); - - g.setFont (Font (height * 0.7f, Font::bold)); - g.drawFittedText (m->uid, height, 0, 200, height, Justification::centredLeft, 1); - - g.setFont (Font (height * 0.55f, Font::italic)); - g.drawText (m->name, height + 200, 0, width - height - 200, height, Justification::centredLeft, true); - } - } - - void listBoxItemClicked (int row, const MouseEvent& e) - { - if (e.x < getRowHeight()) - flipRow (row); - } - - void listBoxItemDoubleClicked (int row, const MouseEvent& e) - { - flipRow (row); - } - - void returnKeyPressed (int row) - { - flipRow (row); - } - - void selectedRowsChanged (int lastRowSelected) - { - owner->selectionChanged (list.modules [lastRowSelected]); - } - - void flipRow (int row) - { - const ModuleList::Module* const m = list.modules [row]; - - if (m != nullptr) - owner->setEnabled (m, ! owner->isEnabled (m)); - } - - private: - ModuleList& list; - ModulesPanel* owner; - }; - - //============================================================================== - class ModuleSettingsPanel : public PropertyPanel - { - public: - ModuleSettingsPanel (Project& project_, ModuleList& moduleList_, const String& moduleID_) - : project (project_), moduleList (moduleList_), moduleID (moduleID_) - { - refreshAll(); - } - - void refreshAll() - { - setEnabled (project.isModuleEnabled (moduleID)); - - clear(); - PropertyListBuilder props; - - ScopedPointer module (moduleList.loadModule (moduleID)); - - if (module != nullptr) - { - props.add (new ModuleInfoComponent (project, moduleList, moduleID)); - - if (project.isModuleEnabled (moduleID)) - { - const ModuleList::Module* m = moduleList.findModuleInfo (moduleID); - if (m != nullptr && moduleList.getExtraDependenciesNeeded (project, *m).size() > 0) - props.add (new MissingDependenciesComponent (project, moduleList, moduleID)); - } - - props.add (new BooleanPropertyComponent (project.shouldShowAllModuleFilesInProject (moduleID), - "Add source to project", "Make module files browsable in projects"), - "If this is enabled, then the entire source tree from this module will be shown inside your project, " - "making it easy to browse/edit the module's classes. If disabled, then only the minimum number of files " - "required to compile it will appear inside your project."); - - props.add (new BooleanPropertyComponent (project.shouldCopyModuleFilesLocally (moduleID), - "Create local copy", "Copy the module into the project folder"), - "If this is enabled, then a local copy of the entire module will be made inside your project (in the auto-generated JuceLibraryFiles folder), " - "so that your project will be self-contained, and won't need to contain any references to files in other folders. " - "This also means that you can check the module into your source-control system to make sure it is always in sync with your own code."); - - StringArray possibleValues; - possibleValues.add ("(Use Default)"); - possibleValues.add ("Enabled"); - possibleValues.add ("Disabled"); - - Array mappings; - mappings.add (Project::configFlagDefault); - mappings.add (Project::configFlagEnabled); - mappings.add (Project::configFlagDisabled); - - OwnedArray flags; - module->getConfigFlags (project, flags); - - for (int i = 0; i < flags.size(); ++i) - { - ChoicePropertyComponent* c = new ChoicePropertyComponent (flags[i]->value, flags[i]->symbol, possibleValues, mappings); - c->setTooltip (flags[i]->description); - props.add (c); - } - } - - addProperties (props.components); - } - - private: - Project& project; - ModuleList& moduleList; - String moduleID; - - //============================================================================== - class ModuleInfoComponent : public PropertyComponent - { - public: - ModuleInfoComponent (Project& project_, ModuleList& moduleList_, const String& moduleID_) - : PropertyComponent ("Module", 100), project (project_), moduleList (moduleList_), moduleID (moduleID_) - { - } - - void refresh() {} - - void paint (Graphics& g) - { - g.setColour (Colours::white.withAlpha (0.4f)); - g.fillRect (0, 0, getWidth(), getHeight() - 1); - - const ModuleList::Module* module = moduleList.findModuleInfo (moduleID); - - if (module != nullptr) - { - String text; - text << module->name << newLine << "Version: " << module->version << newLine << newLine - << module->description; - - GlyphArrangement ga; - ga.addJustifiedText (Font (13.0f), text, 4.0f, 16.0f, getWidth() - 8.0f, Justification::topLeft); - g.setColour (Colours::black); - ga.draw (g); - } - } - - private: - Project& project; - ModuleList& moduleList; - String moduleID; - - JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ModuleInfoComponent); - }; - - //============================================================================== - class MissingDependenciesComponent : public PropertyComponent, - public ButtonListener - { - public: - MissingDependenciesComponent (Project& project_, ModuleList& moduleList_, const String& moduleID_) - : PropertyComponent ("Dependencies", 100), - project (project_), moduleList (moduleList_), moduleID (moduleID_), - fixButton ("Enable Required Modules") - { - const ModuleList::Module* module = moduleList.findModuleInfo (moduleID); - - if (module != nullptr) - missingDependencies = moduleList.getExtraDependenciesNeeded (project, *module); - - addAndMakeVisible (&fixButton); - fixButton.setColour (TextButton::buttonColourId, Colours::red); - fixButton.setColour (TextButton::textColourOffId, Colours::white); - fixButton.setBounds ("right - 160, parent.height - 26, parent.width - 8, top + 22"); - fixButton.addListener (this); - } - - void refresh() {} - - void paint (Graphics& g) - { - g.setColour (Colours::white.withAlpha (0.4f)); - g.fillRect (0, 0, getWidth(), getHeight() - 1); - - String text ("This module requires the following dependencies:\n"); - text << missingDependencies.joinIntoString (", "); - - GlyphArrangement ga; - ga.addJustifiedText (Font (13.0f), text, 4.0f, 16.0f, getWidth() - 8.0f, Justification::topLeft); - g.setColour (Colours::red); - ga.draw (g); - } - - void buttonClicked (Button*) - { - bool isModuleCopiedLocally = project.shouldCopyModuleFilesLocally (moduleID).getValue(); - - for (int i = missingDependencies.size(); --i >= 0;) - project.addModule (missingDependencies[i], isModuleCopiedLocally); - - ModulesPanel* mp = findParentComponentOfClass(); - if (mp != nullptr) - mp->refresh(); - } - - private: - Project& project; - ModuleList& moduleList; - String moduleID; - StringArray missingDependencies; - TextButton fixButton; - - JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MissingDependenciesComponent); - }; - }; - - //============================================================================== - class ModuleCopyingInfo : public Component, - public ButtonListener, - public Timer - { - public: - ModuleCopyingInfo (Project& project_, ModuleList& list_) - : project (project_), list (list_), - copyModeButton ("Set Copying Mode...") - { - addAndMakeVisible (©ModeButton); - copyModeButton.setBounds ("4, parent.height / 2 - 10, 160, parent.height / 2 + 10"); - copyModeButton.addListener (this); - - startTimer (1500); - } - - void paint (Graphics& g) - { - g.setFont (11.0f); - g.setColour (Colours::darkred); - g.drawFittedText (getName(), copyModeButton.getRight() + 10, 0, - getWidth() - copyModeButton.getRight() - 16, getHeight(), - Justification::centredRight, 4); - } - - void refresh() - { - int numCopied, numNonCopied; - countCopiedModules (numCopied, numNonCopied); - - String newName; - - if (numCopied > 0 && numNonCopied > 0) - newName = "Warning! Some of your modules are set to use local copies, and others are using remote references.\n" - "This may create problems if some modules expect to share the same parent folder, so you may " - "want to make sure that they are all either copied or not."; - - if (project.isAudioPluginModuleMissing()) - newName = "Warning! Your project is an audio plugin, but you haven't enabled the 'juce_audio_plugin_client' module!"; - - if (newName != getName()) - { - setName (newName); - repaint(); - } - } - - void countCopiedModules (int& numCopied, int& numNonCopied) - { - numCopied = numNonCopied = 0; - - for (int i = list.modules.size(); --i >= 0;) - { - const String moduleID (list.modules.getUnchecked(i)->uid); - - if (project.isModuleEnabled (moduleID)) - { - if (project.shouldCopyModuleFilesLocally (moduleID).getValue()) - ++numCopied; - else - ++numNonCopied; - } - } - } - - void buttonClicked (Button*) - { - PopupMenu menu; - menu.addItem (1, "Enable local copying for all modules"); - menu.addItem (2, "Disable local copying for all modules"); - - menu.showMenuAsync (PopupMenu::Options().withTargetComponent (©ModeButton), - ModalCallbackFunction::forComponent (copyMenuItemChosen, this)); - } - - static void copyMenuItemChosen (int resultCode, ModuleCopyingInfo* comp) - { - if (resultCode > 0 && comp != nullptr) - comp->setCopyModeForAllModules (resultCode == 1); - } - - void setCopyModeForAllModules (bool copyEnabled) - { - for (int i = list.modules.size(); --i >= 0;) - project.shouldCopyModuleFilesLocally (list.modules.getUnchecked(i)->uid) = copyEnabled; - - refresh(); - } - - void timerCallback() - { - refresh(); - } - - private: - Project& project; - ModuleList& list; - TextButton copyModeButton; - }; - -private: - Project& project; - ModuleList moduleList; - FilenameComponent modulesLocation; - Label modulesLabel; - TextButton updateModulesButton; - ModuleSelectionListBox moduleListBox; - ModuleCopyingInfo copyingMessage; - ScopedPointer settings; -}; - -//============================================================================== -struct ProjectSettingsTreeClasses -{ - class PropertyGroup : public Component - { - public: - PropertyGroup() {} - - void setProperties (const PropertyListBuilder& newProps) - { - properties.clear(); - properties.addArray (newProps.components); - - for (int i = properties.size(); --i >= 0;) - addAndMakeVisible (properties.getUnchecked(i)); - } - - int updateSize (int x, int y, int width) - { - int height = 36; - - for (int i = 0; i < properties.size(); ++i) - { - PropertyComponent* pp = properties.getUnchecked(i); - pp->setBounds (10, height, width - 20, pp->getPreferredHeight()); - height += pp->getHeight(); - } - - height += 16; - setBounds (x, y, width, height); - return height; - } - - void paint (Graphics& g) - { - g.setColour (Colours::white.withAlpha (0.3f)); - g.fillRect (0, 28, getWidth(), getHeight() - 38); - - g.setColour (Colours::black.withAlpha (0.4f)); - g.drawRect (0, 28, getWidth(), getHeight() - 38); - - g.setFont (Font (14.0f, Font::bold)); - g.setColour (Colours::black); - g.drawFittedText (getName(), 12, 0, getWidth() - 16, 26, Justification::bottomLeft, 1); - } - - OwnedArray properties; - - private: - JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (PropertyGroup); - }; - - //============================================================================== - class PropertyPanelViewport : public Component - { - public: - PropertyPanelViewport (Component* content) - { - addAndMakeVisible (&viewport); - addAndMakeVisible (&rolloverHelp); - viewport.setViewedComponent (content, true); - } - - void paint (Graphics& g) - { - g.setTiledImageFill (ImageCache::getFromMemory (BinaryData::brushed_aluminium_png, - BinaryData::brushed_aluminium_pngSize), - 0, 0, 1.0f); - g.fillAll(); - drawRecessedShadows (g, getWidth(), getHeight(), 14); - } - - void resized() - { - Rectangle r (getLocalBounds()); - rolloverHelp.setBounds (r.removeFromBottom (70).reduced (10, 0)); - viewport.setBounds (r); - } - - Viewport viewport; - RolloverHelpComp rolloverHelp; - - private: - JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (PropertyPanelViewport); - }; - - //============================================================================== - class SettingsItemBase : public JucerTreeViewBase, - public ValueTree::Listener - { - public: - SettingsItemBase() {} - - void showSettingsPage (Component* content) - { - content->setComponentID (getUniqueName()); - - ScopedPointer comp (content); - ProjectContentComponent* pcc = getProjectContentComponent(); - - if (pcc != nullptr) - pcc->setEditorComponent (new PropertyPanelViewport (comp.release()), nullptr); - } - - void closeSettingsPage() - { - ProjectContentComponent* pcc = getProjectContentComponent(); - - if (pcc != nullptr) - { - PropertyPanelViewport* ppv = dynamic_cast (pcc->getEditorComponent()); - - if (ppv != nullptr && ppv->viewport.getViewedComponent()->getComponentID() == getUniqueName()) - pcc->hideEditor(); - } - } - - void deleteAllSelectedItems() - { - TreeView* const tree = getOwnerView(); - jassert (tree->getNumSelectedItems() <= 1); // multi-select should be disabled - - if (SettingsItemBase* s = dynamic_cast (tree->getSelectedItem (0))) - s->deleteItem(); - } - - void itemOpennessChanged (bool isNowOpen) - { - if (isNowOpen) - refreshSubItems(); - } - - void valueTreePropertyChanged (ValueTree&, const Identifier&) {} - void valueTreeChildAdded (ValueTree&, ValueTree&) {} - void valueTreeChildRemoved (ValueTree&, ValueTree&) {} - void valueTreeChildOrderChanged (ValueTree&) {} - void valueTreeParentChanged (ValueTree&) {} - - static void updateSize (Component& comp, PropertyGroup& group) - { - const int width = jmax (550, comp.getParentWidth() - 20); - - int y = 0; - y += group.updateSize (12, y, width - 12); - - comp.setSize (width, y); - } - }; - - //============================================================================== - class ConfigItem : public SettingsItemBase - { - public: - ConfigItem (const ProjectExporter::BuildConfiguration::Ptr& config_, const String& exporterName_) - : config (config_), exporterName (exporterName_), configTree (config->config) - { - jassert (config != nullptr); - configTree.addListener (this); - } - - bool isRoot() const { return false; } - bool isMissing() { return false; } - bool canBeSelected() const { return true; } - bool mightContainSubItems() { return false; } - String getUniqueName() const { return config->project.getProjectUID() + "_config_" + config->getName(); } - String getRenamingName() const { return getDisplayName(); } - String getDisplayName() const { return config->getName(); } - void setName (const String&) {} - const Drawable* getIcon() const { return StoredSettings::getInstance()->getCogIcon(); } - - void showDocument() { showSettingsPage (new SettingsComp (config, exporterName)); } - void itemOpennessChanged (bool) {} - - void deleteItem() - { - if (AlertWindow::showOkCancelBox (AlertWindow::WarningIcon, "Delete Configuration", - "Are you sure you want to delete this configuration?")) - { - closeSettingsPage(); - config->removeFromExporter(); - } - } - - void showPopupMenu() - { - PopupMenu menu; - menu.addItem (1, "Create a copy of this configuration"); - menu.addSeparator(); - menu.addItem (2, "Delete this configuration"); - - launchPopupMenu (menu); - } - - void handlePopupMenuResult (int resultCode) - { - if (resultCode == 2) - { - deleteAllSelectedItems(); - } - else if (resultCode == 1) - { - for (Project::ExporterIterator exporter (config->project); exporter.next();) - { - if (config->config.isAChildOf (exporter.exporter->settings)) - { - exporter.exporter->addNewConfiguration (config); - break; - } - } - } - } - - var getDragSourceDescription() - { - return getParentItem()->getUniqueName() + "||" + config->getName(); - } - - void valueTreePropertyChanged (ValueTree&, const Identifier&) { repaintItem(); } - - private: - ProjectExporter::BuildConfiguration::Ptr config; - String exporterName; - ValueTree configTree; - - //============================================================================== - class SettingsComp : public Component - { - public: - SettingsComp (ProjectExporter::BuildConfiguration* config, const String& exporterName) - { - addAndMakeVisible (&group); - - PropertyListBuilder props; - config->createPropertyEditors (props); - group.setProperties (props); - group.setName (exporterName + " / " + config->getName()); - parentSizeChanged(); - } - - void parentSizeChanged() { updateSize (*this, group); } - - private: - PropertyGroup group; - - JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (SettingsComp); - }; - - JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ConfigItem); - }; - - //============================================================================== - class ExporterItem : public SettingsItemBase - { - public: - ExporterItem (Project& project_, ProjectExporter* exporter_, int exporterIndex_) - : project (project_), exporter (exporter_), configListTree (exporter->getConfigurations()), - exporterIndex (exporterIndex_) - { - configListTree.addListener (this); - jassert (exporter != nullptr); - } - - bool isRoot() const { return false; } - bool canBeSelected() const { return true; } - bool mightContainSubItems() { return exporter->getNumConfigurations() > 0; } - String getUniqueName() const { return project.getProjectUID() + "_exporter_" + String (exporterIndex); } - String getRenamingName() const { return getDisplayName(); } - String getDisplayName() const { return exporter->getName(); } - void setName (const String&) {} - bool isMissing() { return false; } - const Drawable* getIcon() const { return LookAndFeel::getDefaultLookAndFeel().getDefaultDocumentFileImage(); } - void showDocument() { showSettingsPage (new SettingsComp (exporter)); } - - void deleteItem() - { - if (AlertWindow::showOkCancelBox (AlertWindow::WarningIcon, "Delete Exporter", - "Are you sure you want to delete this export target?")) - { - closeSettingsPage(); - ValueTree parent (exporter->settings.getParent()); - parent.removeChild (exporter->settings, project.getUndoManagerFor (parent)); - } - } - - void addSubItems() - { - for (ProjectExporter::ConfigIterator config (*exporter); config.next();) - addSubItem (new ConfigItem (config.config, exporter->getName())); - } - - void showPopupMenu() - { - PopupMenu menu; - menu.addItem (1, "Add a new configuration"); - menu.addSeparator(); - menu.addItem (2, "Delete this exporter"); - - launchPopupMenu (menu); - } - - void handlePopupMenuResult (int resultCode) - { - if (resultCode == 2) - deleteAllSelectedItems(); - else if (resultCode == 1) - exporter->addNewConfiguration (nullptr); - } - - var getDragSourceDescription() - { - return getParentItem()->getUniqueName() + "/" + String (exporterIndex); - } - - bool isInterestedInDragSource (const DragAndDropTarget::SourceDetails& dragSourceDetails) - { - return dragSourceDetails.description.toString().startsWith (getUniqueName()); - } - - void itemDropped (const DragAndDropTarget::SourceDetails& dragSourceDetails, int insertIndex) - { - const int oldIndex = indexOfConfig (dragSourceDetails.description.toString().fromLastOccurrenceOf ("||", false, false)); - - if (oldIndex >= 0) - configListTree.moveChild (oldIndex, insertIndex, project.getUndoManagerFor (configListTree)); - } - - int indexOfConfig (const String& configName) - { - int i = 0; - for (ProjectExporter::ConfigIterator config (*exporter); config.next(); ++i) - if (config->getName() == configName) - return i; - - return -1; - } - - //============================================================================== - void valueTreeChildAdded (ValueTree& parentTree, ValueTree&) { refreshIfNeeded (parentTree); } - void valueTreeChildRemoved (ValueTree& parentTree, ValueTree&) { refreshIfNeeded (parentTree); } - void valueTreeChildOrderChanged (ValueTree& parentTree) { refreshIfNeeded (parentTree); } - - void refreshIfNeeded (ValueTree& changedTree) - { - if (changedTree == configListTree) - refreshSubItems(); - } - - private: - Project& project; - ScopedPointer exporter; - ValueTree configListTree; - int exporterIndex; - - //============================================================================== - class SettingsComp : public Component - { - public: - SettingsComp (ProjectExporter* exporter) - { - addAndMakeVisible (&group); - - PropertyListBuilder props; - exporter->createPropertyEditors (props); - group.setProperties (props); - group.setName ("Export target: " + exporter->getName()); - parentSizeChanged(); - } - - void parentSizeChanged() { updateSize (*this, group); } - - private: - PropertyGroup group; - - JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (SettingsComp); - }; - - JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ExporterItem); - }; - - //============================================================================== - class ModulesItem : public SettingsItemBase - { - public: - ModulesItem (Project& project_) : project (project_) {} - - bool isRoot() const { return false; } - bool canBeSelected() const { return true; } - bool mightContainSubItems() { return false; } - String getUniqueName() const { return project.getProjectUID() + "_modules"; } - String getRenamingName() const { return getDisplayName(); } - String getDisplayName() const { return "Modules"; } - void setName (const String&) {} - bool isMissing() { return false; } - const Drawable* getIcon() const { return project.getMainGroup().getIcon(); } - void showDocument() { showSettingsPage (new SettingsComp (project)); } - - private: - Project& project; - - //============================================================================== - class SettingsComp : public Component - { - public: - SettingsComp (Project& project_) : project (project_) - { - addAndMakeVisible (&group); - - PropertyListBuilder props; - props.add (new ModulesPanel (project)); - group.setProperties (props); - group.setName ("Modules"); - - parentSizeChanged(); - } - - void parentSizeChanged() - { - updateSize (*this, group); - } - - private: - Project& project; - var lastProjectType; - PropertyGroup group; - - JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (SettingsComp); - }; - - JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ModulesItem); - }; - - //============================================================================== - class RootItem : public SettingsItemBase - { - public: - RootItem (Project& project_) - : project (project_), exportersTree (project_.getExporters()) - { - exportersTree.addListener (this); - } - - bool isRoot() const { return true; } - String getRenamingName() const { return getDisplayName(); } - String getDisplayName() const { return project.getTitle(); } - void setName (const String&) {} - bool isMissing() { return false; } - const Drawable* getIcon() const { return project.getMainGroup().getIcon(); } - void showDocument() { showSettingsPage (new SettingsComp (project)); } - bool canBeSelected() const { return true; } - bool mightContainSubItems() { return project.getNumExporters() > 0; } - String getUniqueName() const { return project.getProjectUID() + "_config_root"; } - - void addSubItems() - { - addSubItem (new ModulesItem (project)); - - int i = 0; - for (Project::ExporterIterator exporter (project); exporter.next(); ++i) - addSubItem (new ExporterItem (project, exporter.exporter.release(), i)); - } - - void showPopupMenu() - { - PopupMenu menu; - - const StringArray exporters (ProjectExporter::getExporterNames()); - - for (int i = 0; i < exporters.size(); ++i) - menu.addItem (i + 1, "Create a new " + exporters[i] + " target"); - - launchPopupMenu (menu); - } - - void handlePopupMenuResult (int resultCode) - { - if (resultCode > 0) - { - String exporterName (ProjectExporter::getExporterNames() [resultCode - 1]); - - if (exporterName.isNotEmpty()) - project.addNewExporter (exporterName); - } - } - - bool isInterestedInDragSource (const DragAndDropTarget::SourceDetails& dragSourceDetails) - { - return dragSourceDetails.description.toString().startsWith (getUniqueName()); - } - - void itemDropped (const DragAndDropTarget::SourceDetails& dragSourceDetails, int insertIndex) - { - int oldIndex = dragSourceDetails.description.toString().getTrailingIntValue(); - exportersTree.moveChild (oldIndex, insertIndex, project.getUndoManagerFor (exportersTree)); - } - - //============================================================================== - void valueTreeChildAdded (ValueTree& parentTree, ValueTree&) { refreshIfNeeded (parentTree); } - void valueTreeChildRemoved (ValueTree& parentTree, ValueTree&) { refreshIfNeeded (parentTree); } - void valueTreeChildOrderChanged (ValueTree& parentTree) { refreshIfNeeded (parentTree); } - - void refreshIfNeeded (ValueTree& changedTree) - { - if (changedTree == exportersTree) - refreshSubItems(); - } - - private: - Project& project; - ValueTree exportersTree; - - //============================================================================== - class SettingsComp : public Component, - private ChangeListener - { - public: - SettingsComp (Project& project_) - : project (project_) - { - addAndMakeVisible (&group); - - updatePropertyList(); - project.addChangeListener (this); - } - - ~SettingsComp() - { - project.removeChangeListener (this); - } - - void parentSizeChanged() - { - updateSize (*this, group); - } - - void updatePropertyList() - { - PropertyListBuilder props; - project.createPropertyEditors (props); - group.setProperties (props); - group.setName ("Project Settings"); - - lastProjectType = project.getProjectTypeValue().getValue(); - parentSizeChanged(); - } - - void changeListenerCallback (ChangeBroadcaster*) - { - if (lastProjectType != project.getProjectTypeValue().getValue()) - updatePropertyList(); - } - - private: - Project& project; - var lastProjectType; - PropertyGroup group; - - JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (SettingsComp); - }; - - JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (RootItem); - }; -}; - -JucerTreeViewBase* createProjectConfigTreeViewRoot (Project& project) -{ - return new ProjectSettingsTreeClasses::RootItem (project); -} diff --git a/extras/Introjucer/Source/Project/jucer_ProjectInformationComponent.h b/extras/Introjucer/Source/Project/jucer_ProjectInformationComponent.h deleted file mode 100644 index 75a3966534..0000000000 --- a/extras/Introjucer/Source/Project/jucer_ProjectInformationComponent.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - ============================================================================== - - 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 __JUCER_PROJECTINFORMATIONCOMPONENT_H_30FFCD07__ -#define __JUCER_PROJECTINFORMATIONCOMPONENT_H_30FFCD07__ - -#include "jucer_Project.h" -#include "../Utility/jucer_JucerTreeViewBase.h" - -JucerTreeViewBase* createProjectConfigTreeViewRoot (Project& project); - - -#endif // __JUCER_PROJECTINFORMATIONCOMPONENT_H_30FFCD07__ diff --git a/extras/Introjucer/Source/Project/jucer_ProjectTreeViewBase.cpp b/extras/Introjucer/Source/Project/jucer_ProjectTreeViewBase.cpp index 782fe28b12..a426ad8ec2 100644 --- a/extras/Introjucer/Source/Project/jucer_ProjectTreeViewBase.cpp +++ b/extras/Introjucer/Source/Project/jucer_ProjectTreeViewBase.cpp @@ -92,31 +92,26 @@ void ProjectTreeViewBase::moveSelectedItemsTo (OwnedArray & selec ProjectTreeViewBase* ProjectTreeViewBase::findTreeViewItem (const Project::Item& itemToFind) { if (item == itemToFind) - { return this; - } - else - { - const bool wasOpen = isOpen(); - setOpen (true); - for (int i = getNumSubItems(); --i >= 0;) + const bool wasOpen = isOpen(); + setOpen (true); + + for (int i = getNumSubItems(); --i >= 0;) + { + ProjectTreeViewBase* pg = dynamic_cast (getSubItem(i)); + + if (pg != nullptr) { - ProjectTreeViewBase* pg = dynamic_cast (getSubItem(i)); + pg = pg->findTreeViewItem (itemToFind); if (pg != nullptr) - { - pg = pg->findTreeViewItem (itemToFind); - - if (pg != nullptr) - return pg; - } + return pg; } - - setOpen (wasOpen); } - return 0; + setOpen (wasOpen); + return nullptr; } //============================================================================== @@ -182,8 +177,7 @@ void ProjectTreeViewBase::deleteAllSelectedItems() OwnedArray filesToTrash; OwnedArray itemsToRemove; - int i; - for (i = 0; i < numSelected; ++i) + for (int i = 0; i < numSelected; ++i) { const ProjectTreeViewBase* const p = dynamic_cast (tree->getSelectedItem (i)); @@ -200,7 +194,7 @@ void ProjectTreeViewBase::deleteAllSelectedItems() { String fileList; const int maxFilesToList = 10; - for (i = jmin (maxFilesToList, filesToTrash.size()); --i >= 0;) + for (int i = jmin (maxFilesToList, filesToTrash.size()); --i >= 0;) fileList << filesToTrash.getUnchecked(i)->getFullPathName() << "\n"; if (filesToTrash.size() > maxFilesToList) @@ -226,7 +220,7 @@ void ProjectTreeViewBase::deleteAllSelectedItems() if (treeRootItem != nullptr) { - for (i = filesToTrash.size(); --i >= 0;) + for (int i = filesToTrash.size(); --i >= 0;) { const File f (*filesToTrash.getUnchecked(i)); @@ -238,7 +232,7 @@ void ProjectTreeViewBase::deleteAllSelectedItems() } } - for (i = itemsToRemove.size(); --i >= 0;) + for (int i = itemsToRemove.size(); --i >= 0;) { ProjectTreeViewBase* itemToRemove = treeRootItem->findTreeViewItem (*itemsToRemove.getUnchecked(i)); @@ -263,8 +257,7 @@ static int indexOfNode (const ValueTree& parent, const ValueTree& child) void ProjectTreeViewBase::moveItems (OwnedArray & selectedNodes, Project::Item destNode, int insertIndex) { - int i; - for (i = selectedNodes.size(); --i >= 0;) + for (int i = selectedNodes.size(); --i >= 0;) { Project::Item* const n = selectedNodes.getUnchecked(i); @@ -276,7 +269,7 @@ void ProjectTreeViewBase::moveItems (OwnedArray & selectedNodes, } // Don't include any nodes that are children of other selected nodes.. - for (i = selectedNodes.size(); --i >= 0;) + for (int i = selectedNodes.size(); --i >= 0;) { Project::Item* const n = selectedNodes.getUnchecked(i); @@ -291,7 +284,7 @@ void ProjectTreeViewBase::moveItems (OwnedArray & selectedNodes, } // Remove and re-insert them one at a time.. - for (i = 0; i < selectedNodes.size(); ++i) + for (int i = 0; i < selectedNodes.size(); ++i) { Project::Item* selectedNode = selectedNodes.getUnchecked(i); diff --git a/extras/Introjucer/Source/Project/jucer_TreeViewTypes.cpp b/extras/Introjucer/Source/Project/jucer_TreeViewTypes.cpp index 19f5d66df2..cac06de00c 100644 --- a/extras/Introjucer/Source/Project/jucer_TreeViewTypes.cpp +++ b/extras/Introjucer/Source/Project/jucer_TreeViewTypes.cpp @@ -24,7 +24,7 @@ */ #include "jucer_TreeViewTypes.h" -#include "jucer_ProjectInformationComponent.h" +#include "jucer_ConfigPage.h" #include "jucer_GroupInformationComponent.h" #include "../Application/jucer_OpenDocumentManager.h" #include "../Code Editor/jucer_SourceCodeEditor.h" diff --git a/extras/JuceDemo/Builds/MacOSX/Juce Demo.xcodeproj/project.pbxproj b/extras/JuceDemo/Builds/MacOSX/Juce Demo.xcodeproj/project.pbxproj index a5c06f4515..bc90b77248 100644 --- a/extras/JuceDemo/Builds/MacOSX/Juce Demo.xcodeproj/project.pbxproj +++ b/extras/JuceDemo/Builds/MacOSX/Juce Demo.xcodeproj/project.pbxproj @@ -2010,7 +2010,6 @@ 0AE68D12A51E59B084E046C1, 913372FE9DAAA74F5520A786 ); name = Source; sourceTree = ""; }; 2FE1E46B92ED7BD427F01D8C = { isa = XCBuildConfiguration; buildSettings = { - SRCROOT = "../.."; HEADER_SEARCH_PATHS = "../../JuceLibraryCode $(inherited)"; GCC_OPTIMIZATION_LEVEL = 0; INFOPLIST_FILE = Info.plist; @@ -2028,7 +2027,6 @@ "JUCE_UNIT_TESTS=1", "JUCER_XCODE_MAC_F6D2F4CF=1"); }; name = Debug; }; 9E3B64077ABD2AA72A51EE7C = { isa = XCBuildConfiguration; buildSettings = { - SRCROOT = "../.."; ARCHS = "$(ARCHS_STANDARD_32_BIT)"; HEADER_SEARCH_PATHS = "../../JuceLibraryCode $(inherited)"; GCC_OPTIMIZATION_LEVEL = s; diff --git a/extras/JuceDemo/Builds/iOS/Juce Demo.xcodeproj/project.pbxproj b/extras/JuceDemo/Builds/iOS/Juce Demo.xcodeproj/project.pbxproj index fc07c293c0..cb2df1c8d4 100644 --- a/extras/JuceDemo/Builds/iOS/Juce Demo.xcodeproj/project.pbxproj +++ b/extras/JuceDemo/Builds/iOS/Juce Demo.xcodeproj/project.pbxproj @@ -1998,7 +1998,6 @@ 0AE68D12A51E59B084E046C1, 913372FE9DAAA74F5520A786 ); name = Source; sourceTree = ""; }; 2FE1E46B92ED7BD427F01D8C = { isa = XCBuildConfiguration; buildSettings = { - SRCROOT = "../.."; HEADER_SEARCH_PATHS = "../../JuceLibraryCode $(inherited)"; GCC_OPTIMIZATION_LEVEL = 0; INFOPLIST_FILE = Info.plist; @@ -2014,7 +2013,6 @@ "JUCE_UNIT_TESTS=1", "JUCER_XCODE_IPHONE_5BC26AE3=1"); }; name = Debug; }; 9E3B64077ABD2AA72A51EE7C = { isa = XCBuildConfiguration; buildSettings = { - SRCROOT = "../.."; ARCHS = "$(ARCHS_STANDARD_32_BIT)"; HEADER_SEARCH_PATHS = "../../JuceLibraryCode $(inherited)"; GCC_OPTIMIZATION_LEVEL = s; 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 8bd72eb76d..4390cf8384 100644 --- a/extras/audio plugin demo/Builds/MacOSX/JuceDemoPlugin.xcodeproj/project.pbxproj +++ b/extras/audio plugin demo/Builds/MacOSX/JuceDemoPlugin.xcodeproj/project.pbxproj @@ -1971,7 +1971,6 @@ 7EA0AEAFB626CDF5E0038ED5, 227AE5B2ACBB7881D9552404 ); name = Source; sourceTree = ""; }; 77D1D11FAA110A1B1F960A8F = { isa = XCBuildConfiguration; buildSettings = { - SRCROOT = "../.."; HEADER_SEARCH_PATHS = "~/SDKs/vstsdk2.4 ../../JuceLibraryCode $(DEVELOPER_DIR)/Extras/CoreAudio/PublicUtility $(DEVELOPER_DIR)/Extras/CoreAudio/AudioUnits/AUPublic/Utility $(inherited)"; GCC_OPTIMIZATION_LEVEL = 0; INFOPLIST_FILE = Info.plist; @@ -1995,7 +1994,6 @@ "DEBUG=1", "JUCER_XCODE_MAC_F6D2F4CF=1"); }; name = Debug; }; 76082281008CF5F891C856DA = { isa = XCBuildConfiguration; buildSettings = { - SRCROOT = "../.."; HEADER_SEARCH_PATHS = "~/SDKs/vstsdk2.4 ../../JuceLibraryCode $(DEVELOPER_DIR)/Extras/CoreAudio/PublicUtility $(DEVELOPER_DIR)/Extras/CoreAudio/AudioUnits/AUPublic/Utility $(inherited)"; GCC_OPTIMIZATION_LEVEL = s; INFOPLIST_FILE = Info.plist; @@ -2114,13 +2112,11 @@ CC4D3A6F1EF2934059AA9FEB, 221F46E90C0A8651AB76A0E5, B46C12D99498E9FA8F1D083A ); runOnlyForDeploymentPostprocessing = 0; }; - E277BCF6E051A6008DD74155 = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; name = "Copy to the different plugin folders"; shellPath = /bin/sh; shellScript = "\n# This script takes the build product and copies it to the AU, VST, and RTAS folders, depending on \n# which plugin types you've built\n\noriginal=$CONFIGURATION_BUILD_DIR/$FULL_PRODUCT_NAME\n\n# this looks inside the binary to detect which platforms are needed.. \ncopyAU=`nm -g \"$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH\" | grep -i 'AudioUnit' | wc -l`\ncopyVST=`nm -g \"$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH\" | grep -i 'VSTPlugin' | wc -l`\ncopyRTAS=`nm -g \"$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH\" | grep -i 'CProcess' | wc -l`\ncopyAAX=`nm -g \"$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH\" | grep -i 'GetEffectDescriptions' | wc -l`\n\nif [ $copyAU -gt 0 ]; then\n echo \"Copying to AudioUnit folder...\"\n AU=~/Library/Audio/Plug-Ins/Components/$PRODUCT_NAME.component\n if [ -d \"$AU\" ]; then \n rm -r \"$AU\"\n fi\n\n cp -r \"$original\" \"$AU\"\n sed -i \"\" -e 's/TDMwPTul/BNDLPTul/g' \"$AU/Contents/PkgInfo\"\n sed -i \"\" -e 's/TDMw/BNDL/g' \"$AU/Contents/$INFOPLIST_FILE\"\nfi\n\nif [ $copyVST -gt 0 ]; then\n echo \"Copying to VST folder...\"\n VST=~/Library/Audio/Plug-Ins/VST/$PRODUCT_NAME.vst\n if [ -d \"$VST\" ]; then \n rm -r \"$VST\"\n fi\n\n cp -r \"$original\" \"$VST\"\n sed -i \"\" -e 's/TDMwPTul/BNDLPTul/g' \"$VST/Contents/PkgInfo\"\n sed -i \"\" -e 's/TDMw/BNDL/g' \"$VST/Contents/$INFOPLIST_FILE\"\nfi\n\nif [ $copyRTAS -gt 0 ]; then\n echo \"Copying to RTAS folder...\"\n RTAS=/Library/Application\\ Support/Digidesign/Plug-Ins/$PRODUCT_NAME.dpm\n if [ -d \"$RTAS\" ]; then\n rm -r \"$RTAS\"\n fi\n\n cp -r \"$original\" \"$RTAS\"\nfi\n\nif [ $copyAAX -gt 0 ]; then\n echo \"Copying to AAX folder...\"\n\n if [ -d \"/Applications/ProTools_3PDev/Plug-Ins\" ]; then\n AAX1=\"/Applications/ProTools_3PDev/Plug-Ins/$PRODUCT_NAME.aaxplugin\"\n\n if [ -d \"$AAX1\" ]; then\n rm -r \"$AAX1\"\n fi\n\n cp -r \"$original\" \"$AAX1\"\n fi\n\n if [ -d \"/Library/Application Support/Avid/Audio/Plug-Ins\" ]; then\n AAX2=\"/Library/Application Support/Avid/Audio/Plug-Ins/$PRODUCT_NAME.aaxplugin\"\n\n if [ -d \"$AAX2\" ]; then\n rm -r \"$AAX2\"\n fi\n\n cp -r \"$original\" \"$AAX2\"\n fi\nfi\n"; }; 27A65CD0B053616E226D4547 = { isa = PBXNativeTarget; buildConfigurationList = 92D1022F6276146FC92B4442; buildPhases = ( 0D832C784AB07BFDE57BCB92, D95827C1509280C88845BCB4, E032EB514708440DE9B7FF2A, - 95E57A758351FE57067B605F, - E277BCF6E051A6008DD74155 ); buildRules = ( ); dependencies = ( ); name = JuceDemoPlugin; productName = JuceDemoPlugin; productReference = 63F8022F081E22DFFFCAC998; productInstallPath = "$(HOME)/Library/Audio/Plug-Ins/Components/"; productType = "com.apple.product-type.bundle"; }; + 95E57A758351FE57067B605F ); buildRules = ( ); dependencies = ( ); name = JuceDemoPlugin; productName = JuceDemoPlugin; productReference = 63F8022F081E22DFFFCAC998; productInstallPath = "$(HOME)/Library/Audio/Plug-Ins/Components/"; productType = "com.apple.product-type.bundle"; }; 85250052F3E019894332668E = { isa = PBXProject; buildConfigurationList = 0720B453F376663EAB98BF9B; compatibilityVersion = "Xcode 3.2"; hasScannedForEncodings = 0; mainGroup = 4074359E1E7C4D54E87C3461; projectDirPath = ""; projectRoot = ""; targets = ( 27A65CD0B053616E226D4547 ); }; }; rootObject = 85250052F3E019894332668E; 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 05d19ed43a..500ebbfefa 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 @@ -1931,7 +1931,6 @@ D1C4804CD275CB57A5C89A2D, D85C0D11EE4F6C73B9EB5BCD ); name = Source; sourceTree = ""; }; 92E529F622AC4282800634D3 = { isa = XCBuildConfiguration; buildSettings = { - SRCROOT = "../.."; HEADER_SEARCH_PATHS = "~/SDKs/vstsdk2.4 ../../JuceLibraryCode $(inherited)"; GCC_OPTIMIZATION_LEVEL = 0; INFOPLIST_FILE = Info.plist; @@ -1948,7 +1947,6 @@ "DEBUG=1", "JUCER_XCODE_MAC_F6D2F4CF=1"); }; name = Debug; }; 20F59BC9E9ACBDF56007CE03 = { isa = XCBuildConfiguration; buildSettings = { - SRCROOT = "../.."; ARCHS = "$(ARCHS_STANDARD_32_BIT)"; HEADER_SEARCH_PATHS = "~/SDKs/vstsdk2.4 ../../JuceLibraryCode $(inherited)"; GCC_OPTIMIZATION_LEVEL = s; diff --git a/extras/binarybuilder/Builds/MacOSX/BinaryBuilder.xcodeproj/project.pbxproj b/extras/binarybuilder/Builds/MacOSX/BinaryBuilder.xcodeproj/project.pbxproj index 36b934272f..cd288461f2 100644 --- a/extras/binarybuilder/Builds/MacOSX/BinaryBuilder.xcodeproj/project.pbxproj +++ b/extras/binarybuilder/Builds/MacOSX/BinaryBuilder.xcodeproj/project.pbxproj @@ -428,7 +428,6 @@ E28F51A0038F01E08E22F853, 70A875922C34E55D4F48A196 ); name = Source; sourceTree = ""; }; 3C712C667F851F9061100DD7 = { isa = XCBuildConfiguration; buildSettings = { - SRCROOT = "../.."; HEADER_SEARCH_PATHS = "../../JuceLibraryCode $(inherited)"; GCC_OPTIMIZATION_LEVEL = 0; INFOPLIST_FILE = Info.plist; @@ -445,7 +444,6 @@ "DEBUG=1", "JUCER_XCODE_MAC_F6D2F4CF=1"); }; name = Debug; }; 145C0C90E41D8DECE4DD66AD = { isa = XCBuildConfiguration; buildSettings = { - SRCROOT = "../.."; HEADER_SEARCH_PATHS = "../../JuceLibraryCode $(inherited)"; GCC_OPTIMIZATION_LEVEL = s; INFOPLIST_FILE = Info.plist; diff --git a/extras/example projects/Builds/MacOSX/HelloWorld.xcodeproj/project.pbxproj b/extras/example projects/Builds/MacOSX/HelloWorld.xcodeproj/project.pbxproj index 039202e46f..c7e1a70701 100644 --- a/extras/example projects/Builds/MacOSX/HelloWorld.xcodeproj/project.pbxproj +++ b/extras/example projects/Builds/MacOSX/HelloWorld.xcodeproj/project.pbxproj @@ -1385,7 +1385,6 @@ C581D34B32A781E9AED7F7B0, 1C83313FCFBC3FAFA8CDB087 ); name = Source; sourceTree = ""; }; 34AEE2803DA0D6192C299422 = { isa = XCBuildConfiguration; buildSettings = { - SRCROOT = "../.."; HEADER_SEARCH_PATHS = "../../JuceLibraryCode $(inherited)"; GCC_OPTIMIZATION_LEVEL = 0; INFOPLIST_FILE = Info.plist; @@ -1402,7 +1401,6 @@ "DEBUG=1", "JUCER_XCODE_MAC_F6D2F4CF=1"); }; name = Debug; }; 339C95D5B2E96DD37B176D75 = { isa = XCBuildConfiguration; buildSettings = { - SRCROOT = "../.."; HEADER_SEARCH_PATHS = "../../JuceLibraryCode $(inherited)"; GCC_OPTIMIZATION_LEVEL = s; INFOPLIST_FILE = Info.plist; diff --git a/extras/example projects/Builds/iOS/HelloWorld.xcodeproj/project.pbxproj b/extras/example projects/Builds/iOS/HelloWorld.xcodeproj/project.pbxproj index afc88d5b7e..0eb9a3337d 100644 --- a/extras/example projects/Builds/iOS/HelloWorld.xcodeproj/project.pbxproj +++ b/extras/example projects/Builds/iOS/HelloWorld.xcodeproj/project.pbxproj @@ -1385,7 +1385,6 @@ C581D34B32A781E9AED7F7B0, 1C83313FCFBC3FAFA8CDB087 ); name = Source; sourceTree = ""; }; 34AEE2803DA0D6192C299422 = { isa = XCBuildConfiguration; buildSettings = { - SRCROOT = "../.."; HEADER_SEARCH_PATHS = "../../JuceLibraryCode $(inherited)"; GCC_OPTIMIZATION_LEVEL = 0; INFOPLIST_FILE = Info.plist; @@ -1400,7 +1399,6 @@ "DEBUG=1", "JUCER_XCODE_IPHONE_5BC26AE3=1"); }; name = Debug; }; 339C95D5B2E96DD37B176D75 = { isa = XCBuildConfiguration; buildSettings = { - SRCROOT = "../.."; HEADER_SEARCH_PATHS = "../../JuceLibraryCode $(inherited)"; GCC_OPTIMIZATION_LEVEL = s; INFOPLIST_FILE = Info.plist; diff --git a/extras/the jucer/Builds/MacOSX/Jucer.xcodeproj/project.pbxproj b/extras/the jucer/Builds/MacOSX/Jucer.xcodeproj/project.pbxproj index fdd181e625..a50c185861 100644 --- a/extras/the jucer/Builds/MacOSX/Jucer.xcodeproj/project.pbxproj +++ b/extras/the jucer/Builds/MacOSX/Jucer.xcodeproj/project.pbxproj @@ -1648,7 +1648,6 @@ 680BC5D164A7D17AAD7A2932, 593092CA73B75DE094D9E93D ); name = Source; sourceTree = ""; }; C4428643C14DD60BA895A378 = { isa = XCBuildConfiguration; buildSettings = { - SRCROOT = "../.."; HEADER_SEARCH_PATHS = "../../JuceLibraryCode $(inherited)"; GCC_OPTIMIZATION_LEVEL = 0; INFOPLIST_FILE = Info.plist; @@ -1665,7 +1664,6 @@ "DEBUG=1", "JUCER_XCODE_MAC_F6D2F4CF=1"); }; name = Debug; }; EB7F74BF01346F8C6BCC31A7 = { isa = XCBuildConfiguration; buildSettings = { - SRCROOT = "../.."; HEADER_SEARCH_PATHS = "../../JuceLibraryCode $(inherited)"; GCC_OPTIMIZATION_LEVEL = s; INFOPLIST_FILE = Info.plist;