diff --git a/extras/Introjucer/Builds/CodeBlocks/The Introjucer.cbp b/extras/Introjucer/Builds/CodeBlocks/The Introjucer.cbp
index 9a05ec0ac4..8fadeda09e 100644
--- a/extras/Introjucer/Builds/CodeBlocks/The Introjucer.cbp
+++ b/extras/Introjucer/Builds/CodeBlocks/The Introjucer.cbp
@@ -128,6 +128,11 @@
+
+
+
+
+
@@ -474,6 +479,11 @@
+
+
+
+
+
diff --git a/extras/Introjucer/Builds/Linux/Makefile b/extras/Introjucer/Builds/Linux/Makefile
index 446e2fc7c4..7e4ec6f500 100644
--- a/extras/Introjucer/Builds/Linux/Makefile
+++ b/extras/Introjucer/Builds/Linux/Makefile
@@ -53,6 +53,7 @@ OBJECTS := \
$(OBJDIR)/jucer_AutoUpdater_ca658dc2.o \
$(OBJDIR)/jucer_CommandLine_f35de107.o \
$(OBJDIR)/jucer_DocumentEditorComponent_695dff1d.o \
+ $(OBJDIR)/jucer_GlobalPreferences_b0f1bd3d.o \
$(OBJDIR)/jucer_Main_f8488f5b.o \
$(OBJDIR)/jucer_MainWindow_1e163aeb.o \
$(OBJDIR)/jucer_OpenDocumentManager_4c72d210.o \
@@ -79,6 +80,7 @@ OBJECTS := \
$(OBJDIR)/jucer_PaintRoutine_e1e891ee.o \
$(OBJDIR)/jucer_ProjectExporter_eefe2e5b.o \
$(OBJDIR)/jucer_ResourceFile_6af120d3.o \
+ $(OBJDIR)/jucer_DependencyPathPropertyComponent_4d137229.o \
$(OBJDIR)/jucer_Module_3f7666a5.o \
$(OBJDIR)/jucer_Project_c131864a.o \
$(OBJDIR)/jucer_ProjectContentComponent_60de0eee.o \
@@ -138,6 +140,11 @@ $(OBJDIR)/jucer_DocumentEditorComponent_695dff1d.o: ../../Source/Application/juc
@echo "Compiling jucer_DocumentEditorComponent.cpp"
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
+$(OBJDIR)/jucer_GlobalPreferences_b0f1bd3d.o: ../../Source/Application/jucer_GlobalPreferences.cpp
+ -@mkdir -p $(OBJDIR)
+ @echo "Compiling jucer_GlobalPreferences.cpp"
+ @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
+
$(OBJDIR)/jucer_Main_f8488f5b.o: ../../Source/Application/jucer_Main.cpp
-@mkdir -p $(OBJDIR)
@echo "Compiling jucer_Main.cpp"
@@ -268,6 +275,11 @@ $(OBJDIR)/jucer_ResourceFile_6af120d3.o: ../../Source/Project\ Saving/jucer_Reso
@echo "Compiling jucer_ResourceFile.cpp"
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
+$(OBJDIR)/jucer_DependencyPathPropertyComponent_4d137229.o: ../../Source/Project/jucer_DependencyPathPropertyComponent.cpp
+ -@mkdir -p $(OBJDIR)
+ @echo "Compiling jucer_DependencyPathPropertyComponent.cpp"
+ @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
+
$(OBJDIR)/jucer_Module_3f7666a5.o: ../../Source/Project/jucer_Module.cpp
-@mkdir -p $(OBJDIR)
@echo "Compiling jucer_Module.cpp"
diff --git a/extras/Introjucer/Builds/MacOSX/The Introjucer.xcodeproj/project.pbxproj b/extras/Introjucer/Builds/MacOSX/The Introjucer.xcodeproj/project.pbxproj
index 3024830255..d51e79be03 100644
--- a/extras/Introjucer/Builds/MacOSX/The Introjucer.xcodeproj/project.pbxproj
+++ b/extras/Introjucer/Builds/MacOSX/The Introjucer.xcodeproj/project.pbxproj
@@ -17,6 +17,7 @@
6DD9DA1677A6CF789CDAB478 = {isa = PBXBuildFile; fileRef = 0D4D508C638BC74943B9976D; };
954A036F5DDB375DB23FFB3E = {isa = PBXBuildFile; fileRef = 0400CB0E056A1D840304D2DE; };
3EB3D569250C4BA4CA9AF578 = {isa = PBXBuildFile; fileRef = C7608A3967D9AB9481848F2B; };
+ 3C3B0ED6C43FDA3AF76DEE2E = {isa = PBXBuildFile; fileRef = 84DE44680C9D37CDDCD127FF; };
95B44E6C74B1DED31DBE37EB = {isa = PBXBuildFile; fileRef = 8C52A3DDA62A746AA7A68535; };
AA9D0B8E23F3D87A23DE9F8A = {isa = PBXBuildFile; fileRef = 9069981E414A631B036CC9AC; };
244BA1BDA5FAA465EA3F9C6D = {isa = PBXBuildFile; fileRef = 2247EE920DF0610CAF9F4513; };
@@ -43,6 +44,7 @@
1B988E139004D8E2850EB656 = {isa = PBXBuildFile; fileRef = C187718F7B9EBA88584B43F3; };
1F37544891EC8DBB5E500C1C = {isa = PBXBuildFile; fileRef = F71AF6D2DF3E652F8B51EBAB; };
110221CD5578153B528AD2BE = {isa = PBXBuildFile; fileRef = D10D51A0A2D63F38B4D86A60; };
+ 3D777382FE212D59BAF871FD = {isa = PBXBuildFile; fileRef = DCBB17488227A2CA7D3D3947; };
3FCA61C401007B243E2E9035 = {isa = PBXBuildFile; fileRef = F797071D88542C813CF7222A; };
30B921C38DCEE787B294B746 = {isa = PBXBuildFile; fileRef = BAC43B20E14A340CCF14119C; };
676D2E1E750E61AA2FAA335E = {isa = PBXBuildFile; fileRef = 86E468DE6556BB2AD76A3D80; };
@@ -104,6 +106,7 @@
0B96A219A0CFF707E5A13B68 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Fonts.mm"; path = "../../../../modules/juce_graphics/native/juce_mac_Fonts.mm"; sourceTree = "SOURCE_ROOT"; };
0BDFA0E402BA7E6B366E953C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScrollBar.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ScrollBar.h"; sourceTree = "SOURCE_ROOT"; };
0BEDB3FD70AB61D3E7891D74 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentListener.cpp"; path = "../../../../modules/juce_gui_basics/components/juce_ComponentListener.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 0C2AD2FC0C196F440C3FF994 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_DependencyPathPropertyComponent.h"; path = "../../Source/Project/jucer_DependencyPathPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; };
0C747328CDADAE15E86E5E93 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_FileChooser.mm"; path = "../../../../modules/juce_gui_basics/native/juce_mac_FileChooser.mm"; sourceTree = "SOURCE_ROOT"; };
0C956209A61542371A7A5257 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Colour.h"; path = "../../../../modules/juce_graphics/colour/juce_Colour.h"; sourceTree = "SOURCE_ROOT"; };
0CC9026D5056CA9C1FE64A64 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ArrowButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ArrowButton.h"; sourceTree = "SOURCE_ROOT"; };
@@ -171,6 +174,7 @@
1C216FE9B7A5209C5CCF2517 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_PaintElement.cpp"; path = "../../Source/ComponentEditor/paintelements/jucer_PaintElement.cpp"; sourceTree = "SOURCE_ROOT"; };
1C666CA3AF0AB4CDCA1D983F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextLayout.h"; path = "../../../../modules/juce_graphics/fonts/juce_TextLayout.h"; sourceTree = "SOURCE_ROOT"; };
1C76BBCD73ED21571035675F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileDragAndDropTarget.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_FileDragAndDropTarget.h"; sourceTree = "SOURCE_ROOT"; };
+ 1C81C5501BE7F2C912250711 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_GlobalPreferences.h"; path = "../../Source/Application/jucer_GlobalPreferences.h"; sourceTree = "SOURCE_ROOT"; };
1D3D6A19A60F0B03DE2F1C14 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_PaintElementPath.h"; path = "../../Source/ComponentEditor/paintelements/jucer_PaintElementPath.h"; sourceTree = "SOURCE_ROOT"; };
1D99EA99F946D665FE583414 = {isa = PBXFileReference; lastKnownFileType = file.svg; name = "wizard_Highlight.svg"; path = "../../Source/BinaryData/wizard_Highlight.svg"; sourceTree = "SOURCE_ROOT"; };
1EC7A8EEAD8ADF43BF014C2C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_MouseCursor.mm"; path = "../../../../modules/juce_gui_basics/native/juce_mac_MouseCursor.mm"; sourceTree = "SOURCE_ROOT"; };
@@ -522,6 +526,7 @@
845CE323405ACC3A7E84EEAE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LookAndFeel_V3.h"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.h"; sourceTree = "SOURCE_ROOT"; };
848D1FD80E9CA20E4977B516 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SHA256.cpp"; path = "../../../../modules/juce_cryptography/hashing/juce_SHA256.cpp"; sourceTree = "SOURCE_ROOT"; };
84AADFD13AF2A6F6F4681051 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Primes.h"; path = "../../../../modules/juce_cryptography/encryption/juce_Primes.h"; sourceTree = "SOURCE_ROOT"; };
+ 84DE44680C9D37CDDCD127FF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_GlobalPreferences.cpp"; path = "../../Source/Application/jucer_GlobalPreferences.cpp"; sourceTree = "SOURCE_ROOT"; };
8575C117887D90BDF84397C3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SubregionStream.h"; path = "../../../../modules/juce_core/streams/juce_SubregionStream.h"; sourceTree = "SOURCE_ROOT"; };
859DCE43FF52E0BF3E9E9540 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativeCoordinate.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinate.h"; sourceTree = "SOURCE_ROOT"; };
863A117E6B25D1FF3AEE8F0F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NotificationType.h"; path = "../../../../modules/juce_events/messages/juce_NotificationType.h"; sourceTree = "SOURCE_ROOT"; };
@@ -751,6 +756,7 @@
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"; };
+ C68355AA4D62939EECAD469E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Random.h"; path = "../../../../modules/juce_core/maths/juce_Random.h"; sourceTree = "SOURCE_ROOT"; };
C6861DB44A31CE7A3DEFA083 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileInputStream.h"; path = "../../../../modules/juce_core/files/juce_FileInputStream.h"; sourceTree = "SOURCE_ROOT"; };
C6E46DBD249D9426C95E2235 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChangeBroadcaster.cpp"; path = "../../../../modules/juce_events/broadcasters/juce_ChangeBroadcaster.cpp"; sourceTree = "SOURCE_ROOT"; };
C717D2384896547D1CD993F6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DialogWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_DialogWindow.h"; sourceTree = "SOURCE_ROOT"; };
@@ -759,6 +765,7 @@
C7B47372A9D5970E3D9A5400 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_GroupInformationComponent.h"; path = "../../Source/Project/jucer_GroupInformationComponent.h"; sourceTree = "SOURCE_ROOT"; };
C7E19F79947BEFC7DB7A9CE7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GlowEffect.cpp"; path = "../../../../modules/juce_graphics/effects/juce_GlowEffect.cpp"; sourceTree = "SOURCE_ROOT"; };
C83992DA0BE30EA3CD06EA98 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ProgressBar.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ProgressBar.h"; sourceTree = "SOURCE_ROOT"; };
+ C85B4D62B96F4A44890F20E2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SortedSet.h"; path = "../../../../modules/juce_core/containers/juce_SortedSet.h"; sourceTree = "SOURCE_ROOT"; };
C8A229ACD244F402C57286CD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ProjectExport_MSVC.h"; path = "../../Source/Project Saving/jucer_ProjectExport_MSVC.h"; sourceTree = "SOURCE_ROOT"; };
C90C66C5727759D5CBD5FB07 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AbstractFifo.cpp"; path = "../../../../modules/juce_core/containers/juce_AbstractFifo.cpp"; sourceTree = "SOURCE_ROOT"; };
C9616830BB2474066AC8C910 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ResourceFile.h"; path = "../../Source/Project Saving/jucer_ResourceFile.h"; sourceTree = "SOURCE_ROOT"; };
@@ -773,13 +780,14 @@
CD140A1C0161176682F6CA29 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ResizableWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_ResizableWindow.cpp"; sourceTree = "SOURCE_ROOT"; };
CD3216F23C7B273B010A8D12 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CustomTypeface.h"; path = "../../../../modules/juce_graphics/fonts/juce_CustomTypeface.h"; sourceTree = "SOURCE_ROOT"; };
CDCAF0EC777DA2884AEB2B59 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Label.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_Label.cpp"; sourceTree = "SOURCE_ROOT"; };
+ CDDF5BDC75277F7B83A38885 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PropertySet.cpp"; path = "../../../../modules/juce_core/containers/juce_PropertySet.cpp"; sourceTree = "SOURCE_ROOT"; };
CDF8F65F9079B2C14A740F0F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ImageButton.h"; sourceTree = "SOURCE_ROOT"; };
CE1DFE4E3908943656E180AD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_UnitTest.cpp"; path = "../../../../modules/juce_core/unit_tests/juce_UnitTest.cpp"; sourceTree = "SOURCE_ROOT"; };
- CF0615A1AF1A514A60322B50 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseCursor.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseCursor.h"; sourceTree = "SOURCE_ROOT"; };
CF21D9DB3AEC0A4DCAB36A99 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_Icons.cpp"; path = "../../Source/Utility/jucer_Icons.cpp"; sourceTree = "SOURCE_ROOT"; };
CF6C8BD0DA3D8CD4E99EBADA = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; };
CF8011B3C67B609032974DA5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_NewCppFileTemplate.cpp"; path = "../../Source/BinaryData/jucer_NewCppFileTemplate.cpp"; sourceTree = "SOURCE_ROOT"; };
D00F311BFC3C2625C457CB9B = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; };
+ 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"; };
@@ -798,60 +806,62 @@
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"; };
- D6C91E2BF537F75A80F5C1DB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ListBox.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ListBox.h"; sourceTree = "SOURCE_ROOT"; };
+ D678882D133090214AF681BC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ThreadLocalValue.h"; path = "../../../../modules/juce_core/threads/juce_ThreadLocalValue.h"; sourceTree = "SOURCE_ROOT"; };
D75EAC16FAECCC51E3669193 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandInfo.h"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.h"; sourceTree = "SOURCE_ROOT"; };
- D780ED33573AED5AD383A036 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CaretComponent.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_CaretComponent.h"; sourceTree = "SOURCE_ROOT"; };
- D782DA091AD3ECE158FC6A5F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ButtonPropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; };
- 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"; };
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"; };
- D9E59DE07A815AB303A297D9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_data_structures.mm"; path = "../../../../modules/juce_data_structures/juce_data_structures.mm"; 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"; };
+ DA345D5B9DABD049F90DC96F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_GeneratedCode.h"; path = "../../Source/ComponentEditor/jucer_GeneratedCode.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"; };
- DF725A596B7BCD7520CC0A9F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ResourceEditorPanel.cpp"; path = "../../Source/ComponentEditor/ui/jucer_ResourceEditorPanel.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"; };
+ DFC6364D81D9C60BD4CA9D12 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeTime.cpp"; path = "../../../../modules/juce_core/time/juce_RelativeTime.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"; };
E1D8CCD9F4ACBE1EC1D5BEA0 = {isa = PBXFileReference; lastKnownFileType = file.svg; name = "wizard_AudioApp.svg"; path = "../../Source/BinaryData/wizard_AudioApp.svg"; sourceTree = "SOURCE_ROOT"; };
E2374E15D65425C4101237E2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_NewComponentTemplate.h"; path = "../../Source/BinaryData/jucer_NewComponentTemplate.h"; 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"; };
E3B56C5718D87CA0EFCB2662 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_AudioComponentTemplate.cpp"; path = "../../Source/BinaryData/jucer_AudioComponentTemplate.cpp"; sourceTree = "SOURCE_ROOT"; };
E4BB22E27C5AA4B666F265BD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_TextButtonHandler.h"; path = "../../Source/ComponentEditor/components/jucer_TextButtonHandler.h"; sourceTree = "SOURCE_ROOT"; };
E4BD4C43370651B49F75855B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_MainTemplate_SimpleWindow.cpp"; path = "../../Source/BinaryData/jucer_MainTemplate_SimpleWindow.cpp"; 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; };
+ E62D9BA6E92FE7BB6EF65699 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_JSON.h"; path = "../../../../modules/juce_core/javascript/juce_JSON.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"; };
+ E720FBCD836FF3AA466C31B6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_HighResolutionTimer.cpp"; path = "../../../../modules/juce_core/threads/juce_HighResolutionTimer.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"; };
- C68355AA4D62939EECAD469E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Random.h"; path = "../../../../modules/juce_core/maths/juce_Random.h"; sourceTree = "SOURCE_ROOT"; };
- C85B4D62B96F4A44890F20E2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SortedSet.h"; path = "../../../../modules/juce_core/containers/juce_SortedSet.h"; sourceTree = "SOURCE_ROOT"; };
- CDDF5BDC75277F7B83A38885 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PropertySet.cpp"; path = "../../../../modules/juce_core/containers/juce_PropertySet.cpp"; sourceTree = "SOURCE_ROOT"; };
- D041043D3B554B88F855C174 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_HighResolutionTimer.h"; path = "../../../../modules/juce_core/threads/juce_HighResolutionTimer.h"; sourceTree = "SOURCE_ROOT"; };
+ CF0615A1AF1A514A60322B50 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseCursor.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseCursor.h"; sourceTree = "SOURCE_ROOT"; };
D3E139185095C486DD3D61F2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_TranslationTool.h"; path = "../../Source/Utility/jucer_TranslationTool.h"; sourceTree = "SOURCE_ROOT"; };
- D678882D133090214AF681BC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ThreadLocalValue.h"; path = "../../../../modules/juce_core/threads/juce_ThreadLocalValue.h"; sourceTree = "SOURCE_ROOT"; };
+ D6C91E2BF537F75A80F5C1DB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ListBox.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ListBox.h"; sourceTree = "SOURCE_ROOT"; };
+ D780ED33573AED5AD383A036 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CaretComponent.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_CaretComponent.h"; sourceTree = "SOURCE_ROOT"; };
+ D782DA091AD3ECE158FC6A5F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ButtonPropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; };
D7A7F1AA9F313B0CCAAA73A0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MathsFunctions.h"; path = "../../../../modules/juce_core/maths/juce_MathsFunctions.h"; sourceTree = "SOURCE_ROOT"; };
+ D800DE818BEDBF4579D15B1D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_AppleRemote.mm"; path = "../../../../modules/juce_gui_extra/native/juce_mac_AppleRemote.mm"; sourceTree = "SOURCE_ROOT"; };
+ 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"; };
- DA345D5B9DABD049F90DC96F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_GeneratedCode.h"; path = "../../Source/ComponentEditor/jucer_GeneratedCode.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"; };
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"; };
+ DCBB17488227A2CA7D3D3947 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_DependencyPathPropertyComponent.cpp"; path = "../../Source/Project/jucer_DependencyPathPropertyComponent.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"; };
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"; };
- 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"; };
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"; };
- 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"; };
E3FF16862AA1B2F943DC616C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageCache.cpp"; path = "../../../../modules/juce_graphics/images/juce_ImageCache.cpp"; sourceTree = "SOURCE_ROOT"; };
E446FFE889CD490FDE3F0F2B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ThreadWithProgressWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.cpp"; sourceTree = "SOURCE_ROOT"; };
@@ -859,15 +869,11 @@
E4F9D1E097CC2C1D1291823C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LookAndFeel_V2.cpp"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp"; sourceTree = "SOURCE_ROOT"; };
E530742870F07704E9616358 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarItemComponent.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.h"; sourceTree = "SOURCE_ROOT"; };
E54D0994D31E20A0A05EBA2B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SystemTrayIconComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.h"; sourceTree = "SOURCE_ROOT"; };
- E570E57CC1FCEF78B54A7084 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileOutputStream.h"; path = "../../../../modules/juce_core/files/juce_FileOutputStream.h"; sourceTree = "SOURCE_ROOT"; };
E60E28D1B7491047DEA236AE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ProjectContentComponent.h"; path = "../../Source/Project/jucer_ProjectContentComponent.h"; sourceTree = "SOURCE_ROOT"; };
- 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"; };
- 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"; };
@@ -958,6 +964,8 @@
C7608A3967D9AB9481848F2B,
E65A820D34BF39478B7C5925,
D526C38D581425949BA0E4AC,
+ 84DE44680C9D37CDDCD127FF,
+ 1C81C5501BE7F2C912250711,
F03E2BDD36E6F4F53AB767A8,
8C52A3DDA62A746AA7A68535,
9069981E414A631B036CC9AC,
@@ -1078,6 +1086,8 @@
8F8BF1A7130D858E0A239F9E,
7B4E33B1E04139F359FB484B,
9F75811FE7B5F8D1321BEC69,
+ DCBB17488227A2CA7D3D3947,
+ 0C2AD2FC0C196F440C3FF994,
C7B47372A9D5970E3D9A5400,
F797071D88542C813CF7222A,
7211101FFA28400ADBB1D47A,
@@ -2087,6 +2097,7 @@
6DD9DA1677A6CF789CDAB478,
954A036F5DDB375DB23FFB3E,
3EB3D569250C4BA4CA9AF578,
+ 3C3B0ED6C43FDA3AF76DEE2E,
95B44E6C74B1DED31DBE37EB,
AA9D0B8E23F3D87A23DE9F8A,
244BA1BDA5FAA465EA3F9C6D,
@@ -2113,6 +2124,7 @@
1B988E139004D8E2850EB656,
1F37544891EC8DBB5E500C1C,
110221CD5578153B528AD2BE,
+ 3D777382FE212D59BAF871FD,
3FCA61C401007B243E2E9035,
30B921C38DCEE787B294B746,
676D2E1E750E61AA2FAA335E,
diff --git a/extras/Introjucer/Builds/VisualStudio2005/The Introjucer.vcproj b/extras/Introjucer/Builds/VisualStudio2005/The Introjucer.vcproj
index e6f9d4d312..39b84bd6e4 100644
--- a/extras/Introjucer/Builds/VisualStudio2005/The Introjucer.vcproj
+++ b/extras/Introjucer/Builds/VisualStudio2005/The Introjucer.vcproj
@@ -138,6 +138,8 @@
+
+
@@ -262,6 +264,8 @@
+
+
diff --git a/extras/Introjucer/Builds/VisualStudio2008/The Introjucer.vcproj b/extras/Introjucer/Builds/VisualStudio2008/The Introjucer.vcproj
index e1903c79c4..e186142418 100644
--- a/extras/Introjucer/Builds/VisualStudio2008/The Introjucer.vcproj
+++ b/extras/Introjucer/Builds/VisualStudio2008/The Introjucer.vcproj
@@ -138,6 +138,8 @@
+
+
@@ -262,6 +264,8 @@
+
+
diff --git a/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj b/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj
index 4e4d18686b..8a47166a85 100644
--- a/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj
+++ b/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj
@@ -127,6 +127,7 @@
+
@@ -153,6 +154,7 @@
+
@@ -1063,6 +1065,7 @@
+
@@ -1143,6 +1146,7 @@
+
diff --git a/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj.filters b/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj.filters
index b74f2f7ec4..48af1cf863 100644
--- a/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj.filters
+++ b/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj.filters
@@ -262,6 +262,9 @@
The Introjucer\Application
+
+ The Introjucer\Application
+
The Introjucer\Application
@@ -340,6 +343,9 @@
The Introjucer\Project Saving
+
+ The Introjucer\Project
+
The Introjucer\Project
@@ -1368,6 +1374,9 @@
The Introjucer\Application
+
+ The Introjucer\Application
+
The Introjucer\Application
@@ -1608,6 +1617,9 @@
The Introjucer\Project
+
+ The Introjucer\Project
+
The Introjucer\Project
diff --git a/extras/Introjucer/Builds/VisualStudio2012/The Introjucer.vcxproj b/extras/Introjucer/Builds/VisualStudio2012/The Introjucer.vcxproj
index 1f4d98b10a..e17f2ab32d 100644
--- a/extras/Introjucer/Builds/VisualStudio2012/The Introjucer.vcxproj
+++ b/extras/Introjucer/Builds/VisualStudio2012/The Introjucer.vcxproj
@@ -133,6 +133,7 @@
+
@@ -159,6 +160,7 @@
+
@@ -1069,6 +1071,7 @@
+
@@ -1149,6 +1152,7 @@
+
diff --git a/extras/Introjucer/Builds/VisualStudio2012/The Introjucer.vcxproj.filters b/extras/Introjucer/Builds/VisualStudio2012/The Introjucer.vcxproj.filters
index b74f2f7ec4..48af1cf863 100644
--- a/extras/Introjucer/Builds/VisualStudio2012/The Introjucer.vcxproj.filters
+++ b/extras/Introjucer/Builds/VisualStudio2012/The Introjucer.vcxproj.filters
@@ -262,6 +262,9 @@
The Introjucer\Application
+
+ The Introjucer\Application
+
The Introjucer\Application
@@ -340,6 +343,9 @@
The Introjucer\Project Saving
+
+ The Introjucer\Project
+
The Introjucer\Project
@@ -1368,6 +1374,9 @@
The Introjucer\Application
+
+ The Introjucer\Application
+
The Introjucer\Application
@@ -1608,6 +1617,9 @@
The Introjucer\Project
+
+ The Introjucer\Project
+
The Introjucer\Project
diff --git a/extras/Introjucer/Builds/VisualStudio2013/The Introjucer.vcxproj b/extras/Introjucer/Builds/VisualStudio2013/The Introjucer.vcxproj
index 33d5622268..1839ab6bef 100644
--- a/extras/Introjucer/Builds/VisualStudio2013/The Introjucer.vcxproj
+++ b/extras/Introjucer/Builds/VisualStudio2013/The Introjucer.vcxproj
@@ -133,6 +133,7 @@
+
@@ -159,6 +160,7 @@
+
@@ -1069,6 +1071,7 @@
+
@@ -1149,6 +1152,7 @@
+
diff --git a/extras/Introjucer/Builds/VisualStudio2013/The Introjucer.vcxproj.filters b/extras/Introjucer/Builds/VisualStudio2013/The Introjucer.vcxproj.filters
index 1a2044c083..590ea0e323 100644
--- a/extras/Introjucer/Builds/VisualStudio2013/The Introjucer.vcxproj.filters
+++ b/extras/Introjucer/Builds/VisualStudio2013/The Introjucer.vcxproj.filters
@@ -262,6 +262,9 @@
The Introjucer\Application
+
+ The Introjucer\Application
+
The Introjucer\Application
@@ -340,6 +343,9 @@
The Introjucer\Project Saving
+
+ The Introjucer\Project
+
The Introjucer\Project
@@ -1368,6 +1374,9 @@
The Introjucer\Application
+
+ The Introjucer\Application
+
The Introjucer\Application
@@ -1608,6 +1617,9 @@
The Introjucer\Project
+
+ The Introjucer\Project
+
The Introjucer\Project
diff --git a/extras/Introjucer/Builds/VisualStudio2015/The Introjucer.vcxproj b/extras/Introjucer/Builds/VisualStudio2015/The Introjucer.vcxproj
index c800f10385..7085194299 100644
--- a/extras/Introjucer/Builds/VisualStudio2015/The Introjucer.vcxproj
+++ b/extras/Introjucer/Builds/VisualStudio2015/The Introjucer.vcxproj
@@ -95,7 +95,7 @@
- MinSpace
+ Full
..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories)
_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=3.2.0;JUCE_APP_VERSION_HEX=0x30200;%(PreprocessorDefinitions)
MultiThreaded
@@ -133,6 +133,7 @@
+
@@ -159,6 +160,7 @@
+
@@ -1069,6 +1071,7 @@
+
@@ -1149,6 +1152,7 @@
+
@@ -1571,7 +1575,6 @@
-
diff --git a/extras/Introjucer/Builds/VisualStudio2015/The Introjucer.vcxproj.filters b/extras/Introjucer/Builds/VisualStudio2015/The Introjucer.vcxproj.filters
index f6b0cd6ccd..3239212bb7 100644
--- a/extras/Introjucer/Builds/VisualStudio2015/The Introjucer.vcxproj.filters
+++ b/extras/Introjucer/Builds/VisualStudio2015/The Introjucer.vcxproj.filters
@@ -262,6 +262,9 @@
The Introjucer\Application
+
+ The Introjucer\Application
+
The Introjucer\Application
@@ -340,6 +343,9 @@
The Introjucer\Project Saving
+
+ The Introjucer\Project
+
The Introjucer\Project
@@ -1368,6 +1374,9 @@
The Introjucer\Application
+
+ The Introjucer\Application
+
The Introjucer\Application
@@ -1608,6 +1617,9 @@
The Introjucer\Project
+
+ The Introjucer\Project
+
The Introjucer\Project
@@ -2870,9 +2882,6 @@
Juce Modules\juce_gui_extra
-
- Juce Library Code
-
diff --git a/extras/Introjucer/Builds/VisualStudio2015/resources.rc b/extras/Introjucer/Builds/VisualStudio2015/resources.rc
index 7b530b86d8..f52e340018 100644
--- a/extras/Introjucer/Builds/VisualStudio2015/resources.rc
+++ b/extras/Introjucer/Builds/VisualStudio2015/resources.rc
@@ -28,6 +28,3 @@ BEGIN
END
#endif
-
-IDI_ICON1 ICON DISCARDABLE "icon.ico"
-IDI_ICON2 ICON DISCARDABLE "icon.ico"
\ No newline at end of file
diff --git a/extras/Introjucer/Introjucer.jucer b/extras/Introjucer/Introjucer.jucer
index 033fa1fcd7..be20a800c9 100644
--- a/extras/Introjucer/Introjucer.jucer
+++ b/extras/Introjucer/Introjucer.jucer
@@ -170,6 +170,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -197,6 +214,10 @@
resource="0" file="Source/Application/jucer_DocumentEditorComponent.h"/>
+
+
@@ -426,6 +447,10 @@
file="Source/Project/jucer_ConfigTree_Exporter.h"/>
+
+
())
- w->setContentOwned (new EditorPanel(), false);
- }
- else
- {
- if (isMonospacedTypeface (fontsToScan[0]))
- fontsFound.add (fontsToScan[0]);
-
- fontsToScan.remove (0);
- }
- }
-
- // A rather hacky trick to select only the fixed-pitch fonts..
- // This is unfortunately a bit slow, but will work on all platforms.
- static bool isMonospacedTypeface (const String& name)
- {
- const Font font (name, 20.0f, Font::plain);
-
- const int width = font.getStringWidth ("....");
-
- return width == font.getStringWidth ("WWWW")
- && width == font.getStringWidth ("0000")
- && width == font.getStringWidth ("1111")
- && width == font.getStringWidth ("iiii");
- }
-
- StringArray fontsToScan, fontsFound;
- };
-
- //==============================================================================
- class EditorPanel : public Component,
- private ButtonListener
- {
- public:
- EditorPanel()
- : loadButton ("Load Scheme..."),
- saveButton ("Save Scheme...")
- {
- rebuildProperties();
- addAndMakeVisible (panel);
-
- loadButton.setColour (TextButton::buttonColourId, Colours::lightgrey.withAlpha (0.5f));
- saveButton.setColour (TextButton::buttonColourId, Colours::lightgrey.withAlpha (0.5f));
- loadButton.setColour (TextButton::textColourOffId, Colours::white);
- saveButton.setColour (TextButton::textColourOffId, Colours::white);
-
- addAndMakeVisible (loadButton);
- addAndMakeVisible (saveButton);
-
- loadButton.addListener (this);
- saveButton.addListener (this);
- }
-
- void rebuildProperties()
- {
- AppearanceSettings& scheme = getAppSettings().appearance;
-
- Array props;
- Value fontValue (scheme.getCodeFontValue());
- props.add (FontNameValueSource::createProperty ("Code Editor Font", fontValue));
- props.add (FontSizeValueSource::createProperty ("Font Size", fontValue));
-
- const StringArray colourNames (scheme.getColourNames());
-
- for (int i = 0; i < colourNames.size(); ++i)
- props.add (new ColourPropertyComponent (nullptr, colourNames[i],
- scheme.getColourValue (colourNames[i]),
- Colours::white, false));
-
- panel.clear();
- panel.addProperties (props);
- }
-
- void resized() override
- {
- Rectangle r (getLocalBounds());
- panel.setBounds (r.removeFromTop (getHeight() - 28).reduced (4, 2));
- loadButton.setBounds (r.removeFromLeft (getWidth() / 2).reduced (10, 4));
- saveButton.setBounds (r.reduced (10, 3));
- }
-
- private:
- PropertyPanel panel;
- TextButton loadButton, saveButton;
-
- void buttonClicked (Button* b) override
- {
- if (b == &loadButton)
- loadScheme();
- else
- saveScheme();
- }
-
- void saveScheme()
- {
- FileChooser fc ("Select a file in which to save this colour-scheme...",
- getAppSettings().appearance.getSchemesFolder()
- .getNonexistentChildFile ("Scheme", AppearanceSettings::getSchemeFileSuffix()),
- AppearanceSettings::getSchemeFileWildCard());
-
- if (fc.browseForFileToSave (true))
- {
- File file (fc.getResult().withFileExtension (AppearanceSettings::getSchemeFileSuffix()));
- getAppSettings().appearance.writeToFile (file);
- getAppSettings().appearance.refreshPresetSchemeList();
- }
- }
-
- void loadScheme()
- {
- FileChooser fc ("Please select a colour-scheme file to load...",
- getAppSettings().appearance.getSchemesFolder(),
- AppearanceSettings::getSchemeFileWildCard());
-
- if (fc.browseForFileToOpen())
- if (getAppSettings().appearance.readFromFile (fc.getResult()))
- rebuildProperties();
- }
-
- JUCE_DECLARE_NON_COPYABLE (EditorPanel)
- };
-
- //==============================================================================
- class FontNameValueSource : public ValueSourceFilter
- {
- public:
- FontNameValueSource (const Value& source) : ValueSourceFilter (source) {}
-
- var getValue() const override
- {
- return Font::fromString (sourceValue.toString()).getTypefaceName();
- }
-
- void setValue (const var& newValue) override
- {
- Font font (Font::fromString (sourceValue.toString()));
- font.setTypefaceName (newValue.toString().isEmpty() ? Font::getDefaultMonospacedFontName()
- : newValue.toString());
- sourceValue = font.toString();
- }
-
- static ChoicePropertyComponent* createProperty (const String& title, const Value& value)
- {
- StringArray fontNames = getAppSettings().monospacedFontNames;
-
- Array values;
- values.add (Font::getDefaultMonospacedFontName());
- values.add (var());
-
- for (int i = 0; i < fontNames.size(); ++i)
- values.add (fontNames[i]);
-
- StringArray names;
- names.add ("");
- names.add (String::empty);
- names.addArray (getAppSettings().monospacedFontNames);
-
- return new ChoicePropertyComponent (Value (new FontNameValueSource (value)),
- title, names, values);
- }
- };
-
- //==============================================================================
- class FontSizeValueSource : public ValueSourceFilter
- {
- public:
- FontSizeValueSource (const Value& source) : ValueSourceFilter (source) {}
-
- var getValue() const override
- {
- return Font::fromString (sourceValue.toString()).getHeight();
- }
-
- void setValue (const var& newValue) override
- {
- sourceValue = Font::fromString (sourceValue.toString()).withHeight (newValue).toString();
- }
-
- static PropertyComponent* createProperty (const String& title, const Value& value)
- {
- return new SliderPropertyComponent (Value (new FontSizeValueSource (value)),
- title, 5.0, 40.0, 0.1, 0.5);
- }
- };
-};
-
-void AppearanceSettings::showEditorWindow (ScopedPointer& ownerPointer)
-{
- if (ownerPointer != nullptr)
- {
- ownerPointer->toFront (true);
- }
- else
- {
- Component* content;
-
- if (getAppSettings().monospacedFontNames.size() == 0)
- content = new AppearanceEditor::FontScanPanel();
- else
- content = new AppearanceEditor::EditorPanel();
-
- const int width = 350;
- new FloatingToolWindow ("Appearance Settings",
- "colourSchemeEditorPos",
- content, ownerPointer,
- width, 500,
- width, 200, width, 1000);
- }
-}
-
//==============================================================================
IntrojucerLookAndFeel::IntrojucerLookAndFeel()
{
diff --git a/extras/Introjucer/Source/Application/jucer_AppearanceSettings.h b/extras/Introjucer/Source/Application/jucer_AppearanceSettings.h
index 2e64914102..6b29257ebc 100644
--- a/extras/Introjucer/Source/Application/jucer_AppearanceSettings.h
+++ b/extras/Introjucer/Source/Application/jucer_AppearanceSettings.h
@@ -54,7 +54,7 @@ public:
static Font getDefaultCodeFont();
- static void showEditorWindow (ScopedPointer& ownerPointer);
+ static void showGlobalPreferences (ScopedPointer& ownerPointer);
static const char* getSchemeFileSuffix() { return ".scheme"; }
static const char* getSchemeFileWildCard() { return "*.scheme"; }
diff --git a/extras/Introjucer/Source/Application/jucer_Application.h b/extras/Introjucer/Source/Application/jucer_Application.h
index e04fc40f51..9b45a12cea 100644
--- a/extras/Introjucer/Source/Application/jucer_Application.h
+++ b/extras/Introjucer/Source/Application/jucer_Application.h
@@ -101,6 +101,7 @@ public:
{
versionChecker = nullptr;
appearanceEditorWindow = nullptr;
+ globalPreferencesWindow = nullptr;
utf8Window = nullptr;
svgPathWindow = nullptr;
@@ -274,8 +275,6 @@ public:
void createColourSchemeItems (PopupMenu& menu)
{
- menu.addCommandItem (commandManager, CommandIDs::showAppearanceSettings);
-
const StringArray presetSchemes (settings->appearance.getPresetSchemes());
if (presetSchemes.size() > 0)
@@ -313,6 +312,8 @@ public:
virtual void createToolsMenu (PopupMenu& menu)
{
+ menu.addCommandItem (commandManager, CommandIDs::showGlobalPreferences);
+ menu.addSeparator();
menu.addCommandItem (commandManager, CommandIDs::showUTF8Tool);
menu.addCommandItem (commandManager, CommandIDs::showSVGPathTool);
menu.addCommandItem (commandManager, CommandIDs::showTranslationTool);
@@ -351,7 +352,7 @@ public:
CommandIDs::open,
CommandIDs::closeAllDocuments,
CommandIDs::saveAll,
- CommandIDs::showAppearanceSettings,
+ CommandIDs::showGlobalPreferences,
CommandIDs::showUTF8Tool,
CommandIDs::showSVGPathTool };
@@ -372,8 +373,8 @@ public:
result.defaultKeypresses.add (KeyPress ('o', ModifierKeys::commandModifier, 0));
break;
- case CommandIDs::showAppearanceSettings:
- result.setInfo ("Fonts and Colours...", "Shows the appearance settings window.", CommandCategories::general, 0);
+ case CommandIDs::showGlobalPreferences:
+ result.setInfo ("Global Preferences...", "Shows the global preferences window.", CommandCategories::general, 0);
break;
case CommandIDs::closeAllDocuments:
@@ -411,7 +412,7 @@ public:
case CommandIDs::showUTF8Tool: showUTF8ToolWindow (utf8Window); break;
case CommandIDs::showSVGPathTool: showSVGPathDataToolWindow (svgPathWindow); break;
- case CommandIDs::showAppearanceSettings: AppearanceSettings::showEditorWindow (appearanceEditorWindow); break;
+ case CommandIDs::showGlobalPreferences: AppearanceSettings::showGlobalPreferences (globalPreferencesWindow); break;
default: return JUCEApplication::perform (info);
}
@@ -542,7 +543,7 @@ public:
OpenDocumentManager openDocumentManager;
ScopedPointer commandManager;
- ScopedPointer appearanceEditorWindow, utf8Window, svgPathWindow;
+ ScopedPointer appearanceEditorWindow, globalPreferencesWindow, utf8Window, svgPathWindow;
ScopedPointer logger;
diff --git a/extras/Introjucer/Source/Application/jucer_CommandIDs.h b/extras/Introjucer/Source/Application/jucer_CommandIDs.h
index 65858ec8da..bfe5a89b12 100644
--- a/extras/Introjucer/Source/Application/jucer_CommandIDs.h
+++ b/extras/Introjucer/Source/Application/jucer_CommandIDs.h
@@ -42,7 +42,7 @@ namespace CommandIDs
saveAndOpenInIDE = 0x200073,
showUTF8Tool = 0x200076,
- showAppearanceSettings = 0x200077,
+ showGlobalPreferences = 0x200077,
showConfigPanel = 0x200074,
showFilePanel = 0x200078,
showTranslationTool = 0x200079,
diff --git a/extras/Introjucer/Source/Application/jucer_GlobalPreferences.cpp b/extras/Introjucer/Source/Application/jucer_GlobalPreferences.cpp
new file mode 100644
index 0000000000..b94cccfc88
--- /dev/null
+++ b/extras/Introjucer/Source/Application/jucer_GlobalPreferences.cpp
@@ -0,0 +1,483 @@
+/*
+ ==============================================================================
+
+ jucer_GlobalPreferences.cpp
+ Created: 22 Jul 2015 11:05:35am
+ Author: Timur Doumler
+
+ ==============================================================================
+*/
+
+#include "../jucer_Headers.h"
+#include "jucer_GlobalPreferences.h"
+
+
+//==============================================================================
+const String PathSettingsTab::vst2KeyName = "vst2Path";
+const String PathSettingsTab::vst3KeyName = "vst3Path";
+const String PathSettingsTab::rtasKeyName = "rtasPath";
+const String PathSettingsTab::aaxKeyName = "aaxPath";
+const String PathSettingsTab::androidSdkKeyName = "androidSdkPath";
+const String PathSettingsTab::androidNdkKeyName = "androidNdkPath";
+
+//==============================================================================
+class AppearanceSettingsTab : public GlobalPreferencesTab,
+ public Component
+{
+public:
+ AppearanceSettingsTab();
+
+ Component* getContent() override;
+ void changeContent (Component* newContent);
+ String getName() const noexcept override;
+
+ ScopedPointer content;
+};
+
+//==============================================================================
+namespace PathSettingsHelpers
+{
+ bool checkSdkPathContainsFile (const String& path, const String& fileToCheckFor)
+ {
+ return File::getCurrentWorkingDirectory().getChildFile( path + "/" + fileToCheckFor).existsAsFile();
+ }
+}
+
+PathSettingsTab::PathSettingsTab (DependencyPathOS os)
+{
+ const int maxChars = 1024;
+
+ vst2PathComponent = pathComponents.add (new TextPropertyComponent (getPathByKey (vst2KeyName, os), "VST SDK", maxChars, false));
+ vst3PathComponent = pathComponents.add (new TextPropertyComponent (getPathByKey (vst3KeyName, os), "VST3 SDK", maxChars, false));
+
+ #if ! JUCE_LINUX
+ rtasPathComponent = pathComponents.add (new TextPropertyComponent (getPathByKey (rtasKeyName, os), "RTAS SDK", maxChars, false));
+ aaxPathComponent = pathComponents.add (new TextPropertyComponent (getPathByKey (aaxKeyName, os), "AAX SDK", maxChars, false));
+ #endif
+
+ androidSdkPathComponent = pathComponents.add (new TextPropertyComponent (getPathByKey (androidSdkKeyName, os), "Android SDK", maxChars, false));
+ androidNdkPathComponent = pathComponents.add (new TextPropertyComponent (getPathByKey (androidNdkKeyName, os), "Android NDK", maxChars, false));
+
+ for (TextPropertyComponent** component = pathComponents.begin(); component != pathComponents.end(); ++component)
+ {
+ addAndMakeVisible (**component);
+ (*component)->addListener (this);
+ textPropertyComponentChanged (*component);
+ }
+}
+
+PathSettingsTab::~PathSettingsTab()
+{
+}
+
+void PathSettingsTab::textPropertyComponentChanged (TextPropertyComponent* textPropertyComponent)
+{
+ String keyName = getKeyForPropertyComponent (textPropertyComponent);
+
+ Colour textColour = checkPathByKey (keyName, textPropertyComponent->getText()) ? Colours::black : Colours::red;
+ textPropertyComponent->setColour (TextPropertyComponent::textColourId, textColour);
+}
+
+String PathSettingsTab::getKeyForPropertyComponent (TextPropertyComponent* component) const
+{
+ if (component == vst2PathComponent) return vst2KeyName;
+ if (component == vst3PathComponent) return vst3KeyName;
+ if (component == rtasPathComponent) return rtasKeyName;
+ if (component == aaxPathComponent) return aaxKeyName;
+ if (component == androidSdkPathComponent) return androidSdkKeyName;
+ if (component == androidNdkPathComponent) return androidNdkKeyName;
+
+ // this property component does not have a key associated to it!
+ jassertfalse;
+ return String::empty;
+}
+
+Component* PathSettingsTab::getContent()
+{
+ return this;
+}
+
+String PathSettingsTab::getName() const noexcept
+{
+ return "Paths";
+}
+
+void PathSettingsTab::resized()
+{
+ const int componentHeight = 25;
+
+ for (TextPropertyComponent** component = pathComponents.begin(); component != pathComponents.end(); ++component)
+ {
+ const int elementNumber = pathComponents.indexOf (*component);
+ (*component)->setBounds (0, componentHeight * elementNumber, getWidth(), componentHeight);
+ }
+}
+
+//==============================================================================
+Value& PathSettingsTab::getPathByKey (const String& key, DependencyPathOS os)
+{
+ getAppSettings().pathValues[key] = getAppSettings().projectDefaults.getPropertyAsValue (key, nullptr);
+ Value& value = getAppSettings().pathValues[key];
+
+ if (value.toString().isEmpty())
+ value = getFallbackPathByKey (key, os);
+
+ return value;
+}
+
+//==============================================================================
+String PathSettingsTab::getFallbackPathByKey (const String& key, DependencyPathOS os)
+{
+ if (key == vst2KeyName || key == vst3KeyName)
+ return os == DependencyPathOS::windows ? "c:\\SDKs\\VST3 SDK"
+ : "~/SDKs/VST3 SDK";
+
+ if (key == rtasKeyName)
+ {
+ if (os == DependencyPathOS::windows) return "c:\\SDKs\\PT_80_SDK";
+ if (os == DependencyPathOS::osx) return "~/SDKs/PT_80_SDK";
+
+ // no RTAS on this OS!
+ jassertfalse;
+ return String();
+ }
+
+ if (key == aaxKeyName)
+ {
+ if (os == DependencyPathOS::windows) return "c:\\SDKs\\AAX";
+ if (os == DependencyPathOS::osx) return "~/SDKs/AAX" ;
+
+ // no RTAS on this OS!
+ jassertfalse;
+ return String();
+ }
+
+ if (key == androidSdkKeyName)
+ return os == DependencyPathOS::windows ? "c:\\SDKs\\android-sdk"
+ : "~/Library/Android/sdk";
+
+ if (key == androidNdkKeyName)
+ return os == DependencyPathOS::windows ? "c:\\SDKs\\android-ndk"
+ : "~/Library/Android/ndk";
+
+ // didn't recognise the key provided!
+ jassertfalse;
+ return String();
+}
+
+//==============================================================================
+bool PathSettingsTab::checkPathByKey (const String& key, const String& path)
+{
+ String fileToCheckFor;
+
+ if (key == vst2KeyName)
+ {
+ fileToCheckFor = "public.sdk/source/vst2.x/audioeffectx.h";
+ }
+ else if (key == vst3KeyName)
+ {
+ fileToCheckFor = "base/source/baseiids.cpp";
+ }
+ else if (key == rtasKeyName)
+ {
+ fileToCheckFor = "AlturaPorts/TDMPlugIns/PlugInLibrary/EffectClasses/CEffectProcessMIDI.cpp";
+ }
+ else if (key == aaxKeyName)
+ {
+ fileToCheckFor = "Interfaces/AAX_Exports.cpp";
+ }
+ else if (key == androidSdkKeyName)
+ {
+ #if JUCE_WINDOWS
+ fileToCheckFor = "platform-tools/adb.exe";
+ #else
+ fileToCheckFor = "platform-tools/adb";
+ #endif
+ }
+ else if (key == androidNdkKeyName)
+ {
+ #if JUCE_WINDOWS
+ fileToCheckFor = "ndk-depends.exe";
+ #else
+ fileToCheckFor = "ndk-depends";
+ #endif
+ }
+ else
+ {
+ // didn't recognise the key provided!
+ jassertfalse;
+ return false;
+ }
+
+ return PathSettingsHelpers::checkSdkPathContainsFile (path, fileToCheckFor);
+}
+
+//==============================================================================
+struct AppearanceEditor
+{
+ struct FontScanPanel : public Component,
+ private Timer
+ {
+ FontScanPanel()
+ {
+ fontsToScan = Font::findAllTypefaceNames();
+ startTimer (1);
+ }
+
+ void paint (Graphics& g) override
+ {
+ g.fillAll (Colours::darkgrey);
+
+ g.setFont (14.0f);
+ g.setColour (Colours::white);
+ g.drawFittedText ("Scanning for fonts..", getLocalBounds(), Justification::centred, 2);
+
+ const int size = 30;
+ getLookAndFeel().drawSpinningWaitAnimation (g, Colours::white, (getWidth() - size) / 2, getHeight() / 2 - 50, size, size);
+ }
+
+ void timerCallback() override
+ {
+ repaint();
+
+ if (fontsToScan.size() == 0)
+ {
+ getAppSettings().monospacedFontNames = fontsFound;
+
+ if (AppearanceSettingsTab* tab = findParentComponentOfClass())
+ tab->changeContent (new EditorPanel());
+ }
+ else
+ {
+ if (isMonospacedTypeface (fontsToScan[0]))
+ fontsFound.add (fontsToScan[0]);
+
+ fontsToScan.remove (0);
+ }
+ }
+
+ // A rather hacky trick to select only the fixed-pitch fonts..
+ // This is unfortunately a bit slow, but will work on all platforms.
+ static bool isMonospacedTypeface (const String& name)
+ {
+ const Font font (name, 20.0f, Font::plain);
+
+ const int width = font.getStringWidth ("....");
+
+ return width == font.getStringWidth ("WWWW")
+ && width == font.getStringWidth ("0000")
+ && width == font.getStringWidth ("1111")
+ && width == font.getStringWidth ("iiii");
+ }
+
+ StringArray fontsToScan, fontsFound;
+ };
+
+ //==============================================================================
+ struct EditorPanel : public Component,
+ private ButtonListener
+ {
+ EditorPanel()
+ : loadButton ("Load Scheme..."),
+ saveButton ("Save Scheme...")
+ {
+ rebuildProperties();
+ addAndMakeVisible (panel);
+
+ loadButton.setColour (TextButton::buttonColourId, Colours::lightgrey.withAlpha (0.5f));
+ saveButton.setColour (TextButton::buttonColourId, Colours::lightgrey.withAlpha (0.5f));
+ loadButton.setColour (TextButton::textColourOffId, Colours::white);
+ saveButton.setColour (TextButton::textColourOffId, Colours::white);
+
+ addAndMakeVisible (loadButton);
+ addAndMakeVisible (saveButton);
+
+ loadButton.addListener (this);
+ saveButton.addListener (this);
+ }
+
+ void rebuildProperties()
+ {
+ AppearanceSettings& scheme = getAppSettings().appearance;
+
+ Array props;
+ Value fontValue (scheme.getCodeFontValue());
+ props.add (FontNameValueSource::createProperty ("Code Editor Font", fontValue));
+ props.add (FontSizeValueSource::createProperty ("Font Size", fontValue));
+
+ const StringArray colourNames (scheme.getColourNames());
+
+ for (int i = 0; i < colourNames.size(); ++i)
+ props.add (new ColourPropertyComponent (nullptr, colourNames[i],
+ scheme.getColourValue (colourNames[i]),
+ Colours::white, false));
+
+ panel.clear();
+ panel.addProperties (props);
+ }
+
+ void resized() override
+ {
+ Rectangle r (getLocalBounds());
+ panel.setBounds (r.removeFromTop (getHeight() - 28).reduced (4, 2));
+ loadButton.setBounds (r.removeFromLeft (getWidth() / 2).reduced (10, 4));
+ saveButton.setBounds (r.reduced (10, 3));
+ }
+
+ private:
+ PropertyPanel panel;
+ TextButton loadButton, saveButton;
+
+ void buttonClicked (Button* b) override
+ {
+ if (b == &loadButton)
+ loadScheme();
+ else
+ saveScheme();
+ }
+
+ void saveScheme()
+ {
+ FileChooser fc ("Select a file in which to save this colour-scheme...",
+ getAppSettings().appearance.getSchemesFolder()
+ .getNonexistentChildFile ("Scheme", AppearanceSettings::getSchemeFileSuffix()),
+ AppearanceSettings::getSchemeFileWildCard());
+
+ if (fc.browseForFileToSave (true))
+ {
+ File file (fc.getResult().withFileExtension (AppearanceSettings::getSchemeFileSuffix()));
+ getAppSettings().appearance.writeToFile (file);
+ getAppSettings().appearance.refreshPresetSchemeList();
+ }
+ }
+
+ void loadScheme()
+ {
+ FileChooser fc ("Please select a colour-scheme file to load...",
+ getAppSettings().appearance.getSchemesFolder(),
+ AppearanceSettings::getSchemeFileWildCard());
+
+ if (fc.browseForFileToOpen())
+ if (getAppSettings().appearance.readFromFile (fc.getResult()))
+ rebuildProperties();
+ }
+
+ JUCE_DECLARE_NON_COPYABLE (EditorPanel)
+ };
+
+ //==============================================================================
+ struct FontNameValueSource : public ValueSourceFilter
+ {
+ FontNameValueSource (const Value& source) : ValueSourceFilter (source) {}
+
+ var getValue() const override
+ {
+ return Font::fromString (sourceValue.toString()).getTypefaceName();
+ }
+
+ void setValue (const var& newValue) override
+ {
+ Font font (Font::fromString (sourceValue.toString()));
+ font.setTypefaceName (newValue.toString().isEmpty() ? Font::getDefaultMonospacedFontName()
+ : newValue.toString());
+ sourceValue = font.toString();
+ }
+
+ static ChoicePropertyComponent* createProperty (const String& title, const Value& value)
+ {
+ StringArray fontNames = getAppSettings().monospacedFontNames;
+
+ Array values;
+ values.add (Font::getDefaultMonospacedFontName());
+ values.add (var());
+
+ for (int i = 0; i < fontNames.size(); ++i)
+ values.add (fontNames[i]);
+
+ StringArray names;
+ names.add ("");
+ names.add (String::empty);
+ names.addArray (getAppSettings().monospacedFontNames);
+
+ return new ChoicePropertyComponent (Value (new FontNameValueSource (value)),
+ title, names, values);
+ }
+ };
+
+ //==============================================================================
+ struct FontSizeValueSource : public ValueSourceFilter
+ {
+ FontSizeValueSource (const Value& source) : ValueSourceFilter (source) {}
+
+ var getValue() const override
+ {
+ return Font::fromString (sourceValue.toString()).getHeight();
+ }
+
+ void setValue (const var& newValue) override
+ {
+ sourceValue = Font::fromString (sourceValue.toString()).withHeight (newValue).toString();
+ }
+
+ static PropertyComponent* createProperty (const String& title, const Value& value)
+ {
+ return new SliderPropertyComponent (Value (new FontSizeValueSource (value)),
+ title, 5.0, 40.0, 0.1, 0.5);
+ }
+ };
+};
+
+void AppearanceSettings::showGlobalPreferences (ScopedPointer& ownerPointer)
+{
+ if (ownerPointer != nullptr)
+ {
+ ownerPointer->toFront (true);
+ }
+ else
+ {
+ new FloatingToolWindow ("Global Preferences",
+ "globalPreferencesEditorPos",
+ new GlobalPreferencesComponent,
+ ownerPointer,
+ 500, 500, 500, 500, 500, 500);
+ }
+}
+
+//==============================================================================
+AppearanceSettingsTab::AppearanceSettingsTab()
+{
+ if (getAppSettings().monospacedFontNames.size() == 0)
+ content = new AppearanceEditor::FontScanPanel();
+ else
+ content = new AppearanceEditor::EditorPanel();
+
+ changeContent (content);
+}
+
+Component* AppearanceSettingsTab::getContent()
+{
+ return this;
+}
+
+void AppearanceSettingsTab::changeContent (Component* newContent)
+{
+ content = newContent;
+ addAndMakeVisible(content);
+ content->setBoundsInset(BorderSize());
+}
+
+String AppearanceSettingsTab::getName() const noexcept
+{
+ return "Code Editor";
+}
+
+//==============================================================================
+GlobalPreferencesComponent::GlobalPreferencesComponent()
+ : TabbedComponent (TabbedButtonBar::TabsAtTop)
+{
+ preferenceTabs.add (new PathSettingsTab (DependencyPath::getThisOS()));
+ preferenceTabs.add (new AppearanceSettingsTab);
+
+ for (GlobalPreferencesTab** tab = preferenceTabs.begin(); tab != preferenceTabs.end(); ++tab)
+ addTab ((*tab)->getName(), findColour(mainBackgroundColourId, true), (*tab)->getContent(), true);
+}
diff --git a/extras/Introjucer/Source/Application/jucer_GlobalPreferences.h b/extras/Introjucer/Source/Application/jucer_GlobalPreferences.h
new file mode 100644
index 0000000000..d5a3a8330c
--- /dev/null
+++ b/extras/Introjucer/Source/Application/jucer_GlobalPreferences.h
@@ -0,0 +1,84 @@
+/*
+ ==============================================================================
+
+ jucer_GlobalPreferences.h
+ Created: 22 Jul 2015 11:05:35am
+ Author: Timur Doumler
+
+ ==============================================================================
+*/
+
+#ifndef JUCER_GLOBALPREFERENCES_H_INCLUDED
+#define JUCER_GLOBALPREFERENCES_H_INCLUDED
+
+//==============================================================================
+
+#include "../Project/jucer_DependencyPathPropertyComponent.h"
+
+
+class GlobalPreferencesTab
+{
+public:
+ virtual ~GlobalPreferencesTab() {}
+
+ virtual Component* getContent() = 0;
+ virtual String getName() const noexcept = 0;
+};
+
+//==============================================================================
+/** This component implements the "Paths" tab in the global preferences window,
+ which defines the default paths for dependencies like third-party SDKs
+ for this machine.
+*/
+class PathSettingsTab : public GlobalPreferencesTab,
+ public Component,
+ private TextPropertyComponent::Listener
+{
+public:
+ PathSettingsTab (DependencyPathOS);
+ ~PathSettingsTab();
+
+ Component* getContent() override;
+ String getName() const noexcept override;
+
+ void resized() override;
+
+ static Value& getPathByKey (const String& key, DependencyPathOS);
+ static String getFallbackPathByKey (const String& key, DependencyPathOS);
+ static bool checkPathByKey (const String& key, const String& path);
+
+ const static String vst2KeyName, vst3KeyName, rtasKeyName, aaxKeyName,
+ androidSdkKeyName, androidNdkKeyName;
+
+private:
+ void textPropertyComponentChanged (TextPropertyComponent*) override;
+
+ String getKeyForPropertyComponent (TextPropertyComponent*) const;
+
+ OwnedArray pathComponents;
+
+ TextPropertyComponent* vst2PathComponent;
+ TextPropertyComponent* vst3PathComponent;
+ TextPropertyComponent* rtasPathComponent;
+ TextPropertyComponent* aaxPathComponent;
+ TextPropertyComponent* androidSdkPathComponent;
+ TextPropertyComponent* androidNdkPathComponent;
+
+ JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (PathSettingsTab)
+};
+
+
+//==============================================================================
+class GlobalPreferencesComponent : public TabbedComponent
+{
+public:
+ GlobalPreferencesComponent();
+
+private:
+ OwnedArray preferenceTabs;
+
+ JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (GlobalPreferencesComponent)
+};
+
+
+#endif // JUCER_GLOBALPREFERENCES_H_INCLUDED
diff --git a/extras/Introjucer/Source/ComponentEditor/components/jucer_ButtonHandler.h b/extras/Introjucer/Source/ComponentEditor/components/jucer_ButtonHandler.h
index 28b880f18e..2dcca924f0 100644
--- a/extras/Introjucer/Source/ComponentEditor/components/jucer_ButtonHandler.h
+++ b/extras/Introjucer/Source/ComponentEditor/components/jucer_ButtonHandler.h
@@ -172,13 +172,13 @@ private:
{
}
- void setText (const String& newText)
+ void setText (const String& newText) override
{
document.perform (new ButtonTextChangeAction (component, *document.getComponentLayout(), newText),
"Change button text");
}
- String getText() const
+ String getText() const override
{
return component->getButtonText();
}
@@ -269,13 +269,13 @@ private:
{
}
- void setText (const String& newText)
+ void setText (const String& newText) override
{
document.perform (new ButtonRadioGroupChangeAction (component, *document.getComponentLayout(), newText.getIntValue()),
"Change radio group ID");
}
- String getText() const
+ String getText() const override
{
return String (component->getRadioGroupId());
}
diff --git a/extras/Introjucer/Source/ComponentEditor/components/jucer_ComboBoxHandler.h b/extras/Introjucer/Source/ComponentEditor/components/jucer_ComboBoxHandler.h
index 9959dd719a..e88380141d 100644
--- a/extras/Introjucer/Source/ComponentEditor/components/jucer_ComboBoxHandler.h
+++ b/extras/Introjucer/Source/ComponentEditor/components/jucer_ComboBoxHandler.h
@@ -281,13 +281,13 @@ private:
: ComponentTextProperty ("items", 10000, true, comp, doc)
{}
- void setText (const String& newText)
+ void setText (const String& newText) override
{
document.perform (new ComboItemsChangeAction (component, *document.getComponentLayout(), newText),
"Change combo box items");
}
- String getText() const
+ String getText() const override
{
return component->getProperties() ["items"];
}
@@ -333,13 +333,13 @@ private:
: ComponentTextProperty ("text when none selected", 200, false, comp, doc)
{}
- void setText (const String& newText)
+ void setText (const String& newText) override
{
document.perform (new ComboNonSelTextChangeAction (component, *document.getComponentLayout(), newText),
"Change combo box text when nothing selected");
}
- String getText() const
+ String getText() const override
{
return component->getTextWhenNothingSelected();
}
@@ -383,13 +383,13 @@ private:
: ComponentTextProperty ("text when no items", 200, false, comp, doc)
{}
- void setText (const String& newText)
+ void setText (const String& newText) override
{
document.perform (new ComboNoItemTextChangeAction (component, *document.getComponentLayout(), newText),
"Change combo box 'no items' text");
}
- String getText() const
+ String getText() const override
{
return component->getTextWhenNoChoicesAvailable();
}
diff --git a/extras/Introjucer/Source/ComponentEditor/components/jucer_ComponentNameProperty.h b/extras/Introjucer/Source/ComponentEditor/components/jucer_ComponentNameProperty.h
index ba392a0275..1f09623e7f 100644
--- a/extras/Introjucer/Source/ComponentEditor/components/jucer_ComponentNameProperty.h
+++ b/extras/Introjucer/Source/ComponentEditor/components/jucer_ComponentNameProperty.h
@@ -40,13 +40,13 @@ public:
}
- void setText (const String& newText)
+ void setText (const String& newText) override
{
document.perform (new CompNameChangeAction (component, *document.getComponentLayout(), newText),
"Change component name");
}
- String getText() const
+ String getText() const override
{
return component->getName();
}
@@ -90,13 +90,13 @@ public:
{
}
- void setText (const String& newText)
+ void setText (const String& newText) override
{
document.perform (new CompMemberNameChangeAction (component, *document.getComponentLayout(), newText),
"Change component member name");
}
- String getText() const
+ String getText() const override
{
return document.getComponentLayout()->getComponentMemberVariableName (component);
}
@@ -139,13 +139,13 @@ public:
{
}
- void setText (const String& newText)
+ void setText (const String& newText) override
{
document.perform (new CompVirtualClassChangeAction (component, *document.getComponentLayout(), newText),
"Change component virtual class name");
}
- String getText() const
+ String getText() const override
{
return document.getComponentLayout()->getComponentVirtualClassName (component);
}
diff --git a/extras/Introjucer/Source/ComponentEditor/components/jucer_ComponentTypeHandler.cpp b/extras/Introjucer/Source/ComponentEditor/components/jucer_ComponentTypeHandler.cpp
index 3732da3999..bf94003a17 100644
--- a/extras/Introjucer/Source/ComponentEditor/components/jucer_ComponentTypeHandler.cpp
+++ b/extras/Introjucer/Source/ComponentEditor/components/jucer_ComponentTypeHandler.cpp
@@ -264,13 +264,13 @@ public:
{
}
- String getText() const
+ String getText() const override
{
SettableTooltipClient* ttc = dynamic_cast (component);
return ttc->getTooltip();
}
- void setText (const String& newText)
+ void setText (const String& newText) override
{
document.perform (new SetTooltipAction (component, *document.getComponentLayout(), newText),
"Change tooltip");
@@ -366,12 +366,12 @@ public:
{
}
- String getText() const
+ String getText() const override
{
return String (component->getExplicitFocusOrder());
}
- void setText (const String& newText)
+ void setText (const String& newText) override
{
document.perform (new SetFocusOrderAction (component, *document.getComponentLayout(), jmax (0, newText.getIntValue())),
"Change focus order");
diff --git a/extras/Introjucer/Source/ComponentEditor/components/jucer_GenericComponentHandler.h b/extras/Introjucer/Source/ComponentEditor/components/jucer_GenericComponentHandler.h
index b75b1c61bc..88ede99129 100644
--- a/extras/Introjucer/Source/ComponentEditor/components/jucer_GenericComponentHandler.h
+++ b/extras/Introjucer/Source/ComponentEditor/components/jucer_GenericComponentHandler.h
@@ -137,14 +137,14 @@ private:
{
}
- void setText (const String& newText)
+ void setText (const String& newText) override
{
document.perform (new GenericCompClassChangeAction (component, *document.getComponentLayout(),
CodeHelpers::makeValidIdentifier (newText, false, false, true)),
"Change generic component class");
}
- String getText() const
+ String getText() const override
{
return component->actualClassName;
}
@@ -188,13 +188,13 @@ private:
{
}
- void setText (const String& newText)
+ void setText (const String& newText) override
{
document.perform (new GenericCompParamsChangeAction (component, *document.getComponentLayout(), newText),
"Change generic component class");
}
- String getText() const
+ String getText() const override
{
return component->constructorParams;
}
diff --git a/extras/Introjucer/Source/ComponentEditor/components/jucer_GroupComponentHandler.h b/extras/Introjucer/Source/ComponentEditor/components/jucer_GroupComponentHandler.h
index 602789777e..b97cada7db 100644
--- a/extras/Introjucer/Source/ComponentEditor/components/jucer_GroupComponentHandler.h
+++ b/extras/Introjucer/Source/ComponentEditor/components/jucer_GroupComponentHandler.h
@@ -116,13 +116,13 @@ private:
: ComponentTextProperty ("text", 200, false, comp, doc)
{}
- void setText (const String& newText)
+ void setText (const String& newText) override
{
document.perform (new GroupTitleChangeAction (component, *document.getComponentLayout(), newText),
"Change group title");
}
- String getText() const
+ String getText() const override
{
return component->getText();
}
diff --git a/extras/Introjucer/Source/ComponentEditor/components/jucer_HyperlinkButtonHandler.h b/extras/Introjucer/Source/ComponentEditor/components/jucer_HyperlinkButtonHandler.h
index c97e9fc8b3..cf864389f1 100644
--- a/extras/Introjucer/Source/ComponentEditor/components/jucer_HyperlinkButtonHandler.h
+++ b/extras/Introjucer/Source/ComponentEditor/components/jucer_HyperlinkButtonHandler.h
@@ -94,13 +94,13 @@ private:
: ComponentTextProperty ("URL", 512, false, comp, doc)
{}
- void setText (const String& newText)
+ void setText (const String& newText) override
{
document.perform (new HyperlinkURLChangeAction (component, *document.getComponentLayout(), URL (newText)),
"Change hyperlink URL");
}
- String getText() const
+ String getText() const override
{
return component->getURL().toString (false);
}
diff --git a/extras/Introjucer/Source/ComponentEditor/components/jucer_JucerComponentHandler.h b/extras/Introjucer/Source/ComponentEditor/components/jucer_JucerComponentHandler.h
index 08262d450e..532955a34b 100644
--- a/extras/Introjucer/Source/ComponentEditor/components/jucer_JucerComponentHandler.h
+++ b/extras/Introjucer/Source/ComponentEditor/components/jucer_JucerComponentHandler.h
@@ -226,13 +226,13 @@ private:
{
}
- void setText (const String& newText)
+ void setText (const String& newText) override
{
document.perform (new ConstructorParamChangeAction (component, *document.getComponentLayout(), newText),
"Change Viewport content constructor params");
}
- String getText() const
+ String getText() const override
{
return component->getConstructorParams();
}
diff --git a/extras/Introjucer/Source/ComponentEditor/components/jucer_LabelHandler.h b/extras/Introjucer/Source/ComponentEditor/components/jucer_LabelHandler.h
index be83fd028a..7e70c5113a 100644
--- a/extras/Introjucer/Source/ComponentEditor/components/jucer_LabelHandler.h
+++ b/extras/Introjucer/Source/ComponentEditor/components/jucer_LabelHandler.h
@@ -193,13 +193,13 @@ private:
: ComponentTextProperty