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:
parent
48ca0bb56a
commit
c922162b03
46 changed files with 1266 additions and 433 deletions
|
|
@ -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"/>
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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"/>
|
||||
|
|
|
|||
|
|
@ -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"/>
|
||||
|
|
|
|||
|
|
@ -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"/>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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"/>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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"/>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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"/>
|
||||
|
|
|
|||
|
|
@ -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">
|
||||
|
|
|
|||
|
|
@ -28,6 +28,3 @@ BEGIN
|
|||
END
|
||||
|
||||
#endif
|
||||
|
||||
IDI_ICON1 ICON DISCARDABLE "icon.ico"
|
||||
IDI_ICON2 ICON DISCARDABLE "icon.ico"
|
||||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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"; }
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ namespace CommandIDs
|
|||
saveAndOpenInIDE = 0x200073,
|
||||
|
||||
showUTF8Tool = 0x200076,
|
||||
showAppearanceSettings = 0x200077,
|
||||
showGlobalPreferences = 0x200077,
|
||||
showConfigPanel = 0x200074,
|
||||
showFilePanel = 0x200078,
|
||||
showTranslationTool = 0x200079,
|
||||
|
|
|
|||
483
extras/Introjucer/Source/Application/jucer_GlobalPreferences.cpp
Normal file
483
extras/Introjucer/Source/Application/jucer_GlobalPreferences.cpp
Normal 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);
|
||||
}
|
||||
|
|
@ -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
|
||||
|
|
@ -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());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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(); }
|
||||
|
||||
|
|
|
|||
|
|
@ -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(); }
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -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),
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
//==============================================================================
|
||||
|
|
|
|||
|
|
@ -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.");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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&)
|
||||
{
|
||||
}
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue