Browse Source

Introjucer: refactoring and addition of appearance settings window for editor colours + fonts.

tags/2021-05-28
jules 13 years ago
parent
commit
f824e99f2d
33 changed files with 871 additions and 119 deletions
  1. +6
    -0
      extras/Introjucer/Builds/Linux/Makefile
  2. +28
    -22
      extras/Introjucer/Builds/MacOSX/The Introjucer.xcodeproj/project.pbxproj
  3. +2
    -0
      extras/Introjucer/Builds/VisualStudio2005/The Introjucer.vcproj
  4. +2
    -0
      extras/Introjucer/Builds/VisualStudio2008/The Introjucer.vcproj
  5. +2
    -0
      extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj
  6. +6
    -0
      extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj.filters
  7. +4
    -0
      extras/Introjucer/Introjucer.jucer
  8. +360
    -0
      extras/Introjucer/Source/Application/jucer_AppearanceSettings.cpp
  9. +53
    -0
      extras/Introjucer/Source/Application/jucer_AppearanceSettings.h
  10. +39
    -18
      extras/Introjucer/Source/Application/jucer_Application.h
  11. +2
    -12
      extras/Introjucer/Source/Application/jucer_CommandIDs.h
  12. +3
    -2
      extras/Introjucer/Source/Application/jucer_DocumentEditorComponent.cpp
  13. +3
    -3
      extras/Introjucer/Source/Application/jucer_MainWindow.cpp
  14. +5
    -2
      extras/Introjucer/Source/Application/jucer_OpenDocumentManager.cpp
  15. +1
    -2
      extras/Introjucer/Source/Application/jucer_OpenDocumentManager.h
  16. +18
    -3
      extras/Introjucer/Source/Code Editor/jucer_SourceCodeEditor.cpp
  17. +11
    -4
      extras/Introjucer/Source/Code Editor/jucer_SourceCodeEditor.h
  18. +2
    -2
      extras/Introjucer/Source/Project/jucer_Project.cpp
  19. +47
    -21
      extras/Introjucer/Source/Project/jucer_ProjectContentComponent.cpp
  20. +4
    -2
      extras/Introjucer/Source/Project/jucer_ProjectContentComponent.h
  21. +5
    -3
      extras/Introjucer/Source/Project/jucer_ProjectTreeViewBase.cpp
  22. +1
    -0
      extras/Introjucer/Source/Utility/jucer_JucerTreeViewBase.h
  23. +1
    -1
      extras/Introjucer/Source/Utility/jucer_MiscUtilities.cpp
  24. +201
    -0
      extras/Introjucer/Source/Utility/jucer_MiscUtilities.h
  25. +2
    -0
      extras/Introjucer/Source/Utility/jucer_PresetIDs.h
  26. +30
    -0
      extras/Introjucer/Source/Utility/jucer_StoredSettings.cpp
  27. +8
    -5
      extras/Introjucer/Source/Utility/jucer_StoredSettings.h
  28. +2
    -0
      modules/juce_data_structures/values/juce_ValueTree.cpp
  29. +1
    -1
      modules/juce_data_structures/values/juce_ValueTree.h
  30. +7
    -11
      modules/juce_gui_basics/layout/juce_ComponentBuilder.h
  31. +1
    -1
      modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.cpp
  32. +13
    -3
      modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.cpp
  33. +1
    -1
      modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.h

+ 6
- 0
extras/Introjucer/Builds/Linux/Makefile View File

@@ -43,6 +43,7 @@ ifeq ($(CONFIG),Release)
endif endif
OBJECTS := \ OBJECTS := \
$(OBJDIR)/jucer_AppearanceSettings_788d9889.o \
$(OBJDIR)/jucer_CommandLine_f35de107.o \ $(OBJDIR)/jucer_CommandLine_f35de107.o \
$(OBJDIR)/jucer_DocumentEditorComponent_695dff1d.o \ $(OBJDIR)/jucer_DocumentEditorComponent_695dff1d.o \
$(OBJDIR)/jucer_FilePreviewComponent_55512f53.o \ $(OBJDIR)/jucer_FilePreviewComponent_55512f53.o \
@@ -92,6 +93,11 @@ clean:
-@rm -rf $(OBJDIR)/* -@rm -rf $(OBJDIR)/*
-@rm -rf $(OBJDIR) -@rm -rf $(OBJDIR)
$(OBJDIR)/jucer_AppearanceSettings_788d9889.o: ../../Source/Application/jucer_AppearanceSettings.cpp
-@mkdir -p $(OBJDIR)
@echo "Compiling jucer_AppearanceSettings.cpp"
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
$(OBJDIR)/jucer_CommandLine_f35de107.o: ../../Source/Application/jucer_CommandLine.cpp $(OBJDIR)/jucer_CommandLine_f35de107.o: ../../Source/Application/jucer_CommandLine.cpp
-@mkdir -p $(OBJDIR) -@mkdir -p $(OBJDIR)
@echo "Compiling jucer_CommandLine.cpp" @echo "Compiling jucer_CommandLine.cpp"


+ 28
- 22
extras/Introjucer/Builds/MacOSX/The Introjucer.xcodeproj/project.pbxproj View File

@@ -12,6 +12,7 @@
11D42F7EC6E6539D79A7F4B1 = { isa = PBXBuildFile; fileRef = E5D6C36496F5BC84D7213BE8; }; 11D42F7EC6E6539D79A7F4B1 = { isa = PBXBuildFile; fileRef = E5D6C36496F5BC84D7213BE8; };
B980464FA2761CCD64B1FAD6 = { isa = PBXBuildFile; fileRef = CF6C8BD0DA3D8CD4E99EBADA; }; B980464FA2761CCD64B1FAD6 = { isa = PBXBuildFile; fileRef = CF6C8BD0DA3D8CD4E99EBADA; };
1321E6C1C6170B6C898AD09D = { isa = PBXBuildFile; fileRef = 951128CA33CCDEF570436B1C; }; 1321E6C1C6170B6C898AD09D = { isa = PBXBuildFile; fileRef = 951128CA33CCDEF570436B1C; };
357A6AA6960EF95D92929BEE = { isa = PBXBuildFile; fileRef = 441CFEA771BAA50E187342E9; };
954A036F5DDB375DB23FFB3E = { isa = PBXBuildFile; fileRef = 0400CB0E056A1D840304D2DE; }; 954A036F5DDB375DB23FFB3E = { isa = PBXBuildFile; fileRef = 0400CB0E056A1D840304D2DE; };
3EB3D569250C4BA4CA9AF578 = { isa = PBXBuildFile; fileRef = C7608A3967D9AB9481848F2B; }; 3EB3D569250C4BA4CA9AF578 = { isa = PBXBuildFile; fileRef = C7608A3967D9AB9481848F2B; };
9A4D477F1924C31A52AF5C79 = { isa = PBXBuildFile; fileRef = F2FA27430D90E92F0C9EBEDF; }; 9A4D477F1924C31A52AF5C79 = { isa = PBXBuildFile; fileRef = F2FA27430D90E92F0C9EBEDF; };
@@ -152,6 +153,7 @@
21FAFA7F2C5D0E8D99876EA8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Direct2DGraphicsContext.cpp"; path = "../../../../modules/juce_graphics/native/juce_win32_Direct2DGraphicsContext.cpp"; sourceTree = "SOURCE_ROOT"; }; 21FAFA7F2C5D0E8D99876EA8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Direct2DGraphicsContext.cpp"; path = "../../../../modules/juce_graphics/native/juce_win32_Direct2DGraphicsContext.cpp"; sourceTree = "SOURCE_ROOT"; };
2210EB5F41023B53ADD0DFBD = { isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_cryptography/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; 2210EB5F41023B53ADD0DFBD = { isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_cryptography/juce_module_info"; sourceTree = "SOURCE_ROOT"; };
221C1BAC4138F261F97121AD = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GIFLoader.cpp"; path = "../../../../modules/juce_graphics/image_formats/juce_GIFLoader.cpp"; sourceTree = "SOURCE_ROOT"; }; 221C1BAC4138F261F97121AD = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GIFLoader.cpp"; path = "../../../../modules/juce_graphics/image_formats/juce_GIFLoader.cpp"; sourceTree = "SOURCE_ROOT"; };
223C4209F18A221EB183A056 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_AppearanceSettings.h"; path = "../../Source/Application/jucer_AppearanceSettings.h"; sourceTree = "SOURCE_ROOT"; };
2247EE920DF0610CAF9F4513 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_OpenDocumentManager.cpp"; path = "../../Source/Application/jucer_OpenDocumentManager.cpp"; sourceTree = "SOURCE_ROOT"; }; 2247EE920DF0610CAF9F4513 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_OpenDocumentManager.cpp"; path = "../../Source/Application/jucer_OpenDocumentManager.cpp"; sourceTree = "SOURCE_ROOT"; };
2252F2B96709F3C7CE07B5E7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Application.h"; path = "../../../../modules/juce_gui_basics/application/juce_Application.h"; sourceTree = "SOURCE_ROOT"; }; 2252F2B96709F3C7CE07B5E7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Application.h"; path = "../../../../modules/juce_gui_basics/application/juce_Application.h"; sourceTree = "SOURCE_ROOT"; };
225414095942818432AAE07D = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Expression.cpp"; path = "../../../../modules/juce_core/maths/juce_Expression.cpp"; sourceTree = "SOURCE_ROOT"; }; 225414095942818432AAE07D = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Expression.cpp"; path = "../../../../modules/juce_core/maths/juce_Expression.cpp"; sourceTree = "SOURCE_ROOT"; };
@@ -231,6 +233,7 @@
430239E0574C157689D83206 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CodeDocument.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CodeDocument.h"; sourceTree = "SOURCE_ROOT"; }; 430239E0574C157689D83206 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CodeDocument.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CodeDocument.h"; sourceTree = "SOURCE_ROOT"; };
43B98AB307841FAAB076B882 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Justification.cpp"; path = "../../../../modules/juce_graphics/placement/juce_Justification.cpp"; sourceTree = "SOURCE_ROOT"; }; 43B98AB307841FAAB076B882 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Justification.cpp"; path = "../../../../modules/juce_graphics/placement/juce_Justification.cpp"; sourceTree = "SOURCE_ROOT"; };
441A0EA83E44264CB977F21B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_mac_CarbonViewWrapperComponent.h"; path = "../../../../modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h"; sourceTree = "SOURCE_ROOT"; }; 441A0EA83E44264CB977F21B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_mac_CarbonViewWrapperComponent.h"; path = "../../../../modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h"; sourceTree = "SOURCE_ROOT"; };
441CFEA771BAA50E187342E9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_AppearanceSettings.cpp"; path = "../../Source/Application/jucer_AppearanceSettings.cpp"; sourceTree = "SOURCE_ROOT"; };
442031AD0C8A280B68CE9EF0 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ResizableCornerComponent.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableCornerComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 442031AD0C8A280B68CE9EF0 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ResizableCornerComponent.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableCornerComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
4437785A3DFF4AB2D6A78DB3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StretchableLayoutResizerBar.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.cpp"; sourceTree = "SOURCE_ROOT"; }; 4437785A3DFF4AB2D6A78DB3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StretchableLayoutResizerBar.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.cpp"; sourceTree = "SOURCE_ROOT"; };
444CA4B9CAD1F5ED5C45448B = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ToolbarItemPalette.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.cpp"; sourceTree = "SOURCE_ROOT"; }; 444CA4B9CAD1F5ED5C45448B = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ToolbarItemPalette.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.cpp"; sourceTree = "SOURCE_ROOT"; };
@@ -559,7 +562,6 @@
BA5C7DE347A73A87F687703C = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandTarget.h"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.h"; sourceTree = "SOURCE_ROOT"; }; BA5C7DE347A73A87F687703C = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandTarget.h"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.h"; sourceTree = "SOURCE_ROOT"; };
BA95268EEE80F9509EC1F76F = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileBasedDocument.h"; path = "../../../../modules/juce_gui_extra/documents/juce_FileBasedDocument.h"; sourceTree = "SOURCE_ROOT"; }; BA95268EEE80F9509EC1F76F = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileBasedDocument.h"; path = "../../../../modules/juce_gui_extra/documents/juce_FileBasedDocument.h"; sourceTree = "SOURCE_ROOT"; };
BAC43B20E14A340CCF14119C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_Project.cpp"; path = "../../Source/Project/jucer_Project.cpp"; sourceTree = "SOURCE_ROOT"; }; BAC43B20E14A340CCF14119C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_Project.cpp"; path = "../../Source/Project/jucer_Project.cpp"; sourceTree = "SOURCE_ROOT"; };
BBA6060656F685ED7FA52045 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_TreeViewTypes.h"; path = "../../Source/Project/jucer_TreeViewTypes.h"; sourceTree = "SOURCE_ROOT"; };
BC17B02633EF1E31024051C2 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CodeDocument.cpp"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CodeDocument.cpp"; sourceTree = "SOURCE_ROOT"; }; BC17B02633EF1E31024051C2 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CodeDocument.cpp"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CodeDocument.cpp"; sourceTree = "SOURCE_ROOT"; };
BCAD13352CE76BA81629A6E7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableText.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableText.h"; sourceTree = "SOURCE_ROOT"; }; BCAD13352CE76BA81629A6E7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableText.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableText.h"; sourceTree = "SOURCE_ROOT"; };
BD7C18F07DE633B97B4478E7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_PropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; BD7C18F07DE633B97B4478E7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_PropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
@@ -599,9 +601,7 @@
C7E19F79947BEFC7DB7A9CE7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GlowEffect.cpp"; path = "../../../../modules/juce_graphics/effects/juce_GlowEffect.cpp"; 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"; }; 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"; }; 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"; }; C90C66C5727759D5CBD5FB07 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AbstractFifo.cpp"; path = "../../../../modules/juce_core/containers/juce_AbstractFifo.cpp"; sourceTree = "SOURCE_ROOT"; };
C9616830BB2474066AC8C910 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ResourceFile.h"; path = "../../Source/Project Saving/jucer_ResourceFile.h"; sourceTree = "SOURCE_ROOT"; };
C9871C46DEDD05103443DC33 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NewLine.h"; path = "../../../../modules/juce_core/text/juce_NewLine.h"; sourceTree = "SOURCE_ROOT"; }; C9871C46DEDD05103443DC33 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NewLine.h"; path = "../../../../modules/juce_core/text/juce_NewLine.h"; sourceTree = "SOURCE_ROOT"; };
C9DCA94BF8A4C583E5392755 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MultiTimer.cpp"; path = "../../../../modules/juce_events/timers/juce_MultiTimer.cpp"; sourceTree = "SOURCE_ROOT"; }; C9DCA94BF8A4C583E5392755 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MultiTimer.cpp"; path = "../../../../modules/juce_events/timers/juce_MultiTimer.cpp"; sourceTree = "SOURCE_ROOT"; };
CA62F9F7C5F0D77D8E33D91F = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SplashScreen.h"; path = "../../../../modules/juce_gui_extra/misc/juce_SplashScreen.h"; sourceTree = "SOURCE_ROOT"; }; CA62F9F7C5F0D77D8E33D91F = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SplashScreen.h"; path = "../../../../modules/juce_gui_extra/misc/juce_SplashScreen.h"; sourceTree = "SOURCE_ROOT"; };
@@ -619,54 +619,54 @@
CE1DFE4E3908943656E180AD = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_UnitTest.cpp"; path = "../../../../modules/juce_core/unit_tests/juce_UnitTest.cpp"; 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"; }; CF0615A1AF1A514A60322B50 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseCursor.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseCursor.h"; sourceTree = "SOURCE_ROOT"; };
CF6C8BD0DA3D8CD4E99EBADA = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; }; 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; }; D00F311BFC3C2625C457CB9B = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; };
D0F1614CC861E8E0B59B7A06 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Messaging.cpp"; path = "../../../../modules/juce_events/native/juce_linux_Messaging.cpp"; sourceTree = "SOURCE_ROOT"; }; D0F1614CC861E8E0B59B7A06 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Messaging.cpp"; path = "../../../../modules/juce_events/native/juce_linux_Messaging.cpp"; sourceTree = "SOURCE_ROOT"; };
D10D51A0A2D63F38B4D86A60 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ResourceFile.cpp"; path = "../../Source/Project Saving/jucer_ResourceFile.cpp"; sourceTree = "SOURCE_ROOT"; };
D141433D3FE81F20490DE928 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Desktop.h"; path = "../../../../modules/juce_gui_basics/components/juce_Desktop.h"; sourceTree = "SOURCE_ROOT"; }; D141433D3FE81F20490DE928 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Desktop.h"; path = "../../../../modules/juce_gui_basics/components/juce_Desktop.h"; sourceTree = "SOURCE_ROOT"; };
D1F9B0E9F5D54FE48BEB46EA = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; D1F9B0E9F5D54FE48BEB46EA = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
D253F74B7F5734984E568CA7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Files.cpp"; path = "../../../../modules/juce_core/native/juce_linux_Files.cpp"; sourceTree = "SOURCE_ROOT"; }; D253F74B7F5734984E568CA7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Files.cpp"; path = "../../../../modules/juce_core/native/juce_linux_Files.cpp"; sourceTree = "SOURCE_ROOT"; };
D2F1CF252F7EC62B35A21CB6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DropShadowEffect.cpp"; path = "../../../../modules/juce_graphics/effects/juce_DropShadowEffect.cpp"; sourceTree = "SOURCE_ROOT"; };
D2F80DA0946A5EE01FC016CA = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_UTF32.h"; path = "../../../../modules/juce_core/text/juce_CharPointer_UTF32.h"; sourceTree = "SOURCE_ROOT"; };
D376B9B54EC944E766AFEC45 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PopupMenu.cpp"; path = "../../../../modules/juce_gui_basics/menus/juce_PopupMenu.cpp"; sourceTree = "SOURCE_ROOT"; }; D376B9B54EC944E766AFEC45 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PopupMenu.cpp"; path = "../../../../modules/juce_gui_basics/menus/juce_PopupMenu.cpp"; sourceTree = "SOURCE_ROOT"; };
D4697A0232AECE5DAC5E332E = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChoicePropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; D4697A0232AECE5DAC5E332E = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChoicePropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
D4E56676E2EF83404EDCBA8C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TextEditor.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_TextEditor.cpp"; sourceTree = "SOURCE_ROOT"; };
D4F2D42C58F4D86E00E76F31 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandID.h"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandID.h"; sourceTree = "SOURCE_ROOT"; }; D4F2D42C58F4D86E00E76F31 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandID.h"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandID.h"; sourceTree = "SOURCE_ROOT"; };
D503780AB98993E8F0BA1311 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageComponent.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ImageComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
D5057D7B18ABD5E810A6F830 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DirectWriteTypeface.cpp"; path = "../../../../modules/juce_graphics/native/juce_win32_DirectWriteTypeface.cpp"; sourceTree = "SOURCE_ROOT"; };
D526C38D581425949BA0E4AC = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_FilePreviewComponent.h"; path = "../../Source/Application/jucer_FilePreviewComponent.h"; sourceTree = "SOURCE_ROOT"; };
D53B54D1786A1FFC024BF064 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_cryptography.mm"; path = "../../../../modules/juce_cryptography/juce_cryptography.mm"; sourceTree = "SOURCE_ROOT"; }; D53B54D1786A1FFC024BF064 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_cryptography.mm"; path = "../../../../modules/juce_cryptography/juce_cryptography.mm"; sourceTree = "SOURCE_ROOT"; };
D5A6D00DEFDC650AF432A698 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Initialisation.h"; path = "../../../../modules/juce_gui_basics/application/juce_Initialisation.h"; sourceTree = "SOURCE_ROOT"; }; D5A6D00DEFDC650AF432A698 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Initialisation.h"; path = "../../../../modules/juce_gui_basics/application/juce_Initialisation.h"; sourceTree = "SOURCE_ROOT"; };
D678882D133090214AF681BC = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ThreadLocalValue.h"; path = "../../../../modules/juce_core/threads/juce_ThreadLocalValue.h"; sourceTree = "SOURCE_ROOT"; }; 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"; };
D75EAC16FAECCC51E3669193 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandInfo.h"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.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"; }; 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"; }; 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"; }; D800DE818BEDBF4579D15B1D = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_AppleRemote.mm"; path = "../../../../modules/juce_gui_extra/native/juce_mac_AppleRemote.mm"; sourceTree = "SOURCE_ROOT"; };
D926E13AB5AD647A7A00F486 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Network.cpp"; path = "../../../../modules/juce_core/native/juce_linux_Network.cpp"; sourceTree = "SOURCE_ROOT"; }; D926E13AB5AD647A7A00F486 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Network.cpp"; path = "../../../../modules/juce_core/native/juce_linux_Network.cpp"; sourceTree = "SOURCE_ROOT"; };
D9342535EA61901A1AD816C6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_WebBrowserComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_linux_WebBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
D9E59DE07A815AB303A297D9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_data_structures.mm"; path = "../../../../modules/juce_data_structures/juce_data_structures.mm"; sourceTree = "SOURCE_ROOT"; };
DC5E7FF30B01118F6DAEC38F = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Time.cpp"; path = "../../../../modules/juce_core/time/juce_Time.cpp"; sourceTree = "SOURCE_ROOT"; }; DC5E7FF30B01118F6DAEC38F = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Time.cpp"; path = "../../../../modules/juce_core/time/juce_Time.cpp"; sourceTree = "SOURCE_ROOT"; };
DF7BB5B6B394EDEEF5F5B4B8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CallbackMessage.h"; path = "../../../../modules/juce_events/messages/juce_CallbackMessage.h"; 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"; };
DE5F3C9EF6BFFDE73AF9E7FC = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DirectoryContentsDisplayComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
E5D6C36496F5BC84D7213BE8 = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; E5D6C36496F5BC84D7213BE8 = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
E60E28D1B7491047DEA236AE = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ProjectContentComponent.h"; path = "../../Source/Project/jucer_ProjectContentComponent.h"; sourceTree = "SOURCE_ROOT"; };
E70CA21960A64CCB835725FF = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ProjectType.cpp"; path = "../../Source/Project/jucer_ProjectType.cpp"; sourceTree = "SOURCE_ROOT"; };
E7F7033084AC10FB77B0F77A = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ConfigPage.cpp"; path = "../../Source/Project/jucer_ConfigPage.cpp"; sourceTree = "SOURCE_ROOT"; };
E96597BBC6A98255B51B94DC = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = System/Library/Frameworks/IOKit.framework; sourceTree = SDKROOT; }; 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"; }; 25F52316D256B4534BED16D1 = { isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Introjucer.app; sourceTree = "BUILT_PRODUCTS_DIR"; };
CF8011B3C67B609032974DA5 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_NewCppFileTemplate.cpp"; path = "../../Source/BinaryData/jucer_NewCppFileTemplate.cpp"; sourceTree = "SOURCE_ROOT"; };
D2F1CF252F7EC62B35A21CB6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DropShadowEffect.cpp"; path = "../../../../modules/juce_graphics/effects/juce_DropShadowEffect.cpp"; sourceTree = "SOURCE_ROOT"; };
D2F80DA0946A5EE01FC016CA = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_UTF32.h"; path = "../../../../modules/juce_core/text/juce_CharPointer_UTF32.h"; sourceTree = "SOURCE_ROOT"; };
D526C38D581425949BA0E4AC = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_FilePreviewComponent.h"; path = "../../Source/Application/jucer_FilePreviewComponent.h"; sourceTree = "SOURCE_ROOT"; };
BBA6060656F685ED7FA52045 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_TreeViewTypes.h"; path = "../../Source/Project/jucer_TreeViewTypes.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"; };
C9616830BB2474066AC8C910 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ResourceFile.h"; path = "../../Source/Project Saving/jucer_ResourceFile.h"; sourceTree = "SOURCE_ROOT"; };
D10D51A0A2D63F38B4D86A60 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ResourceFile.cpp"; path = "../../Source/Project Saving/jucer_ResourceFile.cpp"; sourceTree = "SOURCE_ROOT"; };
D4E56676E2EF83404EDCBA8C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TextEditor.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_TextEditor.cpp"; sourceTree = "SOURCE_ROOT"; };
D503780AB98993E8F0BA1311 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageComponent.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ImageComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
D5057D7B18ABD5E810A6F830 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DirectWriteTypeface.cpp"; path = "../../../../modules/juce_graphics/native/juce_win32_DirectWriteTypeface.cpp"; sourceTree = "SOURCE_ROOT"; };
D6C91E2BF537F75A80F5C1DB = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ListBox.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ListBox.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"; }; D7A7F1AA9F313B0CCAAA73A0 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MathsFunctions.h"; path = "../../../../modules/juce_core/maths/juce_MathsFunctions.h"; sourceTree = "SOURCE_ROOT"; };
D9342535EA61901A1AD816C6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_WebBrowserComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_linux_WebBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
D95D7B49EC6C6BDCB5A1B988 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_MessageManager.mm"; path = "../../../../modules/juce_events/native/juce_ios_MessageManager.mm"; sourceTree = "SOURCE_ROOT"; }; 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"; }; D9B077E2ECDDA94961E134D7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringPairArray.h"; path = "../../../../modules/juce_core/text/juce_StringPairArray.h"; sourceTree = "SOURCE_ROOT"; };
D9E59DE07A815AB303A297D9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_data_structures.mm"; path = "../../../../modules/juce_data_structures/juce_data_structures.mm"; sourceTree = "SOURCE_ROOT"; };
DB20268A566DABEAE3F2CBEE = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RectanglePlacement.cpp"; path = "../../../../modules/juce_graphics/placement/juce_RectanglePlacement.cpp"; sourceTree = "SOURCE_ROOT"; }; 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"; }; DB876F7873F42DC685A58CA7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_JPEGLoader.cpp"; path = "../../../../modules/juce_graphics/image_formats/juce_JPEGLoader.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"; }; DD00494140C86144306A9356 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Array.h"; path = "../../../../modules/juce_core/containers/juce_Array.h"; sourceTree = "SOURCE_ROOT"; };
DD2494D5F1C081898D616AF5 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyListener.cpp"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyListener.cpp"; sourceTree = "SOURCE_ROOT"; };
DD985A60FB76E976AF91852D = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SHA256.h"; path = "../../../../modules/juce_cryptography/hashing/juce_SHA256.h"; sourceTree = "SOURCE_ROOT"; };
DE40B42B57F29C650CB7F2AD = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RecentlyOpenedFilesList.h"; path = "../../../../modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.h"; sourceTree = "SOURCE_ROOT"; }; 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"; }; 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"; }; DEF579B1433EB8DEE7AB50F8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Drawable.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_Drawable.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"; }; 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"; }; E07C56267CBB46FC44EF2026 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Image.cpp"; path = "../../../../modules/juce_graphics/images/juce_Image.cpp"; 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"; }; E1C16C872E34BCB144B469F9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_EdgeTable.h"; path = "../../../../modules/juce_graphics/geometry/juce_EdgeTable.h"; sourceTree = "SOURCE_ROOT"; };
@@ -680,10 +680,12 @@
E530742870F07704E9616358 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarItemComponent.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.h"; 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"; }; 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"; }; E570E57CC1FCEF78B54A7084 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileOutputStream.h"; path = "../../../../modules/juce_core/files/juce_FileOutputStream.h"; sourceTree = "SOURCE_ROOT"; };
E60E28D1B7491047DEA236AE = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ProjectContentComponent.h"; path = "../../Source/Project/jucer_ProjectContentComponent.h"; sourceTree = "SOURCE_ROOT"; };
E642193A9990C48CFB6479A9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileListComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileListComponent.h"; sourceTree = "SOURCE_ROOT"; }; 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"; }; E654E3A3CD45A888C5F773DF = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MenuBarModel.h"; path = "../../../../modules/juce_gui_basics/menus/juce_MenuBarModel.h"; sourceTree = "SOURCE_ROOT"; };
E65A820D34BF39478B7C5925 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_DocumentEditorComponent.h"; path = "../../Source/Application/jucer_DocumentEditorComponent.h"; sourceTree = "SOURCE_ROOT"; }; 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"; }; E6F5CEC32EDC917B054467EF = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ReadWriteLock.cpp"; path = "../../../../modules/juce_core/threads/juce_ReadWriteLock.cpp"; sourceTree = "SOURCE_ROOT"; };
E70CA21960A64CCB835725FF = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ProjectType.cpp"; path = "../../Source/Project/jucer_ProjectType.cpp"; sourceTree = "SOURCE_ROOT"; };
E73C7E17116F6085765622E3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Drawable.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_Drawable.h"; sourceTree = "SOURCE_ROOT"; }; 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"; }; 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"; }; 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"; };
@@ -691,6 +693,7 @@
E7E122AE104E79BB641B07B3 = { isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_data_structures/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; E7E122AE104E79BB641B07B3 = { isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_data_structures/juce_module_info"; sourceTree = "SOURCE_ROOT"; };
E7E1C4F416CFA44BE7DD1A74 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KeyboardFocusTraverser.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.h"; sourceTree = "SOURCE_ROOT"; }; E7E1C4F416CFA44BE7DD1A74 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KeyboardFocusTraverser.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.h"; sourceTree = "SOURCE_ROOT"; };
E7E1D60BC7AEF79AA7B65B7C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_String.cpp"; path = "../../../../modules/juce_core/text/juce_String.cpp"; sourceTree = "SOURCE_ROOT"; }; E7E1D60BC7AEF79AA7B65B7C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_String.cpp"; path = "../../../../modules/juce_core/text/juce_String.cpp"; sourceTree = "SOURCE_ROOT"; };
E7F7033084AC10FB77B0F77A = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ConfigPage.cpp"; path = "../../Source/Project/jucer_ConfigPage.cpp"; sourceTree = "SOURCE_ROOT"; };
E82C9EF1A74D867BBFF2090D = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RSAKey.cpp"; path = "../../../../modules/juce_cryptography/encryption/juce_RSAKey.cpp"; sourceTree = "SOURCE_ROOT"; }; E82C9EF1A74D867BBFF2090D = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RSAKey.cpp"; path = "../../../../modules/juce_cryptography/encryption/juce_RSAKey.cpp"; sourceTree = "SOURCE_ROOT"; };
E99F5A31373E9BDEAC40792F = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_FileChooser.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_android_FileChooser.cpp"; sourceTree = "SOURCE_ROOT"; }; E99F5A31373E9BDEAC40792F = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_FileChooser.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_android_FileChooser.cpp"; sourceTree = "SOURCE_ROOT"; };
E9B8C3CA480AE94BEA852EA9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_Windowing.mm"; path = "../../../../modules/juce_gui_basics/native/juce_ios_Windowing.mm"; sourceTree = "SOURCE_ROOT"; }; E9B8C3CA480AE94BEA852EA9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_Windowing.mm"; path = "../../../../modules/juce_gui_basics/native/juce_ios_Windowing.mm"; sourceTree = "SOURCE_ROOT"; };
@@ -748,6 +751,8 @@
FF10E9B389909FB45E229D5B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComboBox.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ComboBox.h"; sourceTree = "SOURCE_ROOT"; }; FF10E9B389909FB45E229D5B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComboBox.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ComboBox.h"; sourceTree = "SOURCE_ROOT"; };
FF1F954094B14C1900C9495D = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_posix_SharedCode.h"; path = "../../../../modules/juce_core/native/juce_posix_SharedCode.h"; sourceTree = "SOURCE_ROOT"; }; FF1F954094B14C1900C9495D = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_posix_SharedCode.h"; path = "../../../../modules/juce_core/native/juce_posix_SharedCode.h"; sourceTree = "SOURCE_ROOT"; };
ACBAFA7D92DD82AD44ABE68A = { isa = PBXGroup; children = ( ACBAFA7D92DD82AD44ABE68A = { isa = PBXGroup; children = (
441CFEA771BAA50E187342E9,
223C4209F18A221EB183A056,
EE690110171E1648FF2118B8, EE690110171E1648FF2118B8,
23A8DE16C0CDB8EED18B008B, 23A8DE16C0CDB8EED18B008B,
0400CB0E056A1D840304D2DE, 0400CB0E056A1D840304D2DE,
@@ -1678,6 +1683,7 @@
C009859650B4628FDD068941 = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( C009859650B4628FDD068941 = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = (
1321E6C1C6170B6C898AD09D ); runOnlyForDeploymentPostprocessing = 0; }; 1321E6C1C6170B6C898AD09D ); runOnlyForDeploymentPostprocessing = 0; };
84449D044096A03F2582904B = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 84449D044096A03F2582904B = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (
357A6AA6960EF95D92929BEE,
954A036F5DDB375DB23FFB3E, 954A036F5DDB375DB23FFB3E,
3EB3D569250C4BA4CA9AF578, 3EB3D569250C4BA4CA9AF578,
9A4D477F1924C31A52AF5C79, 9A4D477F1924C31A52AF5C79,


+ 2
- 0
extras/Introjucer/Builds/VisualStudio2005/The Introjucer.vcproj View File

@@ -130,6 +130,8 @@
<Files> <Files>
<Filter Name="The Introjucer"> <Filter Name="The Introjucer">
<Filter Name="Application"> <Filter Name="Application">
<File RelativePath="..\..\Source\Application\jucer_AppearanceSettings.cpp"/>
<File RelativePath="..\..\Source\Application\jucer_AppearanceSettings.h"/>
<File RelativePath="..\..\Source\Application\jucer_Application.h"/> <File RelativePath="..\..\Source\Application\jucer_Application.h"/>
<File RelativePath="..\..\Source\Application\jucer_CommandIDs.h"/> <File RelativePath="..\..\Source\Application\jucer_CommandIDs.h"/>
<File RelativePath="..\..\Source\Application\jucer_CommandLine.cpp"/> <File RelativePath="..\..\Source\Application\jucer_CommandLine.cpp"/>


+ 2
- 0
extras/Introjucer/Builds/VisualStudio2008/The Introjucer.vcproj View File

@@ -130,6 +130,8 @@
<Files> <Files>
<Filter Name="The Introjucer"> <Filter Name="The Introjucer">
<Filter Name="Application"> <Filter Name="Application">
<File RelativePath="..\..\Source\Application\jucer_AppearanceSettings.cpp"/>
<File RelativePath="..\..\Source\Application\jucer_AppearanceSettings.h"/>
<File RelativePath="..\..\Source\Application\jucer_Application.h"/> <File RelativePath="..\..\Source\Application\jucer_Application.h"/>
<File RelativePath="..\..\Source\Application\jucer_CommandIDs.h"/> <File RelativePath="..\..\Source\Application\jucer_CommandIDs.h"/>
<File RelativePath="..\..\Source\Application\jucer_CommandLine.cpp"/> <File RelativePath="..\..\Source\Application\jucer_CommandLine.cpp"/>


+ 2
- 0
extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj View File

@@ -126,6 +126,7 @@
</Bscmake> </Bscmake>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\..\Source\Application\jucer_AppearanceSettings.cpp"/>
<ClCompile Include="..\..\Source\Application\jucer_CommandLine.cpp"/> <ClCompile Include="..\..\Source\Application\jucer_CommandLine.cpp"/>
<ClCompile Include="..\..\Source\Application\jucer_DocumentEditorComponent.cpp"/> <ClCompile Include="..\..\Source\Application\jucer_DocumentEditorComponent.cpp"/>
<ClCompile Include="..\..\Source\Application\jucer_FilePreviewComponent.cpp"/> <ClCompile Include="..\..\Source\Application\jucer_FilePreviewComponent.cpp"/>
@@ -965,6 +966,7 @@
<ClCompile Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.cpp"/> <ClCompile Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.cpp"/>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\..\Source\Application\jucer_AppearanceSettings.h"/>
<ClInclude Include="..\..\Source\Application\jucer_Application.h"/> <ClInclude Include="..\..\Source\Application\jucer_Application.h"/>
<ClInclude Include="..\..\Source\Application\jucer_CommandIDs.h"/> <ClInclude Include="..\..\Source\Application\jucer_CommandIDs.h"/>
<ClInclude Include="..\..\Source\Application\jucer_CommandLine.h"/> <ClInclude Include="..\..\Source\Application\jucer_CommandLine.h"/>


+ 6
- 0
extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj.filters View File

@@ -229,6 +229,9 @@
</Filter> </Filter>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\..\Source\Application\jucer_AppearanceSettings.cpp">
<Filter>The Introjucer\Application</Filter>
</ClCompile>
<ClCompile Include="..\..\Source\Application\jucer_CommandLine.cpp"> <ClCompile Include="..\..\Source\Application\jucer_CommandLine.cpp">
<Filter>The Introjucer\Application</Filter> <Filter>The Introjucer\Application</Filter>
</ClCompile> </ClCompile>
@@ -1194,6 +1197,9 @@
</ClCompile> </ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\..\Source\Application\jucer_AppearanceSettings.h">
<Filter>The Introjucer\Application</Filter>
</ClInclude>
<ClInclude Include="..\..\Source\Application\jucer_Application.h"> <ClInclude Include="..\..\Source\Application\jucer_Application.h">
<Filter>The Introjucer\Application</Filter> <Filter>The Introjucer\Application</Filter>
</ClInclude> </ClInclude>


+ 4
- 0
extras/Introjucer/Introjucer.jucer View File

@@ -65,6 +65,10 @@
</EXPORTFORMATS> </EXPORTFORMATS>
<MAINGROUP name="The Introjucer" id="NhrJq66R"> <MAINGROUP name="The Introjucer" id="NhrJq66R">
<GROUP id="mslFIKZ" name="Application"> <GROUP id="mslFIKZ" name="Application">
<FILE id="pI5xt5" name="jucer_AppearanceSettings.cpp" compile="1" resource="0"
file="Source/Application/jucer_AppearanceSettings.cpp"/>
<FILE id="oCCddi" name="jucer_AppearanceSettings.h" compile="0" resource="0"
file="Source/Application/jucer_AppearanceSettings.h"/>
<FILE id="PXX8Yi" name="jucer_Application.h" compile="0" resource="0" <FILE id="PXX8Yi" name="jucer_Application.h" compile="0" resource="0"
file="Source/Application/jucer_Application.h"/> file="Source/Application/jucer_Application.h"/>
<FILE id="lHd3UQJ" name="jucer_CommandIDs.h" compile="0" resource="0" <FILE id="lHd3UQJ" name="jucer_CommandIDs.h" compile="0" resource="0"


+ 360
- 0
extras/Introjucer/Source/Application/jucer_AppearanceSettings.cpp View File

@@ -0,0 +1,360 @@
/*
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-11 by Raw Material Software Ltd.
------------------------------------------------------------------------------
JUCE can be redistributed and/or modified under the terms of the GNU General
Public License (Version 2), as published by the Free Software Foundation.
A copy of the license is included in the JUCE distribution, or can be found
online at www.gnu.org/licenses.
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
------------------------------------------------------------------------------
To release a closed-source product which uses JUCE, commercial licenses are
available: visit www.rawmaterialsoftware.com/juce for more information.
==============================================================================
*/
#include "jucer_Application.h"
#include "jucer_AppearanceSettings.h"
//==============================================================================
AppearanceSettings::AppearanceSettings (const CodeEditorComponent& editor)
: settings ("COLOUR_SCHEME")
{
getColourValue ("Background") = editor.findColour (CodeEditorComponent::backgroundColourId).toString();
getColourValue ("Plain Text") = editor.findColour (CodeEditorComponent::defaultTextColourId).toString();
getColourValue ("Selected Background") = editor.findColour (CodeEditorComponent::highlightColourId).toString();
const CodeEditorComponent::ColourScheme cs (editor.getColourScheme());
for (int i = cs.types.size(); --i >= 0;)
{
CodeEditorComponent::ColourScheme::TokenType& t = cs.types.getReference(i);
getColourValue (t.name) = t.colour.toString();
}
Font f (editor.getFont());
f.setTypefaceName (f.getTypeface()->getName());
getCodeFontValue() = f.toString();
}
bool AppearanceSettings::readFromFile (const File& file)
{
const ScopedPointer<XmlElement> xml (XmlDocument::parse (file));
if (xml != nullptr && xml->hasTagName (settings.getType().toString()))
{
settings = ValueTree::fromXml (*xml);
return true;
}
return false;
}
bool AppearanceSettings::writeToFile (const File& file) const
{
const ScopedPointer<XmlElement> xml (settings.createXml());
return xml != nullptr && xml->writeToFile (file, String::empty);
}
StringArray AppearanceSettings::getColourNames() const
{
StringArray s;
for (int i = 0; i < settings.getNumChildren(); ++i)
{
const ValueTree c (settings.getChild(i));
if (c.hasType ("COLOUR"))
s.add (c [Ids::name]);
}
return s;
}
void AppearanceSettings::applyToCodeEditor (CodeEditorComponent& editor) const
{
CodeEditorComponent::ColourScheme cs (editor.getColourScheme());
for (int i = cs.types.size(); --i >= 0;)
{
CodeEditorComponent::ColourScheme::TokenType& t = cs.types.getReference(i);
getColour (t.name, t.colour);
}
editor.setColourScheme (cs);
Colour col;
if (getColour ("Plain Text", col)) editor.setColour (CodeEditorComponent::defaultTextColourId, col);
if (getColour ("Selected Background", col)) editor.setColour (CodeEditorComponent::highlightColourId, col);
if (getColour ("Background", col))
{
col = Colours::white.overlaidWith (col);
editor.setColour (CodeEditorComponent::backgroundColourId, col);
editor.setColour (CaretComponent::caretColourId, col.contrasting());
}
editor.setFont (getCodeFont());
}
Font AppearanceSettings::getCodeFont() const
{
const String fontString (settings [Ids::font].toString());
if (fontString.isEmpty())
{
#if JUCE_MAC
Font font (13.0f);
font.setTypefaceName ("Menlo");
#else
Font font (10.0f);
font.setTypefaceName (Font::getDefaultMonospacedFontName());
#endif
return font;
}
return Font::fromString (fontString);
}
Value AppearanceSettings::getCodeFontValue()
{
return settings.getPropertyAsValue (Ids::font, nullptr);
}
Value AppearanceSettings::getColourValue (const String& colourName)
{
ValueTree c (settings.getChildWithProperty (Ids::name, colourName));
if (! c.isValid())
{
c = ValueTree ("COLOUR");
c.setProperty (Ids::name, colourName, nullptr);
settings.addChild (c, -1, nullptr);
}
return c.getPropertyAsValue (Ids::colour, nullptr);
}
bool AppearanceSettings::getColour (const String& name, Colour& result) const
{
const ValueTree colour (settings.getChildWithProperty (Ids::name, name));
if (colour.isValid())
{
result = Colour::fromString (colour [Ids::colour].toString());
return true;
}
return false;
}
//==============================================================================
struct AppearanceEditor
{
class Window : public DialogWindow
{
public:
Window() : DialogWindow ("Appearance Settings", Colours::black, true, true)
{
setUsingNativeTitleBar (true);
setContentOwned (new EditorPanel(), false);
setResizable (true, true);
const int width = 350;
setResizeLimits (width, 200, width, 1000);
String windowState (getAppProperties().getValue (getWindowPosName()));
if (windowState.isNotEmpty())
restoreWindowStateFromString (windowState);
else
centreAroundComponent (Component::getCurrentlyFocusedComponent(), width, 500);
setVisible (true);
}
~Window()
{
getAppProperties().setValue (getWindowPosName(), getWindowStateAsString());
}
void closeButtonPressed()
{
JucerApplication::getApp()->appearanceEditorWindow = nullptr;
}
private:
static const char* getWindowPosName() { return "colourSchemeEditorPos"; }
JUCE_DECLARE_NON_COPYABLE (Window);
};
//==============================================================================
class EditorPanel : public Component,
private Button::Listener
{
public:
EditorPanel()
: loadButton ("Load Scheme..."),
saveButton ("Save Scheme...")
{
setOpaque (true);
rebuildProperties();
addAndMakeVisible (&panel);
loadButton.setColour (TextButton::buttonColourId, Colours::grey);
saveButton.setColour (TextButton::buttonColourId, Colours::grey);
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 paint (Graphics& g)
{
g.fillAll (Colours::black);
}
void resized()
{
Rectangle<int> r (getLocalBounds());
panel.setBounds (r.removeFromTop (getHeight() - 26).reduced (4, 3));
loadButton.setBounds (r.removeFromLeft (getWidth() / 2).reduced (10, 3));
saveButton.setBounds (r.reduced (10, 3));
}
private:
PropertyPanel panel;
TextButton loadButton, saveButton;
void buttonClicked (Button* b)
{
if (b == &loadButton)
loadScheme();
else
saveScheme();
}
void saveScheme()
{
FileChooser fc ("Select a file in which to save this colour-scheme...",
getAppSettings().getSchemesFolder().getNonexistentChildFile ("Scheme", ".editorscheme"),
"*.editorscheme");
if (fc.browseForFileToSave (true))
{
File file (fc.getResult().withFileExtension (".editorscheme"));
getAppSettings().appearance.writeToFile (file);
}
}
void loadScheme()
{
FileChooser fc ("Please select a colour-scheme file to load...",
getAppSettings().getSchemesFolder(),
"*.editorscheme");
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
{
return Font::fromString (sourceValue.toString()).getTypefaceName();
}
void setValue (const var& newValue)
{
Font font (Font::fromString (sourceValue.toString()));
font.setTypefaceName (newValue.toString());
sourceValue = font.toString();
}
static ChoicePropertyComponent* createProperty (const String& title, const Value& value)
{
const StringArray& fontNames = getAppSettings().getFontNames();
Array<var> values;
for (int i = 0; i < fontNames.size(); ++i)
values.add (fontNames[i]);
return new ChoicePropertyComponent (Value (new FontNameValueSource (value)),
title, fontNames, values);
}
};
//==============================================================================
class FontSizeValueSource : public ValueSourceFilter
{
public:
FontSizeValueSource (const Value& source) : ValueSourceFilter (source) {}
var getValue() const
{
return Font::fromString (sourceValue.toString()).getHeight();
}
void setValue (const var& newValue)
{
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);
}
};
};
Component* AppearanceSettings::createEditorWindow()
{
return new AppearanceEditor::Window();
}

+ 53
- 0
extras/Introjucer/Source/Application/jucer_AppearanceSettings.h View File

@@ -0,0 +1,53 @@
/*
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-11 by Raw Material Software Ltd.
------------------------------------------------------------------------------
JUCE can be redistributed and/or modified under the terms of the GNU General
Public License (Version 2), as published by the Free Software Foundation.
A copy of the license is included in the JUCE distribution, or can be found
online at www.gnu.org/licenses.
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
------------------------------------------------------------------------------
To release a closed-source product which uses JUCE, commercial licenses are
available: visit www.rawmaterialsoftware.com/juce for more information.
==============================================================================
*/
#ifndef __JUCER_APPEARANCESETTINGS_H_34D762C7__
#define __JUCER_APPEARANCESETTINGS_H_34D762C7__
class AppearanceSettings
{
public:
AppearanceSettings (const CodeEditorComponent& editorToCopyFrom);
bool readFromFile (const File& file);
bool writeToFile (const File& file) const;
void applyToCodeEditor (CodeEditorComponent& editor) const;
StringArray getColourNames() const;
Value getColourValue (const String& colourName);
bool getColour (const String& name, Colour& resultIfFound) const;
Font getCodeFont() const;
Value getCodeFontValue();
ValueTree settings;
static Component* createEditorWindow();
};
#endif

+ 39
- 18
extras/Introjucer/Source/Application/jucer_Application.h View File

@@ -30,6 +30,7 @@
#include "jucer_MainWindow.h" #include "jucer_MainWindow.h"
#include "jucer_JuceUpdater.h" #include "jucer_JuceUpdater.h"
#include "jucer_CommandLine.h" #include "jucer_CommandLine.h"
#include "../Code Editor/jucer_SourceCodeEditor.h"
//============================================================================== //==============================================================================
@@ -80,14 +81,15 @@ public:
void shutdown() void shutdown()
{ {
appearanceEditorWindow = nullptr;
#if JUCE_MAC #if JUCE_MAC
MenuBarModel::setMacMainMenu (nullptr); MenuBarModel::setMacMainMenu (nullptr);
#endif #endif
menuModel = nullptr; menuModel = nullptr;
mainWindowList.forceCloseAllWindows(); mainWindowList.forceCloseAllWindows();
OpenDocumentManager::deleteInstance();
openDocumentManager.clear();
commandManager = nullptr; commandManager = nullptr;
settings.flush(); settings.flush();
} }
@@ -204,7 +206,7 @@ public:
menu.addCommandItem (commandManager, CommandIDs::showProjectSettings); menu.addCommandItem (commandManager, CommandIDs::showProjectSettings);
menu.addSeparator(); menu.addSeparator();
menu.addCommandItem (commandManager, CommandIDs::test);
menu.addCommandItem (commandManager, CommandIDs::showAppearanceSettings);
menu.addSeparator(); menu.addSeparator();
menu.addCommandItem (commandManager, CommandIDs::showGrid); menu.addCommandItem (commandManager, CommandIDs::showGrid);
@@ -223,11 +225,11 @@ public:
menu.addCommandItem (commandManager, CommandIDs::closeWindow); menu.addCommandItem (commandManager, CommandIDs::closeWindow);
menu.addSeparator(); menu.addSeparator();
const int numDocs = jmin (50, OpenDocumentManager::getInstance()->getNumOpenDocuments());
const int numDocs = jmin (50, getApp()->openDocumentManager.getNumOpenDocuments());
for (int i = 0; i < numDocs; ++i) for (int i = 0; i < numDocs; ++i)
{ {
OpenDocumentManager::Document* doc = OpenDocumentManager::getInstance()->getOpenDocument(i);
OpenDocumentManager::Document* doc = getApp()->openDocumentManager.getOpenDocument(i);
menu.addItem (300 + i, doc->getName()); menu.addItem (300 + i, doc->getName());
} }
@@ -255,7 +257,7 @@ public:
} }
else if (menuItemID >= 300 && menuItemID < 400) else if (menuItemID >= 300 && menuItemID < 400)
{ {
OpenDocumentManager::Document* doc = OpenDocumentManager::getInstance()->getOpenDocument (menuItemID - 300);
OpenDocumentManager::Document* doc = getApp()->openDocumentManager.getOpenDocument (menuItemID - 300);
jassert (doc != nullptr); jassert (doc != nullptr);
getApp()->mainWindowList.openDocument (doc); getApp()->mainWindowList.openDocument (doc);
@@ -274,6 +276,7 @@ public:
CommandIDs::closeAllDocuments, CommandIDs::closeAllDocuments,
CommandIDs::saveAll, CommandIDs::saveAll,
CommandIDs::updateModules, CommandIDs::updateModules,
CommandIDs::showAppearanceSettings,
CommandIDs::showUTF8Tool }; CommandIDs::showUTF8Tool };
commands.addArray (ids, numElementsInArray (ids)); commands.addArray (ids, numElementsInArray (ids));
@@ -298,14 +301,18 @@ public:
result.defaultKeypresses.add (KeyPress (',', ModifierKeys::commandModifier, 0)); result.defaultKeypresses.add (KeyPress (',', ModifierKeys::commandModifier, 0));
break; break;
case CommandIDs::showAppearanceSettings:
result.setInfo ("Fonts and Colours...", "Shows the appearance settings window.", CommandCategories::general, 0);
break;
case CommandIDs::closeAllDocuments: case CommandIDs::closeAllDocuments:
result.setInfo ("Close All Documents", "Closes all open documents", CommandCategories::general, 0); result.setInfo ("Close All Documents", "Closes all open documents", CommandCategories::general, 0);
result.setActive (OpenDocumentManager::getInstance()->getNumOpenDocuments() > 0);
result.setActive (openDocumentManager.getNumOpenDocuments() > 0);
break; break;
case CommandIDs::saveAll: case CommandIDs::saveAll:
result.setInfo ("Save All", "Saves all open documents", CommandCategories::general, 0); result.setInfo ("Save All", "Saves all open documents", CommandCategories::general, 0);
result.setActive (OpenDocumentManager::getInstance()->anyFilesNeedSaving());
result.setActive (openDocumentManager.anyFilesNeedSaving());
break; break;
case CommandIDs::updateModules: case CommandIDs::updateModules:
@@ -326,15 +333,17 @@ public:
{ {
switch (info.commandID) switch (info.commandID)
{ {
case CommandIDs::newProject: createNewProject(); break;
case CommandIDs::open: askUserToOpenFile(); break;
case CommandIDs::showPrefs: showPrefsPanel(); break;
case CommandIDs::saveAll: OpenDocumentManager::getInstance()->saveAll(); break;
case CommandIDs::closeAllDocuments: closeAllDocuments (true); break;
case CommandIDs::showUTF8Tool: showUTF8ToolWindow(); break;
case CommandIDs::updateModules: runModuleUpdate (String::empty); break;
default: return JUCEApplication::perform (info);
case CommandIDs::newProject: createNewProject(); break;
case CommandIDs::open: askUserToOpenFile(); break;
case CommandIDs::showPrefs: showPrefsPanel(); break;
case CommandIDs::saveAll: openDocumentManager.saveAll(); break;
case CommandIDs::closeAllDocuments: closeAllDocuments (true); break;
case CommandIDs::showUTF8Tool: showUTF8ToolWindow(); break;
case CommandIDs::showAppearanceSettings: showAppearanceEditorWindow(); break;
case CommandIDs::updateModules: runModuleUpdate (String::empty); break;
default:
return JUCEApplication::perform (info);
} }
return true; return true;
@@ -371,7 +380,7 @@ public:
bool closeAllDocuments (bool askUserToSave) bool closeAllDocuments (bool askUserToSave)
{ {
return OpenDocumentManager::getInstance()->closeAll (askUserToSave);
return openDocumentManager.closeAll (askUserToSave);
} }
bool makeSureUserHasSelectedModuleFolder() bool makeSureUserHasSelectedModuleFolder()
@@ -403,6 +412,14 @@ public:
return ModuleList::isJuceOrModulesFolder (list.getModulesFolder()); return ModuleList::isJuceOrModulesFolder (list.getModulesFolder());
} }
void showAppearanceEditorWindow()
{
if (appearanceEditorWindow == nullptr)
appearanceEditorWindow = AppearanceSettings::createEditorWindow();
appearanceEditorWindow->toFront (true);
}
//============================================================================== //==============================================================================
virtual void doExtraInitialisation() {} virtual void doExtraInitialisation() {}
virtual void addExtraConfigItems (Project&, TreeViewItem&) {} virtual void addExtraConfigItems (Project&, TreeViewItem&) {}
@@ -417,7 +434,11 @@ public:
Icons icons; Icons icons;
ScopedPointer<MainMenuModel> menuModel; ScopedPointer<MainMenuModel> menuModel;
MainWindowList mainWindowList; MainWindowList mainWindowList;
OpenDocumentManager openDocumentManager;
ScopedPointer<Component> appearanceEditorWindow;
private: private:
class AsyncQuitRetrier : public Timer class AsyncQuitRetrier : public Timer


+ 2
- 12
extras/Introjucer/Source/Application/jucer_CommandIDs.h View File

@@ -40,6 +40,7 @@ namespace CommandIDs
static const int showProjectSettings = 0x200074; static const int showProjectSettings = 0x200074;
static const int updateModules = 0x200075; static const int updateModules = 0x200075;
static const int showUTF8Tool = 0x200076; static const int showUTF8Tool = 0x200076;
static const int showAppearanceSettings = 0x200077;
static const int saveAll = 0x200080; static const int saveAll = 0x200080;
static const int undo = 0x200090; static const int undo = 0x200090;
@@ -48,7 +49,6 @@ namespace CommandIDs
static const int closeWindow = 0x201001; static const int closeWindow = 0x201001;
static const int closeAllDocuments = 0x201000; static const int closeAllDocuments = 0x201000;
static const int test = 0x202090;
static const int toFront = 0x2020a0; static const int toFront = 0x2020a0;
static const int toBack = 0x2030a1; static const int toBack = 0x2030a1;
static const int showOrHideProperties = 0x2030b0; static const int showOrHideProperties = 0x2030b0;
@@ -71,21 +71,11 @@ namespace CommandIDs
static const int showGrid = 0x2020e0; static const int showGrid = 0x2020e0;
static const int enableSnapToGrid = 0x2020f0; static const int enableSnapToGrid = 0x2020f0;
static const int editCompLayout = 0x202100;
static const int editCompGraphics = 0x202110;
static const int bringBackLostItems = 0x202120;
static const int zoomIn = 0x202130; static const int zoomIn = 0x202130;
static const int zoomOut = 0x202140; static const int zoomOut = 0x202140;
static const int zoomNormal = 0x202150; static const int zoomNormal = 0x202150;
static const int spaceBarDrag = 0x202160; static const int spaceBarDrag = 0x202160;
static const int compOverlay0 = 0x202200;
static const int compOverlay33 = 0x202210;
static const int compOverlay66 = 0x202220;
static const int compOverlay100 = 0x202230;
static const int bringBackLostItems = 0x202120;
static const int newDocumentBase = 0x322010; static const int newDocumentBase = 0x322010;
static const int newComponentBase = 0x302010; static const int newComponentBase = 0x302010;


+ 3
- 2
extras/Introjucer/Source/Application/jucer_DocumentEditorComponent.cpp View File

@@ -25,18 +25,19 @@
#include "jucer_DocumentEditorComponent.h" #include "jucer_DocumentEditorComponent.h"
#include "../Project/jucer_ProjectContentComponent.h" #include "../Project/jucer_ProjectContentComponent.h"
#include "../Application/jucer_Application.h"
//============================================================================== //==============================================================================
DocumentEditorComponent::DocumentEditorComponent (OpenDocumentManager::Document* document_) DocumentEditorComponent::DocumentEditorComponent (OpenDocumentManager::Document* document_)
: document (document_) : document (document_)
{ {
OpenDocumentManager::getInstance()->addListener (this);
JucerApplication::getApp()->openDocumentManager.addListener (this);
} }
DocumentEditorComponent::~DocumentEditorComponent() DocumentEditorComponent::~DocumentEditorComponent()
{ {
OpenDocumentManager::getInstance()->removeListener (this);
JucerApplication::getApp()->openDocumentManager.removeListener (this);
} }
void DocumentEditorComponent::documentAboutToClose (OpenDocumentManager::Document* closingDoc) void DocumentEditorComponent::documentAboutToClose (OpenDocumentManager::Document* closingDoc)


+ 3
- 3
extras/Introjucer/Source/Application/jucer_MainWindow.cpp View File

@@ -126,7 +126,7 @@ bool MainWindow::closeProject (Project* project)
getAppProperties().setValue (getProjectWindowPosName(), getWindowStateAsString()); getAppProperties().setValue (getProjectWindowPosName(), getWindowStateAsString());
if (! OpenDocumentManager::getInstance()->closeAllDocumentsUsingProject (*project, true))
if (! JucerApplication::getApp()->openDocumentManager.closeAllDocumentsUsingProject (*project, true))
return false; return false;
ProjectContentComponent* const pcc = getProjectContentComponent(); ProjectContentComponent* const pcc = getProjectContentComponent();
@@ -174,7 +174,7 @@ void MainWindow::restoreWindowPosition()
bool MainWindow::canOpenFile (const File& file) const bool MainWindow::canOpenFile (const File& file) const
{ {
return file.hasFileExtension (Project::projectFileExtension) return file.hasFileExtension (Project::projectFileExtension)
|| OpenDocumentManager::getInstance()->canOpenFile (file);
|| JucerApplication::getApp()->openDocumentManager.canOpenFile (file);
} }
bool MainWindow::openFile (const File& file) bool MainWindow::openFile (const File& file)
@@ -227,7 +227,7 @@ void MainWindow::activeWindowStatusChanged()
if (getProjectContentComponent() != nullptr) if (getProjectContentComponent() != nullptr)
getProjectContentComponent()->updateMissingFileStatuses(); getProjectContentComponent()->updateMissingFileStatuses();
OpenDocumentManager::getInstance()->reloadModifiedFiles();
JucerApplication::getApp()->openDocumentManager.reloadModifiedFiles();
} }
void MainWindow::updateTitle (const String& documentName) void MainWindow::updateTitle (const String& documentName)


+ 5
- 2
extras/Introjucer/Source/Application/jucer_OpenDocumentManager.cpp View File

@@ -91,10 +91,13 @@ OpenDocumentManager::OpenDocumentManager()
OpenDocumentManager::~OpenDocumentManager() OpenDocumentManager::~OpenDocumentManager()
{ {
clearSingletonInstance();
} }
juce_ImplementSingleton_SingleThreaded (OpenDocumentManager);
void OpenDocumentManager::clear()
{
documents.clear();
types.clear();
}
//============================================================================== //==============================================================================
void OpenDocumentManager::registerType (DocumentType* type) void OpenDocumentManager::registerType (DocumentType* type)


+ 1
- 2
extras/Introjucer/Source/Application/jucer_OpenDocumentManager.h View File

@@ -38,8 +38,6 @@ public:
OpenDocumentManager(); OpenDocumentManager();
~OpenDocumentManager(); ~OpenDocumentManager();
juce_DeclareSingleton_SingleThreaded_Minimal (OpenDocumentManager);
//============================================================================== //==============================================================================
class Document class Document
{ {
@@ -68,6 +66,7 @@ public:
int getNumOpenDocuments() const; int getNumOpenDocuments() const;
Document* getOpenDocument (int index) const; Document* getOpenDocument (int index) const;
void moveDocumentToTopOfStack (Document* doc); void moveDocumentToTopOfStack (Document* doc);
void clear();
bool canOpenFile (const File& file); bool canOpenFile (const File& file);
Document* openFile (Project* project, const File& file); Document* openFile (Project* project, const File& file);


+ 18
- 3
extras/Introjucer/Source/Code Editor/jucer_SourceCodeEditor.cpp View File

@@ -37,7 +37,7 @@ SourceCodeEditor::SourceCodeEditor (OpenDocumentManager::Document* document_,
addAndMakeVisible (&editor); addAndMakeVisible (&editor);
#if JUCE_MAC #if JUCE_MAC
Font font (10.6f);
Font font (13.0f);
font.setTypefaceName ("Menlo"); font.setTypefaceName ("Menlo");
#else #else
Font font (10.0f); Font font (10.0f);
@@ -46,10 +46,14 @@ SourceCodeEditor::SourceCodeEditor (OpenDocumentManager::Document* document_,
editor.setFont (font); editor.setFont (font);
editor.setTabSize (4, true); editor.setTabSize (4, true);
updateColourScheme();
getAppSettings().appearance.settings.addListener (this);
} }
SourceCodeEditor::~SourceCodeEditor() SourceCodeEditor::~SourceCodeEditor()
{ {
getAppSettings().appearance.settings.removeListener (this);
} }
void SourceCodeEditor::resized() void SourceCodeEditor::resized()
@@ -71,6 +75,17 @@ CodeTokeniser* SourceCodeEditor::getTokeniserFor (const File& file)
SourceCodeEditor* SourceCodeEditor::createFor (OpenDocumentManager::Document* document, SourceCodeEditor* SourceCodeEditor::createFor (OpenDocumentManager::Document* document,
CodeDocument& codeDocument) CodeDocument& codeDocument)
{ {
return new SourceCodeEditor (document, codeDocument,
getTokeniserFor (document->getFile()));
return new SourceCodeEditor (document, codeDocument, getTokeniserFor (document->getFile()));
}
void SourceCodeEditor::valueTreePropertyChanged (ValueTree&, const Identifier&) { updateColourScheme(); }
void SourceCodeEditor::valueTreeChildAdded (ValueTree&, ValueTree&) { updateColourScheme(); }
void SourceCodeEditor::valueTreeChildRemoved (ValueTree&, ValueTree&) { updateColourScheme(); }
void SourceCodeEditor::valueTreeChildOrderChanged (ValueTree&) { updateColourScheme(); }
void SourceCodeEditor::valueTreeParentChanged (ValueTree&) { updateColourScheme(); }
void SourceCodeEditor::valueTreeRedirected (ValueTree&) { updateColourScheme(); }
void SourceCodeEditor::updateColourScheme()
{
getAppSettings().appearance.applyToCodeEditor (editor);
} }

+ 11
- 4
extras/Introjucer/Source/Code Editor/jucer_SourceCodeEditor.h View File

@@ -29,11 +29,9 @@
#include "../Project/jucer_Project.h" #include "../Project/jucer_Project.h"
#include "../Application/jucer_DocumentEditorComponent.h" #include "../Application/jucer_DocumentEditorComponent.h"
//============================================================================== //==============================================================================
/**
*/
class SourceCodeEditor : public DocumentEditorComponent
class SourceCodeEditor : public DocumentEditorComponent,
private ValueTree::Listener
{ {
public: public:
//============================================================================== //==============================================================================
@@ -54,6 +52,15 @@ public:
CodeEditorComponent editor; CodeEditorComponent editor;
private: private:
void valueTreePropertyChanged (ValueTree&, const Identifier&);
void valueTreeChildAdded (ValueTree&, ValueTree&);
void valueTreeChildRemoved (ValueTree&, ValueTree&);
void valueTreeChildOrderChanged (ValueTree&);
void valueTreeParentChanged (ValueTree&);
void valueTreeRedirected (ValueTree&);
void updateColourScheme();
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (SourceCodeEditor); JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (SourceCodeEditor);
}; };


+ 2
- 2
extras/Introjucer/Source/Project/jucer_Project.cpp View File

@@ -66,7 +66,7 @@ Project::Project (const File& file_)
Project::~Project() Project::~Project()
{ {
projectRoot.removeListener (this); projectRoot.removeListener (this);
OpenDocumentManager::getInstance()->closeAllDocumentsUsingProject (*this, false);
JucerApplication::getApp()->openDocumentManager.closeAllDocumentsUsingProject (*this, false);
} }
//============================================================================== //==============================================================================
@@ -537,7 +537,7 @@ bool Project::Item::renameFile (const File& newFile)
|| (newFile.exists() && ! oldFile.exists())) || (newFile.exists() && ! oldFile.exists()))
{ {
setFile (newFile); setFile (newFile);
OpenDocumentManager::getInstance()->fileHasBeenRenamed (oldFile, newFile);
JucerApplication::getApp()->openDocumentManager.fileHasBeenRenamed (oldFile, newFile);
return true; return true;
} }


+ 47
- 21
extras/Introjucer/Source/Project/jucer_ProjectContentComponent.cpp View File

@@ -25,6 +25,7 @@
#include "jucer_ProjectContentComponent.h" #include "jucer_ProjectContentComponent.h"
#include "../Application/jucer_MainWindow.h" #include "../Application/jucer_MainWindow.h"
#include "../Application/jucer_Application.h"
#include "../Code Editor/jucer_SourceCodeEditor.h" #include "../Code Editor/jucer_SourceCodeEditor.h"
#include "jucer_ConfigPage.h" #include "jucer_ConfigPage.h"
#include "jucer_TreeViewTypes.h" #include "jucer_TreeViewTypes.h"
@@ -109,6 +110,25 @@ void ProjectContentComponent::paint (Graphics& g)
g.fillAll (Colour::greyLevel (0.8f)); g.fillAll (Colour::greyLevel (0.8f));
} }
void ProjectContentComponent::resized()
{
Rectangle<int> r (getLocalBounds());
treeViewTabs.setBounds (r.removeFromLeft (treeViewTabs.getWidth()));
if (resizerBar != nullptr)
resizerBar->setBounds (r.removeFromLeft (4));
if (contentView != nullptr)
contentView->setBounds (r);
}
void ProjectContentComponent::childBoundsChanged (Component* child)
{
if (child == &treeViewTabs)
resized();
}
void ProjectContentComponent::setProject (Project* newProject) void ProjectContentComponent::setProject (Project* newProject)
{ {
if (project != newProject) if (project != newProject)
@@ -121,38 +141,44 @@ void ProjectContentComponent::setProject (Project* newProject)
contentView = nullptr; contentView = nullptr;
resizerBar = nullptr; resizerBar = nullptr;
treeViewTabs.clearTabs();
if (project != nullptr && treeViewTabs.isShowing())
{
if (treeViewTabs.getWidth() > 0)
settings.setValue ("projectTreeviewWidth_" + project->getProjectUID(), treeViewTabs.getWidth());
if (treeViewTabs.isShowing() && treeViewTabs.getWidth() > 0)
settings.setValue ("projectTreeviewWidth", treeViewTabs.getWidth());
settings.setValue ("lastTab_" + project->getProjectUID(), treeViewTabs.getCurrentTabName());
}
treeViewTabs.clearTabs();
project = newProject; project = newProject;
if (project != nullptr) if (project != nullptr)
{ {
treeViewTabs.setVisible (true);
addChildAndSetID (&treeViewTabs, "tree");
addAndMakeVisible (&treeViewTabs);
createProjectTabs(); createProjectTabs();
String lastTreeWidth (settings.getValue ("projectTreeviewWidth"));
if (lastTreeWidth.getIntValue() < 150)
lastTreeWidth = "250";
const String lastTabName (settings.getValue ("lastTab_" + project->getProjectUID()));
int lastTabIndex = treeViewTabs.getTabNames().indexOf (lastTabName);
treeViewTabs.setBounds ("0, 0, left + " + lastTreeWidth + ", parent.height");
if (lastTabIndex < 0 || lastTabIndex > treeViewTabs.getNumTabs())
lastTabIndex = 1;
addChildAndSetID (resizerBar = new ResizableEdgeComponent (&treeViewTabs, &treeSizeConstrainer,
ResizableEdgeComponent::rightEdge),
"resizer");
treeViewTabs.setCurrentTabIndex (lastTabIndex);
resizerBar->setBounds ("tree.right, 0, tree.right + 4, parent.height");
int lastTreeWidth = settings.getValue ("projectTreeviewWidth_" + project->getProjectUID()).getIntValue();
if (lastTreeWidth < 150)
lastTreeWidth = 250;
project->addChangeListener (this);
treeViewTabs.setBounds (0, 0, lastTreeWidth, getHeight());
addAndMakeVisible (resizerBar = new ResizableEdgeComponent (&treeViewTabs, &treeSizeConstrainer,
ResizableEdgeComponent::rightEdge));
if (currentDocument == nullptr)
invokeDirectly (CommandIDs::showProjectSettings, true);
project->addChangeListener (this);
updateMissingFileStatuses(); updateMissingFileStatuses();
resized();
} }
else else
{ {
@@ -163,6 +189,7 @@ void ProjectContentComponent::setProject (Project* newProject)
void ProjectContentComponent::createProjectTabs() void ProjectContentComponent::createProjectTabs()
{ {
jassert (project != nullptr);
treeViewTabs.addTab ("Files", Colour::greyLevel (0.93f), new FileTreeTab (*project), true); treeViewTabs.addTab ("Files", Colour::greyLevel (0.93f), new FileTreeTab (*project), true);
treeViewTabs.addTab ("Config", Colour::greyLevel (0.93f), new ConfigTreeTab (*project), true); treeViewTabs.addTab ("Config", Colour::greyLevel (0.93f), new ConfigTreeTab (*project), true);
} }
@@ -205,7 +232,7 @@ void ProjectContentComponent::updateMissingFileStatuses()
bool ProjectContentComponent::showEditorForFile (const File& f) bool ProjectContentComponent::showEditorForFile (const File& f)
{ {
return showDocument (OpenDocumentManager::getInstance()->openFile (project, f));
return showDocument (JucerApplication::getApp()->openDocumentManager.openFile (project, f));
} }
bool ProjectContentComponent::showDocument (OpenDocumentManager::Document* doc) bool ProjectContentComponent::showDocument (OpenDocumentManager::Document* doc)
@@ -213,7 +240,7 @@ bool ProjectContentComponent::showDocument (OpenDocumentManager::Document* doc)
if (doc == nullptr) if (doc == nullptr)
return false; return false;
OpenDocumentManager::getInstance()->moveDocumentToTopOfStack (doc);
JucerApplication::getApp()->openDocumentManager.moveDocumentToTopOfStack (doc);
if (doc->hasFileBeenModifiedExternally()) if (doc->hasFileBeenModifiedExternally())
doc->reloadFromFile(); doc->reloadFromFile();
@@ -242,11 +269,10 @@ bool ProjectContentComponent::setEditorComponent (Component* editor, OpenDocumen
contentView = editor; contentView = editor;
currentDocument = doc; currentDocument = doc;
addAndMakeVisible (editor); addAndMakeVisible (editor);
editor->setBounds ("resizer.right, 0, parent.right, parent.height");
resized();
updateMainWindowTitle(); updateMainWindowTitle();
commandManager->commandStatusChanged(); commandManager->commandStatusChanged();
return true; return true;
} }
@@ -419,7 +445,7 @@ bool ProjectContentComponent::perform (const InvocationInfo& info)
case CommandIDs::closeDocument: case CommandIDs::closeDocument:
if (currentDocument != nullptr) if (currentDocument != nullptr)
OpenDocumentManager::getInstance()->closeDocument (currentDocument, true);
JucerApplication::getApp()->openDocumentManager.closeDocument (currentDocument, true);
break; break;
case CommandIDs::openInIDE: case CommandIDs::openInIDE:


+ 4
- 2
extras/Introjucer/Source/Project/jucer_ProjectContentComponent.h View File

@@ -42,8 +42,6 @@ public:
ProjectContentComponent(); ProjectContentComponent();
~ProjectContentComponent(); ~ProjectContentComponent();
void paint (Graphics& g);
Project* getProject() const noexcept { return project; } Project* getProject() const noexcept { return project; }
virtual void setProject (Project* project); virtual void setProject (Project* project);
void saveTreeViewState(); void saveTreeViewState();
@@ -68,6 +66,10 @@ public:
bool isCommandActive (const CommandID commandID); bool isCommandActive (const CommandID commandID);
bool perform (const InvocationInfo& info); bool perform (const InvocationInfo& info);
void paint (Graphics& g);
void resized();
void childBoundsChanged (Component* child);
protected: protected:
Project* project; Project* project;
OpenDocumentManager::Document* currentDocument; OpenDocumentManager::Document* currentDocument;


+ 5
- 3
extras/Introjucer/Source/Project/jucer_ProjectTreeViewBase.cpp View File

@@ -24,7 +24,7 @@
*/ */
#include "jucer_ProjectTreeViewBase.h" #include "jucer_ProjectTreeViewBase.h"
#include "../Application/jucer_OpenDocumentManager.h"
#include "../Application/jucer_Application.h"
//============================================================================== //==============================================================================
@@ -220,11 +220,13 @@ void ProjectTreeViewBase::deleteAllSelectedItems()
if (treeRootItem != nullptr) if (treeRootItem != nullptr)
{ {
OpenDocumentManager& om = JucerApplication::getApp()->openDocumentManager;
for (int i = filesToTrash.size(); --i >= 0;) for (int i = filesToTrash.size(); --i >= 0;)
{ {
const File f (*filesToTrash.getUnchecked(i)); const File f (*filesToTrash.getUnchecked(i));
OpenDocumentManager::getInstance()->closeFile (f, false);
om.closeFile (f, false);
if (! f.moveToTrash()) if (! f.moveToTrash())
{ {
@@ -238,7 +240,7 @@ void ProjectTreeViewBase::deleteAllSelectedItems()
if (itemToRemove != nullptr) if (itemToRemove != nullptr)
{ {
OpenDocumentManager::getInstance()->closeFile (itemToRemove->getFile(), false);
om.closeFile (itemToRemove->getFile(), false);
itemToRemove->deleteItem(); itemToRemove->deleteItem();
} }
} }


+ 1
- 0
extras/Introjucer/Source/Utility/jucer_JucerTreeViewBase.h View File

@@ -112,6 +112,7 @@ public:
tree.setDefaultOpenness (true); tree.setDefaultOpenness (true);
tree.setColour (TreeView::backgroundColourId, Colours::transparentBlack); tree.setColour (TreeView::backgroundColourId, Colours::transparentBlack);
tree.setIndentSize (14); tree.setIndentSize (14);
tree.getViewport()->setScrollBarThickness (14);
} }
~TreePanelBase() ~TreePanelBase()


+ 1
- 1
extras/Introjucer/Source/Utility/jucer_MiscUtilities.cpp View File

@@ -468,7 +468,7 @@ class CallOutBoxCallback : public ModalComponentManager::Callback
public: public:
CallOutBoxCallback (Component& attachTo, Component* content_) CallOutBoxCallback (Component& attachTo, Component* content_)
: content (content_), : content (content_),
callout (*content_, attachTo, attachTo.getTopLevelComponent())
callout (*content_, attachTo, nullptr)
{ {
callout.setVisible (true); callout.setVisible (true);
callout.enterModalState (true, this); callout.enterModalState (true, this);


+ 201
- 0
extras/Introjucer/Source/Utility/jucer_MiscUtilities.h View File

@@ -146,3 +146,204 @@ protected:
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ValueSourceFilter); JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ValueSourceFilter);
}; };
//==============================================================================
class PopupColourSelector : public Component,
public ChangeListener,
public Value::Listener,
public ButtonListener
{
public:
PopupColourSelector (const Value& colourValue_,
const Colour& defaultColour_,
const bool canResetToDefault)
: defaultButton ("Reset to Default"),
colourValue (colourValue_),
defaultColour (defaultColour_)
{
addAndMakeVisible (&selector);
selector.setName ("Colour");
selector.setCurrentColour (getColour());
selector.addChangeListener (this);
if (canResetToDefault)
{
addAndMakeVisible (&defaultButton);
defaultButton.addListener (this);
}
colourValue.addListener (this);
setSize (300, 400);
}
void resized()
{
if (defaultButton.isVisible())
{
selector.setBounds (0, 0, getWidth(), getHeight() - 30);
defaultButton.changeWidthToFitText (22);
defaultButton.setTopLeftPosition (10, getHeight() - 26);
}
else
{
selector.setBounds (0, 0, getWidth(), getHeight());
}
}
Colour getColour() const
{
if (colourValue.toString().isEmpty())
return defaultColour;
return Colour::fromString (colourValue.toString());
}
void setColour (const Colour& newColour)
{
if (getColour() != newColour)
{
if (newColour == defaultColour && defaultButton.isVisible())
colourValue = var::null;
else
colourValue = newColour.toDisplayString (true);
}
}
void buttonClicked (Button*)
{
setColour (defaultColour);
selector.setCurrentColour (defaultColour);
}
void changeListenerCallback (ChangeBroadcaster*)
{
if (selector.getCurrentColour() != getColour())
setColour (selector.getCurrentColour());
}
void valueChanged (Value&)
{
selector.setCurrentColour (getColour());
}
private:
StoredSettings::ColourSelectorWithSwatches selector;
TextButton defaultButton;
Value colourValue;
Colour defaultColour;
};
//==============================================================================
/**
A component that shows a colour swatch with hex ARGB value, and which pops up
a colour selector when you click it.
*/
class ColourEditorComponent : public Component,
public Value::Listener
{
public:
ColourEditorComponent (UndoManager* undoManager_, const Value& colourValue_,
const Colour& defaultColour_, const bool canResetToDefault_)
: undoManager (undoManager_), colourValue (colourValue_), defaultColour (defaultColour_),
canResetToDefault (canResetToDefault_)
{
colourValue.addListener (this);
}
void paint (Graphics& g)
{
const Colour colour (getColour());
g.fillAll (Colours::grey);
g.fillCheckerBoard (getLocalBounds().reduced (2, 2),
10, 10,
Colour (0xffdddddd).overlaidWith (colour),
Colour (0xffffffff).overlaidWith (colour));
g.setColour (Colours::white.overlaidWith (colour).contrasting());
g.setFont (Font (getHeight() * 0.6f, Font::bold));
g.drawFittedText (colour.toDisplayString (true),
2, 1, getWidth() - 4, getHeight() - 1,
Justification::centred, 1);
}
Colour getColour() const
{
if (colourValue.toString().isEmpty())
return defaultColour;
return Colour::fromString (colourValue.toString());
}
void setColour (const Colour& newColour)
{
if (getColour() != newColour)
{
if (newColour == defaultColour && canResetToDefault)
colourValue = var::null;
else
colourValue = newColour.toDisplayString (true);
}
}
void resetToDefault()
{
setColour (defaultColour);
}
void refresh()
{
const Colour col (getColour());
if (col != lastColour)
{
lastColour = col;
repaint();
}
}
void mouseDown (const MouseEvent&)
{
if (undoManager != nullptr)
undoManager->beginNewTransaction();
launchAsyncCallOutBox (*this, new PopupColourSelector (colourValue, defaultColour, canResetToDefault));
}
void valueChanged (Value&)
{
refresh();
}
private:
UndoManager* undoManager;
Value colourValue;
Colour lastColour;
const Colour defaultColour;
const bool canResetToDefault;
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ColourEditorComponent);
};
//==============================================================================
class ColourPropertyComponent : public PropertyComponent
{
public:
ColourPropertyComponent (UndoManager* undoManager, const String& name, const Value& colour,
const Colour& defaultColour, bool canResetToDefault)
: PropertyComponent (name),
colourEditor (undoManager, colour, defaultColour, canResetToDefault)
{
addAndMakeVisible (&colourEditor);
}
void resized()
{
colourEditor.setBounds (getLookAndFeel().getPropertyComponentContentPosition (*this));
}
void refresh() {}
protected:
ColourEditorComponent colourEditor;
};

+ 2
- 0
extras/Introjucer/Source/Utility/jucer_PresetIDs.h View File

@@ -117,6 +117,8 @@ namespace Ids
DECLARE_ID (androidKeyStorePass); DECLARE_ID (androidKeyStorePass);
DECLARE_ID (androidKeyAlias); DECLARE_ID (androidKeyAlias);
DECLARE_ID (androidKeyAliasPass); DECLARE_ID (androidKeyAliasPass);
DECLARE_ID (font);
DECLARE_ID (colour);
const Identifier class_ ("class"); const Identifier class_ ("class");
#undef DECLARE_ID #undef DECLARE_ID


+ 30
- 0
extras/Introjucer/Source/Utility/jucer_StoredSettings.cpp View File

@@ -38,10 +38,24 @@ PropertiesFile& getAppProperties()
return getAppSettings().getProps(); return getAppSettings().getProps();
} }
static AppearanceSettings getDefaultScheme()
{
CodeDocument doc;
CPlusPlusCodeTokeniser tokeniser;
CodeEditorComponent defaultComp (doc, &tokeniser);
return AppearanceSettings (defaultComp);
}
//============================================================================== //==============================================================================
StoredSettings::StoredSettings() StoredSettings::StoredSettings()
: appearance (getDefaultScheme())
{ {
reload(); reload();
const File defaultSchemeFile (getSchemesFolder().getChildFile ("Default").withFileExtension (getSchemeFileSuffix()));
if (! defaultSchemeFile.exists())
appearance.writeToFile (defaultSchemeFile);
} }
StoredSettings::~StoredSettings() StoredSettings::~StoredSettings()
@@ -59,6 +73,11 @@ void StoredSettings::flush()
{ {
if (props != nullptr) if (props != nullptr)
{ {
{
const ScopedPointer<XmlElement> xml (appearance.settings.createXml());
props->setValue ("editorColours", xml);
}
props->setValue ("recentFiles", recentFiles.toString()); props->setValue ("recentFiles", recentFiles.toString());
props->removeValue ("keyMappings"); props->removeValue ("keyMappings");
@@ -109,6 +128,10 @@ void StoredSettings::reload()
recentFiles.restoreFromString (props->getValue ("recentFiles")); recentFiles.restoreFromString (props->getValue ("recentFiles"));
recentFiles.removeNonExistentFiles(); recentFiles.removeNonExistentFiles();
const ScopedPointer<XmlElement> xml (props->getXmlValue ("editorColours"));
if (xml != nullptr)
appearance.settings = ValueTree::fromXml (*xml);
loadSwatchColours(); loadSwatchColours();
} }
@@ -178,6 +201,13 @@ void StoredSettings::ColourSelectorWithSwatches::setSwatchColour (int index, con
getAppSettings().swatchColours.set (index, newColour); getAppSettings().swatchColours.set (index, newColour);
} }
File StoredSettings::getSchemesFolder()
{
File f (getProps().getFile().getSiblingFile ("Colour Schemes"));
f.createDirectory();
return f;
}
//============================================================================== //==============================================================================
const Icons& getIcons() const Icons& getIcons()
{ {


+ 8
- 5
extras/Introjucer/Source/Utility/jucer_StoredSettings.h View File

@@ -26,16 +26,13 @@
#ifndef __JUCER_STOREDSETTINGS_JUCEHEADER__ #ifndef __JUCER_STOREDSETTINGS_JUCEHEADER__
#define __JUCER_STOREDSETTINGS_JUCEHEADER__ #define __JUCER_STOREDSETTINGS_JUCEHEADER__
#include "../Application/jucer_AppearanceSettings.h"
//============================================================================== //==============================================================================
/**
A singleton to hold persistent settings, and to save them in a
suitable PropertiesFile.
*/
class StoredSettings class StoredSettings
{ {
public: public:
//==============================================================================
StoredSettings(); StoredSettings();
~StoredSettings(); ~StoredSettings();
@@ -64,6 +61,12 @@ public:
void setSwatchColour (int index, const Colour& newColour) const; void setSwatchColour (int index, const Colour& newColour) const;
}; };
//==============================================================================
AppearanceSettings appearance;
const char* getSchemeFileSuffix() const { return ".editorscheme"; }
File getSchemesFolder();
private: private:
ScopedPointer<PropertiesFile> props; ScopedPointer<PropertiesFile> props;
StringArray fontNames; StringArray fontNames;


+ 2
- 0
modules/juce_data_structures/values/juce_ValueTree.cpp View File

@@ -1011,6 +1011,8 @@ ValueTree ValueTree::readFromGZIPData (const void* const data, const size_t numB
return readFromStream (gzipStream); return readFromStream (gzipStream);
} }
void ValueTree::Listener::valueTreeRedirected (ValueTree&) {}
//============================================================================== //==============================================================================
#if JUCE_UNIT_TESTS #if JUCE_UNIT_TESTS


+ 1
- 1
modules/juce_data_structures/values/juce_ValueTree.h View File

@@ -416,7 +416,7 @@ public:
When operator= is used to make a ValueTree refer to a different object, this callback When operator= is used to make a ValueTree refer to a different object, this callback
will be made. will be made.
*/ */
virtual void valueTreeRedirected (ValueTree& treeWhichHasBeenChanged) {}
virtual void valueTreeRedirected (ValueTree& treeWhichHasBeenChanged);
}; };
/** Adds a listener to receive callbacks when this node is changed. /** Adds a listener to receive callbacks when this node is changed.


+ 7
- 11
modules/juce_gui_basics/layout/juce_ComponentBuilder.h View File

@@ -45,7 +45,7 @@
object, or if you keep the ComponentBuilder around, it'll monitor any changes in the object, or if you keep the ComponentBuilder around, it'll monitor any changes in the
ValueTree and automatically update the component to reflect these changes. ValueTree and automatically update the component to reflect these changes.
*/ */
class JUCE_API ComponentBuilder : public ValueTree::Listener
class JUCE_API ComponentBuilder : private ValueTree::Listener
{ {
public: public:
/** Creates a ComponentBuilder that will use the given state. /** Creates a ComponentBuilder that will use the given state.
@@ -235,16 +235,6 @@ public:
//============================================================================= //=============================================================================
/** @internal */ /** @internal */
void valueTreePropertyChanged (ValueTree& treeWhosePropertyHasChanged, const Identifier& property);
/** @internal */
void valueTreeChildAdded (ValueTree& parentTree, ValueTree& childWhichHasBeenAdded);
/** @internal */
void valueTreeChildRemoved (ValueTree& parentTree, ValueTree& childWhichHasBeenRemoved);
/** @internal */
void valueTreeChildOrderChanged (ValueTree& parentTree);
/** @internal */
void valueTreeParentChanged (ValueTree& treeWhoseParentHasChanged);
/** @internal */
static void refreshBasicComponentProperties (Component&, const ValueTree&); static void refreshBasicComponentProperties (Component&, const ValueTree&);
/** @internal */ /** @internal */
static RelativeRectangle getComponentBounds (const ValueTree&); static RelativeRectangle getComponentBounds (const ValueTree&);
@@ -258,6 +248,12 @@ private:
WeakReference<Component> componentRef; WeakReference<Component> componentRef;
#endif #endif
void valueTreePropertyChanged (ValueTree&, const Identifier&);
void valueTreeChildAdded (ValueTree&, ValueTree&);
void valueTreeChildRemoved (ValueTree&, ValueTree&);
void valueTreeChildOrderChanged (ValueTree&);
void valueTreeParentChanged (ValueTree&);
static const Identifier positionID; static const Identifier positionID;
void initialiseRecursively (Component&, const ValueTree&); void initialiseRecursively (Component&, const ValueTree&);


+ 1
- 1
modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.cpp View File

@@ -519,7 +519,7 @@ CodeEditorComponent::ColourScheme CPlusPlusCodeTokeniser::getDefaultColourScheme
CodeEditorComponent::ColourScheme cs; CodeEditorComponent::ColourScheme cs;
for (int i = 0; i < sizeof (types) / sizeof (types[0]); ++i) // (NB: numElementsInArray doesn't work here in GCC4.2) for (int i = 0; i < sizeof (types) / sizeof (types[0]); ++i) // (NB: numElementsInArray doesn't work here in GCC4.2)
cs.add (types[i].name, Colour (types[i].colour));
cs.set (types[i].name, Colour (types[i].colour));
return cs; return cs;
} }


+ 13
- 3
modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.cpp View File

@@ -333,8 +333,8 @@ void CodeEditorComponent::codeDocumentChanged (const CodeDocument::Position& aff
void CodeEditorComponent::resized() void CodeEditorComponent::resized()
{ {
linesOnScreen = (getHeight() - scrollbarThickness) / lineHeight;
columnsOnScreen = (int) ((getWidth() - scrollbarThickness) / charWidth);
linesOnScreen = jmax (1, (getHeight() - scrollbarThickness) / lineHeight);
columnsOnScreen = jmax (1, (int) ((getWidth() - scrollbarThickness) / charWidth));
lines.clear(); lines.clear();
rebuildLineTokens(); rebuildLineTokens();
updateCaretPosition(); updateCaretPosition();
@@ -1087,8 +1087,18 @@ void CodeEditorComponent::setFont (const Font& newFont)
resized(); resized();
} }
void CodeEditorComponent::ColourScheme::add (const String& name, const Colour& colour)
void CodeEditorComponent::ColourScheme::set (const String& name, const Colour& colour)
{ {
for (int i = 0; i < types.size(); ++i)
{
TokenType& tt = types.getReference(i);
if (tt.name == name)
{
tt.colour = colour;
return;
}
}
TokenType tt; TokenType tt;
tt.name = name; tt.name = name;
tt.colour = colour; tt.colour = colour;


+ 1
- 1
modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.h View File

@@ -183,7 +183,7 @@ public:
Array<TokenType> types; Array<TokenType> types;
void add (const String& name, const Colour& colour);
void set (const String& name, const Colour& colour);
}; };
/** Changes the syntax highlighting scheme. /** Changes the syntax highlighting scheme.


Loading…
Cancel
Save