1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-02-08 04:20:09 +00:00

Introjucer: added global preferences window and global SDK path settings.

This commit is contained in:
Timur Doumler 2015-08-11 18:17:23 +01:00
parent 48ca0bb56a
commit c922162b03
46 changed files with 1266 additions and 433 deletions

View file

@ -128,6 +128,11 @@
<Option compile="0"/>
<Option link="0"/>
</Unit>
<Unit filename="../../Source/Application/jucer_GlobalPreferences.cpp"/>
<Unit filename="../../Source/Application/jucer_GlobalPreferences.h">
<Option compile="0"/>
<Option link="0"/>
</Unit>
<Unit filename="../../Source/jucer_Headers.h">
<Option compile="0"/>
<Option link="0"/>
@ -474,6 +479,11 @@
<Option compile="0"/>
<Option link="0"/>
</Unit>
<Unit filename="../../Source/Project/jucer_DependencyPathPropertyComponent.cpp"/>
<Unit filename="../../Source/Project/jucer_DependencyPathPropertyComponent.h">
<Option compile="0"/>
<Option link="0"/>
</Unit>
<Unit filename="../../Source/Project/jucer_GroupInformationComponent.h">
<Option compile="0"/>
<Option link="0"/>

View file

@ -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"

View file

@ -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,

View file

@ -138,6 +138,8 @@
<File RelativePath="..\..\Source\Application\jucer_DocumentEditorComponent.cpp"/>
<File RelativePath="..\..\Source\Application\jucer_DocumentEditorComponent.h"/>
<File RelativePath="..\..\Source\Application\jucer_FilePreviewComponent.h"/>
<File RelativePath="..\..\Source\Application\jucer_GlobalPreferences.cpp"/>
<File RelativePath="..\..\Source\Application\jucer_GlobalPreferences.h"/>
<File RelativePath="..\..\Source\jucer_Headers.h"/>
<File RelativePath="..\..\Source\Application\jucer_Main.cpp"/>
<File RelativePath="..\..\Source\Application\jucer_MainWindow.cpp"/>
@ -262,6 +264,8 @@
<File RelativePath="..\..\Source\Project\jucer_ConfigTree_Base.h"/>
<File RelativePath="..\..\Source\Project\jucer_ConfigTree_Exporter.h"/>
<File RelativePath="..\..\Source\Project\jucer_ConfigTree_Modules.h"/>
<File RelativePath="..\..\Source\Project\jucer_DependencyPathPropertyComponent.cpp"/>
<File RelativePath="..\..\Source\Project\jucer_DependencyPathPropertyComponent.h"/>
<File RelativePath="..\..\Source\Project\jucer_GroupInformationComponent.h"/>
<File RelativePath="..\..\Source\Project\jucer_Module.cpp"/>
<File RelativePath="..\..\Source\Project\jucer_Module.h"/>

View file

@ -138,6 +138,8 @@
<File RelativePath="..\..\Source\Application\jucer_DocumentEditorComponent.cpp"/>
<File RelativePath="..\..\Source\Application\jucer_DocumentEditorComponent.h"/>
<File RelativePath="..\..\Source\Application\jucer_FilePreviewComponent.h"/>
<File RelativePath="..\..\Source\Application\jucer_GlobalPreferences.cpp"/>
<File RelativePath="..\..\Source\Application\jucer_GlobalPreferences.h"/>
<File RelativePath="..\..\Source\jucer_Headers.h"/>
<File RelativePath="..\..\Source\Application\jucer_Main.cpp"/>
<File RelativePath="..\..\Source\Application\jucer_MainWindow.cpp"/>
@ -262,6 +264,8 @@
<File RelativePath="..\..\Source\Project\jucer_ConfigTree_Base.h"/>
<File RelativePath="..\..\Source\Project\jucer_ConfigTree_Exporter.h"/>
<File RelativePath="..\..\Source\Project\jucer_ConfigTree_Modules.h"/>
<File RelativePath="..\..\Source\Project\jucer_DependencyPathPropertyComponent.cpp"/>
<File RelativePath="..\..\Source\Project\jucer_DependencyPathPropertyComponent.h"/>
<File RelativePath="..\..\Source\Project\jucer_GroupInformationComponent.h"/>
<File RelativePath="..\..\Source\Project\jucer_Module.cpp"/>
<File RelativePath="..\..\Source\Project\jucer_Module.h"/>

View file

@ -127,6 +127,7 @@
<ClCompile Include="..\..\Source\Application\jucer_AutoUpdater.cpp"/>
<ClCompile Include="..\..\Source\Application\jucer_CommandLine.cpp"/>
<ClCompile Include="..\..\Source\Application\jucer_DocumentEditorComponent.cpp"/>
<ClCompile Include="..\..\Source\Application\jucer_GlobalPreferences.cpp"/>
<ClCompile Include="..\..\Source\Application\jucer_Main.cpp"/>
<ClCompile Include="..\..\Source\Application\jucer_MainWindow.cpp"/>
<ClCompile Include="..\..\Source\Application\jucer_OpenDocumentManager.cpp"/>
@ -153,6 +154,7 @@
<ClCompile Include="..\..\Source\ComponentEditor\jucer_PaintRoutine.cpp"/>
<ClCompile Include="..\..\Source\Project Saving\jucer_ProjectExporter.cpp"/>
<ClCompile Include="..\..\Source\Project Saving\jucer_ResourceFile.cpp"/>
<ClCompile Include="..\..\Source\Project\jucer_DependencyPathPropertyComponent.cpp"/>
<ClCompile Include="..\..\Source\Project\jucer_Module.cpp"/>
<ClCompile Include="..\..\Source\Project\jucer_Project.cpp"/>
<ClCompile Include="..\..\Source\Project\jucer_ProjectContentComponent.cpp"/>
@ -1063,6 +1065,7 @@
<ClInclude Include="..\..\Source\Application\jucer_CommonHeaders.h"/>
<ClInclude Include="..\..\Source\Application\jucer_DocumentEditorComponent.h"/>
<ClInclude Include="..\..\Source\Application\jucer_FilePreviewComponent.h"/>
<ClInclude Include="..\..\Source\Application\jucer_GlobalPreferences.h"/>
<ClInclude Include="..\..\Source\jucer_Headers.h"/>
<ClInclude Include="..\..\Source\Application\jucer_MainWindow.h"/>
<ClInclude Include="..\..\Source\Application\jucer_OpenDocumentManager.h"/>
@ -1143,6 +1146,7 @@
<ClInclude Include="..\..\Source\Project\jucer_ConfigTree_Base.h"/>
<ClInclude Include="..\..\Source\Project\jucer_ConfigTree_Exporter.h"/>
<ClInclude Include="..\..\Source\Project\jucer_ConfigTree_Modules.h"/>
<ClInclude Include="..\..\Source\Project\jucer_DependencyPathPropertyComponent.h"/>
<ClInclude Include="..\..\Source\Project\jucer_GroupInformationComponent.h"/>
<ClInclude Include="..\..\Source\Project\jucer_Module.h"/>
<ClInclude Include="..\..\Source\Project\jucer_ModulesPanel.h"/>

View file

@ -262,6 +262,9 @@
<ClCompile Include="..\..\Source\Application\jucer_DocumentEditorComponent.cpp">
<Filter>The Introjucer\Application</Filter>
</ClCompile>
<ClCompile Include="..\..\Source\Application\jucer_GlobalPreferences.cpp">
<Filter>The Introjucer\Application</Filter>
</ClCompile>
<ClCompile Include="..\..\Source\Application\jucer_Main.cpp">
<Filter>The Introjucer\Application</Filter>
</ClCompile>
@ -340,6 +343,9 @@
<ClCompile Include="..\..\Source\Project Saving\jucer_ResourceFile.cpp">
<Filter>The Introjucer\Project Saving</Filter>
</ClCompile>
<ClCompile Include="..\..\Source\Project\jucer_DependencyPathPropertyComponent.cpp">
<Filter>The Introjucer\Project</Filter>
</ClCompile>
<ClCompile Include="..\..\Source\Project\jucer_Module.cpp">
<Filter>The Introjucer\Project</Filter>
</ClCompile>
@ -1368,6 +1374,9 @@
<ClInclude Include="..\..\Source\Application\jucer_FilePreviewComponent.h">
<Filter>The Introjucer\Application</Filter>
</ClInclude>
<ClInclude Include="..\..\Source\Application\jucer_GlobalPreferences.h">
<Filter>The Introjucer\Application</Filter>
</ClInclude>
<ClInclude Include="..\..\Source\jucer_Headers.h">
<Filter>The Introjucer\Application</Filter>
</ClInclude>
@ -1608,6 +1617,9 @@
<ClInclude Include="..\..\Source\Project\jucer_ConfigTree_Modules.h">
<Filter>The Introjucer\Project</Filter>
</ClInclude>
<ClInclude Include="..\..\Source\Project\jucer_DependencyPathPropertyComponent.h">
<Filter>The Introjucer\Project</Filter>
</ClInclude>
<ClInclude Include="..\..\Source\Project\jucer_GroupInformationComponent.h">
<Filter>The Introjucer\Project</Filter>
</ClInclude>

View file

@ -133,6 +133,7 @@
<ClCompile Include="..\..\Source\Application\jucer_AutoUpdater.cpp"/>
<ClCompile Include="..\..\Source\Application\jucer_CommandLine.cpp"/>
<ClCompile Include="..\..\Source\Application\jucer_DocumentEditorComponent.cpp"/>
<ClCompile Include="..\..\Source\Application\jucer_GlobalPreferences.cpp"/>
<ClCompile Include="..\..\Source\Application\jucer_Main.cpp"/>
<ClCompile Include="..\..\Source\Application\jucer_MainWindow.cpp"/>
<ClCompile Include="..\..\Source\Application\jucer_OpenDocumentManager.cpp"/>
@ -159,6 +160,7 @@
<ClCompile Include="..\..\Source\ComponentEditor\jucer_PaintRoutine.cpp"/>
<ClCompile Include="..\..\Source\Project Saving\jucer_ProjectExporter.cpp"/>
<ClCompile Include="..\..\Source\Project Saving\jucer_ResourceFile.cpp"/>
<ClCompile Include="..\..\Source\Project\jucer_DependencyPathPropertyComponent.cpp"/>
<ClCompile Include="..\..\Source\Project\jucer_Module.cpp"/>
<ClCompile Include="..\..\Source\Project\jucer_Project.cpp"/>
<ClCompile Include="..\..\Source\Project\jucer_ProjectContentComponent.cpp"/>
@ -1069,6 +1071,7 @@
<ClInclude Include="..\..\Source\Application\jucer_CommonHeaders.h"/>
<ClInclude Include="..\..\Source\Application\jucer_DocumentEditorComponent.h"/>
<ClInclude Include="..\..\Source\Application\jucer_FilePreviewComponent.h"/>
<ClInclude Include="..\..\Source\Application\jucer_GlobalPreferences.h"/>
<ClInclude Include="..\..\Source\jucer_Headers.h"/>
<ClInclude Include="..\..\Source\Application\jucer_MainWindow.h"/>
<ClInclude Include="..\..\Source\Application\jucer_OpenDocumentManager.h"/>
@ -1149,6 +1152,7 @@
<ClInclude Include="..\..\Source\Project\jucer_ConfigTree_Base.h"/>
<ClInclude Include="..\..\Source\Project\jucer_ConfigTree_Exporter.h"/>
<ClInclude Include="..\..\Source\Project\jucer_ConfigTree_Modules.h"/>
<ClInclude Include="..\..\Source\Project\jucer_DependencyPathPropertyComponent.h"/>
<ClInclude Include="..\..\Source\Project\jucer_GroupInformationComponent.h"/>
<ClInclude Include="..\..\Source\Project\jucer_Module.h"/>
<ClInclude Include="..\..\Source\Project\jucer_ModulesPanel.h"/>

View file

@ -262,6 +262,9 @@
<ClCompile Include="..\..\Source\Application\jucer_DocumentEditorComponent.cpp">
<Filter>The Introjucer\Application</Filter>
</ClCompile>
<ClCompile Include="..\..\Source\Application\jucer_GlobalPreferences.cpp">
<Filter>The Introjucer\Application</Filter>
</ClCompile>
<ClCompile Include="..\..\Source\Application\jucer_Main.cpp">
<Filter>The Introjucer\Application</Filter>
</ClCompile>
@ -340,6 +343,9 @@
<ClCompile Include="..\..\Source\Project Saving\jucer_ResourceFile.cpp">
<Filter>The Introjucer\Project Saving</Filter>
</ClCompile>
<ClCompile Include="..\..\Source\Project\jucer_DependencyPathPropertyComponent.cpp">
<Filter>The Introjucer\Project</Filter>
</ClCompile>
<ClCompile Include="..\..\Source\Project\jucer_Module.cpp">
<Filter>The Introjucer\Project</Filter>
</ClCompile>
@ -1368,6 +1374,9 @@
<ClInclude Include="..\..\Source\Application\jucer_FilePreviewComponent.h">
<Filter>The Introjucer\Application</Filter>
</ClInclude>
<ClInclude Include="..\..\Source\Application\jucer_GlobalPreferences.h">
<Filter>The Introjucer\Application</Filter>
</ClInclude>
<ClInclude Include="..\..\Source\jucer_Headers.h">
<Filter>The Introjucer\Application</Filter>
</ClInclude>
@ -1608,6 +1617,9 @@
<ClInclude Include="..\..\Source\Project\jucer_ConfigTree_Modules.h">
<Filter>The Introjucer\Project</Filter>
</ClInclude>
<ClInclude Include="..\..\Source\Project\jucer_DependencyPathPropertyComponent.h">
<Filter>The Introjucer\Project</Filter>
</ClInclude>
<ClInclude Include="..\..\Source\Project\jucer_GroupInformationComponent.h">
<Filter>The Introjucer\Project</Filter>
</ClInclude>

View file

@ -133,6 +133,7 @@
<ClCompile Include="..\..\Source\Application\jucer_AutoUpdater.cpp"/>
<ClCompile Include="..\..\Source\Application\jucer_CommandLine.cpp"/>
<ClCompile Include="..\..\Source\Application\jucer_DocumentEditorComponent.cpp"/>
<ClCompile Include="..\..\Source\Application\jucer_GlobalPreferences.cpp"/>
<ClCompile Include="..\..\Source\Application\jucer_Main.cpp"/>
<ClCompile Include="..\..\Source\Application\jucer_MainWindow.cpp"/>
<ClCompile Include="..\..\Source\Application\jucer_OpenDocumentManager.cpp"/>
@ -159,6 +160,7 @@
<ClCompile Include="..\..\Source\ComponentEditor\jucer_PaintRoutine.cpp"/>
<ClCompile Include="..\..\Source\Project Saving\jucer_ProjectExporter.cpp"/>
<ClCompile Include="..\..\Source\Project Saving\jucer_ResourceFile.cpp"/>
<ClCompile Include="..\..\Source\Project\jucer_DependencyPathPropertyComponent.cpp"/>
<ClCompile Include="..\..\Source\Project\jucer_Module.cpp"/>
<ClCompile Include="..\..\Source\Project\jucer_Project.cpp"/>
<ClCompile Include="..\..\Source\Project\jucer_ProjectContentComponent.cpp"/>
@ -1069,6 +1071,7 @@
<ClInclude Include="..\..\Source\Application\jucer_CommonHeaders.h"/>
<ClInclude Include="..\..\Source\Application\jucer_DocumentEditorComponent.h"/>
<ClInclude Include="..\..\Source\Application\jucer_FilePreviewComponent.h"/>
<ClInclude Include="..\..\Source\Application\jucer_GlobalPreferences.h"/>
<ClInclude Include="..\..\Source\jucer_Headers.h"/>
<ClInclude Include="..\..\Source\Application\jucer_MainWindow.h"/>
<ClInclude Include="..\..\Source\Application\jucer_OpenDocumentManager.h"/>
@ -1149,6 +1152,7 @@
<ClInclude Include="..\..\Source\Project\jucer_ConfigTree_Base.h"/>
<ClInclude Include="..\..\Source\Project\jucer_ConfigTree_Exporter.h"/>
<ClInclude Include="..\..\Source\Project\jucer_ConfigTree_Modules.h"/>
<ClInclude Include="..\..\Source\Project\jucer_DependencyPathPropertyComponent.h"/>
<ClInclude Include="..\..\Source\Project\jucer_GroupInformationComponent.h"/>
<ClInclude Include="..\..\Source\Project\jucer_Module.h"/>
<ClInclude Include="..\..\Source\Project\jucer_ModulesPanel.h"/>

View file

@ -262,6 +262,9 @@
<ClCompile Include="..\..\Source\Application\jucer_DocumentEditorComponent.cpp">
<Filter>The Introjucer\Application</Filter>
</ClCompile>
<ClCompile Include="..\..\Source\Application\jucer_GlobalPreferences.cpp">
<Filter>The Introjucer\Application</Filter>
</ClCompile>
<ClCompile Include="..\..\Source\Application\jucer_Main.cpp">
<Filter>The Introjucer\Application</Filter>
</ClCompile>
@ -340,6 +343,9 @@
<ClCompile Include="..\..\Source\Project Saving\jucer_ResourceFile.cpp">
<Filter>The Introjucer\Project Saving</Filter>
</ClCompile>
<ClCompile Include="..\..\Source\Project\jucer_DependencyPathPropertyComponent.cpp">
<Filter>The Introjucer\Project</Filter>
</ClCompile>
<ClCompile Include="..\..\Source\Project\jucer_Module.cpp">
<Filter>The Introjucer\Project</Filter>
</ClCompile>
@ -1368,6 +1374,9 @@
<ClInclude Include="..\..\Source\Application\jucer_FilePreviewComponent.h">
<Filter>The Introjucer\Application</Filter>
</ClInclude>
<ClInclude Include="..\..\Source\Application\jucer_GlobalPreferences.h">
<Filter>The Introjucer\Application</Filter>
</ClInclude>
<ClInclude Include="..\..\Source\jucer_Headers.h">
<Filter>The Introjucer\Application</Filter>
</ClInclude>
@ -1608,6 +1617,9 @@
<ClInclude Include="..\..\Source\Project\jucer_ConfigTree_Modules.h">
<Filter>The Introjucer\Project</Filter>
</ClInclude>
<ClInclude Include="..\..\Source\Project\jucer_DependencyPathPropertyComponent.h">
<Filter>The Introjucer\Project</Filter>
</ClInclude>
<ClInclude Include="..\..\Source\Project\jucer_GroupInformationComponent.h">
<Filter>The Introjucer\Project</Filter>
</ClInclude>

View file

@ -95,7 +95,7 @@
<HeaderFileName/>
</Midl>
<ClCompile>
<Optimization>MinSpace</Optimization>
<Optimization>Full</Optimization>
<AdditionalIncludeDirectories>..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=3.2.0;JUCE_APP_VERSION_HEX=0x30200;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@ -133,6 +133,7 @@
<ClCompile Include="..\..\Source\Application\jucer_AutoUpdater.cpp"/>
<ClCompile Include="..\..\Source\Application\jucer_CommandLine.cpp"/>
<ClCompile Include="..\..\Source\Application\jucer_DocumentEditorComponent.cpp"/>
<ClCompile Include="..\..\Source\Application\jucer_GlobalPreferences.cpp"/>
<ClCompile Include="..\..\Source\Application\jucer_Main.cpp"/>
<ClCompile Include="..\..\Source\Application\jucer_MainWindow.cpp"/>
<ClCompile Include="..\..\Source\Application\jucer_OpenDocumentManager.cpp"/>
@ -159,6 +160,7 @@
<ClCompile Include="..\..\Source\ComponentEditor\jucer_PaintRoutine.cpp"/>
<ClCompile Include="..\..\Source\Project Saving\jucer_ProjectExporter.cpp"/>
<ClCompile Include="..\..\Source\Project Saving\jucer_ResourceFile.cpp"/>
<ClCompile Include="..\..\Source\Project\jucer_DependencyPathPropertyComponent.cpp"/>
<ClCompile Include="..\..\Source\Project\jucer_Module.cpp"/>
<ClCompile Include="..\..\Source\Project\jucer_Project.cpp"/>
<ClCompile Include="..\..\Source\Project\jucer_ProjectContentComponent.cpp"/>
@ -1069,6 +1071,7 @@
<ClInclude Include="..\..\Source\Application\jucer_CommonHeaders.h"/>
<ClInclude Include="..\..\Source\Application\jucer_DocumentEditorComponent.h"/>
<ClInclude Include="..\..\Source\Application\jucer_FilePreviewComponent.h"/>
<ClInclude Include="..\..\Source\Application\jucer_GlobalPreferences.h"/>
<ClInclude Include="..\..\Source\jucer_Headers.h"/>
<ClInclude Include="..\..\Source\Application\jucer_MainWindow.h"/>
<ClInclude Include="..\..\Source\Application\jucer_OpenDocumentManager.h"/>
@ -1149,6 +1152,7 @@
<ClInclude Include="..\..\Source\Project\jucer_ConfigTree_Base.h"/>
<ClInclude Include="..\..\Source\Project\jucer_ConfigTree_Exporter.h"/>
<ClInclude Include="..\..\Source\Project\jucer_ConfigTree_Modules.h"/>
<ClInclude Include="..\..\Source\Project\jucer_DependencyPathPropertyComponent.h"/>
<ClInclude Include="..\..\Source\Project\jucer_GroupInformationComponent.h"/>
<ClInclude Include="..\..\Source\Project\jucer_Module.h"/>
<ClInclude Include="..\..\Source\Project\jucer_ModulesPanel.h"/>
@ -1571,7 +1575,6 @@
<None Include="..\..\..\..\modules\juce_graphics\juce_module_info"/>
<None Include="..\..\..\..\modules\juce_gui_basics\juce_module_info"/>
<None Include="..\..\..\..\modules\juce_gui_extra\juce_module_info"/>
<None Include=".\icon.ico"/>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include=".\resources.rc"/>

View file

@ -262,6 +262,9 @@
<ClCompile Include="..\..\Source\Application\jucer_DocumentEditorComponent.cpp">
<Filter>The Introjucer\Application</Filter>
</ClCompile>
<ClCompile Include="..\..\Source\Application\jucer_GlobalPreferences.cpp">
<Filter>The Introjucer\Application</Filter>
</ClCompile>
<ClCompile Include="..\..\Source\Application\jucer_Main.cpp">
<Filter>The Introjucer\Application</Filter>
</ClCompile>
@ -340,6 +343,9 @@
<ClCompile Include="..\..\Source\Project Saving\jucer_ResourceFile.cpp">
<Filter>The Introjucer\Project Saving</Filter>
</ClCompile>
<ClCompile Include="..\..\Source\Project\jucer_DependencyPathPropertyComponent.cpp">
<Filter>The Introjucer\Project</Filter>
</ClCompile>
<ClCompile Include="..\..\Source\Project\jucer_Module.cpp">
<Filter>The Introjucer\Project</Filter>
</ClCompile>
@ -1368,6 +1374,9 @@
<ClInclude Include="..\..\Source\Application\jucer_FilePreviewComponent.h">
<Filter>The Introjucer\Application</Filter>
</ClInclude>
<ClInclude Include="..\..\Source\Application\jucer_GlobalPreferences.h">
<Filter>The Introjucer\Application</Filter>
</ClInclude>
<ClInclude Include="..\..\Source\jucer_Headers.h">
<Filter>The Introjucer\Application</Filter>
</ClInclude>
@ -1608,6 +1617,9 @@
<ClInclude Include="..\..\Source\Project\jucer_ConfigTree_Modules.h">
<Filter>The Introjucer\Project</Filter>
</ClInclude>
<ClInclude Include="..\..\Source\Project\jucer_DependencyPathPropertyComponent.h">
<Filter>The Introjucer\Project</Filter>
</ClInclude>
<ClInclude Include="..\..\Source\Project\jucer_GroupInformationComponent.h">
<Filter>The Introjucer\Project</Filter>
</ClInclude>
@ -2870,9 +2882,6 @@
<None Include="..\..\..\..\modules\juce_gui_extra\juce_module_info">
<Filter>Juce Modules\juce_gui_extra</Filter>
</None>
<None Include=".\icon.ico">
<Filter>Juce Library Code</Filter>
</None>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include=".\resources.rc">

View file

@ -28,6 +28,3 @@ BEGIN
END
#endif
IDI_ICON1 ICON DISCARDABLE "icon.ico"
IDI_ICON2 ICON DISCARDABLE "icon.ico"

View file

@ -170,6 +170,23 @@
<MODULEPATH id="juce_core" path="../../modules"/>
</MODULEPATHS>
</CODEBLOCKS>
<VS2015 targetFolder="Builds/VisualStudio2015">
<CONFIGURATIONS>
<CONFIGURATION name="Debug" winWarningLevel="4" generateManifest="1" winArchitecture="32-bit"
isDebug="1" optimisation="1" targetName="The Introjucer"/>
<CONFIGURATION name="Release" winWarningLevel="4" generateManifest="1" winArchitecture="32-bit"
isDebug="0" optimisation="3" targetName="The Introjucer"/>
</CONFIGURATIONS>
<MODULEPATHS>
<MODULEPATH id="juce_gui_extra" path="../../modules"/>
<MODULEPATH id="juce_gui_basics" path="../../modules"/>
<MODULEPATH id="juce_graphics" path="../../modules"/>
<MODULEPATH id="juce_events" path="../../modules"/>
<MODULEPATH id="juce_data_structures" path="../../modules"/>
<MODULEPATH id="juce_cryptography" path="../../modules"/>
<MODULEPATH id="juce_core" path="../../modules"/>
</MODULEPATHS>
</VS2015>
</EXPORTFORMATS>
<MAINGROUP name="The Introjucer" id="NhrJq66R">
<GROUP id="mslFIKZ" name="Application">
@ -197,6 +214,10 @@
resource="0" file="Source/Application/jucer_DocumentEditorComponent.h"/>
<FILE id="C4MqR1U" name="jucer_FilePreviewComponent.h" compile="0"
resource="0" file="Source/Application/jucer_FilePreviewComponent.h"/>
<FILE id="Dj0hhq" name="jucer_GlobalPreferences.cpp" compile="1" resource="0"
file="Source/Application/jucer_GlobalPreferences.cpp"/>
<FILE id="PCFpKh" name="jucer_GlobalPreferences.h" compile="0" resource="0"
file="Source/Application/jucer_GlobalPreferences.h"/>
<FILE id="qXOJtpg" name="jucer_Headers.h" compile="0" resource="0"
file="Source/jucer_Headers.h"/>
<FILE id="ga7xgxf" name="jucer_Main.cpp" compile="1" resource="0" file="Source/Application/jucer_Main.cpp"/>
@ -426,6 +447,10 @@
file="Source/Project/jucer_ConfigTree_Exporter.h"/>
<FILE id="OO3lfM" name="jucer_ConfigTree_Modules.h" compile="0" resource="0"
file="Source/Project/jucer_ConfigTree_Modules.h"/>
<FILE id="S2W7Wj" name="jucer_DependencyPathPropertyComponent.cpp"
compile="1" resource="0" file="Source/Project/jucer_DependencyPathPropertyComponent.cpp"/>
<FILE id="hp5z1D" name="jucer_DependencyPathPropertyComponent.h" compile="0"
resource="0" file="Source/Project/jucer_DependencyPathPropertyComponent.h"/>
<FILE id="sQjHbVN" name="jucer_GroupInformationComponent.h" compile="0"
resource="0" file="Source/Project/jucer_GroupInformationComponent.h"/>
<FILE id="MJkOAX" name="jucer_Module.cpp" compile="1" resource="0"

View file

@ -24,6 +24,7 @@
#include "jucer_Application.h"
#include "jucer_AppearanceSettings.h"
#include "jucer_GlobalPreferences.h"
namespace AppearanceColours
{
@ -285,249 +286,6 @@ bool AppearanceSettings::getColour (const String& name, Colour& result) const
return false;
}
//==============================================================================
struct AppearanceEditor
{
class FontScanPanel : public Component,
private Timer
{
public:
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 (DialogWindow* w = findParentComponentOfClass<DialogWindow>())
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 <PropertyComponent*> 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<int> 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<var> values;
values.add (Font::getDefaultMonospacedFontName());
values.add (var());
for (int i = 0; i < fontNames.size(); ++i)
values.add (fontNames[i]);
StringArray names;
names.add ("<Default Monospaced>");
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<Component>& 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()
{

View file

@ -54,7 +54,7 @@ public:
static Font getDefaultCodeFont();
static void showEditorWindow (ScopedPointer<Component>& ownerPointer);
static void showGlobalPreferences (ScopedPointer<Component>& ownerPointer);
static const char* getSchemeFileSuffix() { return ".scheme"; }
static const char* getSchemeFileWildCard() { return "*.scheme"; }

View file

@ -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<ApplicationCommandManager> commandManager;
ScopedPointer<Component> appearanceEditorWindow, utf8Window, svgPathWindow;
ScopedPointer<Component> appearanceEditorWindow, globalPreferencesWindow, utf8Window, svgPathWindow;
ScopedPointer<FileLogger> logger;

View file

@ -42,7 +42,7 @@ namespace CommandIDs
saveAndOpenInIDE = 0x200073,
showUTF8Tool = 0x200076,
showAppearanceSettings = 0x200077,
showGlobalPreferences = 0x200077,
showConfigPanel = 0x200074,
showFilePanel = 0x200078,
showTranslationTool = 0x200079,

View file

@ -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<Component> 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<AppearanceSettingsTab>())
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<PropertyComponent*> 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<int> 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<var> values;
values.add (Font::getDefaultMonospacedFontName());
values.add (var());
for (int i = 0; i < fontNames.size(); ++i)
values.add (fontNames[i]);
StringArray names;
names.add ("<Default Monospaced>");
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<Component>& 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<int>());
}
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);
}

View file

@ -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<TextPropertyComponent> 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<GlobalPreferencesTab> preferenceTabs;
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (GlobalPreferencesComponent)
};
#endif // JUCER_GLOBALPREFERENCES_H_INCLUDED

View file

@ -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());
}

View file

@ -281,13 +281,13 @@ private:
: ComponentTextProperty <ComboBox> ("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 <ComboBox> ("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 <ComboBox> ("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();
}

View file

@ -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);
}

View file

@ -264,13 +264,13 @@ public:
{
}
String getText() const
String getText() const override
{
SettableTooltipClient* ttc = dynamic_cast <SettableTooltipClient*> (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");

View file

@ -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;
}

View file

@ -116,13 +116,13 @@ private:
: ComponentTextProperty <GroupComponent> ("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();
}

View file

@ -94,13 +94,13 @@ private:
: ComponentTextProperty <HyperlinkButton> ("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);
}

View file

@ -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();
}

View file

@ -193,13 +193,13 @@ private:
: ComponentTextProperty <Label> ("text", 10000, true, comp, doc)
{}
void setText (const String& newText)
void setText (const String& newText) override
{
document.perform (new LabelTextChangeAction (component, *document.getComponentLayout(), newText),
"Change Label text");
}
String getText() const
String getText() const override
{
return component->getText();
}

View file

@ -406,13 +406,13 @@ private:
{
}
void setText (const String& newText)
void setText (const String& newText) override
{
document.perform (new SliderBoxSizeChangeAction (component, *document.getComponentLayout(), isWidth, newText.getIntValue()),
"Change Slider textbox size");
}
String getText() const
String getText() const override
{
return String (isWidth ? component->getTextBoxWidth()
: component->getTextBoxHeight());
@ -487,7 +487,7 @@ private:
{
}
void setText (const String& newText)
void setText (const String& newText) override
{
double state [3];
state [0] = component->getMinimum();
@ -500,7 +500,7 @@ private:
"Change Slider range");
}
String getText() const
String getText() const override
{
Slider* s = dynamic_cast <Slider*> (component);
jassert (s != nullptr);
@ -563,7 +563,7 @@ private:
{
}
void setText (const String& newText)
void setText (const String& newText) override
{
const double skew = jlimit (0.001, 1000.0, newText.getDoubleValue());
@ -571,7 +571,7 @@ private:
"Change Slider skew");
}
String getText() const
String getText() const override
{
Slider* s = dynamic_cast <Slider*> (component);
jassert (s != 0);

View file

@ -726,13 +726,13 @@ private:
{
}
void setText (const String& newText)
void setText (const String& newText) override
{
document.perform (new TabNameChangeAction (component, *document.getComponentLayout(), tabIndex, newText),
"Change tab name");
}
String getText() const
String getText() const override
{
return component->getTabNames() [tabIndex];
}
@ -994,13 +994,13 @@ private:
{
}
void setText (const String& newText)
void setText (const String& newText) override
{
document.perform (new TabClassNameChangeAction (component, *document.getComponentLayout(), tabIndex, newText),
"Change TabbedComponent content class");
}
String getText() const
String getText() const override
{
return getTabClassName (component, tabIndex);
}
@ -1052,13 +1052,13 @@ private:
{
}
void setText (const String& newText)
void setText (const String& newText) override
{
document.perform (new TabConstructorParamChangeAction (component, *document.getComponentLayout(), tabIndex, newText),
"Change TabbedComponent content constructor param");
}
String getText() const
String getText() const override
{
return getTabConstructorParams (component, tabIndex);
}

View file

@ -378,13 +378,13 @@ private:
: ComponentTextProperty <TextEditor> ("initial text", 10000, true, comp, doc)
{}
void setText (const String& newText)
void setText (const String& newText) override
{
document.perform (new TextEditorInitialTextChangeAction (component, *document.getComponentLayout(), newText),
"Change TextEditor initial text");
}
String getText() const
String getText() const override
{
return component->getProperties() ["initialText"];
}

View file

@ -559,13 +559,13 @@ private:
{
}
void setText (const String& newText)
void setText (const String& newText) override
{
document.perform (new ViewportClassNameChangeAction (component, *document.getComponentLayout(), newText),
"Change Viewport content class");
}
String getText() const
String getText() const override
{
return getViewportGenericComponentClass (component);
}
@ -612,13 +612,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 getViewportConstructorParams (component);
}

View file

@ -385,8 +385,8 @@ private:
element->getDocument()->removeChangeListener (this);
}
void setText (const String& newText) { element->setText (newText, true); }
String getText() const { return element->getText(); }
void setText (const String& newText) override { element->setText (newText, true); }
String getText() const override { return element->getText(); }
void changeListenerCallback (ChangeBroadcaster*) { refresh(); }

View file

@ -24,6 +24,7 @@
#include "../../jucer_Headers.h"
#include "../../Application/jucer_AppearanceSettings.h"
#include "../../Application/jucer_GlobalPreferences.h"
#include "../../Application/jucer_Application.h"
#include "jucer_JucerDocumentEditor.h"
#include "jucer_TestComponent.h"
@ -187,8 +188,8 @@ private:
: ComponentTextProperty <Component> ("Class name", 128, false, 0, doc)
{}
void setText (const String& newText) { document.setClassName (newText); }
String getText() const { return document.getClassName(); }
void setText (const String& newText) override { document.setClassName (newText); }
String getText() const override { return document.getClassName(); }
};
//==============================================================================
@ -199,8 +200,8 @@ private:
: ComponentTextProperty <Component> ("Component name", 200, false, 0, doc)
{}
void setText (const String& newText) { document.setComponentName (newText); }
String getText() const { return document.getComponentName(); }
void setText (const String& newText) override { document.setComponentName (newText); }
String getText() const override { return document.getComponentName(); }
};
//==============================================================================
@ -211,8 +212,8 @@ private:
: ComponentTextProperty <Component> ("Parent classes", 512, false, 0, doc)
{}
void setText (const String& newText) { document.setParentClasses (newText); }
String getText() const { return document.getParentClassString(); }
void setText (const String& newText) override { document.setParentClasses (newText); }
String getText() const override { return document.getParentClassString(); }
};
//==============================================================================
@ -223,8 +224,8 @@ private:
: ComponentTextProperty <Component> ("Constructor params", 2048, false, 0, doc)
{}
void setText (const String& newText) { document.setConstructorParams (newText); }
String getText() const { return document.getConstructorParams(); }
void setText (const String& newText) override { document.setConstructorParams (newText); }
String getText() const override { return document.getConstructorParams(); }
};
//==============================================================================
@ -237,8 +238,8 @@ private:
preferredHeight = 24 * 3;
}
void setText (const String& newText) { document.setVariableInitialisers (newText); }
String getText() const { return document.getVariableInitialisers(); }
void setText (const String& newText) override { document.setVariableInitialisers (newText); }
String getText() const override { return document.getVariableInitialisers(); }
};
@ -253,7 +254,7 @@ private:
isWidth (isWidth_)
{}
void setText (const String& newText)
void setText (const String& newText) override
{
if (isWidth)
document.setInitialSize (newText.getIntValue(), document.getInitialHeight());
@ -261,7 +262,7 @@ private:
document.setInitialSize (document.getInitialWidth(), newText.getIntValue());
}
String getText() const
String getText() const override
{
return String (isWidth ? document.getInitialWidth()
: document.getInitialHeight());
@ -294,8 +295,8 @@ private:
: ComponentTextProperty <Component> ("Template file", 2048, false, 0, doc)
{}
void setText (const String& newText) { document.setTemplateFile (newText); }
String getText() const { return document.getTemplateFile(); }
void setText (const String& newText) override { document.setTemplateFile (newText); }
String getText() const override { return document.getTemplateFile(); }
};
};

View file

@ -51,9 +51,6 @@ public:
if (getActivityClassPath().isEmpty())
getActivityClassPathValue() = createDefaultClassName();
if (getSDKPathString().isEmpty()) getSDKPathValue() = "${user.home}/SDKs/android-sdk";
if (getNDKPathString().isEmpty()) getNDKPathValue() = "${user.home}/SDKs/android-ndk";
if (getMinimumSDKVersionString().isEmpty())
getMinimumSDKVersionValue() = 10;
@ -86,10 +83,10 @@ public:
props.add (new TextPropertyComponent (getVersionCodeValue(), "Android Version Code", 32, false),
"An integer value that represents the version of the application code, relative to other versions.");
props.add (new TextPropertyComponent (getSDKPathValue(), "Android SDK Path", 1024, false),
props.add (new DependencyPathPropertyComponent (getSDKPathValue(), "Android SDK Path", PathSettingsTab::androidSdkKeyName),
"The path to the Android SDK folder on the target build machine");
props.add (new TextPropertyComponent (getNDKPathValue(), "Android NDK Path", 1024, false),
props.add (new DependencyPathPropertyComponent (getNDKPathValue(), "Android NDK Path", PathSettingsTab::androidNdkKeyName),
"The path to the Android NDK folder on the target build machine");
props.add (new TextPropertyComponent (getMinimumSDKVersionValue(), "Minimum SDK version", 32, false),

View file

@ -28,6 +28,8 @@
#include "../jucer_Headers.h"
#include "../Project/jucer_Project.h"
#include "../Project/jucer_ProjectType.h"
#include "../Application/jucer_GlobalPreferences.h"
class ProjectSaver;
//==============================================================================

View file

@ -25,6 +25,7 @@
#ifndef JUCER_AUDIOPLUGINMODULE_H_INCLUDED
#define JUCER_AUDIOPLUGINMODULE_H_INCLUDED
#include "../Application/jucer_GlobalPreferences.h"
//==============================================================================
namespace
@ -222,6 +223,17 @@ namespace
exporter.rebaseFromProjectFolderToBuildTarget (path)
.toWindowsStyle());
}
DependencyPathOS getDependencyPathOS (const ProjectExporter& exporter)
{
if (exporter.isWindows()) return DependencyPath::windows;
if (exporter.isXcode()) return DependencyPath::osx;
if (exporter.isLinux()) return DependencyPath::linux;
// cannot figure out which OS's dependency paths this exporter wants!!
jassertfalse;
return DependencyPath::unknown;
}
}
//==============================================================================
@ -252,22 +264,16 @@ namespace VSTHelpers
{
const String vstFormat (isVST3 ? "VST3" : "VST");
props.add (new TextPropertyComponent (getVSTFolder (exporter, isVST3), vstFormat + " Folder", 1024, false),
props.add (new DependencyPathPropertyComponent (getVSTFolder (exporter, isVST3),
vstFormat + " Folder",
isVST3 ? PathSettingsTab::vst3KeyName : PathSettingsTab::vst2KeyName,
getDependencyPathOS (exporter)),
"If you're building a " + vstFormat + ", this must be the folder containing the " + vstFormat + " SDK. This should be an absolute path.");
}
static void fixMissingVSTValues (ProjectExporter& exporter, bool isVST3)
{
if (getVSTFolder (exporter, isVST3).toString().isEmpty())
getVSTFolder (exporter, isVST3) = exporter.isWindows() ? (isVST3 ? "c:\\SDKs\\VST3 SDK" : "c:\\SDKs\\vstsdk2.4")
: (isVST3 ? "~/SDKs/VST3 SDK" : "~/SDKs/vstsdk2.4");
fixMissingXcodePostBuildScript (exporter);
}
static inline void prepareExporter (ProjectExporter& exporter, ProjectSaver& projectSaver, bool isVST3)
{
fixMissingVSTValues (exporter, isVST3);
fixMissingXcodePostBuildScript (exporter);
writePluginCharacteristicsFile (projectSaver);
exporter.makefileTargetSuffix = ".so";
@ -312,7 +318,7 @@ namespace VSTHelpers
static inline void createPropertyEditors (ProjectExporter& exporter, PropertyListBuilder& props, bool isVST3)
{
fixMissingVSTValues (exporter, isVST3);
fixMissingXcodePostBuildScript (exporter);
createVSTPathEditor (exporter, props, isVST3);
}
}
@ -326,19 +332,6 @@ namespace RTASHelpers
static bool isExporterSupported (ProjectExporter& exporter) { return exporter.isVisualStudio() || exporter.isXcode(); }
static void fixMissingRTASValues (ProjectExporter& exporter)
{
if (getRTASFolder (exporter).toString().isEmpty())
{
if (exporter.isVisualStudio())
getRTASFolder (exporter) = "c:\\SDKs\\PT_80_SDK";
else
getRTASFolder (exporter) = "~/SDKs/PT_80_SDK";
}
fixMissingXcodePostBuildScript (exporter);
}
static void addExtraSearchPaths (ProjectExporter& exporter)
{
RelativePath rtasFolder (getRTASFolderPath (exporter));
@ -424,7 +417,7 @@ namespace RTASHelpers
{
if (isExporterSupported (exporter))
{
fixMissingRTASValues (exporter);
fixMissingXcodePostBuildScript (exporter);
const RelativePath rtasFolder (getRTASFolderPath (exporter));
@ -479,9 +472,12 @@ namespace RTASHelpers
{
if (isExporterSupported (exporter))
{
fixMissingRTASValues (exporter);
fixMissingXcodePostBuildScript (exporter);
props.add (new TextPropertyComponent (getRTASFolder (exporter), "RTAS Folder", 1024, false),
props.add (new DependencyPathPropertyComponent (getRTASFolder (exporter),
"RTAS Folder",
PathSettingsTab::rtasKeyName,
getDependencyPathOS (exporter)),
"If you're building an RTAS, this must be the folder containing the RTAS SDK. This should be an absolute path.");
}
}
@ -621,19 +617,6 @@ namespace AAXHelpers
static bool isExporterSupported (ProjectExporter& exporter) { return exporter.isVisualStudio() || exporter.isXcode(); }
static void fixMissingAAXValues (ProjectExporter& exporter)
{
if (getAAXFolder (exporter).toString().isEmpty())
{
if (exporter.isVisualStudio())
getAAXFolder (exporter) = "c:\\SDKs\\AAX";
else
getAAXFolder (exporter) = "~/SDKs/AAX";
}
fixMissingXcodePostBuildScript (exporter);
}
static void addExtraSearchPaths (ProjectExporter& exporter)
{
const RelativePath aaxFolder (getAAXFolderPath (exporter));
@ -647,7 +630,7 @@ namespace AAXHelpers
{
if (isExporterSupported (exporter))
{
fixMissingAAXValues (exporter);
fixMissingXcodePostBuildScript (exporter);
const RelativePath aaxLibsFolder (getAAXFolderPath (exporter).getChildFile ("Libs"));
@ -676,9 +659,12 @@ namespace AAXHelpers
{
if (isExporterSupported (exporter))
{
fixMissingAAXValues (exporter);
fixMissingXcodePostBuildScript (exporter);
props.add (new TextPropertyComponent (getAAXFolder (exporter), "AAX SDK Folder", 1024, false),
props.add (new DependencyPathPropertyComponent (getAAXFolder (exporter),
"AAX SDK Folder",
PathSettingsTab::aaxKeyName,
getDependencyPathOS (exporter)),
"If you're building an AAX, this must be the folder containing the AAX SDK. This should be an absolute path.");
}
}

View file

@ -0,0 +1,91 @@
/*
==============================================================================
jucer_GlobalDefaultedTextPropertyComponent.cpp
Created: 27 Jul 2015 10:42:17am
Author: Joshua Gerrard
==============================================================================
*/
#include "../jucer_Headers.h"
#include "jucer_DependencyPathPropertyComponent.h"
#include "../Application/jucer_GlobalPreferences.h"
//==============================================================================
DependencyPathPropertyComponent::DependencyPathPropertyComponent (const Value& value,
const String& propertyName,
const String& globalKeyName,
DependencyPathOS os)
: TextPropertyComponent (propertyName, 1024, false),
globalKey (globalKeyName),
pathValueSource (new DependencyPathValueSource (value,
PathSettingsTab::getPathByKey (globalKeyName, os),
PathSettingsTab::getFallbackPathByKey (globalKeyName, os),
os)),
pathValue (pathValueSource)
{
bool initialValueIsEmpty = value.toString().isEmpty();
getValue().referTo (pathValue);
if (initialValueIsEmpty)
getValue().setValue (String::empty);
getValue().addListener (this);
setColour (textColourId, getTextColourToDisplay());
if (Label* label = dynamic_cast<Label*> (getChildComponent (0)))
label->addListener (this);
else
jassertfalse;
}
void DependencyPathPropertyComponent::valueChanged (Value& value)
{
// this callback handles the update of this setting in case
// the user changed the global preferences.
if (value.refersToSameSourceAs (pathValue) && pathValueSource->isUsingGlobalSettings())
textWasEdited();
}
void DependencyPathPropertyComponent::textWasEdited()
{
setColour (textColourId, getTextColourToDisplay());
TextPropertyComponent::textWasEdited();
}
Colour DependencyPathPropertyComponent::getTextColourToDisplay() const
{
if (! pathValueSource->isUsingProjectSettings())
return isValidPath() ? Colours::grey
: Colours::lightpink;
return isValidPath() ? Colours::black
: Colours::red;
}
bool DependencyPathPropertyComponent::isValidPath() const
{
// if we are on another OS than the one which this path setting is for,
// we have no way of knowing whether the path is valid - so just assume it is:
if (! pathValueSource->appliesToThisOS())
return true;
return PathSettingsTab::checkPathByKey (globalKey, getValue().toString());
}
void DependencyPathPropertyComponent::labelTextChanged (Label*)
{
}
void DependencyPathPropertyComponent::editorShown (Label* /*label*/, TextEditor& textEditor)
{
if (! pathValueSource->isUsingProjectSettings())
textEditor.setText (String::empty, dontSendNotification);
}
void DependencyPathPropertyComponent::editorHidden (Label*, TextEditor&)
{
}

View file

@ -0,0 +1,198 @@
/*
==============================================================================
jucer_GlobalDefaultedTextPropertyComponent.h
Created: 27 Jul 2015 10:42:17am
Author: Joshua Gerrard
==============================================================================
*/
#ifndef JUCER_DEPENDENCYPATHPROPERTYCOMPONENT_H_INCLUDED
#define JUCER_DEPENDENCYPATHPROPERTYCOMPONENT_H_INCLUDED
//==============================================================================
namespace DependencyPath
{
enum OS
{
windows = 0,
osx,
linux,
unknown
};
static OS getThisOS()
{
#if JUCE_WINDOWS
return DependencyPath::windows;
#elif JUCE_MAC
return DependencyPath::osx;
#elif JUCE_LINUX
return DependencyPath::linux;
#else
return DependencyPath::unknown;
#endif
}
};
typedef DependencyPath::OS DependencyPathOS;
//==============================================================================
/** This ValueSource type implements the fallback logic required for dependency
path settings: use the project exporter value; if this is empty, fall back to
the global preference value; if the exporter is supposed to run on another
OS and we don't know what the global preferences on that other machine are,
fall back to a generic OS-specific fallback value.
*/
class DependencyPathValueSource : public Value::ValueSource,
private Value::Listener
{
public:
DependencyPathValueSource (const Value& projectSettingsPath,
const Value& globalSettingsPath,
const String& fallbackPath,
DependencyPathOS osThisSettingAppliesTo)
: projectSettingsValue (projectSettingsPath),
globalSettingsValue (globalSettingsPath),
fallbackValue (fallbackPath),
os (osThisSettingAppliesTo)
{
globalSettingsValue.addListener (this);
}
/** This gets the currently used value, which may be either
the project setting, the global setting, or the fallback value. */
var getValue() const override
{
if (isUsingProjectSettings())
return projectSettingsValue;
if (isUsingGlobalSettings())
return globalSettingsValue;
return fallbackValue;
}
void setValue (const var& newValue) override
{
projectSettingsValue = newValue;
if (isUsingProjectSettings())
sendChangeMessage (false);
}
bool isUsingProjectSettings() const
{
return projectSettingsValueIsValid();
}
bool isUsingGlobalSettings() const
{
return ! projectSettingsValueIsValid() && globalSettingsValueIsValid();
}
bool isUsingFallbackValue() const
{
return ! projectSettingsValueIsValid() && !globalSettingsValueIsValid();
}
bool appliesToThisOS() const
{
return os == DependencyPath::getThisOS();
}
private:
void valueChanged (Value& value) override
{
if ((value.refersToSameSourceAs (globalSettingsValue) && isUsingGlobalSettings()))
{
sendChangeMessage (true);
setValue (String::empty); // make sure that the project-specific value is still blank
}
}
/** This defines when to use the project setting, and when to
consider it invalid and to fall back to the global setting or
the fallback value. */
bool projectSettingsValueIsValid() const
{
return ! projectSettingsValue.toString().isEmpty();
}
/** This defines when to use the global setting - given the project setting
is invalid, and when to fall back to the fallback value instead. */
bool globalSettingsValueIsValid() const
{
// only use the global settings if they are set on the same OS
// that this setting is for!
DependencyPathOS thisOS = DependencyPath::getThisOS();
return thisOS == DependencyPath::unknown ? false : os == thisOS;
}
/** the dependency path setting as set in this Introjucer project. */
Value projectSettingsValue;
/** the dependency path global setting on this machine.
used when there value set for this project is invalid. */
Value globalSettingsValue;
/** the dependency path fallback setting. used instead of the global setting
whenever the latter doesn't apply, e.g. the setting is for another
OS than the ome this machine is running. */
String fallbackValue;
/** on what operating system should this dependency path be used?
note that this is *not* the os that is targeted by the project,
but rather the os on which the project will be compiled
(= on which the path settings need to be set correctly). */
DependencyPathOS os;
};
//==============================================================================
class DependencyPathPropertyComponent : public TextPropertyComponent,
private Value::Listener,
private Label::Listener
{
public:
DependencyPathPropertyComponent (const Value& value,
const String& propertyName,
const String& globalKey,
DependencyPathOS os = DependencyPath::getThisOS());
private:
/** This function defines what colour the label text should assume
depending on the current state of the value the component tracks. */
Colour getTextColourToDisplay() const;
/** This function handles path changes because of user input. */
void textWasEdited() override;
/** This function handles path changes because the global path changed. */
void valueChanged (Value& value) override;
/** Check if the current value is a valid path. */
bool isValidPath() const;
/** the property key of the global property that this component is tracking. */
String globalKey;
/** the value source of this dependency path setting. */
DependencyPathValueSource* pathValueSource;
/** the value object around the value source. */
Value pathValue;
// Label::Listener overrides:
void labelTextChanged (Label* labelThatHasChanged) override;
void editorShown (Label*, TextEditor&) override;
void editorHidden (Label*, TextEditor&) override;
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (DependencyPathPropertyComponent)
};
#endif // JUCER_DEPENDENCYPATHPROPERTYCOMPONENT_H_INCLUDED

View file

@ -23,6 +23,11 @@
*/
//==============================================================================
#ifndef JUCER_MISCUTILITIES_H_INCLUDED
#define JUCER_MISCUTILITIES_H_INCLUDED
String hexString8Digits (int value);
String createAlphaNumericUID();
@ -496,3 +501,5 @@ private:
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (FilePathPropertyComponent)
};
#endif // JUCER_MISCUTILITIES_H_INCLUDED

View file

@ -25,6 +25,7 @@
#include "../jucer_Headers.h"
#include "jucer_StoredSettings.h"
#include "../Application/jucer_Application.h"
#include "../Application/jucer_GlobalPreferences.h"
//==============================================================================
StoredSettings& getAppSettings()
@ -39,13 +40,15 @@ PropertiesFile& getGlobalProperties()
//==============================================================================
StoredSettings::StoredSettings()
: appearance (true)
: appearance (true), projectDefaults ("PROJECT_DEFAULT_SETTINGS")
{
reload();
projectDefaults.addListener (this);
}
StoredSettings::~StoredSettings()
{
projectDefaults.removeListener (this);
flush();
}
@ -76,31 +79,43 @@ PropertiesFile& StoredSettings::getProjectProperties (const String& projectUID)
return *p;
}
void StoredSettings::updateGlobalProps()
void StoredSettings::updateGlobalPreferences()
{
PropertiesFile& props = getGlobalProperties();
// update global settings editable from the global preferences window
updateAppearanceSettings();
{
const ScopedPointer<XmlElement> xml (appearance.settings.createXml());
props.setValue ("editorColours", xml);
}
// update 'invisible' global settings
updateRecentFiles();
updateKeyMappings();
}
props.setValue ("recentFiles", recentFiles.toString());
void StoredSettings::updateAppearanceSettings()
{
const ScopedPointer<XmlElement> xml (appearance.settings.createXml());
getGlobalProperties().setValue ("editorColours", xml);
}
props.removeValue ("keyMappings");
void StoredSettings::updateRecentFiles()
{
getGlobalProperties().setValue ("recentFiles", recentFiles.toString());
}
void StoredSettings::updateKeyMappings()
{
getGlobalProperties().removeValue ("keyMappings");
if (ApplicationCommandManager* commandManager = IntrojucerApp::getApp().commandManager)
{
const ScopedPointer <XmlElement> keys (commandManager->getKeyMappings()->createXml (true));
const ScopedPointer<XmlElement> keys (commandManager->getKeyMappings()->createXml (true));
if (keys != nullptr)
props.setValue ("keyMappings", keys);
getGlobalProperties().setValue ("keyMappings", keys);
}
}
void StoredSettings::flush()
{
updateGlobalProps();
updateGlobalPreferences();
saveSwatchColours();
for (int i = propertyFiles.size(); --i >= 0;)
@ -112,6 +127,11 @@ void StoredSettings::reload()
propertyFiles.clear();
propertyFiles.add (createPropsFile ("Introjucer"));
ScopedPointer<XmlElement> projectDefaultsXml (propertyFiles.getFirst()->getXmlValue ("PROJECT_DEFAULT_SETTINGS"));
if (projectDefaultsXml != nullptr)
projectDefaults = ValueTree::fromXml (*projectDefaultsXml);
// recent files...
recentFiles.restoreFromString (getGlobalProperties().getValue ("recentFiles"));
recentFiles.removeNonExistentFiles();

View file

@ -25,11 +25,11 @@
#ifndef JUCER_STOREDSETTINGS_H_INCLUDED
#define JUCER_STOREDSETTINGS_H_INCLUDED
#include <map>
#include "../Application/jucer_AppearanceSettings.h"
//==============================================================================
class StoredSettings
class StoredSettings : public ValueTree::Listener
{
public:
StoredSettings();
@ -41,6 +41,13 @@ public:
void flush();
void reload();
//==============================================================================
void valueTreePropertyChanged (ValueTree&, const Identifier&) override { changed(); }
void valueTreeChildAdded (ValueTree&, ValueTree&) override { changed(); }
void valueTreeChildRemoved (ValueTree&, ValueTree&, int) override { changed(); }
void valueTreeChildOrderChanged (ValueTree&, int, int) override { changed(); }
void valueTreeParentChanged (ValueTree&) override { changed(); }
//==============================================================================
RecentlyOpenedFilesList recentFiles;
@ -50,9 +57,8 @@ public:
//==============================================================================
Array<Colour> swatchColours;
class ColourSelectorWithSwatches : public ColourSelector
struct ColourSelectorWithSwatches : public ColourSelector
{
public:
ColourSelectorWithSwatches() {}
int getNumSwatches() const override;
@ -65,10 +71,23 @@ public:
StringArray monospacedFontNames;
ValueTree projectDefaults;
std::map<String, Value> pathValues;
private:
OwnedArray<PropertiesFile> propertyFiles;
void updateGlobalProps();
void changed()
{
ScopedPointer<XmlElement> data (projectDefaults.createXml());
propertyFiles.getUnchecked (0)->setValue ("PROJECT_DEFAULT_SETTINGS", data);
}
void updateGlobalPreferences();
void updateAppearanceSettings();
void updateRecentFiles();
void updateKeyMappings();
void loadSwatchColours();
void saveSwatchColours();

View file

@ -34,9 +34,7 @@ public:
{
setEditable (true, true, false);
setColour (backgroundColourId, owner.findColour (TextPropertyComponent::backgroundColourId));
setColour (outlineColourId, owner.findColour (TextPropertyComponent::outlineColourId));
setColour (textColourId, owner.findColour (TextPropertyComponent::textColourId));
updateColours();
}
bool isInterestedInFileDrag (const StringArray&) override
@ -69,6 +67,14 @@ public:
owner.textWasEdited();
}
void updateColours()
{
setColour (backgroundColourId, owner.findColour (TextPropertyComponent::backgroundColourId));
setColour (outlineColourId, owner.findColour (TextPropertyComponent::outlineColourId));
setColour (textColourId, owner.findColour (TextPropertyComponent::textColourId));
repaint();
}
private:
TextPropertyComponent& owner;
int maxChars;
@ -109,6 +115,11 @@ String TextPropertyComponent::getText() const
return textEditor->getText();
}
Value& TextPropertyComponent::getValue() const
{
return textEditor->getTextValue();
}
void TextPropertyComponent::createEditor (const int maxNumChars, const bool isMultiLine)
{
addAndMakeVisible (textEditor = new LabelComp (*this, maxNumChars, isMultiLine));
@ -127,8 +138,27 @@ void TextPropertyComponent::refresh()
void TextPropertyComponent::textWasEdited()
{
const String newText (textEditor->getText());
if (getText() != newText)
setText (newText);
callListeners();
}
void TextPropertyComponent::addListener (TextPropertyComponentListener* const listener)
{
listenerList.add (listener);
}
void TextPropertyComponent::removeListener (TextPropertyComponentListener* const listener)
{
listenerList.remove (listener);
}
void TextPropertyComponent::callListeners()
{
Component::BailOutChecker checker (this);
listenerList.callChecked (checker, &TextPropertyComponentListener::textPropertyComponentChanged, this);
}
void TextPropertyComponent::colourChanged()
{
PropertyComponent::colourChanged();
textEditor->updateColours();
}

View file

@ -64,16 +64,15 @@ public:
~TextPropertyComponent();
//==============================================================================
/** Called when the user edits the text.
Your subclass must use this callback to change the value of whatever item
this property component represents.
*/
/** Set the value of the text shown in the text editor to the specified string. */
virtual void setText (const String& newText);
/** Returns the text that should be shown in the text editor. */
virtual String getText() const;
/** Returns the text that should be shown in the text editor as a Value object. */
Value& getValue() const;
//==============================================================================
/** A set of colour IDs to use to change the colour of various aspects of the component.
@ -89,21 +88,54 @@ public:
outlineColourId = 0x100e403, /**< The colour to use to draw an outline around the text area. */
};
void colourChanged() override;
//==============================================================================
class JUCE_API Listener
{
public:
/** Destructor. */
virtual ~Listener() {}
/** Called when text has finished being entered (i.e. not per keypress) has changed. */
virtual void textPropertyComponentChanged (TextPropertyComponent* component) = 0;
};
/** Registers a listener to receive events when this button's state changes.
If the listener is already registered, this will not register it again.
@see removeListener
*/
void addListener (Listener* const newListener);
/** Removes a previously-registered button listener
@see addListener
*/
void removeListener (Listener* const listener);
//==============================================================================
/** @internal */
void refresh();
/** @internal */
virtual void textWasEdited();
private:
ScopedPointer<Label> textEditor;
class LabelComp;
friend class LabelComp;
void textWasEdited();
ScopedPointer<LabelComp> textEditor;
ListenerList<Listener> listenerList;
void callListeners();
void createEditor (int maxNumChars, bool isMultiLine);
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (TextPropertyComponent)
};
#ifndef DOXYGEN
/** This typedef is just for compatibility with old code and VC6 - newer code should use Button::Listener instead. */
typedef TextPropertyComponent::Listener TextPropertyComponentListener;
#endif
#endif // JUCE_TEXTPROPERTYCOMPONENT_H_INCLUDED