diff --git a/extras/Introjucer/Builds/CodeBlocks/The Introjucer.cbp b/extras/Introjucer/Builds/CodeBlocks/The Introjucer.cbp
index f61cd6c21b..3d4f94c9cd 100644
--- a/extras/Introjucer/Builds/CodeBlocks/The Introjucer.cbp
+++ b/extras/Introjucer/Builds/CodeBlocks/The Introjucer.cbp
@@ -167,16 +167,6 @@
-
-
-
-
-
-
-
-
-
-
@@ -238,6 +228,11 @@
+
+
+
+
+
@@ -288,6 +283,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -569,6 +610,86 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extras/Introjucer/Builds/Linux/Makefile b/extras/Introjucer/Builds/Linux/Makefile
index 741fb78480..f8ac76ef0e 100644
--- a/extras/Introjucer/Builds/Linux/Makefile
+++ b/extras/Introjucer/Builds/Linux/Makefile
@@ -58,19 +58,20 @@ OBJECTS := \
$(OBJDIR)/jucer_MainWindow_1e163aeb.o \
$(OBJDIR)/jucer_OpenDocumentManager_4c72d210.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_ProjectType_1bc27a24.o \
$(OBJDIR)/jucer_ProjectExporter_eefe2e5b.o \
$(OBJDIR)/jucer_ResourceFile_6af120d3.o \
+ $(OBJDIR)/jucer_SlidingPanelComponent_9aa7a2ab.o \
$(OBJDIR)/jucer_CodeHelpers_c317179c.o \
$(OBJDIR)/jucer_FileHelpers_f98ed0ad.o \
$(OBJDIR)/jucer_Icons_9db2f51e.o \
$(OBJDIR)/jucer_JucerTreeViewBase_d043309d.o \
$(OBJDIR)/jucer_MiscUtilities_25b68c82.o \
$(OBJDIR)/jucer_StoredSettings_26078d2c.o \
+ $(OBJDIR)/jucer_NewFileWizard_fac97f47.o \
+ $(OBJDIR)/jucer_NewProjectWizardClasses_891f6fa2.o \
$(OBJDIR)/jucer_SourceCodeEditor_461f5487.o \
$(OBJDIR)/jucer_ComponentTypeHandler_6bec6262.o \
$(OBJDIR)/jucer_ButtonDocument_56c341cc.o \
@@ -153,16 +154,6 @@ $(OBJDIR)/jucer_Module_3f7666a5.o: ../../Source/Project/jucer_Module.cpp
@echo "Compiling jucer_Module.cpp"
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
-$(OBJDIR)/jucer_NewFileWizard_b8a19ef8.o: ../../Source/Project/jucer_NewFileWizard.cpp
- -@mkdir -p $(OBJDIR)
- @echo "Compiling jucer_NewFileWizard.cpp"
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
-
-$(OBJDIR)/jucer_NewProjectWizard_7a15bf5d.o: ../../Source/Project/jucer_NewProjectWizard.cpp
- -@mkdir -p $(OBJDIR)
- @echo "Compiling jucer_NewProjectWizard.cpp"
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
-
$(OBJDIR)/jucer_Project_c131864a.o: ../../Source/Project/jucer_Project.cpp
-@mkdir -p $(OBJDIR)
@echo "Compiling jucer_Project.cpp"
@@ -188,6 +179,11 @@ $(OBJDIR)/jucer_ResourceFile_6af120d3.o: ../../Source/Project\ Saving/jucer_Reso
@echo "Compiling jucer_ResourceFile.cpp"
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
+$(OBJDIR)/jucer_SlidingPanelComponent_9aa7a2ab.o: ../../Source/Utility/jucer_SlidingPanelComponent.cpp
+ -@mkdir -p $(OBJDIR)
+ @echo "Compiling jucer_SlidingPanelComponent.cpp"
+ @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
+
$(OBJDIR)/jucer_CodeHelpers_c317179c.o: ../../Source/Utility/jucer_CodeHelpers.cpp
-@mkdir -p $(OBJDIR)
@echo "Compiling jucer_CodeHelpers.cpp"
@@ -218,6 +214,16 @@ $(OBJDIR)/jucer_StoredSettings_26078d2c.o: ../../Source/Utility/jucer_StoredSett
@echo "Compiling jucer_StoredSettings.cpp"
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
+$(OBJDIR)/jucer_NewFileWizard_fac97f47.o: ../../Source/Wizards/jucer_NewFileWizard.cpp
+ -@mkdir -p $(OBJDIR)
+ @echo "Compiling jucer_NewFileWizard.cpp"
+ @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
+
+$(OBJDIR)/jucer_NewProjectWizardClasses_891f6fa2.o: ../../Source/Wizards/jucer_NewProjectWizardClasses.cpp
+ -@mkdir -p $(OBJDIR)
+ @echo "Compiling jucer_NewProjectWizardClasses.cpp"
+ @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
+
$(OBJDIR)/jucer_SourceCodeEditor_461f5487.o: ../../Source/Code\ Editor/jucer_SourceCodeEditor.cpp
-@mkdir -p $(OBJDIR)
@echo "Compiling jucer_SourceCodeEditor.cpp"
diff --git a/extras/Introjucer/Builds/MacOSX/The Introjucer.xcodeproj/project.pbxproj b/extras/Introjucer/Builds/MacOSX/The Introjucer.xcodeproj/project.pbxproj
index a12bf90fd8..692e27374b 100644
--- a/extras/Introjucer/Builds/MacOSX/The Introjucer.xcodeproj/project.pbxproj
+++ b/extras/Introjucer/Builds/MacOSX/The Introjucer.xcodeproj/project.pbxproj
@@ -20,19 +20,20 @@
AA9D0B8E23F3D87A23DE9F8A = {isa = PBXBuildFile; fileRef = 9069981E414A631B036CC9AC; };
244BA1BDA5FAA465EA3F9C6D = {isa = PBXBuildFile; fileRef = 2247EE920DF0610CAF9F4513; };
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; };
8012E6487639A7368E4C4470 = {isa = PBXBuildFile; fileRef = E70CA21960A64CCB835725FF; };
1F37544891EC8DBB5E500C1C = {isa = PBXBuildFile; fileRef = F71AF6D2DF3E652F8B51EBAB; };
110221CD5578153B528AD2BE = {isa = PBXBuildFile; fileRef = D10D51A0A2D63F38B4D86A60; };
+ 4A1DB797F1356E85110FF871 = {isa = PBXBuildFile; fileRef = 20FAAE9F3A7B96C2D8C75BB2; };
CD4F7B119CE718BCE78D61F4 = {isa = PBXBuildFile; fileRef = 9B9CAD20E1243B4351B4C8D8; };
78CB463DD98A55313A543859 = {isa = PBXBuildFile; fileRef = 1729AEDC34001C31B8CC357C; };
1499DF2E85B05AC1BF423773 = {isa = PBXBuildFile; fileRef = CF21D9DB3AEC0A4DCAB36A99; };
123810DAF8AF758928916ECE = {isa = PBXBuildFile; fileRef = 47DD50A5A9091F9900E0EAD9; };
C9F11BA62D6D092A300363F7 = {isa = PBXBuildFile; fileRef = 0F249640243FBD5717F6ADD9; };
F6635694A01FFBF5EF0968DB = {isa = PBXBuildFile; fileRef = 631983AA62673015F8D7453B; };
+ 518DD443B6F17A5AFD707263 = {isa = PBXBuildFile; fileRef = A69024A225F2AC31F17B1314; };
+ B7EBA1A83575F48CD08140B9 = {isa = PBXBuildFile; fileRef = 4B083E951ECB62217C46CB01; };
FCE6F604C00039A32649CB69 = {isa = PBXBuildFile; fileRef = 2E680E2C65684A4272AE079A; };
9BF773500BA51A8B5C6C7348 = {isa = PBXBuildFile; fileRef = 65C498761CE166072A202AA0; };
57B1F32A372143B4D3B1C517 = {isa = PBXBuildFile; fileRef = 3E03B7C7A19E63A724EB79F4; };
@@ -70,6 +71,7 @@
0075C5208947159AF2802F3B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_AudioPluginEditorTemplate.cpp"; path = "../../Source/BinaryData/jucer_AudioPluginEditorTemplate.cpp"; sourceTree = "SOURCE_ROOT"; };
008C8B2C2328CFBB9375397D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ComboBoxHandler.h"; path = "../../Source/ComponentEditor/components/jucer_ComboBoxHandler.h"; sourceTree = "SOURCE_ROOT"; };
00EFEF8A403F4EC9E4D5B7D5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FillType.cpp"; path = "../../../../modules/juce_graphics/colour/juce_FillType.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 015AFF2CAC4BD4FD91E51D22 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_StaticLibraryWizard.h"; path = "../../Source/Wizards/jucer_StaticLibraryWizard.h"; sourceTree = "SOURCE_ROOT"; };
0169ACAA0FAE70CCEEE4F650 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_PaintElementPath.cpp"; path = "../../Source/ComponentEditor/paintelements/jucer_PaintElementPath.cpp"; sourceTree = "SOURCE_ROOT"; };
025C33B85E0CCD3E238D4BDC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LocalisedStrings.h"; path = "../../../../modules/juce_core/text/juce_LocalisedStrings.h"; sourceTree = "SOURCE_ROOT"; };
02C516CEFEE3FE48B492FDC9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Typeface.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_Typeface.cpp"; sourceTree = "SOURCE_ROOT"; };
@@ -92,6 +94,7 @@
07EF1095F6D45A29AF2A6B6F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileBrowserListener.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileBrowserListener.h"; sourceTree = "SOURCE_ROOT"; };
0819B9CBFBA5F410C41C978A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FilenameComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FilenameComponent.h"; sourceTree = "SOURCE_ROOT"; };
084C0070BC67BC893B967EF1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ToggleButtonHandler.h"; path = "../../Source/ComponentEditor/components/jucer_ToggleButtonHandler.h"; sourceTree = "SOURCE_ROOT"; };
+ 087CB3A961CD3C7434D660A4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_NewProjectWizard.h"; path = "../../Source/Wizards/jucer_NewProjectWizard.h"; sourceTree = "SOURCE_ROOT"; };
08ADF7FC9BBE70F3C8186215 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentListener.h"; path = "../../../../modules/juce_gui_basics/components/juce_ComponentListener.h"; sourceTree = "SOURCE_ROOT"; };
08D19EE7C17DCED7E7BBEEE7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileInputStream.cpp"; path = "../../../../modules/juce_core/files/juce_FileInputStream.cpp"; sourceTree = "SOURCE_ROOT"; };
0906A934A2797145A64FF423 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TooltipWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_TooltipWindow.cpp"; sourceTree = "SOURCE_ROOT"; };
@@ -117,10 +120,12 @@
1125D1B2AE54AEF2EB3D51C0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_JucerDocumentEditor.h"; path = "../../Source/ComponentEditor/ui/jucer_JucerDocumentEditor.h"; sourceTree = "SOURCE_ROOT"; };
117B5BB797DEC16E103A08F0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseInputSource.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp"; sourceTree = "SOURCE_ROOT"; };
11C55B714FE5D7CAFC35A0C7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageEffectFilter.h"; path = "../../../../modules/juce_graphics/effects/juce_ImageEffectFilter.h"; sourceTree = "SOURCE_ROOT"; };
+ 11DC04468BC6023671017EBF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_NewFileWizard.h"; path = "../../Source/Wizards/jucer_NewFileWizard.h"; sourceTree = "SOURCE_ROOT"; };
1241F3A1FCDF100CD75D5E78 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DragAndDrop.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_win32_DragAndDrop.cpp"; sourceTree = "SOURCE_ROOT"; };
125CD8A5E5B57840F5154ACD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Viewport.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_Viewport.cpp"; sourceTree = "SOURCE_ROOT"; };
1268E54178897254E9A8B94C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TextLayout.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_TextLayout.cpp"; sourceTree = "SOURCE_ROOT"; };
129CDB26CC63D4BC2EB1F2CC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PerformanceCounter.cpp"; path = "../../../../modules/juce_core/time/juce_PerformanceCounter.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 12CC2BC36B76F99E2B1DD864 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_AudioPluginAppWizard.h"; path = "../../Source/Wizards/jucer_AudioPluginAppWizard.h"; sourceTree = "SOURCE_ROOT"; };
133F1E428260C5ADDF496DF9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ComponentLayout.cpp"; path = "../../Source/ComponentEditor/jucer_ComponentLayout.cpp"; sourceTree = "SOURCE_ROOT"; };
1353717582E55D6E4D074BA5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Files.cpp"; path = "../../../../modules/juce_core/native/juce_win32_Files.cpp"; sourceTree = "SOURCE_ROOT"; };
138550CC958D2F029C01B4E7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_HyperlinkButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_HyperlinkButton.cpp"; sourceTree = "SOURCE_ROOT"; };
@@ -150,6 +155,7 @@
1A1B5A2E9F1DA2122D21F9DF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedPointer.h"; path = "../../../../modules/juce_core/memory/juce_ScopedPointer.h"; sourceTree = "SOURCE_ROOT"; };
1A1C8AEC3C5AB2E972B0212E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MD5.h"; path = "../../../../modules/juce_cryptography/hashing/juce_MD5.h"; sourceTree = "SOURCE_ROOT"; };
1A79A64F47F7B5083EEBB328 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ActionListener.h"; path = "../../../../modules/juce_events/broadcasters/juce_ActionListener.h"; sourceTree = "SOURCE_ROOT"; };
+ 1A8E24245E48C7C4DB0164E6 = {isa = PBXFileReference; lastKnownFileType = image.png; name = projectIconAndroid.png; path = ../../Source/BinaryData/projectIconAndroid.png; sourceTree = "SOURCE_ROOT"; };
1ACDDD42A7050309C8765F75 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextEditorKeyMapper.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_TextEditorKeyMapper.h"; sourceTree = "SOURCE_ROOT"; };
1AF7EFBE4961C7B6C834BF54 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_PresetIDs.h"; path = "../../Source/Utility/jucer_PresetIDs.h"; sourceTree = "SOURCE_ROOT"; };
1B03B2952A4DDA6E6A1C35F9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_UndoManager.h"; path = "../../../../modules/juce_data_structures/undomanager/juce_UndoManager.h"; sourceTree = "SOURCE_ROOT"; };
@@ -173,6 +179,7 @@
202591AAB1ABCFE458F33F7C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_DrawableButton.cpp"; sourceTree = "SOURCE_ROOT"; };
203CF0F8F72A516BB1CC5422 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LookAndFeel_V2.h"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.h"; sourceTree = "SOURCE_ROOT"; };
206D399250A42034706E5434 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ToolbarButton.h"; sourceTree = "SOURCE_ROOT"; };
+ 20FAAE9F3A7B96C2D8C75BB2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_SlidingPanelComponent.cpp"; path = "../../Source/Utility/jucer_SlidingPanelComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
20FC504E8FB8D30E890A9837 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChoicePropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.h"; sourceTree = "SOURCE_ROOT"; };
2107C02B684C7F5B75662333 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Registry.cpp"; path = "../../../../modules/juce_core/native/juce_win32_Registry.cpp"; sourceTree = "SOURCE_ROOT"; };
210A4FDD4A56CF817E5E8567 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageConvolutionKernel.cpp"; path = "../../../../modules/juce_graphics/images/juce_ImageConvolutionKernel.cpp"; sourceTree = "SOURCE_ROOT"; };
@@ -244,11 +251,13 @@
3419904525A3F1FF0CC50687 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileBasedDocument.cpp"; path = "../../../../modules/juce_gui_extra/documents/juce_FileBasedDocument.cpp"; sourceTree = "SOURCE_ROOT"; };
3514E78B58A08F4C98F54C5A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ComponentLayoutPanel.h"; path = "../../Source/ComponentEditor/ui/jucer_ComponentLayoutPanel.h"; sourceTree = "SOURCE_ROOT"; };
352DA3794CAAE2400AE8F2E0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_data_structures.h"; path = "../../../../modules/juce_data_structures/juce_data_structures.h"; sourceTree = "SOURCE_ROOT"; };
+ 353E622BE257074B5589199D = {isa = PBXFileReference; lastKnownFileType = image.png; name = projectIconCodeblocks.png; path = ../../Source/BinaryData/projectIconCodeblocks.png; sourceTree = "SOURCE_ROOT"; };
35AF9D5F0603CF6CE2D355A1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeCoordinatePositioner.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.cpp"; sourceTree = "SOURCE_ROOT"; };
35BF11530EF0D771FD94ABDC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextDragAndDropTarget.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_TextDragAndDropTarget.h"; sourceTree = "SOURCE_ROOT"; };
35CB48D497F35BF3F6998F5D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ProjectExporter.h"; path = "../../Source/Project Saving/jucer_ProjectExporter.h"; sourceTree = "SOURCE_ROOT"; };
35E6EE1E98DD7050DDFECD9B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ContentCompTemplate.h"; path = "../../Source/BinaryData/jucer_ContentCompTemplate.h"; sourceTree = "SOURCE_ROOT"; };
364D1A9B113320407A7E57B9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = JuceHeader.h; path = ../../JuceLibraryCode/JuceHeader.h; sourceTree = "SOURCE_ROOT"; };
+ 3690187062F7DD70976D312A = {isa = PBXFileReference; lastKnownFileType = image.png; name = projectIconVisualStudio10.png; path = ../../Source/BinaryData/projectIconVisualStudio10.png; sourceTree = "SOURCE_ROOT"; };
36981345C70DCC6B95DEC59C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Initialisation.h"; path = "../../../../modules/juce_events/messages/juce_Initialisation.h"; sourceTree = "SOURCE_ROOT"; };
375AFDF06A908D89DEC5205F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ProjectTree_Base.h"; path = "../../Source/Project/jucer_ProjectTree_Base.h"; sourceTree = "SOURCE_ROOT"; };
37A0A38C2B5825B9A302879C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ReferenceCountedArray.h"; path = "../../../../modules/juce_core/containers/juce_ReferenceCountedArray.h"; sourceTree = "SOURCE_ROOT"; };
@@ -271,6 +280,7 @@
3F00C034B140193B3754969B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ImageResourceProperty.h"; path = "../../Source/ComponentEditor/paintelements/jucer_ImageResourceProperty.h"; sourceTree = "SOURCE_ROOT"; };
3F1501FE4867042830B25DD5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CustomTypeface.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_CustomTypeface.cpp"; sourceTree = "SOURCE_ROOT"; };
3F222D26A164E7AD78A33B3D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToggleButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ToggleButton.h"; sourceTree = "SOURCE_ROOT"; };
+ 3F4EEDF4AA7C37DC6A1B14B5 = {isa = PBXFileReference; lastKnownFileType = image.png; name = projectIconXcode.png; path = ../../Source/BinaryData/projectIconXcode.png; sourceTree = "SOURCE_ROOT"; };
3F9D4C7F6E5779D4E4AE655D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ComponentLayout.h"; path = "../../Source/ComponentEditor/jucer_ComponentLayout.h"; sourceTree = "SOURCE_ROOT"; };
3FAFD16944A6674164D23914 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_ASCII.h"; path = "../../../../modules/juce_core/text/juce_CharPointer_ASCII.h"; sourceTree = "SOURCE_ROOT"; };
400E4C67ABCDDB1D49EBB85E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_TabbedComponentHandler.h"; path = "../../Source/ComponentEditor/components/jucer_TabbedComponentHandler.h"; sourceTree = "SOURCE_ROOT"; };
@@ -300,6 +310,7 @@
47B49049B85EED74D29C9906 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ProjectTree_File.h"; path = "../../Source/Project/jucer_ProjectTree_File.h"; sourceTree = "SOURCE_ROOT"; };
47DD50A5A9091F9900E0EAD9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_JucerTreeViewBase.cpp"; path = "../../Source/Utility/jucer_JucerTreeViewBase.cpp"; sourceTree = "SOURCE_ROOT"; };
47F4C6341177140302CE802A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DragAndDropTarget.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_DragAndDropTarget.h"; sourceTree = "SOURCE_ROOT"; };
+ 480AB41AC2E4B53BEAC6E193 = {isa = PBXFileReference; lastKnownFileType = file.svg; name = iconPlugin.svg; path = ../../Source/BinaryData/iconPlugin.svg; sourceTree = "SOURCE_ROOT"; };
48A2FBB4CB48AC4FCA796F2F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ContainerDeletePolicy.h"; path = "../../../../modules/juce_core/memory/juce_ContainerDeletePolicy.h"; sourceTree = "SOURCE_ROOT"; };
4904357A3FFA61972A9E9D6F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PerformanceCounter.h"; path = "../../../../modules/juce_core/time/juce_PerformanceCounter.h"; sourceTree = "SOURCE_ROOT"; };
490FEE91E483534632094C67 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentAnimator.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentAnimator.h"; sourceTree = "SOURCE_ROOT"; };
@@ -309,11 +320,13 @@
4A41FD3066D0979DB48691E5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_MiscUtilities.h"; path = "../../Source/Utility/jucer_MiscUtilities.h"; sourceTree = "SOURCE_ROOT"; };
4AE0078871D92B6085C28313 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AlertWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_AlertWindow.cpp"; sourceTree = "SOURCE_ROOT"; };
4AF755C65E352951D80FB93B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationProperties.cpp"; path = "../../../../modules/juce_data_structures/app_properties/juce_ApplicationProperties.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 4B083E951ECB62217C46CB01 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_NewProjectWizardClasses.cpp"; path = "../../Source/Wizards/jucer_NewProjectWizardClasses.cpp"; sourceTree = "SOURCE_ROOT"; };
4B98FC7F079F93BCC4D65C86 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_FileChooser.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_linux_FileChooser.cpp"; sourceTree = "SOURCE_ROOT"; };
4BC9122A6E6496EAF716560E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ListBox.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ListBox.cpp"; sourceTree = "SOURCE_ROOT"; };
4C150A1BF98D747EC218A602 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Component.cpp"; path = "../../../../modules/juce_gui_basics/components/juce_Component.cpp"; sourceTree = "SOURCE_ROOT"; };
4C2093BCD3528ACEDC7A2B33 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ImageButtonHandler.h"; path = "../../Source/ComponentEditor/components/jucer_ImageButtonHandler.h"; sourceTree = "SOURCE_ROOT"; };
4CA1C3E6585D7694AA9C309F = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Info.plist; sourceTree = "SOURCE_ROOT"; };
+ 4D4935CB2D04939D99E3D8F9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ConsoleAppWizard.h"; path = "../../Source/Wizards/jucer_ConsoleAppWizard.h"; sourceTree = "SOURCE_ROOT"; };
4D6F99ED00A4D8683AF313B2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ColourGradient.h"; path = "../../../../modules/juce_graphics/colour/juce_ColourGradient.h"; sourceTree = "SOURCE_ROOT"; };
4D7F53313945ED27A7D16B80 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Result.h"; path = "../../../../modules/juce_core/misc/juce_Result.h"; sourceTree = "SOURCE_ROOT"; };
4E191CDCE7565DB726CF7065 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ComponentOverlayComponent.cpp"; path = "../../Source/ComponentEditor/ui/jucer_ComponentOverlayComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
@@ -322,6 +335,7 @@
4E5FFE3BE8774948082411F0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TimeSliceThread.h"; path = "../../../../modules/juce_core/threads/juce_TimeSliceThread.h"; sourceTree = "SOURCE_ROOT"; };
4E60769DE992CA7FC1A4A486 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_PaintRoutineEditor.h"; path = "../../Source/ComponentEditor/ui/jucer_PaintRoutineEditor.h"; sourceTree = "SOURCE_ROOT"; };
4E8FE9B1B8C90FC28D56523B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_PaintElementEllipse.h"; path = "../../Source/ComponentEditor/paintelements/jucer_PaintElementEllipse.h"; sourceTree = "SOURCE_ROOT"; };
+ 4EB8DFC2D9F94F34A24DEA39 = {isa = PBXFileReference; lastKnownFileType = file.svg; name = iconAudio.svg; path = ../../Source/BinaryData/iconAudio.svg; sourceTree = "SOURCE_ROOT"; };
4F5843D423E67797070115B3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Timer.cpp"; path = "../../../../modules/juce_events/timers/juce_Timer.cpp"; sourceTree = "SOURCE_ROOT"; };
4F6365A0D2D51337151D85C3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ProjectTree_Group.h"; path = "../../Source/Project/jucer_ProjectTree_Group.h"; sourceTree = "SOURCE_ROOT"; };
4F687965FBE86EAFDB3ACFEC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = BinaryData.h; path = ../../JuceLibraryCode/BinaryData.h; sourceTree = "SOURCE_ROOT"; };
@@ -363,7 +377,6 @@
57FD2D74F5DCFF42099CA738 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_gui_extra/juce_module_info"; sourceTree = "SOURCE_ROOT"; };
58139D8D454051C59E77609B = {isa = PBXFileReference; lastKnownFileType = file.nib; name = RecentFilesMenuTemplate.nib; path = ../../Source/BinaryData/RecentFilesMenuTemplate.nib; sourceTree = "SOURCE_ROOT"; };
5843A5060852C6ACC4770EC7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Fonts.cpp"; path = "../../../../modules/juce_graphics/native/juce_win32_Fonts.cpp"; sourceTree = "SOURCE_ROOT"; };
- 5852830ECC222BA36A30EC20 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_NewFileWizard.h"; path = "../../Source/Project/jucer_NewFileWizard.h"; sourceTree = "SOURCE_ROOT"; };
58858190E0EE0AA6955EA236 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_UIViewComponent.mm"; path = "../../../../modules/juce_gui_extra/native/juce_ios_UIViewComponent.mm"; sourceTree = "SOURCE_ROOT"; };
58943E79C32289AB7273F59D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DragAndDropContainer.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_DragAndDropContainer.cpp"; sourceTree = "SOURCE_ROOT"; };
589A6DAE96E2A7924646873F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SubregionStream.cpp"; path = "../../../../modules/juce_core/streams/juce_SubregionStream.cpp"; sourceTree = "SOURCE_ROOT"; };
@@ -373,6 +386,7 @@
5BC5622E615CA3B13C6F9046 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StretchableObjectResizer.h"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableObjectResizer.h"; sourceTree = "SOURCE_ROOT"; };
5C82ACC4EE09A1DE1CCEC9A0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Primes.cpp"; path = "../../../../modules/juce_cryptography/encryption/juce_Primes.cpp"; sourceTree = "SOURCE_ROOT"; };
5CB6ACA0F14EDE47A4F7BCC2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BubbleMessageComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_BubbleMessageComponent.h"; sourceTree = "SOURCE_ROOT"; };
+ 5D2E5EAE3B3A88B4BE563E96 = {isa = PBXFileReference; lastKnownFileType = file.svg; name = iconStatic.svg; path = ../../Source/BinaryData/iconStatic.svg; sourceTree = "SOURCE_ROOT"; };
5D5E0592B7C61D523CC40C50 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ValueTree.cpp"; path = "../../../../modules/juce_data_structures/values/juce_ValueTree.cpp"; sourceTree = "SOURCE_ROOT"; };
5D9E7814B713670624F0028F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ComponentTypeHandler.h"; path = "../../Source/ComponentEditor/components/jucer_ComponentTypeHandler.h"; sourceTree = "SOURCE_ROOT"; };
5DBA8C92675235B098946B18 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MemoryOutputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_MemoryOutputStream.cpp"; sourceTree = "SOURCE_ROOT"; };
@@ -391,9 +405,11 @@
63092DCDC875D681A5677105 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_events/juce_module_info"; sourceTree = "SOURCE_ROOT"; };
631983AA62673015F8D7453B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_StoredSettings.cpp"; path = "../../Source/Utility/jucer_StoredSettings.cpp"; sourceTree = "SOURCE_ROOT"; };
6367309B2092121B86FE3AA0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_posix_NamedPipe.cpp"; path = "../../../../modules/juce_core/native/juce_posix_NamedPipe.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 63941FB77C1E8D9E5AAC85B4 = {isa = PBXFileReference; lastKnownFileType = image.png; name = projectIconVisualStudio13.png; path = ../../Source/BinaryData/projectIconVisualStudio13.png; sourceTree = "SOURCE_ROOT"; };
63B72B34BC9AC448422EF1A0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DocumentWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_DocumentWindow.cpp"; sourceTree = "SOURCE_ROOT"; };
63B74F9D9F43393F6427501C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WebBrowserComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_WebBrowserComponent.h"; sourceTree = "SOURCE_ROOT"; };
641B57E5FAE6BEFDB6462921 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ResourceEditorPanel.h"; path = "../../Source/ComponentEditor/ui/jucer_ResourceEditorPanel.h"; sourceTree = "SOURCE_ROOT"; };
+ 64B19786481DB13E2B05AB57 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_GUIAppWizard.h"; path = "../../Source/Wizards/jucer_GUIAppWizard.h"; sourceTree = "SOURCE_ROOT"; };
64CCE4A87FEE5C2B8E83BD29 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AnimatedPosition.h"; path = "../../../../modules/juce_gui_basics/layout/juce_AnimatedPosition.h"; sourceTree = "SOURCE_ROOT"; };
64CF8D7D0C97323C1B4F16F2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageComponent.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ImageComponent.h"; sourceTree = "SOURCE_ROOT"; };
65C498761CE166072A202AA0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ComponentTypeHandler.cpp"; path = "../../Source/ComponentEditor/components/jucer_ComponentTypeHandler.cpp"; sourceTree = "SOURCE_ROOT"; };
@@ -414,7 +430,6 @@
68E1CA6424A84D91BEA46175 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GZIPCompressorOutputStream.h"; path = "../../../../modules/juce_core/zip/juce_GZIPCompressorOutputStream.h"; sourceTree = "SOURCE_ROOT"; };
6920079B91BB1A48F82C7B0A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativePoint.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativePoint.h"; sourceTree = "SOURCE_ROOT"; };
6944804CF7BBD230EDF98E3F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GlyphArrangement.h"; path = "../../../../modules/juce_graphics/fonts/juce_GlyphArrangement.h"; sourceTree = "SOURCE_ROOT"; };
- 69A5D13490A62DAE9A7D5A22 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_NewProjectWizard.cpp"; path = "../../Source/Project/jucer_NewProjectWizard.cpp"; sourceTree = "SOURCE_ROOT"; };
6A04C2E34DB0C6515FFF160B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Application.cpp"; path = "../../../../modules/juce_gui_basics/application/juce_Application.cpp"; sourceTree = "SOURCE_ROOT"; };
6A337C69A928E3CE79C55457 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ComponentChoiceProperty.h"; path = "../../Source/ComponentEditor/properties/jucer_ComponentChoiceProperty.h"; sourceTree = "SOURCE_ROOT"; };
6AA46ED6C6DDD5A7BC72F686 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OptionalScopedPointer.h"; path = "../../../../modules/juce_core/memory/juce_OptionalScopedPointer.h"; sourceTree = "SOURCE_ROOT"; };
@@ -436,9 +451,11 @@
6E8B46E33BF7A0DD930A5100 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileTreeComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
6EE1847181635ED3C0838A4B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LowLevelGraphicsPostScriptRenderer.h"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.h"; sourceTree = "SOURCE_ROOT"; };
6EE91491434D058606460AFB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GroupComponent.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_GroupComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 6F47E6E12D22B6C438CCC7FF = {isa = PBXFileReference; lastKnownFileType = image.png; name = projectIconVisualStudio12.png; path = ../../Source/BinaryData/projectIconVisualStudio12.png; sourceTree = "SOURCE_ROOT"; };
6F8A53EDF09094C83DE4D111 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CPlusPlusCodeTokeniser.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.h"; sourceTree = "SOURCE_ROOT"; };
70CF9F1991538524A7C4CE39 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Fonts.cpp"; path = "../../../../modules/juce_graphics/native/juce_android_Fonts.cpp"; sourceTree = "SOURCE_ROOT"; };
70DC1D288DC6503E628A5A03 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_gui_basics.mm"; path = "../../../../modules/juce_gui_basics/juce_gui_basics.mm"; sourceTree = "SOURCE_ROOT"; };
+ 714267352CE5C4357ADBC231 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_StartPageComponent.h"; path = "../../Source/Wizards/jucer_StartPageComponent.h"; sourceTree = "SOURCE_ROOT"; };
71A61C2973404BD68E8E7902 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_IPAddress.cpp"; path = "../../../../modules/juce_core/network/juce_IPAddress.cpp"; sourceTree = "SOURCE_ROOT"; };
7211101FFA28400ADBB1D47A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_Module.h"; path = "../../Source/Project/jucer_Module.h"; sourceTree = "SOURCE_ROOT"; };
72FED7B10FBF5AD1F504FDFF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Value.h"; path = "../../../../modules/juce_data_structures/values/juce_Value.h"; sourceTree = "SOURCE_ROOT"; };
@@ -446,6 +463,7 @@
73CEF8ADF016E554F96FD3B0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CompilerSupport.h"; path = "../../../../modules/juce_core/system/juce_CompilerSupport.h"; sourceTree = "SOURCE_ROOT"; };
7435199CD81F307322FE1065 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_SystemTrayIcon.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_win32_SystemTrayIcon.cpp"; sourceTree = "SOURCE_ROOT"; };
7507846FD162469386479CDB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MenuBarModel.cpp"; path = "../../../../modules/juce_gui_basics/menus/juce_MenuBarModel.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 75C3918D29C66F41664771D5 = {isa = PBXFileReference; lastKnownFileType = file.svg; name = iconDynamic.svg; path = ../../Source/BinaryData/iconDynamic.svg; sourceTree = "SOURCE_ROOT"; };
75EB08697D38632CCBE734D8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SpinLock.h"; path = "../../../../modules/juce_core/threads/juce_SpinLock.h"; sourceTree = "SOURCE_ROOT"; };
76439EAACE53C774CE07BD9E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Toolbar.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_Toolbar.cpp"; sourceTree = "SOURCE_ROOT"; };
7723BAE1917C8A0418F2D23B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextEditor.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_TextEditor.h"; sourceTree = "SOURCE_ROOT"; };
@@ -466,10 +484,12 @@
7B824A2F1BBE334B140BD8AF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AttributedString.h"; path = "../../../../modules/juce_graphics/fonts/juce_AttributedString.h"; sourceTree = "SOURCE_ROOT"; };
7C02936574E000C436E3AD8E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Value.cpp"; path = "../../../../modules/juce_data_structures/values/juce_Value.cpp"; sourceTree = "SOURCE_ROOT"; };
7C48EA717C5B1136A39FF4FB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_InterprocessConnection.cpp"; path = "../../../../modules/juce_events/interprocess/juce_InterprocessConnection.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 7C97B8D0BEDC0C23A851C81D = {isa = PBXFileReference; lastKnownFileType = file.svg; name = iconAnimation.svg; path = ../../Source/BinaryData/iconAnimation.svg; sourceTree = "SOURCE_ROOT"; };
7CBB297E627A7DC7EA12A8B6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyPress.cpp"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyPress.cpp"; sourceTree = "SOURCE_ROOT"; };
7CFA76389645D629E6C61B39 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FilePreviewComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FilePreviewComponent.h"; sourceTree = "SOURCE_ROOT"; };
7D264E60AC701D3736527D8C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_NSViewComponentPeer.mm"; path = "../../../../modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm"; sourceTree = "SOURCE_ROOT"; };
7D50F21E9F18C152C9C662D5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentBuilder.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentBuilder.h"; sourceTree = "SOURCE_ROOT"; };
+ 7D7343762DEE1AD30D20D239 = {isa = PBXFileReference; lastKnownFileType = file.svg; name = iconGui.svg; path = ../../Source/BinaryData/iconGui.svg; sourceTree = "SOURCE_ROOT"; };
7DCAE585F301C5591F96AF99 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseEvent.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseEvent.h"; sourceTree = "SOURCE_ROOT"; };
7E0C5AFB74461AC174941BDD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandManager.h"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandManager.h"; sourceTree = "SOURCE_ROOT"; };
7E3ACAD10381DA0D81093329 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ElementComparator.h"; path = "../../../../modules/juce_core/containers/juce_ElementComparator.h"; sourceTree = "SOURCE_ROOT"; };
@@ -483,6 +503,7 @@
808503667FBB423F81780796 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DirectoryContentsDisplayComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.h"; sourceTree = "SOURCE_ROOT"; };
8090981F07A76E465DAAADF4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ValueSourceHelpers.h"; path = "../../Source/Utility/jucer_ValueSourceHelpers.h"; sourceTree = "SOURCE_ROOT"; };
8138A55052E9FC27284B74DD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_FontPropertyComponent.h"; path = "../../Source/ComponentEditor/properties/jucer_FontPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; };
+ 8148C42B2F1AC1849B918A75 = {isa = PBXFileReference; lastKnownFileType = file.svg; name = iconConsole.svg; path = ../../Source/BinaryData/iconConsole.svg; sourceTree = "SOURCE_ROOT"; };
81A3ACDD205C8F9E424B51F6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_android_JNIHelpers.h"; path = "../../../../modules/juce_core/native/juce_android_JNIHelpers.h"; sourceTree = "SOURCE_ROOT"; };
81B74E2B42184AD339E89F0B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_ActiveXComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_win32_ActiveXComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
820291543BF93243B718F0EE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_JucerTreeViewBase.h"; path = "../../Source/Utility/jucer_JucerTreeViewBase.h"; sourceTree = "SOURCE_ROOT"; };
@@ -513,6 +534,8 @@
8A5D40E78966BA8B0F8B542A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PathIterator.h"; path = "../../../../modules/juce_graphics/geometry/juce_PathIterator.h"; sourceTree = "SOURCE_ROOT"; };
8A9386451AEA0640E55E8869 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AlertWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_AlertWindow.h"; sourceTree = "SOURCE_ROOT"; };
8B698D4DCFED3BCB6F30D69F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativeCoordinatePositioner.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.h"; sourceTree = "SOURCE_ROOT"; };
+ 8BBD620A595D883BE34D60D6 = {isa = PBXFileReference; lastKnownFileType = image.png; name = projectIconLinuxMakefile.png; path = ../../Source/BinaryData/projectIconLinuxMakefile.png; sourceTree = "SOURCE_ROOT"; };
+ 8BD8E9DA627D6EF9BA10FB9E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_NewProjectWizardComponent.h"; path = "../../Source/Wizards/jucer_NewProjectWizardComponent.h"; sourceTree = "SOURCE_ROOT"; };
8C0CDFB36933C81F98328B6D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedValueSetter.h"; path = "../../../../modules/juce_core/containers/juce_ScopedValueSetter.h"; sourceTree = "SOURCE_ROOT"; };
8C52A3DDA62A746AA7A68535 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_Main.cpp"; path = "../../Source/Application/jucer_Main.cpp"; sourceTree = "SOURCE_ROOT"; };
8D12E5100E73E3B7DAA10261 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_events.h"; path = "../../../../modules/juce_events/juce_events.h"; sourceTree = "SOURCE_ROOT"; };
@@ -578,6 +601,7 @@
9C7FA58D223674C4C2AC6595 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_JucerDocumentEditor.cpp"; path = "../../Source/ComponentEditor/ui/jucer_JucerDocumentEditor.cpp"; sourceTree = "SOURCE_ROOT"; };
9C803826E5E3FDB1B37660D5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ComponentDocument.h"; path = "../../Source/ComponentEditor/documents/jucer_ComponentDocument.h"; sourceTree = "SOURCE_ROOT"; };
9C9402994B7971876006AEBB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ActionBroadcaster.h"; path = "../../../../modules/juce_events/broadcasters/juce_ActionBroadcaster.h"; sourceTree = "SOURCE_ROOT"; };
+ 9D36626E41832F1C6687A0F0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_DynamicLibraryWizard.h"; path = "../../Source/Wizards/jucer_DynamicLibraryWizard.h"; sourceTree = "SOURCE_ROOT"; };
9D69073057BE050870B38749 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentDragger.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_ComponentDragger.cpp"; sourceTree = "SOURCE_ROOT"; };
9D7689451732AF8333402B3A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ObjectTypes.cpp"; path = "../../Source/ComponentEditor/jucer_ObjectTypes.cpp"; sourceTree = "SOURCE_ROOT"; };
9DE1BC5241C70AF12B327932 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DropShadowEffect.h"; path = "../../../../modules/juce_graphics/effects/juce_DropShadowEffect.h"; sourceTree = "SOURCE_ROOT"; };
@@ -609,11 +633,13 @@
A4422A360A9FB7BCC315BEF4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_CommonFile.cpp"; path = "../../../../modules/juce_core/native/juce_linux_CommonFile.cpp"; sourceTree = "SOURCE_ROOT"; };
A4740A64F0FC3BD980BE5D9C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TabbedButtonBar.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_TabbedButtonBar.cpp"; sourceTree = "SOURCE_ROOT"; };
A485A4F0363775AE730EA0E9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ValueTree.h"; path = "../../../../modules/juce_data_structures/values/juce_ValueTree.h"; sourceTree = "SOURCE_ROOT"; };
+ A4B112FAC858A4DFAD3444EF = {isa = PBXFileReference; lastKnownFileType = file.svg; name = iconHighlight.svg; path = ../../Source/BinaryData/iconHighlight.svg; sourceTree = "SOURCE_ROOT"; };
A513D5453FF52483D13BA026 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PropertyPanel.h"; path = "../../../../modules/juce_gui_basics/properties/juce_PropertyPanel.h"; sourceTree = "SOURCE_ROOT"; };
A5864A527A761F92C237EB7C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedXLock.h"; path = "../../../../modules/juce_events/native/juce_ScopedXLock.h"; sourceTree = "SOURCE_ROOT"; };
A5D2E5A77E6A67E35440BF3B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileOutputStream.cpp"; path = "../../../../modules/juce_core/files/juce_FileOutputStream.cpp"; sourceTree = "SOURCE_ROOT"; };
A60E4D1A58B70887556782F4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageFileFormat.cpp"; path = "../../../../modules/juce_graphics/images/juce_ImageFileFormat.cpp"; sourceTree = "SOURCE_ROOT"; };
A63DA2EB2FA9E6F88F63A09A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SparseSet.h"; path = "../../../../modules/juce_core/containers/juce_SparseSet.h"; sourceTree = "SOURCE_ROOT"; };
+ A69024A225F2AC31F17B1314 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_NewFileWizard.cpp"; path = "../../Source/Wizards/jucer_NewFileWizard.cpp"; sourceTree = "SOURCE_ROOT"; };
A6D36E0244150AFBF63C1162 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileChooserDialogBox.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.cpp"; sourceTree = "SOURCE_ROOT"; };
A6E4200E8939608555935EF3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringArray.h"; path = "../../../../modules/juce_core/text/juce_StringArray.h"; sourceTree = "SOURCE_ROOT"; };
A726B794D536985E1F35525F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Image.h"; path = "../../../../modules/juce_graphics/images/juce_Image.h"; sourceTree = "SOURCE_ROOT"; };
@@ -688,14 +714,18 @@
BDE24BA8FEAE654645079B84 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Variant.cpp"; path = "../../../../modules/juce_core/containers/juce_Variant.cpp"; sourceTree = "SOURCE_ROOT"; };
BDEBB0AC32DDA8C16FFE6011 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TooltipClient.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_TooltipClient.h"; 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"; };
+ BEE755CEBA2EAD84359CB63E = {isa = PBXFileReference; lastKnownFileType = file.svg; name = iconOpengl.svg; path = ../../Source/BinaryData/iconOpengl.svg; 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"; };
C094F3B6A65A79A6DF87C9C2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_PaintElementGroup.h"; path = "../../Source/ComponentEditor/paintelements/jucer_PaintElementGroup.h"; sourceTree = "SOURCE_ROOT"; };
+ C09BBB58CA45B66D693E8C31 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_TemplateThumbnailsComponent.h"; path = "../../Source/Wizards/jucer_TemplateThumbnailsComponent.h"; sourceTree = "SOURCE_ROOT"; };
C187718F7B9EBA88584B43F3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_PaintRoutine.cpp"; path = "../../Source/ComponentEditor/jucer_PaintRoutine.cpp"; 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"; };
+ C22791DB75870C4F102AA8A3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_SlidingPanelComponent.h"; path = "../../Source/Utility/jucer_SlidingPanelComponent.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"; };
+ C2990A8D054BC230E7C637C3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_NewProjectWizardClasses.h"; path = "../../Source/Wizards/jucer_NewProjectWizardClasses.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"; };
C38DFB0C94BBC1CE46A3D4E4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TooltipWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_TooltipWindow.h"; sourceTree = "SOURCE_ROOT"; };
@@ -705,6 +735,7 @@
C510495DF7602C36F216A50C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InputSource.h"; path = "../../../../modules/juce_core/streams/juce_InputSource.h"; sourceTree = "SOURCE_ROOT"; };
C5307BECDD6325DCE92F50FC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BlowFish.h"; path = "../../../../modules/juce_cryptography/encryption/juce_BlowFish.h"; sourceTree = "SOURCE_ROOT"; };
C56C7577E65C0BFA449E71FE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MessageManager.cpp"; path = "../../../../modules/juce_events/messages/juce_MessageManager.cpp"; sourceTree = "SOURCE_ROOT"; };
+ C59820834B6C00F603529252 = {isa = PBXFileReference; lastKnownFileType = image.png; name = projectIconVisualStudio05.png; path = ../../Source/BinaryData/projectIconVisualStudio05.png; sourceTree = "SOURCE_ROOT"; };
C5D5D2FFB030BD43160167EB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DirectoryIterator.cpp"; path = "../../../../modules/juce_core/files/juce_DirectoryIterator.cpp"; sourceTree = "SOURCE_ROOT"; };
C5FCECA838D4D12D03929139 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileBrowserComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
C61E82D93918A611FAFD9E9F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentBoundsConstrainer.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.h"; sourceTree = "SOURCE_ROOT"; };
@@ -741,6 +772,7 @@
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; };
D041043D3B554B88F855C174 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_HighResolutionTimer.h"; path = "../../../../modules/juce_core/threads/juce_HighResolutionTimer.h"; sourceTree = "SOURCE_ROOT"; };
+ D0D8B580D0689FFF4B9B823B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_StrokeType.h"; path = "../../Source/ComponentEditor/paintelements/jucer_StrokeType.h"; sourceTree = "SOURCE_ROOT"; };
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"; };
@@ -751,10 +783,12 @@
D374DC78AAC02504576AA9B3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_GroupComponentHandler.h"; path = "../../Source/ComponentEditor/components/jucer_GroupComponentHandler.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"; };
D3E139185095C486DD3D61F2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_TranslationTool.h"; path = "../../Source/Utility/jucer_TranslationTool.h"; sourceTree = "SOURCE_ROOT"; };
+ D4444EC6342A2A7BC4F7BC46 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ComponentTextProperty.h"; path = "../../Source/ComponentEditor/properties/jucer_ComponentTextProperty.h"; 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"; };
D678882D133090214AF681BC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ThreadLocalValue.h"; path = "../../../../modules/juce_core/threads/juce_ThreadLocalValue.h"; sourceTree = "SOURCE_ROOT"; };
@@ -763,48 +797,41 @@
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"; };
+ D7CCD84E625F03C3F2F8AEC3 = {isa = PBXFileReference; lastKnownFileType = file.svg; name = iconOpenfile.svg; path = ../../Source/BinaryData/iconOpenfile.svg; 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"; };
- 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"; };
- D9B077E2ECDDA94961E134D7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringPairArray.h"; path = "../../../../modules/juce_core/text/juce_StringPairArray.h"; sourceTree = "SOURCE_ROOT"; };
- DAF84A553D264705FA6EB6FF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_TreeViewHandler.h"; path = "../../Source/ComponentEditor/components/jucer_TreeViewHandler.h"; sourceTree = "SOURCE_ROOT"; };
- DBE0CDE1B017190ABBFF557C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ProjectExport_CodeBlocks.h"; path = "../../Source/Project Saving/jucer_ProjectExport_CodeBlocks.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"; };
- DE5F3C9EF6BFFDE73AF9E7FC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DirectoryContentsDisplayComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
- E0F9CA57E44F7F7E7E217E47 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ComponentUndoableAction.h"; path = "../../Source/ComponentEditor/components/jucer_ComponentUndoableAction.h"; sourceTree = "SOURCE_ROOT"; };
- E4BB22E27C5AA4B666F265BD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_TextButtonHandler.h"; path = "../../Source/ComponentEditor/components/jucer_TextButtonHandler.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"; };
- E65A820D34BF39478B7C5925 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_DocumentEditorComponent.h"; path = "../../Source/Application/jucer_DocumentEditorComponent.h"; 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"; };
- D0D8B580D0689FFF4B9B823B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_StrokeType.h"; path = "../../Source/ComponentEditor/paintelements/jucer_StrokeType.h"; sourceTree = "SOURCE_ROOT"; };
- D4444EC6342A2A7BC4F7BC46 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ComponentTextProperty.h"; path = "../../Source/ComponentEditor/properties/jucer_ComponentTextProperty.h"; 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"; };
D87FC8F6834E9DC9C8E88B94 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_JustificationProperty.h"; path = "../../Source/ComponentEditor/properties/jucer_JustificationProperty.h"; 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"; };
D92A6E9404A30EED32DCE4ED = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_RelativePositionedRectangle.h"; path = "../../Source/ComponentEditor/ui/jucer_RelativePositionedRectangle.h"; 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"; };
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"; };
DA345D5B9DABD049F90DC96F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_GeneratedCode.h"; path = "../../Source/ComponentEditor/jucer_GeneratedCode.h"; sourceTree = "SOURCE_ROOT"; };
+ DAF84A553D264705FA6EB6FF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_TreeViewHandler.h"; path = "../../Source/ComponentEditor/components/jucer_TreeViewHandler.h"; 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"; };
+ DBE0CDE1B017190ABBFF557C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ProjectExport_CodeBlocks.h"; path = "../../Source/Project Saving/jucer_ProjectExport_CodeBlocks.h"; 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"; };
DC922C6A65D260C18E888E49 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ComponentTemplate.cpp"; path = "../../Source/BinaryData/jucer_ComponentTemplate.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"; };
DEF579B1433EB8DEE7AB50F8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Drawable.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_Drawable.cpp"; sourceTree = "SOURCE_ROOT"; };
DF725A596B7BCD7520CC0A9F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ResourceEditorPanel.cpp"; path = "../../Source/ComponentEditor/ui/jucer_ResourceEditorPanel.cpp"; sourceTree = "SOURCE_ROOT"; };
DF7BB5B6B394EDEEF5F5B4B8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CallbackMessage.h"; path = "../../../../modules/juce_events/messages/juce_CallbackMessage.h"; sourceTree = "SOURCE_ROOT"; };
DFC6364D81D9C60BD4CA9D12 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeTime.cpp"; path = "../../../../modules/juce_core/time/juce_RelativeTime.cpp"; sourceTree = "SOURCE_ROOT"; };
E07C56267CBB46FC44EF2026 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Image.cpp"; path = "../../../../modules/juce_graphics/images/juce_Image.cpp"; sourceTree = "SOURCE_ROOT"; };
+ E0F9CA57E44F7F7E7E217E47 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ComponentUndoableAction.h"; path = "../../Source/ComponentEditor/components/jucer_ComponentUndoableAction.h"; sourceTree = "SOURCE_ROOT"; };
E19160CF7208320D128786CF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Javascript.h"; path = "../../../../modules/juce_core/javascript/juce_Javascript.h"; sourceTree = "SOURCE_ROOT"; };
E1C16C872E34BCB144B469F9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_EdgeTable.h"; path = "../../../../modules/juce_graphics/geometry/juce_EdgeTable.h"; sourceTree = "SOURCE_ROOT"; };
E2374E15D65425C4101237E2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_NewComponentTemplate.h"; path = "../../Source/BinaryData/jucer_NewComponentTemplate.h"; sourceTree = "SOURCE_ROOT"; };
E27F0860F27023BAA9798B46 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Rectangle.h"; path = "../../../../modules/juce_graphics/geometry/juce_Rectangle.h"; sourceTree = "SOURCE_ROOT"; };
E284B565DBD647DC0830D23B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ButtonPropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
+ E293F9DE1162A7D27E1FAC1F = {isa = PBXFileReference; lastKnownFileType = image.png; name = projectIconVisualStudio08.png; path = ../../Source/BinaryData/projectIconVisualStudio08.png; sourceTree = "SOURCE_ROOT"; };
E2C1C995D554A3F0A363CE58 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Thread.h"; path = "../../../../modules/juce_core/threads/juce_Thread.h"; sourceTree = "SOURCE_ROOT"; };
E2DBA3307837B64AFCCD8F8D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_File.cpp"; path = "../../../../modules/juce_core/files/juce_File.cpp"; sourceTree = "SOURCE_ROOT"; };
E3869AC657E984565F1718AA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ConnectedChildProcess.h"; path = "../../../../modules/juce_events/interprocess/juce_ConnectedChildProcess.h"; sourceTree = "SOURCE_ROOT"; };
@@ -815,21 +842,28 @@
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"; };
+ 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"; };
E62D9BA6E92FE7BB6EF65699 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_JSON.h"; path = "../../../../modules/juce_core/javascript/juce_JSON.h"; sourceTree = "SOURCE_ROOT"; };
+ E63F54CF8D5D922A319C6962 = {isa = PBXFileReference; lastKnownFileType = image.png; name = projectIconXcodeIOS.png; path = ../../Source/BinaryData/projectIconXcodeIOS.png; 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"; };
E720FBCD836FF3AA466C31B6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_HighResolutionTimer.cpp"; path = "../../../../modules/juce_core/threads/juce_HighResolutionTimer.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"; };
E7D09B860F4D4A13D4312C38 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PropertiesFile.cpp"; path = "../../../../modules/juce_data_structures/app_properties/juce_PropertiesFile.cpp"; sourceTree = "SOURCE_ROOT"; };
E7E122AE104E79BB641B07B3 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_data_structures/juce_module_info"; sourceTree = "SOURCE_ROOT"; };
- E7E1C4F416CFA44BE7DD1A74 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KeyboardFocusTraverser.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.h"; sourceTree = "SOURCE_ROOT"; };
E7E1D60BC7AEF79AA7B65B7C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_String.cpp"; path = "../../../../modules/juce_core/text/juce_String.cpp"; sourceTree = "SOURCE_ROOT"; };
E7F098BA306EC789242AB9A8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LookAndFeel_V1.cpp"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.cpp"; sourceTree = "SOURCE_ROOT"; };
E82C9EF1A74D867BBFF2090D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RSAKey.cpp"; path = "../../../../modules/juce_cryptography/encryption/juce_RSAKey.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"; };
+ E4BB22E27C5AA4B666F265BD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_TextButtonHandler.h"; path = "../../Source/ComponentEditor/components/jucer_TextButtonHandler.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"; };
+ E73C7E17116F6085765622E3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Drawable.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_Drawable.h"; 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"; };
+ E7E1C4F416CFA44BE7DD1A74 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KeyboardFocusTraverser.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.h"; sourceTree = "SOURCE_ROOT"; };
E99F5A31373E9BDEAC40792F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_FileChooser.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_android_FileChooser.cpp"; sourceTree = "SOURCE_ROOT"; };
E9B8C3CA480AE94BEA852EA9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_Windowing.mm"; path = "../../../../modules/juce_gui_basics/native/juce_ios_Windowing.mm"; sourceTree = "SOURCE_ROOT"; };
EA0D43AB5F47506D5CDA81BB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MultiDocumentPanel.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_MultiDocumentPanel.cpp"; sourceTree = "SOURCE_ROOT"; };
@@ -853,7 +887,6 @@
F07EA5078D6BB60B698F5E12 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_SystemStats.cpp"; path = "../../../../modules/juce_core/native/juce_android_SystemStats.cpp"; sourceTree = "SOURCE_ROOT"; };
F08EB921DB62255A4B6DE85A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RectangleList.h"; path = "../../../../modules/juce_graphics/geometry/juce_RectangleList.h"; sourceTree = "SOURCE_ROOT"; };
F100CFF192886B7699632A62 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Network.mm"; path = "../../../../modules/juce_core/native/juce_mac_Network.mm"; sourceTree = "SOURCE_ROOT"; };
- F1163B7856FDABA413A88D90 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_NewFileWizard.cpp"; path = "../../Source/Project/jucer_NewFileWizard.cpp"; sourceTree = "SOURCE_ROOT"; };
F1164F66F799CEA74174328A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Logger.cpp"; path = "../../../../modules/juce_core/logging/juce_Logger.cpp"; sourceTree = "SOURCE_ROOT"; };
F18AE75F1831D13FF53A8CCC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_PaintElementRectangle.h"; path = "../../Source/ComponentEditor/paintelements/jucer_PaintElementRectangle.h"; sourceTree = "SOURCE_ROOT"; };
F1974B6EDBA502BC36671D7C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ModifierKeys.cpp"; path = "../../../../modules/juce_gui_basics/keyboard/juce_ModifierKeys.cpp"; sourceTree = "SOURCE_ROOT"; };
@@ -872,7 +905,6 @@
F6FF660331F6CBF9FFC85E88 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TableHeaderComponent.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_TableHeaderComponent.h"; sourceTree = "SOURCE_ROOT"; };
F71AF6D2DF3E652F8B51EBAB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ProjectExporter.cpp"; path = "../../Source/Project Saving/jucer_ProjectExporter.cpp"; sourceTree = "SOURCE_ROOT"; };
F797071D88542C813CF7222A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_Module.cpp"; path = "../../Source/Project/jucer_Module.cpp"; sourceTree = "SOURCE_ROOT"; };
- F7A91434FEFBE9AC130CD814 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_NewProjectWizard.h"; path = "../../Source/Project/jucer_NewProjectWizard.h"; sourceTree = "SOURCE_ROOT"; };
F7CAB5BC15EE351949D3F2C3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_NewInlineComponentTemplate.h"; path = "../../Source/BinaryData/jucer_NewInlineComponentTemplate.h"; sourceTree = "SOURCE_ROOT"; };
F7D7A41EFE97269721C61BF4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FillType.h"; path = "../../../../modules/juce_graphics/colour/juce_FillType.h"; sourceTree = "SOURCE_ROOT"; };
F7E829D0B21B9C1B4790A245 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_UndoManager.cpp"; path = "../../../../modules/juce_data_structures/undomanager/juce_UndoManager.cpp"; sourceTree = "SOURCE_ROOT"; };
@@ -922,10 +954,6 @@
F797071D88542C813CF7222A,
7211101FFA28400ADBB1D47A,
AFEBD8423B07599B1DE175A3,
- F1163B7856FDABA413A88D90,
- 5852830ECC222BA36A30EC20,
- 69A5D13490A62DAE9A7D5A22,
- F7A91434FEFBE9AC130CD814,
BAC43B20E14A340CCF14119C,
BF3CEF080FA013E2778DCE90,
86E468DE6556BB2AD76A3D80,
@@ -947,6 +975,8 @@
D10D51A0A2D63F38B4D86A60,
C9616830BB2474066AC8C910, ); name = "Project Saving"; sourceTree = ""; };
D93DED1F5F1B0E49E10A6760 = {isa = PBXGroup; children = (
+ 20FAAE9F3A7B96C2D8C75BB2,
+ C22791DB75870C4F102AA8A3,
9B9CAD20E1243B4351B4C8D8,
914ADDB50ED7365F08BA91F9,
188D03A4247F4BC0539F5C49,
@@ -964,6 +994,20 @@
9BC8AE609A07657CEF587548,
D3E139185095C486DD3D61F2,
8090981F07A76E465DAAADF4, ); name = Utility; sourceTree = ""; };
+ EA13CB5FD121EE215A7A51BE = {isa = PBXGroup; children = (
+ 714267352CE5C4357ADBC231,
+ 087CB3A961CD3C7434D660A4,
+ C09BBB58CA45B66D693E8C31,
+ 9D36626E41832F1C6687A0F0,
+ 015AFF2CAC4BD4FD91E51D22,
+ 12CC2BC36B76F99E2B1DD864,
+ 4D4935CB2D04939D99E3D8F9,
+ 64B19786481DB13E2B05AB57,
+ 8BD8E9DA627D6EF9BA10FB9E,
+ A69024A225F2AC31F17B1314,
+ 11DC04468BC6023671017EBF,
+ 4B083E951ECB62217C46CB01,
+ C2990A8D054BC230E7C637C3, ); name = Wizards; sourceTree = ""; };
FC22321797D433148500EDDA = {isa = PBXGroup; children = (
2E680E2C65684A4272AE079A,
78CA0E0F336229E2E2F111B0, ); name = "Code Editor"; sourceTree = ""; };
@@ -1063,6 +1107,26 @@
66B49F08C5EC3E4974825FF8,
5432B7B9B2CF2EAEC8B66D5C, ); name = ComponentEditor; sourceTree = ""; };
88DFD62CB6545EE8CA5C485B = {isa = PBXGroup; children = (
+ 1A8E24245E48C7C4DB0164E6,
+ 353E622BE257074B5589199D,
+ 8BBD620A595D883BE34D60D6,
+ C59820834B6C00F603529252,
+ E293F9DE1162A7D27E1FAC1F,
+ 3690187062F7DD70976D312A,
+ 6F47E6E12D22B6C438CCC7FF,
+ 63941FB77C1E8D9E5AAC85B4,
+ 3F4EEDF4AA7C37DC6A1B14B5,
+ E63F54CF8D5D922A319C6962,
+ D7CCD84E625F03C3F2F8AEC3,
+ 7C97B8D0BEDC0C23A851C81D,
+ 4EB8DFC2D9F94F34A24DEA39,
+ 8148C42B2F1AC1849B918A75,
+ 75C3918D29C66F41664771D5,
+ 7D7343762DEE1AD30D20D239,
+ A4B112FAC858A4DFAD3444EF,
+ BEE755CEBA2EAD84359CB63E,
+ 480AB41AC2E4B53BEAC6E193,
+ 5D2E5EAE3B3A88B4BE563E96,
5F4F4EAB042F2730F94A1CEA,
301592EBAC0FFF6F5B268E99,
41105E536155E394E54BDD35,
@@ -1091,6 +1155,7 @@
891F84627A03FA733F37A199,
E345840128627D533DF908AC,
D93DED1F5F1B0E49E10A6760,
+ EA13CB5FD121EE215A7A51BE,
FC22321797D433148500EDDA,
825956EA572E23B506C8236F,
88DFD62CB6545EE8CA5C485B, ); name = "The Introjucer"; sourceTree = ""; };
@@ -1991,19 +2056,20 @@
AA9D0B8E23F3D87A23DE9F8A,
244BA1BDA5FAA465EA3F9C6D,
3FCA61C401007B243E2E9035,
- 5BC89E7905397ABECD25ACCD,
- FBE57B26FE59319AA2E8B59D,
30B921C38DCEE787B294B746,
676D2E1E750E61AA2FAA335E,
8012E6487639A7368E4C4470,
1F37544891EC8DBB5E500C1C,
110221CD5578153B528AD2BE,
+ 4A1DB797F1356E85110FF871,
CD4F7B119CE718BCE78D61F4,
78CB463DD98A55313A543859,
1499DF2E85B05AC1BF423773,
123810DAF8AF758928916ECE,
C9F11BA62D6D092A300363F7,
F6635694A01FFBF5EF0968DB,
+ 518DD443B6F17A5AFD707263,
+ B7EBA1A83575F48CD08140B9,
FCE6F604C00039A32649CB69,
9BF773500BA51A8B5C6C7348,
57B1F32A372143B4D3B1C517,
diff --git a/extras/Introjucer/Builds/VisualStudio2005/The Introjucer.vcproj b/extras/Introjucer/Builds/VisualStudio2005/The Introjucer.vcproj
index 63632db217..648d6bb089 100644
--- a/extras/Introjucer/Builds/VisualStudio2005/The Introjucer.vcproj
+++ b/extras/Introjucer/Builds/VisualStudio2005/The Introjucer.vcproj
@@ -154,10 +154,6 @@
-
-
-
-
@@ -181,6 +177,8 @@
+
+
@@ -199,6 +197,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -300,6 +313,206 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extras/Introjucer/Builds/VisualStudio2008/The Introjucer.vcproj b/extras/Introjucer/Builds/VisualStudio2008/The Introjucer.vcproj
index d3ceda0742..f6e2b2d799 100644
--- a/extras/Introjucer/Builds/VisualStudio2008/The Introjucer.vcproj
+++ b/extras/Introjucer/Builds/VisualStudio2008/The Introjucer.vcproj
@@ -154,10 +154,6 @@
-
-
-
-
@@ -181,6 +177,8 @@
+
+
@@ -199,6 +197,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -300,6 +313,206 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj b/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj
index 8c5903ebb3..20a968e305 100644
--- a/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj
+++ b/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj
@@ -132,19 +132,20 @@
-
-
+
+
+
@@ -1045,8 +1046,6 @@
-
-
@@ -1061,6 +1060,7 @@
+
@@ -1072,6 +1072,17 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -1488,6 +1499,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj.filters b/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj.filters
index 5e92e0b064..be6499f017 100644
--- a/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj.filters
+++ b/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj.filters
@@ -17,6 +17,9 @@
{BF742880-2B1E-3276-CFB8-089DC7DD5EE5}
+
+ {CB03A00B-C740-D8D3-A019-4C165270265F}
+
{D05B051C-4835-D6A6-3AF4-B61963EFC368}
@@ -265,12 +268,6 @@
The Introjucer\Project
-
- The Introjucer\Project
-
-
- The Introjucer\Project
-
The Introjucer\Project
@@ -286,6 +283,9 @@
The Introjucer\Project Saving
+
+ The Introjucer\Utility
+
The Introjucer\Utility
@@ -304,6 +304,12 @@
The Introjucer\Utility
+
+ The Introjucer\Wizards
+
+
+ The Introjucer\Wizards
+
The Introjucer\Code Editor
@@ -1356,12 +1362,6 @@
The Introjucer\Project
-
- The Introjucer\Project
-
-
- The Introjucer\Project
-
The Introjucer\Project
@@ -1404,6 +1404,9 @@
The Introjucer\Project Saving
+
+ The Introjucer\Utility
+
The Introjucer\Utility
@@ -1437,6 +1440,39 @@
The Introjucer\Utility
+
+ The Introjucer\Wizards
+
+
+ The Introjucer\Wizards
+
+
+ The Introjucer\Wizards
+
+
+ The Introjucer\Wizards
+
+
+ The Introjucer\Wizards
+
+
+ The Introjucer\Wizards
+
+
+ The Introjucer\Wizards
+
+
+ The Introjucer\Wizards
+
+
+ The Introjucer\Wizards
+
+
+ The Introjucer\Wizards
+
+
+ The Introjucer\Wizards
+
The Introjucer\Code Editor
@@ -2681,6 +2717,66 @@
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
The Introjucer\BinaryData
diff --git a/extras/Introjucer/Builds/VisualStudio2012/The Introjucer.vcxproj b/extras/Introjucer/Builds/VisualStudio2012/The Introjucer.vcxproj
index dff5847509..1d98737a12 100644
--- a/extras/Introjucer/Builds/VisualStudio2012/The Introjucer.vcxproj
+++ b/extras/Introjucer/Builds/VisualStudio2012/The Introjucer.vcxproj
@@ -138,19 +138,20 @@
-
-
+
+
+
@@ -1051,8 +1052,6 @@
-
-
@@ -1067,6 +1066,7 @@
+
@@ -1078,6 +1078,17 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -1494,6 +1505,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extras/Introjucer/Builds/VisualStudio2012/The Introjucer.vcxproj.filters b/extras/Introjucer/Builds/VisualStudio2012/The Introjucer.vcxproj.filters
index 5e92e0b064..be6499f017 100644
--- a/extras/Introjucer/Builds/VisualStudio2012/The Introjucer.vcxproj.filters
+++ b/extras/Introjucer/Builds/VisualStudio2012/The Introjucer.vcxproj.filters
@@ -17,6 +17,9 @@
{BF742880-2B1E-3276-CFB8-089DC7DD5EE5}
+
+ {CB03A00B-C740-D8D3-A019-4C165270265F}
+
{D05B051C-4835-D6A6-3AF4-B61963EFC368}
@@ -265,12 +268,6 @@
The Introjucer\Project
-
- The Introjucer\Project
-
-
- The Introjucer\Project
-
The Introjucer\Project
@@ -286,6 +283,9 @@
The Introjucer\Project Saving
+
+ The Introjucer\Utility
+
The Introjucer\Utility
@@ -304,6 +304,12 @@
The Introjucer\Utility
+
+ The Introjucer\Wizards
+
+
+ The Introjucer\Wizards
+
The Introjucer\Code Editor
@@ -1356,12 +1362,6 @@
The Introjucer\Project
-
- The Introjucer\Project
-
-
- The Introjucer\Project
-
The Introjucer\Project
@@ -1404,6 +1404,9 @@
The Introjucer\Project Saving
+
+ The Introjucer\Utility
+
The Introjucer\Utility
@@ -1437,6 +1440,39 @@
The Introjucer\Utility
+
+ The Introjucer\Wizards
+
+
+ The Introjucer\Wizards
+
+
+ The Introjucer\Wizards
+
+
+ The Introjucer\Wizards
+
+
+ The Introjucer\Wizards
+
+
+ The Introjucer\Wizards
+
+
+ The Introjucer\Wizards
+
+
+ The Introjucer\Wizards
+
+
+ The Introjucer\Wizards
+
+
+ The Introjucer\Wizards
+
+
+ The Introjucer\Wizards
+
The Introjucer\Code Editor
@@ -2681,6 +2717,66 @@
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
The Introjucer\BinaryData
diff --git a/extras/Introjucer/Builds/VisualStudio2013/The Introjucer.vcxproj b/extras/Introjucer/Builds/VisualStudio2013/The Introjucer.vcxproj
index e88da3ea1a..cf7b5ac13c 100644
--- a/extras/Introjucer/Builds/VisualStudio2013/The Introjucer.vcxproj
+++ b/extras/Introjucer/Builds/VisualStudio2013/The Introjucer.vcxproj
@@ -138,19 +138,20 @@
-
-
+
+
+
@@ -1051,8 +1052,6 @@
-
-
@@ -1067,6 +1066,7 @@
+
@@ -1078,6 +1078,17 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -1494,6 +1505,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extras/Introjucer/Builds/VisualStudio2013/The Introjucer.vcxproj.filters b/extras/Introjucer/Builds/VisualStudio2013/The Introjucer.vcxproj.filters
index df40bcd9d9..64bce25327 100644
--- a/extras/Introjucer/Builds/VisualStudio2013/The Introjucer.vcxproj.filters
+++ b/extras/Introjucer/Builds/VisualStudio2013/The Introjucer.vcxproj.filters
@@ -17,6 +17,9 @@
{BF742880-2B1E-3276-CFB8-089DC7DD5EE5}
+
+ {CB03A00B-C740-D8D3-A019-4C165270265F}
+
{D05B051C-4835-D6A6-3AF4-B61963EFC368}
@@ -265,12 +268,6 @@
The Introjucer\Project
-
- The Introjucer\Project
-
-
- The Introjucer\Project
-
The Introjucer\Project
@@ -286,6 +283,9 @@
The Introjucer\Project Saving
+
+ The Introjucer\Utility
+
The Introjucer\Utility
@@ -304,6 +304,12 @@
The Introjucer\Utility
+
+ The Introjucer\Wizards
+
+
+ The Introjucer\Wizards
+
The Introjucer\Code Editor
@@ -1356,12 +1362,6 @@
The Introjucer\Project
-
- The Introjucer\Project
-
-
- The Introjucer\Project
-
The Introjucer\Project
@@ -1404,6 +1404,9 @@
The Introjucer\Project Saving
+
+ The Introjucer\Utility
+
The Introjucer\Utility
@@ -1437,6 +1440,39 @@
The Introjucer\Utility
+
+ The Introjucer\Wizards
+
+
+ The Introjucer\Wizards
+
+
+ The Introjucer\Wizards
+
+
+ The Introjucer\Wizards
+
+
+ The Introjucer\Wizards
+
+
+ The Introjucer\Wizards
+
+
+ The Introjucer\Wizards
+
+
+ The Introjucer\Wizards
+
+
+ The Introjucer\Wizards
+
+
+ The Introjucer\Wizards
+
+
+ The Introjucer\Wizards
+
The Introjucer\Code Editor
@@ -2681,6 +2717,66 @@
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
+
+ The Introjucer\BinaryData
+
The Introjucer\BinaryData
diff --git a/extras/Introjucer/Introjucer.jucer b/extras/Introjucer/Introjucer.jucer
index 59cb413a23..bde5350a00 100644
--- a/extras/Introjucer/Introjucer.jucer
+++ b/extras/Introjucer/Introjucer.jucer
@@ -204,14 +204,6 @@
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -474,6 +498,39 @@
file="Source/ComponentEditor/jucer_UtilityFunctions.h"/>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\r\n"
+"\r\n"
+"\r\n"
+"\r\n";
+
+const char* iconOpenfile_svg = (const char*) temp_binary_data_10;
+
+//================== iconAnimation.svg ==================
+static const unsigned char temp_binary_data_11[] =
+"\r\n"
+"\r\n"
+"\r\n"
+"\r\n";
+
+const char* iconAnimation_svg = (const char*) temp_binary_data_11;
+
+//================== iconAudio.svg ==================
+static const unsigned char temp_binary_data_12[] =
+"\r\n"
+"\r\n"
+"\r\n"
+"\r\n";
+
+const char* iconAudio_svg = (const char*) temp_binary_data_12;
+
+//================== iconConsole.svg ==================
+static const unsigned char temp_binary_data_13[] =
+"\r\n"
+"\r\n"
+"\r\n"
+"\r\n";
+
+const char* iconConsole_svg = (const char*) temp_binary_data_13;
+
+//================== iconDynamic.svg ==================
+static const unsigned char temp_binary_data_14[] =
+"\r\n"
+"\r\n"
+"\r\n"
+"\r\n";
+
+const char* iconDynamic_svg = (const char*) temp_binary_data_14;
+
+//================== iconGui.svg ==================
+static const unsigned char temp_binary_data_15[] =
+"\r\n"
+"\r\n"
+"\r\n"
+"\r\n";
+
+const char* iconGui_svg = (const char*) temp_binary_data_15;
+
+//================== iconHighlight.svg ==================
+static const unsigned char temp_binary_data_16[] =
+"\r\n"
+"\r\n"
+"\r\n"
+"\r\n";
+
+const char* iconHighlight_svg = (const char*) temp_binary_data_16;
+
+//================== iconOpengl.svg ==================
+static const unsigned char temp_binary_data_17[] =
+"\r\n"
+"\r\n"
+"\r\n"
+"\r\n";
+
+const char* iconOpengl_svg = (const char*) temp_binary_data_17;
+
+//================== iconPlugin.svg ==================
+static const unsigned char temp_binary_data_18[] =
+"\r\n"
+"\r\n"
+"\r\n"
+"\r\n";
+
+const char* iconPlugin_svg = (const char*) temp_binary_data_18;
+
+//================== iconStatic.svg ==================
+static const unsigned char temp_binary_data_19[] =
+"\r\n"
+"\r\n"
+"\r\n"
+"\r\n";
+
+const char* iconStatic_svg = (const char*) temp_binary_data_19;
+
+//================== AudioPluginXCodeScript.txt ==================
+static const unsigned char temp_binary_data_20[] =
"\r\n"
"# This script takes the build product and copies it to the AU, VST, VST3, RTAS and AAX folders, depending on \r\n"
"# which plugin types you've built\r\n"
@@ -100,17 +2002,17 @@ static const unsigned char temp_binary_data_0[] =
" fi\r\n"
"fi\r\n";
-const char* AudioPluginXCodeScript_txt = (const char*) temp_binary_data_0;
+const char* AudioPluginXCodeScript_txt = (const char*) temp_binary_data_20;
//================== background_tile.png ==================
-static const unsigned char temp_binary_data_1[] =
+static const unsigned char temp_binary_data_21[] =
{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,7,0,0,0,7,8,6,0,0,0,196,82,87,211,0,0,0,94,73,68,65,84,120,218,85,141,73,14,0,33,8,4,253,137,226,18,19,245,234,255,127,70,75,155,232,56,135,10,132,94,112,33,4,37,222,123,205,57,107,74,105,239,196,137,
8,72,239,29,99,12,204,57,209,90,227,237,19,45,113,161,209,12,234,172,18,49,70,88,229,134,34,103,173,245,159,60,134,82,10,238,79,166,223,106,238,91,100,229,73,191,80,92,47,179,68,223,148,158,98,226,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
-const char* background_tile_png = (const char*) temp_binary_data_1;
+const char* background_tile_png = (const char*) temp_binary_data_21;
//================== colourscheme_dark.xml ==================
-static const unsigned char temp_binary_data_2[] =
+static const unsigned char temp_binary_data_22[] =
"\r\n"
"\r\n"
"\r\n"
@@ -135,10 +2037,10 @@ static const unsigned char temp_binary_data_2[] =
" \r\n"
"\r\n";
-const char* colourscheme_dark_xml = (const char*) temp_binary_data_2;
+const char* colourscheme_dark_xml = (const char*) temp_binary_data_22;
//================== colourscheme_light.xml ==================
-static const unsigned char temp_binary_data_3[] =
+static const unsigned char temp_binary_data_23[] =
"\r\n"
"\r\n"
"\r\n"
@@ -163,10 +2065,10 @@ static const unsigned char temp_binary_data_3[] =
" \r\n"
"\r\n";
-const char* colourscheme_light_xml = (const char*) temp_binary_data_3;
+const char* colourscheme_light_xml = (const char*) temp_binary_data_23;
//================== jucer_AudioPluginEditorTemplate.cpp ==================
-static const unsigned char temp_binary_data_4[] =
+static const unsigned char temp_binary_data_24[] =
"/*\r\n"
" ==============================================================================\r\n"
"\r\n"
@@ -209,10 +2111,10 @@ static const unsigned char temp_binary_data_4[] =
" // subcomponents in your editor..\r\n"
"}\r\n";
-const char* jucer_AudioPluginEditorTemplate_cpp = (const char*) temp_binary_data_4;
+const char* jucer_AudioPluginEditorTemplate_cpp = (const char*) temp_binary_data_24;
//================== jucer_AudioPluginEditorTemplate.h ==================
-static const unsigned char temp_binary_data_5[] =
+static const unsigned char temp_binary_data_25[] =
"/*\r\n"
" ==============================================================================\r\n"
"\r\n"
@@ -253,10 +2155,10 @@ static const unsigned char temp_binary_data_5[] =
"\r\n"
"#endif // HEADERGUARD\r\n";
-const char* jucer_AudioPluginEditorTemplate_h = (const char*) temp_binary_data_5;
+const char* jucer_AudioPluginEditorTemplate_h = (const char*) temp_binary_data_25;
//================== jucer_AudioPluginFilterTemplate.cpp ==================
-static const unsigned char temp_binary_data_6[] =
+static const unsigned char temp_binary_data_26[] =
"/*\r\n"
" ==============================================================================\r\n"
"\r\n"
@@ -447,10 +2349,10 @@ static const unsigned char temp_binary_data_6[] =
" return new FILTERCLASSNAME();\r\n"
"}\r\n";
-const char* jucer_AudioPluginFilterTemplate_cpp = (const char*) temp_binary_data_6;
+const char* jucer_AudioPluginFilterTemplate_cpp = (const char*) temp_binary_data_26;
//================== jucer_AudioPluginFilterTemplate.h ==================
-static const unsigned char temp_binary_data_7[] =
+static const unsigned char temp_binary_data_27[] =
"/*\r\n"
" ==============================================================================\r\n"
"\r\n"
@@ -526,10 +2428,10 @@ static const unsigned char temp_binary_data_7[] =
"\r\n"
"#endif // HEADERGUARD\r\n";
-const char* jucer_AudioPluginFilterTemplate_h = (const char*) temp_binary_data_7;
+const char* jucer_AudioPluginFilterTemplate_h = (const char*) temp_binary_data_27;
//================== jucer_ComponentTemplate.cpp ==================
-static const unsigned char temp_binary_data_8[] =
+static const unsigned char temp_binary_data_28[] =
"/*\r\n"
" ==============================================================================\r\n"
"\r\n"
@@ -602,10 +2504,10 @@ static const unsigned char temp_binary_data_8[] =
"//[EndFile] You can add extra defines here...\r\n"
"//[/EndFile]";
-const char* jucer_ComponentTemplate_cpp = (const char*) temp_binary_data_8;
+const char* jucer_ComponentTemplate_cpp = (const char*) temp_binary_data_28;
//================== jucer_ComponentTemplate.h ==================
-static const unsigned char temp_binary_data_9[] =
+static const unsigned char temp_binary_data_29[] =
"/*\r\n"
" ==============================================================================\r\n"
"\r\n"
@@ -671,10 +2573,10 @@ static const unsigned char temp_binary_data_9[] =
"\r\n"
"#endif // %%headerGuard%%";
-const char* jucer_ComponentTemplate_h = (const char*) temp_binary_data_9;
+const char* jucer_ComponentTemplate_h = (const char*) temp_binary_data_29;
//================== jucer_ContentCompTemplate.cpp ==================
-static const unsigned char temp_binary_data_10[] =
+static const unsigned char temp_binary_data_30[] =
"/*\r\n"
" ==============================================================================\r\n"
"\r\n"
@@ -712,10 +2614,10 @@ static const unsigned char temp_binary_data_10[] =
" // update their positions.\r\n"
"}\r\n";
-const char* jucer_ContentCompTemplate_cpp = (const char*) temp_binary_data_10;
+const char* jucer_ContentCompTemplate_cpp = (const char*) temp_binary_data_30;
//================== jucer_ContentCompTemplate.h ==================
-static const unsigned char temp_binary_data_11[] =
+static const unsigned char temp_binary_data_31[] =
"/*\r\n"
" ==============================================================================\r\n"
"\r\n"
@@ -753,10 +2655,10 @@ static const unsigned char temp_binary_data_11[] =
"\r\n"
"#endif // HEADERGUARD\r\n";
-const char* jucer_ContentCompTemplate_h = (const char*) temp_binary_data_11;
+const char* jucer_ContentCompTemplate_h = (const char*) temp_binary_data_31;
//================== jucer_InlineComponentTemplate.h ==================
-static const unsigned char temp_binary_data_12[] =
+static const unsigned char temp_binary_data_32[] =
"//==============================================================================\r\n"
"class COMPONENTCLASS : public Component\r\n"
"{\r\n"
@@ -798,10 +2700,10 @@ static const unsigned char temp_binary_data_12[] =
" JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (COMPONENTCLASS)\r\n"
"};\r\n";
-const char* jucer_InlineComponentTemplate_h = (const char*) temp_binary_data_12;
+const char* jucer_InlineComponentTemplate_h = (const char*) temp_binary_data_32;
//================== jucer_MainConsoleAppTemplate.cpp ==================
-static const unsigned char temp_binary_data_13[] =
+static const unsigned char temp_binary_data_33[] =
"/*\r\n"
" ==============================================================================\r\n"
"\r\n"
@@ -825,10 +2727,10 @@ static const unsigned char temp_binary_data_13[] =
" return 0;\r\n"
"}\r\n";
-const char* jucer_MainConsoleAppTemplate_cpp = (const char*) temp_binary_data_13;
+const char* jucer_MainConsoleAppTemplate_cpp = (const char*) temp_binary_data_33;
//================== jucer_MainTemplate_NoWindow.cpp ==================
-static const unsigned char temp_binary_data_14[] =
+static const unsigned char temp_binary_data_34[] =
"/*\r\n"
" ==============================================================================\r\n"
"\r\n"
@@ -884,10 +2786,10 @@ static const unsigned char temp_binary_data_14[] =
"// This macro generates the main() routine that launches the app.\r\n"
"START_JUCE_APPLICATION (APPCLASSNAME)\r\n";
-const char* jucer_MainTemplate_NoWindow_cpp = (const char*) temp_binary_data_14;
+const char* jucer_MainTemplate_NoWindow_cpp = (const char*) temp_binary_data_34;
//================== jucer_MainTemplate_Window.cpp ==================
-static const unsigned char temp_binary_data_15[] =
+static const unsigned char temp_binary_data_35[] =
"/*\r\n"
" ==============================================================================\r\n"
"\r\n"
@@ -988,10 +2890,10 @@ static const unsigned char temp_binary_data_15[] =
"// This macro generates the main() routine that launches the app.\r\n"
"START_JUCE_APPLICATION (APPCLASSNAME)\r\n";
-const char* jucer_MainTemplate_Window_cpp = (const char*) temp_binary_data_15;
+const char* jucer_MainTemplate_Window_cpp = (const char*) temp_binary_data_35;
//================== jucer_NewComponentTemplate.cpp ==================
-static const unsigned char temp_binary_data_16[] =
+static const unsigned char temp_binary_data_36[] =
"/*\r\n"
" ==============================================================================\r\n"
"\r\n"
@@ -1044,10 +2946,10 @@ static const unsigned char temp_binary_data_16[] =
"\r\n"
"}\r\n";
-const char* jucer_NewComponentTemplate_cpp = (const char*) temp_binary_data_16;
+const char* jucer_NewComponentTemplate_cpp = (const char*) temp_binary_data_36;
//================== jucer_NewComponentTemplate.h ==================
-static const unsigned char temp_binary_data_17[] =
+static const unsigned char temp_binary_data_37[] =
"/*\r\n"
" ==============================================================================\r\n"
"\r\n"
@@ -1082,10 +2984,10 @@ static const unsigned char temp_binary_data_17[] =
"\r\n"
"#endif // HEADERGUARD\r\n";
-const char* jucer_NewComponentTemplate_h = (const char*) temp_binary_data_17;
+const char* jucer_NewComponentTemplate_h = (const char*) temp_binary_data_37;
//================== jucer_NewCppFileTemplate.cpp ==================
-static const unsigned char temp_binary_data_18[] =
+static const unsigned char temp_binary_data_38[] =
"/*\r\n"
" ==============================================================================\r\n"
"\r\n"
@@ -1098,10 +3000,10 @@ static const unsigned char temp_binary_data_18[] =
"\r\n"
"INCLUDE_CORRESPONDING_HEADER\r\n";
-const char* jucer_NewCppFileTemplate_cpp = (const char*) temp_binary_data_18;
+const char* jucer_NewCppFileTemplate_cpp = (const char*) temp_binary_data_38;
//================== jucer_NewCppFileTemplate.h ==================
-static const unsigned char temp_binary_data_19[] =
+static const unsigned char temp_binary_data_39[] =
"/*\r\n"
" ==============================================================================\r\n"
"\r\n"
@@ -1121,10 +3023,10 @@ static const unsigned char temp_binary_data_19[] =
"\r\n"
"#endif // HEADERGUARD\r\n";
-const char* jucer_NewCppFileTemplate_h = (const char*) temp_binary_data_19;
+const char* jucer_NewCppFileTemplate_h = (const char*) temp_binary_data_39;
//================== jucer_NewInlineComponentTemplate.h ==================
-static const unsigned char temp_binary_data_20[] =
+static const unsigned char temp_binary_data_40[] =
"/*\r\n"
" ==============================================================================\r\n"
"\r\n"
@@ -1191,10 +3093,10 @@ static const unsigned char temp_binary_data_20[] =
"\r\n"
"#endif // HEADERGUARD\r\n";
-const char* jucer_NewInlineComponentTemplate_h = (const char*) temp_binary_data_20;
+const char* jucer_NewInlineComponentTemplate_h = (const char*) temp_binary_data_40;
//================== RecentFilesMenuTemplate.nib ==================
-static const unsigned char temp_binary_data_21[] =
+static const unsigned char temp_binary_data_41[] =
{ 98,112,108,105,115,116,48,48,212,0,1,0,2,0,3,0,4,0,5,0,6,1,53,1,54,88,36,118,101,114,115,105,111,110,88,36,111,98,106,101,99,116,115,89,36,97,114,99,104,105,118,101,114,84,36,116,111,112,18,0,1,134,160,175,16,74,0,7,0,8,0,31,0,35,0,36,0,42,0,46,0,50,
0,53,0,57,0,74,0,77,0,78,0,86,0,87,0,97,0,112,0,113,0,114,0,119,0,120,0,121,0,124,0,128,0,129,0,132,0,143,0,144,0,145,0,149,0,153,0,162,0,163,0,164,0,169,0,173,0,180,0,181,0,182,0,185,0,192,0,193,0,200,0,201,0,208,0,209,0,216,0,217,0,224,0,225,0,226,
0,229,0,230,0,232,0,249,1,11,1,29,1,30,1,31,1,32,1,33,1,34,1,35,1,36,1,37,1,38,1,39,1,40,1,41,1,42,1,43,1,44,1,47,1,50,85,36,110,117,108,108,219,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,
@@ -1231,7 +3133,7 @@ static const unsigned char temp_binary_data_21[] =
7,157,7,159,7,161,7,163,7,165,7,167,7,169,7,171,7,173,7,175,7,177,7,179,7,181,7,190,7,192,7,225,7,227,7,229,7,231,7,233,7,235,7,237,7,239,7,241,7,243,7,245,7,247,7,249,7,251,7,253,7,255,8,2,8,5,8,8,8,11,8,14,8,17,8,20,8,23,8,26,8,29,8,32,8,35,8,38,8,
41,8,44,8,53,8,55,8,56,8,65,8,67,8,68,8,77,8,92,8,97,8,115,8,120,8,134,0,0,0,0,0,0,2,2,0,0,0,0,0,0,1,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,136,0,0 };
-const char* RecentFilesMenuTemplate_nib = (const char*) temp_binary_data_21;
+const char* RecentFilesMenuTemplate_nib = (const char*) temp_binary_data_41;
const char* getNamedResource (const char*, int&) throw();
@@ -1244,6 +3146,26 @@ const char* getNamedResource (const char* resourceNameUTF8, int& numBytes) throw
switch (hash)
{
+ case 0x507a15c7: numBytes = 8150; return projectIconAndroid_png;
+ case 0xe8e2796f: numBytes = 11917; return projectIconCodeblocks_png;
+ case 0x90374ad6: numBytes = 7576; return projectIconLinuxMakefile_png;
+ case 0x517aa477: numBytes = 6986; return projectIconVisualStudio05_png;
+ case 0x51a4eafa: numBytes = 7099; return projectIconVisualStudio08_png;
+ case 0x52e90791: numBytes = 6712; return projectIconVisualStudio10_png;
+ case 0x53053693: numBytes = 6637; return projectIconVisualStudio12_png;
+ case 0x53134e14: numBytes = 6719; return projectIconVisualStudio13_png;
+ case 0xecc12a3d: numBytes = 18281; return projectIconXcode_png;
+ case 0x9d3ae124: numBytes = 18111; return projectIconXcodeIOS_png;
+ case 0x1e94a484: numBytes = 686; return iconOpenfile_svg;
+ case 0xfd3a6730: numBytes = 2963; return iconAnimation_svg;
+ case 0xd6d78a02: numBytes = 9802; return iconAudio_svg;
+ case 0xde056543: numBytes = 1204; return iconConsole_svg;
+ case 0x40ec2c2b: numBytes = 3588; return iconDynamic_svg;
+ case 0xf0177aa7: numBytes = 3448; return iconGui_svg;
+ case 0xdff8c060: numBytes = 638; return iconHighlight_svg;
+ case 0xde2f5c2d: numBytes = 2497; return iconOpengl_svg;
+ case 0x90b420b1: numBytes = 10809; return iconPlugin_svg;
+ case 0xa1326a6c: numBytes = 3563; return iconStatic_svg;
case 0x44be9398: numBytes = 2916; return AudioPluginXCodeScript_txt;
case 0x4a0cfd09: numBytes = 151; return background_tile_png;
case 0x763d39dc: numBytes = 1050; return colourscheme_dark_xml;
@@ -1275,6 +3197,26 @@ const char* getNamedResource (const char* resourceNameUTF8, int& numBytes) throw
const char* namedResourceList[] =
{
+ "projectIconAndroid_png",
+ "projectIconCodeblocks_png",
+ "projectIconLinuxMakefile_png",
+ "projectIconVisualStudio05_png",
+ "projectIconVisualStudio08_png",
+ "projectIconVisualStudio10_png",
+ "projectIconVisualStudio12_png",
+ "projectIconVisualStudio13_png",
+ "projectIconXcode_png",
+ "projectIconXcodeIOS_png",
+ "iconOpenfile_svg",
+ "iconAnimation_svg",
+ "iconAudio_svg",
+ "iconConsole_svg",
+ "iconDynamic_svg",
+ "iconGui_svg",
+ "iconHighlight_svg",
+ "iconOpengl_svg",
+ "iconPlugin_svg",
+ "iconStatic_svg",
"AudioPluginXCodeScript_txt",
"background_tile_png",
"colourscheme_dark_xml",
diff --git a/extras/Introjucer/JuceLibraryCode/BinaryData.h b/extras/Introjucer/JuceLibraryCode/BinaryData.h
index 0da7fcb4af..d7037bca91 100644
--- a/extras/Introjucer/JuceLibraryCode/BinaryData.h
+++ b/extras/Introjucer/JuceLibraryCode/BinaryData.h
@@ -9,6 +9,66 @@
namespace BinaryData
{
+ extern const char* projectIconAndroid_png;
+ const int projectIconAndroid_pngSize = 8150;
+
+ extern const char* projectIconCodeblocks_png;
+ const int projectIconCodeblocks_pngSize = 11917;
+
+ extern const char* projectIconLinuxMakefile_png;
+ const int projectIconLinuxMakefile_pngSize = 7576;
+
+ extern const char* projectIconVisualStudio05_png;
+ const int projectIconVisualStudio05_pngSize = 6986;
+
+ extern const char* projectIconVisualStudio08_png;
+ const int projectIconVisualStudio08_pngSize = 7099;
+
+ extern const char* projectIconVisualStudio10_png;
+ const int projectIconVisualStudio10_pngSize = 6712;
+
+ extern const char* projectIconVisualStudio12_png;
+ const int projectIconVisualStudio12_pngSize = 6637;
+
+ extern const char* projectIconVisualStudio13_png;
+ const int projectIconVisualStudio13_pngSize = 6719;
+
+ extern const char* projectIconXcode_png;
+ const int projectIconXcode_pngSize = 18281;
+
+ extern const char* projectIconXcodeIOS_png;
+ const int projectIconXcodeIOS_pngSize = 18111;
+
+ extern const char* iconOpenfile_svg;
+ const int iconOpenfile_svgSize = 686;
+
+ extern const char* iconAnimation_svg;
+ const int iconAnimation_svgSize = 2963;
+
+ extern const char* iconAudio_svg;
+ const int iconAudio_svgSize = 9802;
+
+ extern const char* iconConsole_svg;
+ const int iconConsole_svgSize = 1204;
+
+ extern const char* iconDynamic_svg;
+ const int iconDynamic_svgSize = 3588;
+
+ extern const char* iconGui_svg;
+ const int iconGui_svgSize = 3448;
+
+ extern const char* iconHighlight_svg;
+ const int iconHighlight_svgSize = 638;
+
+ extern const char* iconOpengl_svg;
+ const int iconOpengl_svgSize = 2497;
+
+ extern const char* iconPlugin_svg;
+ const int iconPlugin_svgSize = 10809;
+
+ extern const char* iconStatic_svg;
+ const int iconStatic_svgSize = 3563;
+
extern const char* AudioPluginXCodeScript_txt;
const int AudioPluginXCodeScript_txtSize = 2916;
@@ -79,7 +139,7 @@ namespace BinaryData
extern const char* namedResourceList[];
// Number of elements in the namedResourceList array.
- const int namedResourceListSize = 22;
+ const int namedResourceListSize = 42;
// If you provide the name of one of the binary resource variables above, this function will
// return the corresponding data and its size (or a null pointer if the name isn't found).
diff --git a/extras/Introjucer/Source/Application/jucer_MainWindow.cpp b/extras/Introjucer/Source/Application/jucer_MainWindow.cpp
index a1ce41966d..59f3e6b77b 100644
--- a/extras/Introjucer/Source/Application/jucer_MainWindow.cpp
+++ b/extras/Introjucer/Source/Application/jucer_MainWindow.cpp
@@ -27,7 +27,7 @@
#include "jucer_MainWindow.h"
#include "jucer_OpenDocumentManager.h"
#include "../Code Editor/jucer_SourceCodeEditor.h"
-#include "../Project/jucer_NewProjectWizard.h"
+#include "../Wizards/jucer_NewProjectWizardClasses.h"
#include "../Utility/jucer_JucerTreeViewBase.h"
@@ -39,12 +39,13 @@ MainWindow::MainWindow()
false)
{
setUsingNativeTitleBar (true);
- createProjectContentCompIfNeeded();
-
+
#if ! JUCE_MAC
setMenuBar (IntrojucerApp::getApp().menuModel);
#endif
+ createProjectContentCompIfNeeded();
+
setResizable (true, false);
centreWithSize (800, 600);
@@ -291,7 +292,10 @@ void MainWindow::showNewProjectWizard()
{
jassert (currentProject == nullptr);
setContentOwned (createNewProjectWizardComponent(), true);
- makeVisible();
+ setSize (800, 650);
+ setVisible (true);
+ addToDesktop();
+ getContentComponent()->grabKeyboardFocus();
}
//==============================================================================
@@ -365,7 +369,7 @@ bool MainWindowList::askAllWindowsToClose()
void MainWindowList::createWindowIfNoneAreOpen()
{
if (windows.size() == 0)
- createNewMainWindow()->makeVisible();
+ createNewMainWindow()->showNewProjectWizard();
}
void MainWindowList::closeWindow (MainWindow* w)
diff --git a/extras/Introjucer/Source/BinaryData/iconAnimation.svg b/extras/Introjucer/Source/BinaryData/iconAnimation.svg
new file mode 100644
index 0000000000..2c82bcc047
--- /dev/null
+++ b/extras/Introjucer/Source/BinaryData/iconAnimation.svg
@@ -0,0 +1,45 @@
+
+
+
+
diff --git a/extras/Introjucer/Source/BinaryData/iconAudio.svg b/extras/Introjucer/Source/BinaryData/iconAudio.svg
new file mode 100644
index 0000000000..79344c5a48
--- /dev/null
+++ b/extras/Introjucer/Source/BinaryData/iconAudio.svg
@@ -0,0 +1,72 @@
+
+
+
+
diff --git a/extras/Introjucer/Source/BinaryData/iconConsole.svg b/extras/Introjucer/Source/BinaryData/iconConsole.svg
new file mode 100644
index 0000000000..c2430d0a62
--- /dev/null
+++ b/extras/Introjucer/Source/BinaryData/iconConsole.svg
@@ -0,0 +1,21 @@
+
+
+
+
diff --git a/extras/Introjucer/Source/BinaryData/iconDynamic.svg b/extras/Introjucer/Source/BinaryData/iconDynamic.svg
new file mode 100644
index 0000000000..e8c9ebd58a
--- /dev/null
+++ b/extras/Introjucer/Source/BinaryData/iconDynamic.svg
@@ -0,0 +1,41 @@
+
+
+
+
diff --git a/extras/Introjucer/Source/BinaryData/iconGui.svg b/extras/Introjucer/Source/BinaryData/iconGui.svg
new file mode 100644
index 0000000000..063a257994
--- /dev/null
+++ b/extras/Introjucer/Source/BinaryData/iconGui.svg
@@ -0,0 +1,49 @@
+
+
+
+
diff --git a/extras/Introjucer/Source/BinaryData/iconHighlight.svg b/extras/Introjucer/Source/BinaryData/iconHighlight.svg
new file mode 100644
index 0000000000..5e18a4a0fc
--- /dev/null
+++ b/extras/Introjucer/Source/BinaryData/iconHighlight.svg
@@ -0,0 +1,8 @@
+
+
+
+
diff --git a/extras/Introjucer/Source/BinaryData/iconOpenfile.svg b/extras/Introjucer/Source/BinaryData/iconOpenfile.svg
new file mode 100644
index 0000000000..68e78328f1
--- /dev/null
+++ b/extras/Introjucer/Source/BinaryData/iconOpenfile.svg
@@ -0,0 +1,8 @@
+
+
+
+
diff --git a/extras/Introjucer/Source/BinaryData/iconOpengl.svg b/extras/Introjucer/Source/BinaryData/iconOpengl.svg
new file mode 100644
index 0000000000..ef06127833
--- /dev/null
+++ b/extras/Introjucer/Source/BinaryData/iconOpengl.svg
@@ -0,0 +1,26 @@
+
+
+
+
diff --git a/extras/Introjucer/Source/BinaryData/iconPlugin.svg b/extras/Introjucer/Source/BinaryData/iconPlugin.svg
new file mode 100644
index 0000000000..9c9a234696
--- /dev/null
+++ b/extras/Introjucer/Source/BinaryData/iconPlugin.svg
@@ -0,0 +1,109 @@
+
+
+
+
diff --git a/extras/Introjucer/Source/BinaryData/iconStatic.svg b/extras/Introjucer/Source/BinaryData/iconStatic.svg
new file mode 100644
index 0000000000..e09a976130
--- /dev/null
+++ b/extras/Introjucer/Source/BinaryData/iconStatic.svg
@@ -0,0 +1,41 @@
+
+
+
+
diff --git a/extras/Introjucer/Source/BinaryData/projectIconAndroid.png b/extras/Introjucer/Source/BinaryData/projectIconAndroid.png
new file mode 100644
index 0000000000..2f46df6c7d
Binary files /dev/null and b/extras/Introjucer/Source/BinaryData/projectIconAndroid.png differ
diff --git a/extras/Introjucer/Source/BinaryData/projectIconCodeblocks.png b/extras/Introjucer/Source/BinaryData/projectIconCodeblocks.png
new file mode 100644
index 0000000000..ebc051c252
Binary files /dev/null and b/extras/Introjucer/Source/BinaryData/projectIconCodeblocks.png differ
diff --git a/extras/Introjucer/Source/BinaryData/projectIconLinuxMakefile.png b/extras/Introjucer/Source/BinaryData/projectIconLinuxMakefile.png
new file mode 100644
index 0000000000..175dfb7efd
Binary files /dev/null and b/extras/Introjucer/Source/BinaryData/projectIconLinuxMakefile.png differ
diff --git a/extras/Introjucer/Source/BinaryData/projectIconVisualStudio05.png b/extras/Introjucer/Source/BinaryData/projectIconVisualStudio05.png
new file mode 100644
index 0000000000..acdbb35e7c
Binary files /dev/null and b/extras/Introjucer/Source/BinaryData/projectIconVisualStudio05.png differ
diff --git a/extras/Introjucer/Source/BinaryData/projectIconVisualStudio08.png b/extras/Introjucer/Source/BinaryData/projectIconVisualStudio08.png
new file mode 100644
index 0000000000..418c512782
Binary files /dev/null and b/extras/Introjucer/Source/BinaryData/projectIconVisualStudio08.png differ
diff --git a/extras/Introjucer/Source/BinaryData/projectIconVisualStudio10.png b/extras/Introjucer/Source/BinaryData/projectIconVisualStudio10.png
new file mode 100644
index 0000000000..3e9ea5bf6d
Binary files /dev/null and b/extras/Introjucer/Source/BinaryData/projectIconVisualStudio10.png differ
diff --git a/extras/Introjucer/Source/BinaryData/projectIconVisualStudio12.png b/extras/Introjucer/Source/BinaryData/projectIconVisualStudio12.png
new file mode 100644
index 0000000000..6207fcabed
Binary files /dev/null and b/extras/Introjucer/Source/BinaryData/projectIconVisualStudio12.png differ
diff --git a/extras/Introjucer/Source/BinaryData/projectIconVisualStudio13.png b/extras/Introjucer/Source/BinaryData/projectIconVisualStudio13.png
new file mode 100644
index 0000000000..3821a5ed85
Binary files /dev/null and b/extras/Introjucer/Source/BinaryData/projectIconVisualStudio13.png differ
diff --git a/extras/Introjucer/Source/BinaryData/projectIconXcode.png b/extras/Introjucer/Source/BinaryData/projectIconXcode.png
new file mode 100644
index 0000000000..87aa8f4516
Binary files /dev/null and b/extras/Introjucer/Source/BinaryData/projectIconXcode.png differ
diff --git a/extras/Introjucer/Source/BinaryData/projectIconXcodeIOS.png b/extras/Introjucer/Source/BinaryData/projectIconXcodeIOS.png
new file mode 100644
index 0000000000..d2d7f109ba
Binary files /dev/null and b/extras/Introjucer/Source/BinaryData/projectIconXcodeIOS.png differ
diff --git a/extras/Introjucer/Source/ComponentEditor/jucer_JucerDocument.cpp b/extras/Introjucer/Source/ComponentEditor/jucer_JucerDocument.cpp
index 78a47f7583..4dcb857b8f 100644
--- a/extras/Introjucer/Source/ComponentEditor/jucer_JucerDocument.cpp
+++ b/extras/Introjucer/Source/ComponentEditor/jucer_JucerDocument.cpp
@@ -24,7 +24,7 @@
#include "../jucer_Headers.h"
#include "../Application/jucer_Application.h"
-#include "../Project/jucer_NewFileWizard.h"
+#include "../Wizards/jucer_NewFileWizard.h"
#include "jucer_JucerDocument.h"
#include "jucer_ObjectTypes.h"
#include "ui/jucer_JucerDocumentEditor.h"
diff --git a/extras/Introjucer/Source/ComponentEditor/paintelements/jucer_PaintElementPath.cpp b/extras/Introjucer/Source/ComponentEditor/paintelements/jucer_PaintElementPath.cpp
index a0728ebd57..e973109a8b 100644
--- a/extras/Introjucer/Source/ComponentEditor/paintelements/jucer_PaintElementPath.cpp
+++ b/extras/Introjucer/Source/ComponentEditor/paintelements/jucer_PaintElementPath.cpp
@@ -1378,16 +1378,15 @@ PathPoint PathPoint::withChangedPointType (const Path::Iterator::PathElementType
p.pos [numPoints - 1].getRectangleDouble (x, y, w, h, parentArea, owner->getDocument()->getComponentLayout());
const int index = owner->points.indexOf (this);
- PathPoint* lastPoint = owner->points [index - 1];
- jassert (lastPoint != nullptr);
- if (lastPoint != nullptr)
+ if (PathPoint* lastPoint = owner->points [index - 1])
{
lastPoint->pos [lastPoint->getNumPoints() - 1]
.getRectangleDouble (lastX, lastY, w, h, parentArea, owner->getDocument()->getComponentLayout());
}
else
{
+ jassertfalse;
lastX = x;
lastY = y;
}
diff --git a/extras/Introjucer/Source/Project/jucer_NewProjectWizard.cpp b/extras/Introjucer/Source/Project/jucer_NewProjectWizard.cpp
deleted file mode 100644
index b3696b2aa3..0000000000
--- a/extras/Introjucer/Source/Project/jucer_NewProjectWizard.cpp
+++ /dev/null
@@ -1,740 +0,0 @@
-/*
- ==============================================================================
-
- This file is part of the JUCE library.
- Copyright (c) 2013 - Raw Material Software Ltd.
-
- Permission is granted to use this software under the terms of either:
- a) the GPL v2 (or any later version)
- b) the Affero GPL v3
-
- Details of these licenses can be found 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.juce.com for more information.
-
- ==============================================================================
-*/
-
-#include "jucer_NewProjectWizard.h"
-#include "jucer_ProjectType.h"
-#include "jucer_Module.h"
-#include "../Project Saving/jucer_ProjectExporter.h"
-#include "../Application/jucer_Application.h"
-#include "../Application/jucer_MainWindow.h"
-
-
-struct NewProjectWizardClasses
-{
- //==============================================================================
- static void createFileCreationOptionComboBox (Component& setupComp,
- OwnedArray& itemsCreated,
- const StringArray& fileOptions)
- {
- ComboBox* c = new ComboBox();
- itemsCreated.add (c);
- setupComp.addChildAndSetID (c, "filesToCreate");
-
- c->addItemList (fileOptions, 1);
- c->setSelectedId (1, dontSendNotification);
-
- Label* l = new Label (String::empty, TRANS("Files to Auto-Generate") + ":");
- l->attachToComponent (c, true);
- itemsCreated.add (l);
-
- c->setBounds ("parent.width / 2 + 160, 10, parent.width - 10, top + 22");
- }
-
- static int getFileCreationComboResult (Component& setupComp)
- {
- if (ComboBox* cb = dynamic_cast (setupComp.findChildWithID ("filesToCreate")))
- return cb->getSelectedItemIndex();
-
- jassertfalse;
- return 0;
- }
-
- static void setExecutableNameForAllTargets (Project& project, const String& exeName)
- {
- for (Project::ExporterIterator exporter (project); exporter.next();)
- for (ProjectExporter::ConfigIterator config (*exporter); config.next();)
- config->getTargetBinaryName() = exeName;
- }
-
- static Project::Item createSourceGroup (Project& project)
- {
- return project.getMainGroup().addNewSubGroup ("Source", 0);
- }
-
- static File& getLastWizardFolder()
- {
- #if JUCE_WINDOWS
- static File lastFolder (File::getSpecialLocation (File::userDocumentsDirectory));
- #else
- static File lastFolder (File::getSpecialLocation (File::userHomeDirectory));
- #endif
-
- return lastFolder;
- }
-
- static bool isJuceModulesFolder (const File& f)
- {
- return f.isDirectory()
- && f.getChildFile ("juce_core").isDirectory();
- }
-
- static File findDefaultModulesFolder (bool mustContainJuceCoreModule = true)
- {
- const MainWindowList& windows = IntrojucerApp::getApp().mainWindowList;
-
- for (int i = windows.windows.size(); --i >= 0;)
- {
- if (Project* p = windows.windows.getUnchecked (i)->getProject())
- {
- const File f (EnabledModuleList::findDefaultModulesFolder (*p));
-
- if (isJuceModulesFolder (f) || (f.isDirectory() && ! mustContainJuceCoreModule))
- return f;
- }
- }
-
- if (mustContainJuceCoreModule)
- return findDefaultModulesFolder (false);
-
- return File::nonexistent;
- }
-
- //==============================================================================
- struct NewProjectWizard
- {
- NewProjectWizard() {}
- virtual ~NewProjectWizard() {}
-
- //==============================================================================
- virtual String getName() = 0;
- virtual String getDescription() = 0;
-
- virtual void addSetupItems (Component&, OwnedArray&) {}
- virtual Result processResultsFromSetupItems (Component&) { return Result::ok(); }
-
- virtual bool initialiseProject (Project& project) = 0;
-
- virtual StringArray getDefaultModules()
- {
- static const char* mods[] =
- {
- "juce_core",
- "juce_events",
- "juce_graphics",
- "juce_data_structures",
- "juce_gui_basics",
- "juce_gui_extra",
- "juce_cryptography",
- "juce_video",
- "juce_opengl",
- "juce_audio_basics",
- "juce_audio_devices",
- "juce_audio_formats",
- "juce_audio_processors",
- nullptr
- };
-
- return StringArray (mods);
- }
-
- String appTitle;
- File targetFolder, projectFile, modulesFolder;
- Component* ownerWindow;
- StringArray failedFiles;
-
- //==============================================================================
- Project* runWizard (Component* window,
- const String& projectName,
- const File& target)
- {
- ownerWindow = window;
- appTitle = projectName;
- targetFolder = target;
-
- if (! targetFolder.exists())
- {
- if (! targetFolder.createDirectory())
- failedFiles.add (targetFolder.getFullPathName());
- }
- else if (FileHelpers::containsAnyNonHiddenFiles (targetFolder))
- {
- if (! AlertWindow::showOkCancelBox (AlertWindow::InfoIcon,
- TRANS("New Juce Project"),
- TRANS("The folder you chose isn't empty - are you sure you want to create the project there?")
- + "\n\n"
- + TRANS("Any existing files with the same names may be overwritten by the new files.")))
- return nullptr;
- }
-
- projectFile = targetFolder.getChildFile (File::createLegalFileName (appTitle))
- .withFileExtension (Project::projectFileExtension);
-
- ScopedPointer project (new Project (projectFile));
-
- if (failedFiles.size() == 0)
- {
- project->setFile (projectFile);
- project->setTitle (appTitle);
- project->getBundleIdentifier() = project->getDefaultBundleIdentifier();
-
- if (! initialiseProject (*project))
- return nullptr;
-
- addDefaultModules (*project);
-
- if (project->save (false, true) != FileBasedDocument::savedOk)
- return nullptr;
-
- project->setChangedFlag (false);
- }
-
- if (failedFiles.size() > 0)
- {
- AlertWindow::showMessageBoxAsync (AlertWindow::WarningIcon,
- TRANS("Errors in Creating Project!"),
- TRANS("The following files couldn't be written:")
- + "\n\n"
- + failedFiles.joinIntoString ("\n", 0, 10));
- return nullptr;
- }
-
- return project.release();
- }
-
- bool selectJuceFolder()
- {
- for (;;)
- {
- FileChooser fc ("Select your JUCE modules folder...",
- findDefaultModulesFolder(),
- "*");
-
- if (! fc.browseForDirectory())
- return false;
-
- if (isJuceModulesFolder (fc.getResult()))
- {
- modulesFolder = fc.getResult();
- return true;
- }
-
- AlertWindow::showMessageBox (AlertWindow::WarningIcon,
- "Not a valid JUCE modules folder!",
- "Please select the folder containing your juce_* modules!\n\n"
- "This is required so that the new project can be given some essential core modules.");
- }
- }
-
- //==============================================================================
- File getSourceFilesFolder() const
- {
- return projectFile.getSiblingFile ("Source");
- }
-
- void createSourceFolder()
- {
- if (! getSourceFilesFolder().createDirectory())
- failedFiles.add (getSourceFilesFolder().getFullPathName());
- }
-
- void addDefaultModules (Project& project)
- {
- StringArray mods (getDefaultModules());
-
- ModuleList list;
- list.addAllModulesInFolder (modulesFolder);
-
- for (int i = 0; i < mods.size(); ++i)
- if (const ModuleDescription* info = list.getModuleWithID (mods[i]))
- project.getModules().addModule (info->manifestFile, true);
- }
- };
-
- //==============================================================================
- struct GUIAppWizard : public NewProjectWizard
- {
- GUIAppWizard() {}
-
- String getName() { return TRANS("GUI Application"); }
- String getDescription() { return TRANS("Creates a standard application"); }
-
- void addSetupItems (Component& setupComp, OwnedArray& itemsCreated)
- {
- const String fileOptions[] = { TRANS("Create a Main.cpp file"),
- TRANS("Create a Main.cpp file and a basic window"),
- TRANS("Don't create any files") };
-
- createFileCreationOptionComboBox (setupComp, itemsCreated,
- StringArray (fileOptions, numElementsInArray (fileOptions)));
- }
-
- Result processResultsFromSetupItems (Component& setupComp)
- {
- createMainCpp = createWindow = false;
-
- switch (getFileCreationComboResult (setupComp))
- {
- case 0: createMainCpp = true; break;
- case 1: createMainCpp = createWindow = true; break;
- case 2: break;
- default: jassertfalse; break;
- }
-
- return Result::ok();
- }
-
- bool initialiseProject (Project& project)
- {
- createSourceFolder();
-
- File mainCppFile = getSourceFilesFolder().getChildFile ("Main.cpp");
- File contentCompCpp = getSourceFilesFolder().getChildFile ("MainComponent.cpp");
- File contentCompH = contentCompCpp.withFileExtension (".h");
- String contentCompName = "MainContentComponent";
-
- project.getProjectTypeValue() = ProjectType::getGUIAppTypeName();
-
- Project::Item sourceGroup (createSourceGroup (project));
-
- setExecutableNameForAllTargets (project, File::createLegalFileName (appTitle));
-
- String appHeaders (CodeHelpers::createIncludeStatement (project.getAppIncludeFile(), mainCppFile));
-
- if (createWindow)
- {
- appHeaders << newLine << CodeHelpers::createIncludeStatement (contentCompH, mainCppFile);
-
- String windowH = project.getFileTemplate ("jucer_ContentCompTemplate_h")
- .replace ("INCLUDE_JUCE", CodeHelpers::createIncludeStatement (project.getAppIncludeFile(), contentCompH), false)
- .replace ("CONTENTCOMPCLASS", contentCompName, false)
- .replace ("HEADERGUARD", CodeHelpers::makeHeaderGuardName (contentCompH), false);
-
- String windowCpp = project.getFileTemplate ("jucer_ContentCompTemplate_cpp")
- .replace ("INCLUDE_JUCE", CodeHelpers::createIncludeStatement (project.getAppIncludeFile(), contentCompCpp), false)
- .replace ("INCLUDE_CORRESPONDING_HEADER", CodeHelpers::createIncludeStatement (contentCompH, contentCompCpp), false)
- .replace ("CONTENTCOMPCLASS", contentCompName, false);
-
- if (! FileHelpers::overwriteFileWithNewDataIfDifferent (contentCompH, windowH))
- failedFiles.add (contentCompH.getFullPathName());
-
- if (! FileHelpers::overwriteFileWithNewDataIfDifferent (contentCompCpp, windowCpp))
- failedFiles.add (contentCompCpp.getFullPathName());
-
- sourceGroup.addFile (contentCompCpp, -1, true);
- sourceGroup.addFile (contentCompH, -1, false);
- }
-
- if (createMainCpp)
- {
- String mainCpp = project.getFileTemplate (createWindow ? "jucer_MainTemplate_Window_cpp"
- : "jucer_MainTemplate_NoWindow_cpp")
- .replace ("APPHEADERS", appHeaders, false)
- .replace ("APPCLASSNAME", CodeHelpers::makeValidIdentifier (appTitle + "Application", false, true, false), false)
- .replace ("APPNAME", CppTokeniserFunctions::addEscapeChars (appTitle), false)
- .replace ("CONTENTCOMPCLASS", contentCompName, false)
- .replace ("ALLOWMORETHANONEINSTANCE", "true", false);
-
- if (! FileHelpers::overwriteFileWithNewDataIfDifferent (mainCppFile, mainCpp))
- failedFiles.add (mainCppFile.getFullPathName());
-
- sourceGroup.addFile (mainCppFile, -1, true);
- }
-
- project.createExporterForCurrentPlatform();
-
- return true;
- }
-
- private:
- bool createMainCpp, createWindow;
- };
-
- //==============================================================================
- struct ConsoleAppWizard : public NewProjectWizard
- {
- ConsoleAppWizard() {}
-
- String getName() { return TRANS("Console Application"); }
- String getDescription() { return TRANS("Creates a command-line application with no GUI features"); }
-
- void addSetupItems (Component& setupComp, OwnedArray& itemsCreated)
- {
- const String fileOptions[] = { TRANS("Create a Main.cpp file"),
- TRANS("Don't create any files") };
-
- createFileCreationOptionComboBox (setupComp, itemsCreated,
- StringArray (fileOptions, numElementsInArray (fileOptions)));
- }
-
- Result processResultsFromSetupItems (Component& setupComp)
- {
- createMainCpp = false;
-
- switch (getFileCreationComboResult (setupComp))
- {
- case 0: createMainCpp = true; break;
- case 1: break;
- default: jassertfalse; break;
- }
-
- return Result::ok();
- }
-
- bool initialiseProject (Project& project)
- {
- createSourceFolder();
-
- project.getProjectTypeValue() = ProjectType::getConsoleAppTypeName();
-
- Project::Item sourceGroup (createSourceGroup (project));
-
- setExecutableNameForAllTargets (project, File::createLegalFileName (appTitle));
-
- if (createMainCpp)
- {
- File mainCppFile = getSourceFilesFolder().getChildFile ("Main.cpp");
- String appHeaders (CodeHelpers::createIncludeStatement (project.getAppIncludeFile(), mainCppFile));
-
- String mainCpp = project.getFileTemplate ("jucer_MainConsoleAppTemplate_cpp")
- .replace ("APPHEADERS", appHeaders, false);
-
- if (! FileHelpers::overwriteFileWithNewDataIfDifferent (mainCppFile, mainCpp))
- failedFiles.add (mainCppFile.getFullPathName());
-
- sourceGroup.addFile (mainCppFile, -1, true);
- }
-
- project.createExporterForCurrentPlatform();
-
- return true;
- }
-
- private:
- bool createMainCpp;
- };
-
- //==============================================================================
- struct AudioPluginAppWizard : public NewProjectWizard
- {
- AudioPluginAppWizard() {}
-
- String getName() override { return TRANS("Audio Plug-In"); }
- String getDescription() override { return TRANS("Creates an audio plugin project"); }
-
- StringArray getDefaultModules() override
- {
- StringArray s (NewProjectWizard::getDefaultModules());
- s.add ("juce_audio_plugin_client");
- return s;
- }
-
- bool initialiseProject (Project& project) override
- {
- createSourceFolder();
-
- String filterClassName = CodeHelpers::makeValidIdentifier (appTitle, true, true, false) + "AudioProcessor";
- filterClassName = filterClassName.substring (0, 1).toUpperCase() + filterClassName.substring (1);
- String editorClassName = filterClassName + "Editor";
-
- File filterCppFile = getSourceFilesFolder().getChildFile ("PluginProcessor.cpp");
- File filterHFile = filterCppFile.withFileExtension (".h");
- File editorCppFile = getSourceFilesFolder().getChildFile ("PluginEditor.cpp");
- File editorHFile = editorCppFile.withFileExtension (".h");
-
- project.getProjectTypeValue() = ProjectType::getAudioPluginTypeName();
-
- Project::Item sourceGroup (createSourceGroup (project));
- project.getConfigFlag ("JUCE_QUICKTIME") = Project::configFlagDisabled; // disabled because it interferes with RTAS build on PC
-
- setExecutableNameForAllTargets (project, File::createLegalFileName (appTitle));
-
- String appHeaders (CodeHelpers::createIncludeStatement (project.getAppIncludeFile(), filterCppFile));
-
- String filterCpp = project.getFileTemplate ("jucer_AudioPluginFilterTemplate_cpp")
- .replace ("FILTERHEADERS", CodeHelpers::createIncludeStatement (filterHFile, filterCppFile)
- + newLine + CodeHelpers::createIncludeStatement (editorHFile, filterCppFile), false)
- .replace ("FILTERCLASSNAME", filterClassName, false)
- .replace ("EDITORCLASSNAME", editorClassName, false);
-
- String filterH = project.getFileTemplate ("jucer_AudioPluginFilterTemplate_h")
- .replace ("APPHEADERS", appHeaders, false)
- .replace ("FILTERCLASSNAME", filterClassName, false)
- .replace ("HEADERGUARD", CodeHelpers::makeHeaderGuardName (filterHFile), false);
-
- String editorCpp = project.getFileTemplate ("jucer_AudioPluginEditorTemplate_cpp")
- .replace ("EDITORCPPHEADERS", CodeHelpers::createIncludeStatement (filterHFile, filterCppFile)
- + newLine + CodeHelpers::createIncludeStatement (editorHFile, filterCppFile), false)
- .replace ("FILTERCLASSNAME", filterClassName, false)
- .replace ("EDITORCLASSNAME", editorClassName, false);
-
- String editorH = project.getFileTemplate ("jucer_AudioPluginEditorTemplate_h")
- .replace ("EDITORHEADERS", appHeaders + newLine + CodeHelpers::createIncludeStatement (filterHFile, filterCppFile), false)
- .replace ("FILTERCLASSNAME", filterClassName, false)
- .replace ("EDITORCLASSNAME", editorClassName, false)
- .replace ("HEADERGUARD", CodeHelpers::makeHeaderGuardName (editorHFile), false);
-
- if (! FileHelpers::overwriteFileWithNewDataIfDifferent (filterCppFile, filterCpp))
- failedFiles.add (filterCppFile.getFullPathName());
-
- if (! FileHelpers::overwriteFileWithNewDataIfDifferent (filterHFile, filterH))
- failedFiles.add (filterHFile.getFullPathName());
-
- if (! FileHelpers::overwriteFileWithNewDataIfDifferent (editorCppFile, editorCpp))
- failedFiles.add (editorCppFile.getFullPathName());
-
- if (! FileHelpers::overwriteFileWithNewDataIfDifferent (editorHFile, editorH))
- failedFiles.add (editorHFile.getFullPathName());
-
- sourceGroup.addFile (filterCppFile, -1, true);
- sourceGroup.addFile (filterHFile, -1, false);
- sourceGroup.addFile (editorCppFile, -1, true);
- sourceGroup.addFile (editorHFile, -1, false);
-
- project.createExporterForCurrentPlatform();
-
- return true;
- }
- };
-
- //==============================================================================
- struct StaticLibraryWizard : public NewProjectWizard
- {
- StaticLibraryWizard() {}
-
- String getName() override { return TRANS("Static Library"); }
- String getDescription() override { return TRANS("Creates a static library"); }
-
- bool initialiseProject (Project& project) override
- {
- createSourceFolder();
- project.getProjectTypeValue() = ProjectType::getStaticLibTypeName();
- createSourceGroup (project);
- setExecutableNameForAllTargets (project, File::createLegalFileName (appTitle));
- project.createExporterForCurrentPlatform();
-
- return true;
- }
- };
-
- //==============================================================================
- struct DynamicLibraryWizard : public NewProjectWizard
- {
- DynamicLibraryWizard() {}
-
- String getName() override { return TRANS("Dynamic Library"); }
- String getDescription() override { return TRANS("Creates a dynamic library"); }
-
- bool initialiseProject (Project& project) override
- {
- createSourceFolder();
- project.getProjectTypeValue() = ProjectType::getDynamicLibTypeName();
- createSourceGroup (project);
- setExecutableNameForAllTargets (project, File::createLegalFileName (appTitle));
- project.createExporterForCurrentPlatform();
-
- return true;
- }
- };
-
- //==============================================================================
- class WizardComp : public Component,
- private ButtonListener,
- private ComboBoxListener,
- private TextEditorListener
- {
- public:
- WizardComp()
- : projectName (TRANS("Project name")),
- nameLabel (String::empty, TRANS("Project Name") + ":"),
- typeLabel (String::empty, TRANS("Project Type") + ":"),
- fileBrowser (FileBrowserComponent::saveMode | FileBrowserComponent::canSelectDirectories,
- getLastWizardFolder(), nullptr, nullptr),
- fileOutline (String::empty, TRANS("Project Folder") + ":"),
- createButton (TRANS("Create") + "..."),
- cancelButton (TRANS("Cancel"))
- {
- setOpaque (true);
- setSize (600, 500);
-
- addChildAndSetID (&projectName, "projectName");
- projectName.setText ("NewProject");
- projectName.setBounds ("100, 14, parent.width / 2 - 10, top + 22");
- nameLabel.attachToComponent (&projectName, true);
- projectName.addListener (this);
-
- addChildAndSetID (&projectType, "projectType");
- projectType.addItemList (getWizardNames(), 1);
- projectType.setSelectedId (1, dontSendNotification);
- projectType.setBounds ("100, projectName.bottom + 4, projectName.right, top + 22");
- typeLabel.attachToComponent (&projectType, true);
- projectType.addListener (this);
-
- addChildAndSetID (&fileOutline, "fileOutline");
- fileOutline.setColour (GroupComponent::outlineColourId, Colours::black.withAlpha (0.2f));
- fileOutline.setTextLabelPosition (Justification::centred);
- fileOutline.setBounds ("10, projectType.bottom + 20, projectType.right, parent.height - 10");
-
- addChildAndSetID (&fileBrowser, "fileBrowser");
- fileBrowser.setBounds ("fileOutline.left + 10, fileOutline.top + 20, fileOutline.right - 10, fileOutline.bottom - 12");
- fileBrowser.setFilenameBoxLabel ("Folder:");
-
- addChildAndSetID (&createButton, "createButton");
- createButton.setBounds ("right - 140, bottom - 24, parent.width - 10, parent.height - 10");
- createButton.addListener (this);
-
- addChildAndSetID (&cancelButton, "cancelButton");
- cancelButton.addShortcut (KeyPress (KeyPress::escapeKey));
- cancelButton.setBounds ("right - 140, createButton.top, createButton.left - 10, createButton.bottom");
- cancelButton.addListener (this);
-
- updateCustomItems();
- updateCreateButton();
- }
-
- void paint (Graphics& g) override
- {
- g.fillAll (Colour::greyLevel (0.93f));
- }
-
- void buttonClicked (Button* b) override
- {
- if (b == &createButton)
- {
- createProject();
- }
- else
- {
- if (MainWindow* mw = dynamic_cast (getTopLevelComponent()))
- {
- #if ! JUCE_MAC
- if (IntrojucerApp::getApp().mainWindowList.windows.size() == 1)
- mw->setProject (nullptr);
- else
- #endif
- IntrojucerApp::getApp().mainWindowList.closeWindow (mw);
- }
- }
- }
-
- void createProject()
- {
- MainWindow* mw = Component::findParentComponentOfClass();
- jassert (mw != nullptr);
-
- ScopedPointer wizard (createWizard());
-
- if (wizard != nullptr)
- {
- Result result (wizard->processResultsFromSetupItems (*this));
-
- if (result.failed())
- {
- AlertWindow::showMessageBox (AlertWindow::WarningIcon,
- TRANS("Create Project"),
- result.getErrorMessage());
- return;
- }
-
- if (! wizard->selectJuceFolder())
- return;
-
- ScopedPointer project (wizard->runWizard (mw, projectName.getText(),
- fileBrowser.getSelectedFile (0)));
-
- if (project != nullptr)
- mw->setProject (project.release());
- }
- }
-
- void updateCustomItems()
- {
- customItems.clear();
-
- ScopedPointer wizard (createWizard());
-
- if (wizard != nullptr)
- wizard->addSetupItems (*this, customItems);
- }
-
- void comboBoxChanged (ComboBox*) override
- {
- updateCustomItems();
- }
-
- void textEditorTextChanged (TextEditor&) override
- {
- updateCreateButton();
-
- fileBrowser.setFileName (File::createLegalFileName (projectName.getText()));
- }
-
- private:
- ComboBox projectType;
- TextEditor projectName;
- Label nameLabel, typeLabel;
- FileBrowserComponent fileBrowser;
- GroupComponent fileOutline;
- TextButton createButton, cancelButton;
- OwnedArray customItems;
-
- NewProjectWizard* createWizard()
- {
- return createWizardType (projectType.getSelectedItemIndex());
- }
-
- void updateCreateButton()
- {
- createButton.setEnabled (projectName.getText().trim().isNotEmpty());
- }
- };
-
- //==============================================================================
- static int getNumWizards()
- {
- return 5;
- }
-
- static NewProjectWizard* createWizardType (int index)
- {
- switch (index)
- {
- case 0: return new GUIAppWizard();
- case 1: return new ConsoleAppWizard();
- case 2: return new AudioPluginAppWizard();
- case 3: return new StaticLibraryWizard();
- case 4: return new DynamicLibraryWizard();
- default: jassertfalse; break;
- }
-
- return nullptr;
- }
-
- static StringArray getWizardNames()
- {
- StringArray s;
-
- for (int i = 0; i < getNumWizards(); ++i)
- {
- ScopedPointer wiz (createWizardType (i));
- s.add (wiz->getName());
- }
-
- return s;
- }
-};
-
-Component* createNewProjectWizardComponent()
-{
- return new NewProjectWizardClasses::WizardComp();
-}
diff --git a/extras/Introjucer/Source/Utility/jucer_SlidingPanelComponent.cpp b/extras/Introjucer/Source/Utility/jucer_SlidingPanelComponent.cpp
new file mode 100644
index 0000000000..a49863aaf1
--- /dev/null
+++ b/extras/Introjucer/Source/Utility/jucer_SlidingPanelComponent.cpp
@@ -0,0 +1,126 @@
+/*
+ ==============================================================================
+
+ This file is part of the JUCE library.
+ Copyright (c) 2013 - Raw Material Software Ltd.
+
+ Permission is granted to use this software under the terms of either:
+ a) the GPL v2 (or any later version)
+ b) the Affero GPL v3
+
+ Details of these licenses can be found 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.juce.com for more information.
+
+ ==============================================================================
+*/
+
+
+#include "jucer_SlidingPanelComponent.h"
+
+//==============================================================================
+// TEMPORARY COPY OF TAB HELPERS FOR SLIDER PROTOTYPE, REMOVE BEFORE RELEASE ///
+//==============================================================================
+
+namespace TabbedComponentHelpers
+{
+ const Identifier deleteComponentId ("deleteByTabComp_");
+
+ static void deleteIfNecessary (Component* const comp)
+ {
+ if (comp != nullptr && (bool) comp->getProperties() [deleteComponentId])
+ delete comp;
+ }
+}
+
+
+//==============================================================================
+SlidingPanelComponent::SlidingPanelComponent ()
+{
+ dotSize = 20;
+ numTabs = 0;
+ currentTabIndex = 0;
+
+ addAndMakeVisible (&slide);
+}
+
+SlidingPanelComponent::~SlidingPanelComponent ()
+{
+ for (int i = contentComponents.size(); --i >= 0;)
+ if (Component* c = contentComponents.getReference(i))
+ TabbedComponentHelpers::deleteIfNecessary (c);
+}
+
+void SlidingPanelComponent::addTab (const String& tabName,
+ Component* const contentComponent,
+ const bool deleteComponentWhenNotNeeded,
+ const int insertIndex)
+{
+ contentComponents.insert (insertIndex, WeakReference (contentComponent));
+
+ tabNames.insert (insertIndex, tabName);
+
+ if (deleteComponentWhenNotNeeded && contentComponent != nullptr)
+ contentComponent->getProperties().set (TabbedComponentHelpers::deleteComponentId, true);
+
+ slide.addAndMakeVisible (contentComponent);
+
+ numTabs++;
+
+ resized();
+}
+
+void SlidingPanelComponent::goToTab (int targetTabIndex)
+{
+ int xTranslation = (currentTabIndex - targetTabIndex) * getWidth();
+
+ currentTabIndex = targetTabIndex;
+
+ Desktop::getInstance().getAnimator().animateComponent (&slide, slide.getBounds().translated(xTranslation, 0), 1.0f, 600, false, 0.0, 0.0);
+
+ repaint();
+}
+
+void SlidingPanelComponent::paint (Graphics& g)
+{
+
+ Rectangle dotHolder = getLocalBounds();
+
+ dotHolder.reduce ((getWidth() - dotSize * numTabs)/2, 20);
+ dotHolder = dotHolder.removeFromBottom (dotSize);
+
+ g.setColour (Colours::white);
+
+ for (int i = 0; i < numTabs; i++)
+ {
+ if (i == currentTabIndex)
+ {
+ g.fillEllipse (dotHolder.removeFromLeft (dotSize).reduced (5, 5).toFloat());
+ }
+ else
+ {
+ g.drawEllipse (dotHolder.removeFromLeft (dotSize).reduced (5, 5).toFloat(), 1.0f);
+ }
+ }
+}
+
+void SlidingPanelComponent::resized()
+{
+ slide.setBounds (-currentTabIndex*getWidth(), slide.getPosition().y, numTabs * getWidth(), getHeight());
+
+ Rectangle content (getLocalBounds());
+
+ content.removeFromBottom (20 + 2 * dotSize);
+
+ for (int i = contentComponents.size(); --i >= 0;)
+ if (Component* c = contentComponents.getReference(i))
+ c->setBounds (content.translated (i*content.getWidth(), 0));
+}
+
diff --git a/extras/Introjucer/Source/Utility/jucer_SlidingPanelComponent.h b/extras/Introjucer/Source/Utility/jucer_SlidingPanelComponent.h
new file mode 100644
index 0000000000..1dd5a3450f
--- /dev/null
+++ b/extras/Introjucer/Source/Utility/jucer_SlidingPanelComponent.h
@@ -0,0 +1,77 @@
+/*
+ ==============================================================================
+
+ This file is part of the JUCE library.
+ Copyright (c) 2013 - Raw Material Software Ltd.
+
+ Permission is granted to use this software under the terms of either:
+ a) the GPL v2 (or any later version)
+ b) the Affero GPL v3
+
+ Details of these licenses can be found 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.juce.com for more information.
+
+ ==============================================================================
+*/
+
+#ifndef JUCER_SLIDINGPANELCOMPONENT_H_INCLUDED
+#define JUCER_SLIDINGPANELCOMPONENT_H_INCLUDED
+
+#include "../jucer_Headers.h"
+#include "../Application/jucer_Application.h"
+
+
+class SlidingPanelComponent : public Component
+{
+public:
+ SlidingPanelComponent ();
+ ~SlidingPanelComponent();
+
+ /** Adds a new tab to the panel slider. */
+ void addTab (const String& tabName,
+ Component* contentComponent,
+ bool deleteComponentWhenNotNeeded,
+ int insertIndex = -1);
+
+ /** Gets rid of one of the tabs. */
+ void removeTab (int tabIndex);
+
+ /** Gets index of current tab. */
+ int getCurrentTabIndex (){return currentTabIndex;};
+
+ /** Returns the number of tabs. */
+ int getNumTabs (){return numTabs;};
+
+ /** Animates the window to the desired tab. */
+ void goToTab (int targetTabIndex);
+
+
+ //==============================================================================
+ /** @internal */
+ void paint (Graphics&);
+ /** @internal */
+ void resized();
+
+private:
+ Array > contentComponents;
+ Array tabNames;
+
+ Component slide;
+
+ int currentTabIndex;
+ int numTabs;
+
+ int dotSize;
+
+ JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(SlidingPanelComponent);
+};
+
+#endif // JUCER_SLIDINGPANELCOMPONENT_H_INCLUDED
\ No newline at end of file
diff --git a/extras/Introjucer/Source/Wizards/jucer_AudioPluginAppWizard.h b/extras/Introjucer/Source/Wizards/jucer_AudioPluginAppWizard.h
new file mode 100644
index 0000000000..515cec029e
--- /dev/null
+++ b/extras/Introjucer/Source/Wizards/jucer_AudioPluginAppWizard.h
@@ -0,0 +1,113 @@
+/*
+ ==============================================================================
+
+ This file is part of the JUCE library.
+ Copyright (c) 2013 - Raw Material Software Ltd.
+
+ Permission is granted to use this software under the terms of either:
+ a) the GPL v2 (or any later version)
+ b) the Affero GPL v3
+
+ Details of these licenses can be found 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.juce.com for more information.
+
+ ==============================================================================
+*/
+
+#ifndef JUCER_AUDIOPLUGINAPPWIZARD_H_INCLUDED
+#define JUCER_AUDIOPLUGINAPPWIZARD_H_INCLUDED
+
+
+//==============================================================================
+struct AudioPluginAppWizard : public NewProjectWizard
+{
+ AudioPluginAppWizard() {}
+
+ String getName() override { return TRANS("Audio Plug-In"); }
+ String getDescription() override { return TRANS("Creates an audio plugin project"); }
+
+ StringArray getDefaultModules() override
+ {
+ StringArray s (NewProjectWizard::getDefaultModules());
+ s.add ("juce_audio_plugin_client");
+ return s;
+ }
+
+ bool initialiseProject (Project& project) override
+ {
+ createSourceFolder();
+
+ String filterClassName = CodeHelpers::makeValidIdentifier (appTitle, true, true, false) + "AudioProcessor";
+ filterClassName = filterClassName.substring (0, 1).toUpperCase() + filterClassName.substring (1);
+ String editorClassName = filterClassName + "Editor";
+
+ File filterCppFile = getSourceFilesFolder().getChildFile ("PluginProcessor.cpp");
+ File filterHFile = filterCppFile.withFileExtension (".h");
+ File editorCppFile = getSourceFilesFolder().getChildFile ("PluginEditor.cpp");
+ File editorHFile = editorCppFile.withFileExtension (".h");
+
+ project.getProjectTypeValue() = ProjectType::getAudioPluginTypeName();
+
+ Project::Item sourceGroup (createSourceGroup (project));
+ project.getConfigFlag ("JUCE_QUICKTIME") = Project::configFlagDisabled; // disabled because it interferes with RTAS build on PC
+
+ setExecutableNameForAllTargets (project, File::createLegalFileName (appTitle));
+
+ String appHeaders (CodeHelpers::createIncludeStatement (project.getAppIncludeFile(), filterCppFile));
+
+ String filterCpp = project.getFileTemplate ("jucer_AudioPluginFilterTemplate_cpp")
+ .replace ("FILTERHEADERS", CodeHelpers::createIncludeStatement (filterHFile, filterCppFile)
+ + newLine + CodeHelpers::createIncludeStatement (editorHFile, filterCppFile), false)
+ .replace ("FILTERCLASSNAME", filterClassName, false)
+ .replace ("EDITORCLASSNAME", editorClassName, false);
+
+ String filterH = project.getFileTemplate ("jucer_AudioPluginFilterTemplate_h")
+ .replace ("APPHEADERS", appHeaders, false)
+ .replace ("FILTERCLASSNAME", filterClassName, false)
+ .replace ("HEADERGUARD", CodeHelpers::makeHeaderGuardName (filterHFile), false);
+
+ String editorCpp = project.getFileTemplate ("jucer_AudioPluginEditorTemplate_cpp")
+ .replace ("EDITORCPPHEADERS", CodeHelpers::createIncludeStatement (filterHFile, filterCppFile)
+ + newLine + CodeHelpers::createIncludeStatement (editorHFile, filterCppFile), false)
+ .replace ("FILTERCLASSNAME", filterClassName, false)
+ .replace ("EDITORCLASSNAME", editorClassName, false);
+
+ String editorH = project.getFileTemplate ("jucer_AudioPluginEditorTemplate_h")
+ .replace ("EDITORHEADERS", appHeaders + newLine + CodeHelpers::createIncludeStatement (filterHFile, filterCppFile), false)
+ .replace ("FILTERCLASSNAME", filterClassName, false)
+ .replace ("EDITORCLASSNAME", editorClassName, false)
+ .replace ("HEADERGUARD", CodeHelpers::makeHeaderGuardName (editorHFile), false);
+
+ if (! FileHelpers::overwriteFileWithNewDataIfDifferent (filterCppFile, filterCpp))
+ failedFiles.add (filterCppFile.getFullPathName());
+
+ if (! FileHelpers::overwriteFileWithNewDataIfDifferent (filterHFile, filterH))
+ failedFiles.add (filterHFile.getFullPathName());
+
+ if (! FileHelpers::overwriteFileWithNewDataIfDifferent (editorCppFile, editorCpp))
+ failedFiles.add (editorCppFile.getFullPathName());
+
+ if (! FileHelpers::overwriteFileWithNewDataIfDifferent (editorHFile, editorH))
+ failedFiles.add (editorHFile.getFullPathName());
+
+ sourceGroup.addFile (filterCppFile, -1, true);
+ sourceGroup.addFile (filterHFile, -1, false);
+ sourceGroup.addFile (editorCppFile, -1, true);
+ sourceGroup.addFile (editorHFile, -1, false);
+
+ project.createExporterForCurrentPlatform();
+
+ return true;
+ }
+};
+
+
+#endif // JUCER_AUDIOPLUGINAPPWIZARD_H_INCLUDED
diff --git a/extras/Introjucer/Source/Wizards/jucer_ConsoleAppWizard.h b/extras/Introjucer/Source/Wizards/jucer_ConsoleAppWizard.h
new file mode 100644
index 0000000000..014329fcee
--- /dev/null
+++ b/extras/Introjucer/Source/Wizards/jucer_ConsoleAppWizard.h
@@ -0,0 +1,94 @@
+/*
+ ==============================================================================
+
+ This file is part of the JUCE library.
+ Copyright (c) 2013 - Raw Material Software Ltd.
+
+ Permission is granted to use this software under the terms of either:
+ a) the GPL v2 (or any later version)
+ b) the Affero GPL v3
+
+ Details of these licenses can be found 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.juce.com for more information.
+
+ ==============================================================================
+*/
+
+#ifndef CONSOLEAPPWIZARD_H_INCLUDED
+#define CONSOLEAPPWIZARD_H_INCLUDED
+
+
+//==============================================================================
+struct ConsoleAppWizard : public NewProjectWizard
+{
+ ConsoleAppWizard() {}
+
+ String getName() { return TRANS("Console Application"); }
+ String getDescription() { return TRANS("Creates a command-line application with no GUI features"); }
+
+ void addSetupItems (Component& setupComp, OwnedArray& itemsCreated)
+ {
+ const String fileOptions[] = { TRANS("Create a Main.cpp file"),
+ TRANS("Don't create any files") };
+
+ createFileCreationOptionComboBox (setupComp, itemsCreated,
+ StringArray (fileOptions, numElementsInArray (fileOptions)));
+ }
+
+ Result processResultsFromSetupItems (Component& setupComp)
+ {
+ createMainCpp = false;
+
+ switch (getFileCreationComboResult (setupComp))
+ {
+ case 0: createMainCpp = true; break;
+ case 1: break;
+ default: jassertfalse; break;
+ }
+
+ return Result::ok();
+ }
+
+ bool initialiseProject (Project& project)
+ {
+ createSourceFolder();
+
+ project.getProjectTypeValue() = ProjectType::getConsoleAppTypeName();
+
+ Project::Item sourceGroup (createSourceGroup (project));
+
+ setExecutableNameForAllTargets (project, File::createLegalFileName (appTitle));
+
+ if (createMainCpp)
+ {
+ File mainCppFile = getSourceFilesFolder().getChildFile ("Main.cpp");
+ String appHeaders (CodeHelpers::createIncludeStatement (project.getAppIncludeFile(), mainCppFile));
+
+ String mainCpp = project.getFileTemplate ("jucer_MainConsoleAppTemplate_cpp")
+ .replace ("APPHEADERS", appHeaders, false);
+
+ if (! FileHelpers::overwriteFileWithNewDataIfDifferent (mainCppFile, mainCpp))
+ failedFiles.add (mainCppFile.getFullPathName());
+
+ sourceGroup.addFile (mainCppFile, -1, true);
+ }
+
+ project.createExporterForCurrentPlatform();
+
+ return true;
+ }
+
+private:
+ bool createMainCpp;
+};
+
+
+#endif // CONSOLEAPPWIZARD_H_INCLUDED
diff --git a/extras/Introjucer/Source/Wizards/jucer_DynamicLibraryWizard.h b/extras/Introjucer/Source/Wizards/jucer_DynamicLibraryWizard.h
new file mode 100644
index 0000000000..b03a305267
--- /dev/null
+++ b/extras/Introjucer/Source/Wizards/jucer_DynamicLibraryWizard.h
@@ -0,0 +1,50 @@
+/*
+ ==============================================================================
+
+ This file is part of the JUCE library.
+ Copyright (c) 2013 - Raw Material Software Ltd.
+
+ Permission is granted to use this software under the terms of either:
+ a) the GPL v2 (or any later version)
+ b) the Affero GPL v3
+
+ Details of these licenses can be found 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.juce.com for more information.
+
+ ==============================================================================
+*/
+
+#ifndef JUCER_DYNAMICLIBRARYWIZARD_H_INCLUDED
+#define JUCER_DYNAMICLIBRARYWIZARD_H_INCLUDED
+
+
+//==============================================================================
+struct DynamicLibraryWizard : public NewProjectWizard
+{
+ DynamicLibraryWizard() {}
+
+ String getName() override { return TRANS("Dynamic Library"); }
+ String getDescription() override { return TRANS("Creates a dynamic library"); }
+
+ bool initialiseProject (Project& project) override
+ {
+ createSourceFolder();
+ project.getProjectTypeValue() = ProjectType::getDynamicLibTypeName();
+ createSourceGroup (project);
+ setExecutableNameForAllTargets (project, File::createLegalFileName (appTitle));
+ project.createExporterForCurrentPlatform();
+
+ return true;
+ }
+};
+
+
+#endif // JUCER_DYNAMICLIBRARYWIZARD_H_INCLUDED
diff --git a/extras/Introjucer/Source/Wizards/jucer_GUIAppWizard.h b/extras/Introjucer/Source/Wizards/jucer_GUIAppWizard.h
new file mode 100644
index 0000000000..3547fc7e1a
--- /dev/null
+++ b/extras/Introjucer/Source/Wizards/jucer_GUIAppWizard.h
@@ -0,0 +1,130 @@
+/*
+ ==============================================================================
+
+ This file is part of the JUCE library.
+ Copyright (c) 2013 - Raw Material Software Ltd.
+
+ Permission is granted to use this software under the terms of either:
+ a) the GPL v2 (or any later version)
+ b) the Affero GPL v3
+
+ Details of these licenses can be found 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.juce.com for more information.
+
+ ==============================================================================
+*/
+
+#ifndef GUIAPPWIZARD_H_INCLUDED
+#define GUIAPPWIZARD_H_INCLUDED
+
+#include "jucer_NewProjectWizard.h"
+
+//==============================================================================
+struct GUIAppWizard : public NewProjectWizard
+{
+ GUIAppWizard() {}
+
+ String getName() { return TRANS("GUI Application"); }
+ String getDescription() { return TRANS("Creates a standard application"); }
+
+ void addSetupItems (Component& setupComp, OwnedArray& itemsCreated)
+ {
+ const String fileOptions[] = { TRANS("Create a Main.cpp file"),
+ TRANS("Create a Main.cpp file and a basic window"),
+ TRANS("Don't create any files") };
+
+ createFileCreationOptionComboBox (setupComp, itemsCreated,
+ StringArray (fileOptions, numElementsInArray (fileOptions)));
+ }
+
+ Result processResultsFromSetupItems (Component& setupComp)
+ {
+ createMainCpp = createWindow = false;
+
+ switch (getFileCreationComboResult (setupComp))
+ {
+ case 0: createMainCpp = true; break;
+ case 1: createMainCpp = createWindow = true; break;
+ case 2: break;
+ default: jassertfalse; break;
+ }
+
+ return Result::ok();
+ }
+
+ bool initialiseProject (Project& project)
+ {
+ createSourceFolder();
+
+ File mainCppFile = getSourceFilesFolder().getChildFile ("Main.cpp");
+ File contentCompCpp = getSourceFilesFolder().getChildFile ("MainComponent.cpp");
+ File contentCompH = contentCompCpp.withFileExtension (".h");
+ String contentCompName = "MainContentComponent";
+
+ project.getProjectTypeValue() = ProjectType::getGUIAppTypeName();
+
+ Project::Item sourceGroup (createSourceGroup (project));
+
+ setExecutableNameForAllTargets (project, File::createLegalFileName (appTitle));
+
+ String appHeaders (CodeHelpers::createIncludeStatement (project.getAppIncludeFile(), mainCppFile));
+
+ if (createWindow)
+ {
+ appHeaders << newLine << CodeHelpers::createIncludeStatement (contentCompH, mainCppFile);
+
+ String windowH = project.getFileTemplate ("jucer_ContentCompTemplate_h")
+ .replace ("INCLUDE_JUCE", CodeHelpers::createIncludeStatement (project.getAppIncludeFile(), contentCompH), false)
+ .replace ("CONTENTCOMPCLASS", contentCompName, false)
+ .replace ("HEADERGUARD", CodeHelpers::makeHeaderGuardName (contentCompH), false);
+
+ String windowCpp = project.getFileTemplate ("jucer_ContentCompTemplate_cpp")
+ .replace ("INCLUDE_JUCE", CodeHelpers::createIncludeStatement (project.getAppIncludeFile(), contentCompCpp), false)
+ .replace ("INCLUDE_CORRESPONDING_HEADER", CodeHelpers::createIncludeStatement (contentCompH, contentCompCpp), false)
+ .replace ("CONTENTCOMPCLASS", contentCompName, false);
+
+ if (! FileHelpers::overwriteFileWithNewDataIfDifferent (contentCompH, windowH))
+ failedFiles.add (contentCompH.getFullPathName());
+
+ if (! FileHelpers::overwriteFileWithNewDataIfDifferent (contentCompCpp, windowCpp))
+ failedFiles.add (contentCompCpp.getFullPathName());
+
+ sourceGroup.addFile (contentCompCpp, -1, true);
+ sourceGroup.addFile (contentCompH, -1, false);
+ }
+
+ if (createMainCpp)
+ {
+ String mainCpp = project.getFileTemplate (createWindow ? "jucer_MainTemplate_Window_cpp"
+ : "jucer_MainTemplate_NoWindow_cpp")
+ .replace ("APPHEADERS", appHeaders, false)
+ .replace ("APPCLASSNAME", CodeHelpers::makeValidIdentifier (appTitle + "Application", false, true, false), false)
+ .replace ("APPNAME", CppTokeniserFunctions::addEscapeChars (appTitle), false)
+ .replace ("CONTENTCOMPCLASS", contentCompName, false)
+ .replace ("ALLOWMORETHANONEINSTANCE", "true", false);
+
+ if (! FileHelpers::overwriteFileWithNewDataIfDifferent (mainCppFile, mainCpp))
+ failedFiles.add (mainCppFile.getFullPathName());
+
+ sourceGroup.addFile (mainCppFile, -1, true);
+ }
+
+ project.createExporterForCurrentPlatform();
+
+ return true;
+ }
+
+private:
+ bool createMainCpp, createWindow;
+};
+
+
+#endif // GUIAPPWIZARD_H_INCLUDED
diff --git a/extras/Introjucer/Source/Project/jucer_NewFileWizard.cpp b/extras/Introjucer/Source/Wizards/jucer_NewFileWizard.cpp
similarity index 100%
rename from extras/Introjucer/Source/Project/jucer_NewFileWizard.cpp
rename to extras/Introjucer/Source/Wizards/jucer_NewFileWizard.cpp
diff --git a/extras/Introjucer/Source/Project/jucer_NewFileWizard.h b/extras/Introjucer/Source/Wizards/jucer_NewFileWizard.h
similarity index 100%
rename from extras/Introjucer/Source/Project/jucer_NewFileWizard.h
rename to extras/Introjucer/Source/Wizards/jucer_NewFileWizard.h
diff --git a/extras/Introjucer/Source/Wizards/jucer_NewProjectWizard.h b/extras/Introjucer/Source/Wizards/jucer_NewProjectWizard.h
new file mode 100644
index 0000000000..5aa5864774
--- /dev/null
+++ b/extras/Introjucer/Source/Wizards/jucer_NewProjectWizard.h
@@ -0,0 +1,260 @@
+/*
+ ==============================================================================
+
+ This file is part of the JUCE library.
+ Copyright (c) 2013 - Raw Material Software Ltd.
+
+ Permission is granted to use this software under the terms of either:
+ a) the GPL v2 (or any later version)
+ b) the Affero GPL v3
+
+ Details of these licenses can be found 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.juce.com for more information.
+
+ ==============================================================================
+*/
+
+#ifndef JUCER_NEWPROJECTWIZARD_H_INCLUDED
+#define JUCER_NEWPROJECTWIZARD_H_INCLUDED
+
+
+//==============================================================================
+static inline void createFileCreationOptionComboBox (Component& setupComp,
+ OwnedArray& itemsCreated,
+ const StringArray& fileOptions)
+{
+ ComboBox* c = new ComboBox();
+ itemsCreated.add (c);
+ setupComp.addChildAndSetID (c, "filesToCreate");
+
+ c->addItemList (fileOptions, 1);
+ c->setSelectedId (1, dontSendNotification);
+
+ Label* l = new Label (String::empty, TRANS("Files to Auto-Generate") + ":");
+ l->attachToComponent (c, true);
+ itemsCreated.add (l);
+
+ c->setBounds ("parent.width / 2 + 160, 30, parent.width - 30, top + 22");
+}
+
+static inline int getFileCreationComboResult (Component& setupComp)
+{
+ if (ComboBox* cb = dynamic_cast (setupComp.findChildWithID ("filesToCreate")))
+ return cb->getSelectedItemIndex();
+
+ jassertfalse;
+ return 0;
+}
+
+static inline void setExecutableNameForAllTargets (Project& project, const String& exeName)
+{
+ for (Project::ExporterIterator exporter (project); exporter.next();)
+ for (ProjectExporter::ConfigIterator config (*exporter); config.next();)
+ config->getTargetBinaryName() = exeName;
+}
+
+static inline Project::Item createSourceGroup (Project& project)
+{
+ return project.getMainGroup().addNewSubGroup ("Source", 0);
+}
+
+static inline File& getLastWizardFolder()
+{
+ #if JUCE_WINDOWS
+ static File lastFolder (File::getSpecialLocation (File::userDocumentsDirectory));
+ #else
+ static File lastFolder (File::getSpecialLocation (File::userHomeDirectory));
+ #endif
+
+ return lastFolder;
+}
+
+static bool isJuceModulesFolder (const File& f)
+{
+ return f.isDirectory()
+ && f.getChildFile ("juce_core").isDirectory();
+}
+
+static File findDefaultModulesFolder (bool mustContainJuceCoreModule = true)
+{
+ const MainWindowList& windows = IntrojucerApp::getApp().mainWindowList;
+
+ for (int i = windows.windows.size(); --i >= 0;)
+ {
+ if (Project* p = windows.windows.getUnchecked (i)->getProject())
+ {
+ const File f (EnabledModuleList::findDefaultModulesFolder (*p));
+
+ if (isJuceModulesFolder (f) || (f.isDirectory() && ! mustContainJuceCoreModule))
+ return f;
+ }
+ }
+
+ if (mustContainJuceCoreModule)
+ return findDefaultModulesFolder (false);
+
+ return File::nonexistent;
+}
+
+
+//==============================================================================
+struct NewProjectWizard
+{
+ NewProjectWizard() {}
+ virtual ~NewProjectWizard() {}
+
+ //==============================================================================
+ virtual String getName() = 0;
+ virtual String getDescription() = 0;
+
+ virtual void addSetupItems (Component&, OwnedArray&) {}
+ virtual Result processResultsFromSetupItems (Component&) { return Result::ok(); }
+
+ virtual bool initialiseProject (Project& project) = 0;
+
+ virtual StringArray getDefaultModules()
+ {
+ static const char* mods[] =
+ {
+ "juce_core",
+ "juce_events",
+ "juce_graphics",
+ "juce_data_structures",
+ "juce_gui_basics",
+ "juce_gui_extra",
+ "juce_cryptography",
+ "juce_video",
+ "juce_opengl",
+ "juce_audio_basics",
+ "juce_audio_devices",
+ "juce_audio_formats",
+ "juce_audio_processors",
+ nullptr
+ };
+
+ return StringArray (mods);
+ }
+
+ String appTitle;
+ File targetFolder, projectFile, modulesFolder;
+ Component* ownerWindow;
+ StringArray failedFiles;
+
+ //==============================================================================
+ Project* runWizard (Component* window,
+ const String& projectName,
+ const File& target)
+ {
+ ownerWindow = window;
+ appTitle = projectName;
+ targetFolder = target;
+
+ if (! targetFolder.exists())
+ {
+ if (! targetFolder.createDirectory())
+ failedFiles.add (targetFolder.getFullPathName());
+ }
+ else if (FileHelpers::containsAnyNonHiddenFiles (targetFolder))
+ {
+ if (! AlertWindow::showOkCancelBox (AlertWindow::InfoIcon,
+ TRANS("New Juce Project"),
+ TRANS("The folder you chose isn't empty - are you sure you want to create the project there?")
+ + "\n\n"
+ + TRANS("Any existing files with the same names may be overwritten by the new files.")))
+ return nullptr;
+ }
+
+ projectFile = targetFolder.getChildFile (File::createLegalFileName (appTitle))
+ .withFileExtension (Project::projectFileExtension);
+
+ ScopedPointer project (new Project (projectFile));
+
+ if (failedFiles.size() == 0)
+ {
+ project->setFile (projectFile);
+ project->setTitle (appTitle);
+ project->getBundleIdentifier() = project->getDefaultBundleIdentifier();
+
+ if (! initialiseProject (*project))
+ return nullptr;
+
+ addDefaultModules (*project);
+
+ if (project->save (false, true) != FileBasedDocument::savedOk)
+ return nullptr;
+
+ project->setChangedFlag (false);
+ }
+
+ if (failedFiles.size() > 0)
+ {
+ AlertWindow::showMessageBoxAsync (AlertWindow::WarningIcon,
+ TRANS("Errors in Creating Project!"),
+ TRANS("The following files couldn't be written:")
+ + "\n\n"
+ + failedFiles.joinIntoString ("\n", 0, 10));
+ return nullptr;
+ }
+
+ return project.release();
+ }
+
+ bool selectJuceFolder()
+ {
+ for (;;)
+ {
+ FileChooser fc ("Select your JUCE modules folder...",
+ findDefaultModulesFolder(),
+ "*");
+
+ if (! fc.browseForDirectory())
+ return false;
+
+ if (isJuceModulesFolder (fc.getResult()))
+ {
+ modulesFolder = fc.getResult();
+ return true;
+ }
+
+ AlertWindow::showMessageBox (AlertWindow::WarningIcon,
+ "Not a valid JUCE modules folder!",
+ "Please select the folder containing your juce_* modules!\n\n"
+ "This is required so that the new project can be given some essential core modules.");
+ }
+ }
+
+ //==============================================================================
+ File getSourceFilesFolder() const
+ {
+ return projectFile.getSiblingFile ("Source");
+ }
+
+ void createSourceFolder()
+ {
+ if (! getSourceFilesFolder().createDirectory())
+ failedFiles.add (getSourceFilesFolder().getFullPathName());
+ }
+
+ void addDefaultModules (Project& project)
+ {
+ StringArray mods (getDefaultModules());
+
+ ModuleList list;
+ list.addAllModulesInFolder (modulesFolder);
+
+ for (int i = 0; i < mods.size(); ++i)
+ if (const ModuleDescription* info = list.getModuleWithID (mods[i]))
+ project.getModules().addModule (info->manifestFile, true);
+ }
+};
+
+
+#endif // JUCER_NEWPROJECTWIZARD_H_INCLUDED
diff --git a/extras/Introjucer/Source/Wizards/jucer_NewProjectWizardClasses.cpp b/extras/Introjucer/Source/Wizards/jucer_NewProjectWizardClasses.cpp
new file mode 100644
index 0000000000..09dc7de381
--- /dev/null
+++ b/extras/Introjucer/Source/Wizards/jucer_NewProjectWizardClasses.cpp
@@ -0,0 +1,69 @@
+/*
+ ==============================================================================
+
+ This file is part of the JUCE library.
+ Copyright (c) 2013 - Raw Material Software Ltd.
+
+ Permission is granted to use this software under the terms of either:
+ a) the GPL v2 (or any later version)
+ b) the Affero GPL v3
+
+ Details of these licenses can be found 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.juce.com for more information.
+
+ ==============================================================================
+*/
+
+#include "jucer_NewProjectWizardClasses.h"
+#include "jucer_ProjectType.h"
+#include "jucer_Module.h"
+#include "../Project Saving/jucer_ProjectExporter.h"
+#include "../Application/jucer_Application.h"
+#include "../Application/jucer_MainWindow.h"
+#include "../Utility/jucer_SlidingPanelComponent.h"
+
+struct NewProjectWizardClasses
+{
+ #include "jucer_NewProjectWizard.h"
+
+ #include "jucer_GUIAppWizard.h"
+ #include "jucer_ConsoleAppWizard.h"
+ #include "jucer_AudioPluginAppWizard.h"
+ #include "jucer_StaticLibraryWizard.h"
+ #include "jucer_DynamicLibraryWizard.h"
+};
+
+struct NewProjectWizardComponents
+{
+ #include "jucer_NewProjectWizardComponent.h"
+ #include "jucer_TemplateThumbnailsComponent.h"
+ #include "jucer_StartPageComponent.h"
+};
+
+Component* createNewProjectWizardComponent()
+{
+ return new NewProjectWizardComponents::StartPageComponent();
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extras/Introjucer/Source/Project/jucer_NewProjectWizard.h b/extras/Introjucer/Source/Wizards/jucer_NewProjectWizardClasses.h
similarity index 97%
rename from extras/Introjucer/Source/Project/jucer_NewProjectWizard.h
rename to extras/Introjucer/Source/Wizards/jucer_NewProjectWizardClasses.h
index fd8b1800da..92e57c2c42 100644
--- a/extras/Introjucer/Source/Project/jucer_NewProjectWizard.h
+++ b/extras/Introjucer/Source/Wizards/jucer_NewProjectWizardClasses.h
@@ -29,5 +29,4 @@
Component* createNewProjectWizardComponent();
-
#endif // __JUCER_NEWPROJECTWIZARD_JUCEHEADER__
diff --git a/extras/Introjucer/Source/Wizards/jucer_NewProjectWizardComponent.h b/extras/Introjucer/Source/Wizards/jucer_NewProjectWizardComponent.h
new file mode 100644
index 0000000000..e9a963a9df
--- /dev/null
+++ b/extras/Introjucer/Source/Wizards/jucer_NewProjectWizardComponent.h
@@ -0,0 +1,326 @@
+/*
+ ==============================================================================
+
+ This file is part of the JUCE library.
+ Copyright (c) 2013 - Raw Material Software Ltd.
+
+ Permission is granted to use this software under the terms of either:
+ a) the GPL v2 (or any later version)
+ b) the Affero GPL v3
+
+ Details of these licenses can be found 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.juce.com for more information.
+
+ ==============================================================================
+*/
+
+#ifndef NEWPROJECTWIZARDCOMPONENTS_H_INCLUDED
+#define NEWPROJECTWIZARDCOMPONENTS_H_INCLUDED
+
+
+/** The target platforms chooser for the chosen template. */
+class PlatformTargetsComp : public Component,
+ private ListBoxModel
+{
+public:
+
+ PlatformTargetsComp()
+ {
+ setOpaque (false);
+
+ addAndMakeVisible (listBox);
+
+ listBox.setRowHeight (360 / getNumRows());
+ listBox.setModel (this);
+ listBox.setOpaque (false);
+ listBox.setMultipleSelectionEnabled (true);
+ listBox.setClickingTogglesRowSelection (true);
+ listBox.setColour (ListBox::ColourIds::backgroundColourId, Colours::white.withAlpha (0.0f));
+
+ platforms.add (new PlatformType (ImageCache::getFromMemory (BinaryData::projectIconXcode_png, BinaryData::projectIconXcode_pngSize), "Create a new XCode target"));
+ platforms.add (new PlatformType (ImageCache::getFromMemory (BinaryData::projectIconXcodeIOS_png, BinaryData::projectIconXcodeIOS_pngSize), "Create a new XCode IOS target"));
+ platforms.add (new PlatformType (ImageCache::getFromMemory (BinaryData::projectIconVisualStudio13_png, BinaryData::projectIconVisualStudio13_pngSize), "Create a new Visual Studio 2013 target"));
+ platforms.add (new PlatformType (ImageCache::getFromMemory (BinaryData::projectIconVisualStudio12_png, BinaryData::projectIconVisualStudio12_pngSize), "Create a new Visual Studio 2012 target"));
+ platforms.add (new PlatformType (ImageCache::getFromMemory (BinaryData::projectIconVisualStudio10_png, BinaryData::projectIconVisualStudio10_pngSize), "Create a new Visual Studio 2010 target"));
+ platforms.add (new PlatformType (ImageCache::getFromMemory (BinaryData::projectIconVisualStudio08_png, BinaryData::projectIconVisualStudio08_pngSize), "Create a new Visual Studio 2008 target"));
+ platforms.add (new PlatformType (ImageCache::getFromMemory (BinaryData::projectIconVisualStudio05_png, BinaryData::projectIconVisualStudio05_pngSize), "Create a new Visual Studio 2005 target"));
+ platforms.add (new PlatformType (ImageCache::getFromMemory (BinaryData::projectIconAndroid_png, BinaryData::projectIconAndroid_pngSize), "Create a new Android target"));
+ platforms.add (new PlatformType (ImageCache::getFromMemory (BinaryData::projectIconCodeblocks_png, BinaryData::projectIconCodeblocks_pngSize), "Create a new Codeblocks target"));
+ platforms.add (new PlatformType (ImageCache::getFromMemory (BinaryData::projectIconLinuxMakefile_png, BinaryData::projectIconLinuxMakefile_pngSize), "Create a new linux makefile target"));
+
+
+ }
+
+ ~PlatformTargetsComp()
+ {
+ }
+
+ void resized()
+ {
+ listBox.setBounds (getLocalBounds());
+ }
+
+
+ // these add the ListBoxModel virtual functions
+ int getNumRows()
+ {
+ return 10;
+ }
+
+ void paintListBoxItem (int rowNumber, Graphics& g,
+ int width, int height, bool rowIsSelected)
+ {
+ Rectangle dotSelect = Rectangle (0, 0, height, height);
+ dotSelect.reduce (12, 12);
+
+ g.setColour (Colours::white);
+ g.drawEllipse (dotSelect, 1);
+
+ if (rowIsSelected)
+ {
+ g.fillAll (Colour(243, 145, 0));
+ g.fillEllipse (dotSelect);
+ }
+
+ g.drawImageWithin (platforms.getUnchecked(rowNumber)->icon, 40, 0, height, height, RectanglePlacement::stretchToFit);
+ g.setColour (Colours::black);
+ g.drawText (platforms.getUnchecked (rowNumber)->name, 90, 0, width, height, Justification::left);
+ }
+
+
+private:
+
+ struct PlatformType {
+ PlatformType (const Image& platformIcon, const String& platformName){
+ icon = platformIcon;
+ name = platformName;
+ }
+ Image icon;
+ String name;
+ };
+
+ ListBox listBox;
+
+ OwnedArray platforms;
+
+ JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (PlatformTargetsComp)
+
+};
+
+
+
+/**
+ The Component for project creation.
+ Features a file browser to select project destination and
+ a list box of platform targets to generate.
+*/
+//==============================================================================
+class WizardComp : public Component,
+ private ButtonListener,
+ private ComboBoxListener,
+ private TextEditorListener
+{
+public:
+ WizardComp()
+ : projectName (TRANS("Project name")),
+ nameLabel (String::empty, TRANS("Project Name") + ":"),
+ typeLabel (String::empty, TRANS("Project Type") + ":"),
+ fileBrowser (FileBrowserComponent::saveMode | FileBrowserComponent::canSelectDirectories,
+ NewProjectWizardClasses::getLastWizardFolder(), nullptr, nullptr),
+ fileOutline (String::empty, TRANS("Project Folder") + ":"),
+ targetsOutline (String::empty, TRANS("Project Targets") + ":"),
+ createButton (TRANS("Create") + "..."),
+ cancelButton (TRANS("Cancel")),
+ platformTargets()
+ {
+ setOpaque (false);
+
+ addChildAndSetID (&projectName, "projectName");
+ projectName.setText ("NewProject");
+ projectName.setBounds ("120, 34, parent.width / 2 - 10, top + 22");
+ nameLabel.attachToComponent (&projectName, true);
+ projectName.addListener (this);
+
+ addChildAndSetID (&projectType, "projectType");
+ projectType.addItemList (getWizardNames(), 1);
+ projectType.setSelectedId (1, dontSendNotification);
+ projectType.setBounds ("120, projectName.bottom + 4, projectName.right, top + 22");
+ typeLabel.attachToComponent (&projectType, true);
+ projectType.addListener (this);
+
+ addChildAndSetID (&fileOutline, "fileOutline");
+ fileOutline.setColour (GroupComponent::outlineColourId, Colours::black.withAlpha (0.2f));
+ fileOutline.setTextLabelPosition (Justification::centred);
+ fileOutline.setBounds ("30, projectType.bottom + 20, projectType.right, parent.height - 30");
+
+ addChildAndSetID (&targetsOutline, "targetsOutline");
+ targetsOutline.setColour (GroupComponent::outlineColourId, Colours::black.withAlpha (0.2f));
+ targetsOutline.setTextLabelPosition (Justification::centred);
+ targetsOutline.setBounds ("fileOutline.right + 20, projectType.bottom + 20, parent.width - 30, parent.height - 70");
+
+ addChildAndSetID (&platformTargets, "platformTargets");
+ platformTargets.setBounds ("targetsOutline.left + 15, projectType.bottom + 45, parent.width - 40, parent.height - 90");
+
+ addChildAndSetID (&fileBrowser, "fileBrowser");
+ fileBrowser.setBounds ("fileOutline.left + 10, fileOutline.top + 20, fileOutline.right - 10, fileOutline.bottom - 32");
+ fileBrowser.setFilenameBoxLabel ("Folder:");
+
+ addChildAndSetID (&createButton, "createButton");
+ createButton.setBounds ("right - 130, bottom - 34, parent.width - 30, parent.height - 30");
+ createButton.addListener (this);
+
+ addChildAndSetID (&cancelButton, "cancelButton");
+ cancelButton.addShortcut (KeyPress (KeyPress::escapeKey));
+ cancelButton.setBounds ("right - 130, createButton.top, createButton.left - 10, createButton.bottom");
+ cancelButton.addListener (this);
+
+ updateCustomItems();
+ updateCreateButton();
+ }
+
+ void paint (Graphics& g) override
+ {
+ Rectangle rect = getLocalBounds().reduced (10, 10);
+
+ g.setColour (Colours::white.withAlpha(0.3f));
+ g.fillRect (rect);
+ g.fillRect (rect.reduced (10, 10));
+ }
+
+ void buttonClicked (Button* b) override
+ {
+ if (b == &createButton)
+ {
+ createProject();
+ }
+ else if (b == &cancelButton)
+ {
+ // returns to template icon page on cancel
+ SlidingPanelComponent* parent = findParentComponentOfClass();
+
+ if (parent->getNumTabs() > 0) parent->goToTab (parent->getCurrentTabIndex() - 1);
+ }
+ }
+
+ void createProject()
+ {
+ MainWindow* mw = Component::findParentComponentOfClass();
+ jassert (mw != nullptr);
+
+ ScopedPointer wizard (createWizard());
+
+ if (wizard != nullptr)
+ {
+ Result result (wizard->processResultsFromSetupItems (*this));
+
+ if (result.failed())
+ {
+ AlertWindow::showMessageBox (AlertWindow::WarningIcon,
+ TRANS("Create Project"),
+ result.getErrorMessage());
+ return;
+ }
+
+ if (! wizard->selectJuceFolder())
+ return;
+
+ ScopedPointer project (wizard->runWizard (mw, projectName.getText(),
+ fileBrowser.getSelectedFile (0)));
+
+ if (project != nullptr)
+ mw->setProject (project.release());
+ }
+ }
+
+ void updateCustomItems()
+ {
+ customItems.clear();
+
+ ScopedPointer wizard (createWizard());
+
+ if (wizard != nullptr)
+ wizard->addSetupItems (*this, customItems);
+ }
+
+ void comboBoxChanged (ComboBox*) override
+ {
+ updateCustomItems();
+ }
+
+ void textEditorTextChanged (TextEditor&) override
+ {
+ updateCreateButton();
+
+ fileBrowser.setFileName (File::createLegalFileName (projectName.getText()));
+ }
+
+ // projectType box is public so it can be set by the introjucer front page icons
+ ComboBox projectType;
+
+ private:
+ TextEditor projectName;
+ Label nameLabel, typeLabel;
+ FileBrowserComponent fileBrowser;
+ GroupComponent fileOutline;
+ GroupComponent targetsOutline;
+ TextButton createButton, cancelButton;
+ OwnedArray customItems;
+ PlatformTargetsComp platformTargets;
+
+ NewProjectWizardClasses::NewProjectWizard* createWizard()
+ {
+ return createWizardType (projectType.getSelectedItemIndex());
+ }
+
+ void updateCreateButton()
+ {
+ createButton.setEnabled (projectName.getText().trim().isNotEmpty());
+ }
+};
+
+
+//==============================================================================
+static int getNumWizards()
+{
+ return 5;
+}
+
+static NewProjectWizardClasses::NewProjectWizard* createWizardType (int index)
+{
+ switch (index)
+ {
+ case 0: return new NewProjectWizardClasses::GUIAppWizard();
+ case 1: return new NewProjectWizardClasses::ConsoleAppWizard();
+ case 2: return new NewProjectWizardClasses::AudioPluginAppWizard();
+ case 3: return new NewProjectWizardClasses::StaticLibraryWizard();
+ case 4: return new NewProjectWizardClasses::DynamicLibraryWizard();
+ default: jassertfalse; break;
+ }
+
+ return nullptr;
+}
+
+static StringArray getWizardNames()
+{
+ StringArray s;
+
+ for (int i = 0; i < getNumWizards(); ++i)
+ {
+ ScopedPointer wiz (createWizardType (i));
+ s.add (wiz->getName());
+ }
+
+ return s;
+}
+
+
+
+#endif // NEWPROJECTWIZARDCOMPONENTS_H_INCLUDED
diff --git a/extras/Introjucer/Source/Wizards/jucer_StartPageComponent.h b/extras/Introjucer/Source/Wizards/jucer_StartPageComponent.h
new file mode 100644
index 0000000000..0398c739c7
--- /dev/null
+++ b/extras/Introjucer/Source/Wizards/jucer_StartPageComponent.h
@@ -0,0 +1,67 @@
+/*
+ ==============================================================================
+
+ This file is part of the JUCE library.
+ Copyright (c) 2013 - Raw Material Software Ltd.
+
+ Permission is granted to use this software under the terms of either:
+ a) the GPL v2 (or any later version)
+ b) the Affero GPL v3
+
+ Details of these licenses can be found 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.juce.com for more information.
+
+ ==============================================================================
+*/
+
+#ifndef JUCER_STARTPAGECOMPONENT_H_INCLUDED
+#define JUCER_STARTPAGECOMPONENT_H_INCLUDED
+
+class StartPageComponent : public Component
+{
+public:
+
+StartPageComponent()
+{
+ panel = new SlidingPanelComponent();
+
+ WizardComp* projectWizard = new WizardComp();
+
+ setSize (800, 650);
+
+ panel->addTab ("Create New Project", new TemplateTileBrowser (projectWizard), true);
+ panel->addTab ("New Project Options", projectWizard, true);
+
+ addAndMakeVisible (panel);
+}
+
+~StartPageComponent()
+{
+ panel = nullptr;
+}
+
+void paint (Graphics& g)
+{
+ IntrojucerLookAndFeel::fillWithBackgroundTexture (*this, g);
+}
+
+void resized()
+{
+ panel->setBounds (getBounds());
+}
+
+private:
+ ScopedPointer panel;
+
+ JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (StartPageComponent)
+};
+
+#endif //JUCER_STARTPAGECOMPONENT_H_INCLUDED
diff --git a/extras/Introjucer/Source/Wizards/jucer_StaticLibraryWizard.h b/extras/Introjucer/Source/Wizards/jucer_StaticLibraryWizard.h
new file mode 100644
index 0000000000..7f7ae7d76e
--- /dev/null
+++ b/extras/Introjucer/Source/Wizards/jucer_StaticLibraryWizard.h
@@ -0,0 +1,49 @@
+/*
+ ==============================================================================
+
+ This file is part of the JUCE library.
+ Copyright (c) 2013 - Raw Material Software Ltd.
+
+ Permission is granted to use this software under the terms of either:
+ a) the GPL v2 (or any later version)
+ b) the Affero GPL v3
+
+ Details of these licenses can be found 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.juce.com for more information.
+
+ ==============================================================================
+*/
+#ifndef JUCER_STATICLIBRARYWIZARD_H_INCLUDED
+#define JUCER_STATICLIBRARYWIZARD_H_INCLUDED
+
+
+//==============================================================================
+struct StaticLibraryWizard : public NewProjectWizard
+{
+ StaticLibraryWizard() {}
+
+ String getName() override { return TRANS("Static Library"); }
+ String getDescription() override { return TRANS("Creates a static library"); }
+
+ bool initialiseProject (Project& project) override
+ {
+ createSourceFolder();
+ project.getProjectTypeValue() = ProjectType::getStaticLibTypeName();
+ createSourceGroup (project);
+ setExecutableNameForAllTargets (project, File::createLegalFileName (appTitle));
+ project.createExporterForCurrentPlatform();
+
+ return true;
+ }
+};
+
+
+#endif // JUCER_STATICLIBRARYWIZARD_H_INCLUDED
diff --git a/extras/Introjucer/Source/Wizards/jucer_TemplateThumbnailsComponent.h b/extras/Introjucer/Source/Wizards/jucer_TemplateThumbnailsComponent.h
new file mode 100644
index 0000000000..af9bbaca18
--- /dev/null
+++ b/extras/Introjucer/Source/Wizards/jucer_TemplateThumbnailsComponent.h
@@ -0,0 +1,288 @@
+/*
+ ==============================================================================
+
+ This file is part of the JUCE library.
+ Copyright (c) 2013 - Raw Material Software Ltd.
+
+ Permission is granted to use this software under the terms of either:
+ a) the GPL v2 (or any later version)
+ b) the Affero GPL v3
+
+ Details of these licenses can be found 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.juce.com for more information.
+
+ ==============================================================================
+*/
+
+#ifndef JUCER_TEMPLATETHUMBNAILSCOMPONENT_H_INCLUDED
+#define JUCER_TEMPLATETHUMBNAILSCOMPONENT_H_INCLUDED
+
+//=====================================================================================================
+/**
+Template option tile button.
+the drawable button object class for the tile icons and buttons in the TemplateTileBrowser
+*/
+class TemplateOptionButton : public DrawableButton
+{
+public:
+ explicit TemplateOptionButton (const String& buttonName, ButtonStyle buttonStyle, const char* thumbSvg)
+ : DrawableButton (buttonName, buttonStyle)
+ {
+ // svg for thumbnail icon
+ ScopedPointer svg (XmlDocument::parse (thumbSvg));
+ assert (svg != nullptr);
+
+ thumb = Drawable::createFromSVG (*svg);
+
+ // svg for thumbnail background highlight
+ ScopedPointer backSvg (XmlDocument::parse (BinaryData::iconHighlight_svg));
+ assert (backSvg != nullptr);
+
+ hoverBackground = Drawable::createFromSVG (*backSvg);
+
+ name = buttonName;
+
+ description = "";
+ }
+
+ void paintButton (Graphics& g, bool isMouseOverButton, bool /*isButtonDown*/) override
+ {
+ if (isMouseOverButton)
+ {
+ if (getStyle() == ButtonStyle::ImageFitted)
+ {
+ hoverBackground->drawWithin (g, getLocalBounds().toFloat(), RectanglePlacement::centred, 1.0);
+ thumb->drawWithin (g, getLocalBounds().toFloat(), RectanglePlacement::centred, 1.0);
+ }
+ else
+ {
+ g.setColour (Colour (243, 146, 0).withAlpha (0.3f));
+ g.fillRoundedRectangle (getLocalBounds().toFloat().reduced (2, 2), 10.0f);
+ g.setColour (Colour (243, 146, 0).withAlpha (1.0f));
+ g.drawRoundedRectangle (getLocalBounds().toFloat().reduced (2, 2), 10.0f, 2.0f);
+ }
+ }
+ else
+ {
+ if (getStyle() == ButtonStyle::ImageFitted)
+ {
+ thumb->drawWithin (g, getLocalBounds().toFloat(), RectanglePlacement::centred, 1.0);
+ }
+ else
+ {
+ g.setColour (Colour (243, 146, 0).withAlpha (1.0f));
+ g.drawRoundedRectangle (getLocalBounds().toFloat().reduced (2,2), 10.0f, 2.0f);
+ }
+ }
+
+
+ Rectangle textTarget;
+
+ // center the text for the text buttons or position the text in the image buttons
+ if (getStyle() != ButtonStyle::ImageFitted)
+ {
+ textTarget = getLocalBounds().toFloat();
+ }
+ else
+ {
+ textTarget = RectanglePlacement (RectanglePlacement::centred).appliedTo(thumb->getDrawableBounds(), getLocalBounds().toFloat());
+ textTarget = textTarget.removeFromBottom(textTarget.getHeight() * 0.3);
+ }
+
+ g.setColour (Colours::white);
+ g.drawText (name, textTarget, Justification::centred, true);
+
+ }
+
+ void resized()
+ {
+ thumb->setBoundsToFit (0, 0, getWidth(), getHeight(), Justification::centred, false);
+ }
+
+ void setDescription (String descript)
+ {
+ description = descript;
+ }
+
+ String getDescription()
+ {
+ return description;
+ }
+
+private:
+ ScopedPointer thumb;
+ ScopedPointer hoverBackground;
+
+ String name;
+
+ String description;
+
+
+ JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (TemplateOptionButton)
+};
+
+
+
+//=====================================================================================================
+/**
+Project Template Component for front page.
+Features multiple icon buttons to select the type of project template
+*/
+
+class TemplateTileBrowser : public Component,
+private Button::Listener
+{
+public:
+ TemplateTileBrowser (NewProjectWizardComponents::WizardComp* projectWizard)
+ {
+ addAndMakeVisible (optionButtons.add (new TemplateOptionButton ("GUI Application", TemplateOptionButton::ButtonStyle::ImageFitted, BinaryData::iconGui_svg)));
+ addAndMakeVisible (optionButtons.add (new TemplateOptionButton ("Audio Application", TemplateOptionButton::ButtonStyle::ImageFitted, BinaryData::iconAudio_svg)));
+ addAndMakeVisible (optionButtons.add (new TemplateOptionButton ("Audio Plug-in", TemplateOptionButton::ButtonStyle::ImageFitted, BinaryData::iconPlugin_svg)));
+ addAndMakeVisible (optionButtons.add (new TemplateOptionButton ("Animated Application", TemplateOptionButton::ButtonStyle::ImageFitted, BinaryData::iconAnimation_svg)));
+ addAndMakeVisible (optionButtons.add (new TemplateOptionButton ("Opengl Application", TemplateOptionButton::ButtonStyle::ImageFitted, BinaryData::iconOpengl_svg)));
+ addAndMakeVisible (optionButtons.add (new TemplateOptionButton ("Console Application", TemplateOptionButton::ButtonStyle::ImageFitted, BinaryData::iconConsole_svg)));
+ addAndMakeVisible (optionButtons.add (new TemplateOptionButton ("Static Library", TemplateOptionButton::ButtonStyle::ImageFitted, BinaryData::iconStatic_svg)));
+ addAndMakeVisible (optionButtons.add (new TemplateOptionButton ("Dynamic Library", TemplateOptionButton::ButtonStyle::ImageFitted, BinaryData::iconDynamic_svg)));
+
+ // Add the descriptions for each button
+ optionButtons.getUnchecked(0)->setDescription ("Creates a blank JUCE application with a single window component.");
+ optionButtons.getUnchecked(1)->setDescription ("Creates a blank JUCE application with a single window component and Audio and MIDI in/out functions.");
+ optionButtons.getUnchecked(2)->setDescription ("Creates a VST or AU audio plug-in for use within a host program. This template features a single window component and Audio/MIDI IO functions");
+ optionButtons.getUnchecked(3)->setDescription ("Creates a blank JUCE application with a single window component that updates and draws at 60fps.");
+ optionButtons.getUnchecked(4)->setDescription ("Creates a blank JUCE application with a single window component. This component supports all OPENGL drawing features including 3D model import and glsl shaders.");
+ optionButtons.getUnchecked(5)->setDescription ("Creates a blank console application with support for all JUCE features.");
+ optionButtons.getUnchecked(6)->setDescription ("Creates a Static Library template with support for all JUCE features");
+ optionButtons.getUnchecked(7)->setDescription ("Creates a Dynamic Library template with support for all JUCE features");
+
+
+ // Handle Open Project button functionality
+ ApplicationCommandManager& commandManager = IntrojucerApp::getCommandManager();
+
+ blankProjectButton = new TemplateOptionButton ("Create Blank Project", TemplateOptionButton::ButtonStyle::ImageOnButtonBackground, BinaryData::iconOpenfile_svg);
+
+ openProjectButton = new TemplateOptionButton ("Open Existing Project", TemplateOptionButton::ButtonStyle::ImageOnButtonBackground, BinaryData::iconOpenfile_svg);
+ openProjectButton->setCommandToTrigger (&commandManager, CommandIDs::open, true);
+
+ exampleProjectButton = new TemplateOptionButton ("Open Example Project", TemplateOptionButton::ButtonStyle::ImageOnButtonBackground, BinaryData::iconOpenfile_svg);
+ exampleProjectButton->setCommandToTrigger (&commandManager, CommandIDs::open, true);
+
+ addAndMakeVisible (blankProjectButton);
+ addAndMakeVisible (openProjectButton);
+ addAndMakeVisible (exampleProjectButton);
+
+
+ for (TemplateOptionButton* t : optionButtons)
+ {
+ t->addListener (this);
+ }
+
+ newProjectWizard = projectWizard;
+ }
+
+
+ void paint (Graphics& g) override
+ {
+ g.setColour (Colours::black.withAlpha (0.2f));
+ g.fillRect (0, 0, getWidth(), 60);
+
+ g.setColour (Colours::white);
+ g.setFont (20);
+ g.drawText ("Create New Project", 0, 0, getWidth(), 60, Justification::centred, true);
+
+ // draw the descriptions of each template if hovered;
+ // (repaint is called by the button listener on change state)
+ Rectangle descriptionBox = getBounds().reduced (30, 30);
+ descriptionBox = descriptionBox.removeFromBottom (50);
+
+ g.setColour (Colours::white.withAlpha (0.4f));
+ g.setFont(15);
+
+ for ( int i = 0; i < 8; i++ )
+ {
+ if (optionButtons.getUnchecked (i)->getState() == TemplateOptionButton::ButtonState::buttonOver)
+ {
+ g.drawFittedText (optionButtons.getUnchecked (i)->getDescription(), descriptionBox, Justification::centred, 5, 1.0f);
+ }
+ }
+ }
+
+ void resized()
+ {
+ Rectangle allOpts = getBounds().reduced (40, 60);
+ allOpts.removeFromBottom (allOpts.getHeight() * 0.25);
+
+ int numHorizIcons = 4;
+
+ int optStep = allOpts.getWidth()/numHorizIcons;
+
+ for (int i = 0; i < 8; i++)
+ {
+ int yShift = i < numHorizIcons ? 0 : 1;
+
+ Rectangle bounds;
+
+ bounds = Rectangle (allOpts.getX() + i%numHorizIcons*optStep, allOpts.getY() + yShift * allOpts.getHeight() / 2, optStep, allOpts.getHeight() / 2);
+ bounds.reduce (10, 10);
+
+ optionButtons.getUnchecked (i)->setBounds (bounds);
+ }
+
+ Rectangle openButtonBounds = getBounds();
+ openButtonBounds.removeFromBottom (getHeight() * 0.12);
+ openButtonBounds = openButtonBounds.removeFromBottom (120);
+ openButtonBounds.reduce (50, 40);
+
+ blankProjectButton->setBounds (openButtonBounds.removeFromLeft (optStep - 20));
+ exampleProjectButton->setBounds (openButtonBounds.removeFromRight (optStep - 20));
+ openProjectButton->setBounds (openButtonBounds.reduced (18, 0));
+ }
+
+ void buttonClicked (Button* b) override
+ {
+ if (b->getButtonText() == "GUI Application") newProjectWizard->projectType.setSelectedItemIndex (0);
+ if (b->getButtonText() == "Console Application") newProjectWizard->projectType.setSelectedItemIndex (1);
+ if (b->getButtonText() == "Audio Plug-in") newProjectWizard->projectType.setSelectedItemIndex (2);
+ if (b->getButtonText() == "Static Library") newProjectWizard->projectType.setSelectedItemIndex (3);
+ if (b->getButtonText() == "Dynamic Library") newProjectWizard->projectType.setSelectedItemIndex (4);
+
+ //new templates without actual templates yet
+ if (b->getButtonText() == "Animated Application") newProjectWizard->projectType.setSelectedItemIndex (0);
+ if (b->getButtonText() == "Audio Application") newProjectWizard->projectType.setSelectedItemIndex (0);
+ if (b->getButtonText() == "Opengl Application") newProjectWizard->projectType.setSelectedItemIndex (0);
+
+
+ SlidingPanelComponent* parent = findParentComponentOfClass();
+ jassert (parent != nullptr);
+
+ if (parent->getNumTabs() > 0 && b->getButtonText() != "Open Existing Project") parent->goToTab (parent->getCurrentTabIndex() + 1);
+ }
+
+ void buttonStateChanged (Button*)
+ {
+ repaint();
+ }
+
+ private:
+
+ OwnedArray optionButtons;
+
+ NewProjectWizardComponents::WizardComp* newProjectWizard;
+
+ ScopedPointer blankProjectButton;
+ ScopedPointer openProjectButton;
+ ScopedPointer exampleProjectButton;
+
+
+ JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(TemplateTileBrowser)
+
+};
+
+#endif // JUCER_TEMPLATETHUMBNAILSCOMPONENT_H_INCLUDED