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
OBJECTS := \
$(OBJDIR)/jucer_AppearanceSettings_788d9889.o \
$(OBJDIR)/jucer_CommandLine_f35de107.o \
$(OBJDIR)/jucer_DocumentEditorComponent_695dff1d.o \
$(OBJDIR)/jucer_FilePreviewComponent_55512f53.o \
@@ -92,6 +93,11 @@ clean:
-@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
-@mkdir -p $(OBJDIR)
@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; };
B980464FA2761CCD64B1FAD6 = { isa = PBXBuildFile; fileRef = CF6C8BD0DA3D8CD4E99EBADA; };
1321E6C1C6170B6C898AD09D = { isa = PBXBuildFile; fileRef = 951128CA33CCDEF570436B1C; };
357A6AA6960EF95D92929BEE = { isa = PBXBuildFile; fileRef = 441CFEA771BAA50E187342E9; };
954A036F5DDB375DB23FFB3E = { isa = PBXBuildFile; fileRef = 0400CB0E056A1D840304D2DE; };
3EB3D569250C4BA4CA9AF578 = { isa = PBXBuildFile; fileRef = C7608A3967D9AB9481848F2B; };
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"; };
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"; };
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"; };
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"; };
@@ -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"; };
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"; };
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"; };
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"; };
@@ -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"; };
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"; };
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"; };
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"; };
@@ -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"; };
C83992DA0BE30EA3CD06EA98 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ProgressBar.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ProgressBar.h"; sourceTree = "SOURCE_ROOT"; };
C85B4D62B96F4A44890F20E2 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SortedSet.h"; path = "../../../../modules/juce_core/containers/juce_SortedSet.h"; sourceTree = "SOURCE_ROOT"; };
C8A229ACD244F402C57286CD = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ProjectExport_MSVC.h"; path = "../../Source/Project Saving/jucer_ProjectExport_MSVC.h"; sourceTree = "SOURCE_ROOT"; };
C90C66C5727759D5CBD5FB07 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AbstractFifo.cpp"; path = "../../../../modules/juce_core/containers/juce_AbstractFifo.cpp"; sourceTree = "SOURCE_ROOT"; };
C9616830BB2474066AC8C910 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ResourceFile.h"; path = "../../Source/Project Saving/jucer_ResourceFile.h"; sourceTree = "SOURCE_ROOT"; };
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"; };
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"; };
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; };
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; };
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"; };
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"; };
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"; };
D4697A0232AECE5DAC5E332E = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChoicePropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
D4E56676E2EF83404EDCBA8C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TextEditor.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_TextEditor.cpp"; sourceTree = "SOURCE_ROOT"; };
D4F2D42C58F4D86E00E76F31 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandID.h"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandID.h"; sourceTree = "SOURCE_ROOT"; };
D503780AB98993E8F0BA1311 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageComponent.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ImageComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
D5057D7B18ABD5E810A6F830 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DirectWriteTypeface.cpp"; path = "../../../../modules/juce_graphics/native/juce_win32_DirectWriteTypeface.cpp"; sourceTree = "SOURCE_ROOT"; };
D526C38D581425949BA0E4AC = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_FilePreviewComponent.h"; path = "../../Source/Application/jucer_FilePreviewComponent.h"; sourceTree = "SOURCE_ROOT"; };
D53B54D1786A1FFC024BF064 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_cryptography.mm"; path = "../../../../modules/juce_cryptography/juce_cryptography.mm"; sourceTree = "SOURCE_ROOT"; };
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"; };
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"; };
D780ED33573AED5AD383A036 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CaretComponent.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_CaretComponent.h"; sourceTree = "SOURCE_ROOT"; };
D782DA091AD3ECE158FC6A5F = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ButtonPropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; };
D800DE818BEDBF4579D15B1D = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_AppleRemote.mm"; path = "../../../../modules/juce_gui_extra/native/juce_mac_AppleRemote.mm"; sourceTree = "SOURCE_ROOT"; };
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"; };
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; };
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; };
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"; };
D9342535EA61901A1AD816C6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_WebBrowserComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_linux_WebBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
D95D7B49EC6C6BDCB5A1B988 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_MessageManager.mm"; path = "../../../../modules/juce_events/native/juce_ios_MessageManager.mm"; sourceTree = "SOURCE_ROOT"; };
D9B077E2ECDDA94961E134D7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringPairArray.h"; path = "../../../../modules/juce_core/text/juce_StringPairArray.h"; sourceTree = "SOURCE_ROOT"; };
D9E59DE07A815AB303A297D9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_data_structures.mm"; path = "../../../../modules/juce_data_structures/juce_data_structures.mm"; sourceTree = "SOURCE_ROOT"; };
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"; };
DCCB75165B7C73A589498E87 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Windowing.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_linux_Windowing.cpp"; sourceTree = "SOURCE_ROOT"; };
DD00494140C86144306A9356 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Array.h"; path = "../../../../modules/juce_core/containers/juce_Array.h"; sourceTree = "SOURCE_ROOT"; };
DD2494D5F1C081898D616AF5 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyListener.cpp"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyListener.cpp"; sourceTree = "SOURCE_ROOT"; };
DD985A60FB76E976AF91852D = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SHA256.h"; path = "../../../../modules/juce_cryptography/hashing/juce_SHA256.h"; sourceTree = "SOURCE_ROOT"; };
DE40B42B57F29C650CB7F2AD = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RecentlyOpenedFilesList.h"; path = "../../../../modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.h"; sourceTree = "SOURCE_ROOT"; };
DE5F3C9EF6BFFDE73AF9E7FC = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DirectoryContentsDisplayComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
DE8DF5D263F40F65581CFDE4 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChildProcess.cpp"; path = "../../../../modules/juce_core/threads/juce_ChildProcess.cpp"; sourceTree = "SOURCE_ROOT"; };
DEF579B1433EB8DEE7AB50F8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Drawable.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_Drawable.cpp"; sourceTree = "SOURCE_ROOT"; };
DF7BB5B6B394EDEEF5F5B4B8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CallbackMessage.h"; path = "../../../../modules/juce_events/messages/juce_CallbackMessage.h"; sourceTree = "SOURCE_ROOT"; };
DFC6364D81D9C60BD4CA9D12 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeTime.cpp"; path = "../../../../modules/juce_core/time/juce_RelativeTime.cpp"; sourceTree = "SOURCE_ROOT"; };
E07C56267CBB46FC44EF2026 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Image.cpp"; path = "../../../../modules/juce_graphics/images/juce_Image.cpp"; sourceTree = "SOURCE_ROOT"; };
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"; };
E54D0994D31E20A0A05EBA2B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SystemTrayIconComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.h"; sourceTree = "SOURCE_ROOT"; };
E570E57CC1FCEF78B54A7084 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileOutputStream.h"; path = "../../../../modules/juce_core/files/juce_FileOutputStream.h"; sourceTree = "SOURCE_ROOT"; };
E60E28D1B7491047DEA236AE = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ProjectContentComponent.h"; path = "../../Source/Project/jucer_ProjectContentComponent.h"; sourceTree = "SOURCE_ROOT"; };
E642193A9990C48CFB6479A9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileListComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileListComponent.h"; sourceTree = "SOURCE_ROOT"; };
E654E3A3CD45A888C5F773DF = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MenuBarModel.h"; path = "../../../../modules/juce_gui_basics/menus/juce_MenuBarModel.h"; sourceTree = "SOURCE_ROOT"; };
E65A820D34BF39478B7C5925 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_DocumentEditorComponent.h"; path = "../../Source/Application/jucer_DocumentEditorComponent.h"; sourceTree = "SOURCE_ROOT"; };
E6F5CEC32EDC917B054467EF = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ReadWriteLock.cpp"; path = "../../../../modules/juce_core/threads/juce_ReadWriteLock.cpp"; sourceTree = "SOURCE_ROOT"; };
E70CA21960A64CCB835725FF = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ProjectType.cpp"; path = "../../Source/Project/jucer_ProjectType.cpp"; sourceTree = "SOURCE_ROOT"; };
E73C7E17116F6085765622E3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Drawable.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_Drawable.h"; sourceTree = "SOURCE_ROOT"; };
E7A4604F766ABC8BE26C94A1 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeParallelogram.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeParallelogram.cpp"; sourceTree = "SOURCE_ROOT"; };
E7B6A0CBA0D27A095E83F5B7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_WebBrowserComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_win32_WebBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
@@ -691,6 +693,7 @@
E7E122AE104E79BB641B07B3 = { isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_data_structures/juce_module_info"; sourceTree = "SOURCE_ROOT"; };
E7E1C4F416CFA44BE7DD1A74 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KeyboardFocusTraverser.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.h"; sourceTree = "SOURCE_ROOT"; };
E7E1D60BC7AEF79AA7B65B7C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_String.cpp"; path = "../../../../modules/juce_core/text/juce_String.cpp"; sourceTree = "SOURCE_ROOT"; };
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"; };
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"; };
@@ -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"; };
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 = (
441CFEA771BAA50E187342E9,
223C4209F18A221EB183A056,
EE690110171E1648FF2118B8,
23A8DE16C0CDB8EED18B008B,
0400CB0E056A1D840304D2DE,
@@ -1678,6 +1683,7 @@
C009859650B4628FDD068941 = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = (
1321E6C1C6170B6C898AD09D ); runOnlyForDeploymentPostprocessing = 0; };
84449D044096A03F2582904B = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (
357A6AA6960EF95D92929BEE,
954A036F5DDB375DB23FFB3E,
3EB3D569250C4BA4CA9AF578,
9A4D477F1924C31A52AF5C79,


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

@@ -130,6 +130,8 @@
<Files>
<Filter Name="The Introjucer">
<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_CommandIDs.h"/>
<File RelativePath="..\..\Source\Application\jucer_CommandLine.cpp"/>


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

@@ -130,6 +130,8 @@
<Files>
<Filter Name="The Introjucer">
<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_CommandIDs.h"/>
<File RelativePath="..\..\Source\Application\jucer_CommandLine.cpp"/>


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

@@ -126,6 +126,7 @@
</Bscmake>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\..\Source\Application\jucer_AppearanceSettings.cpp"/>
<ClCompile Include="..\..\Source\Application\jucer_CommandLine.cpp"/>
<ClCompile Include="..\..\Source\Application\jucer_DocumentEditorComponent.cpp"/>
<ClCompile Include="..\..\Source\Application\jucer_FilePreviewComponent.cpp"/>
@@ -965,6 +966,7 @@
<ClCompile Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.cpp"/>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\Source\Application\jucer_AppearanceSettings.h"/>
<ClInclude Include="..\..\Source\Application\jucer_Application.h"/>
<ClInclude Include="..\..\Source\Application\jucer_CommandIDs.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>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\Source\Application\jucer_AppearanceSettings.cpp">
<Filter>The Introjucer\Application</Filter>
</ClCompile>
<ClCompile Include="..\..\Source\Application\jucer_CommandLine.cpp">
<Filter>The Introjucer\Application</Filter>
</ClCompile>
@@ -1194,6 +1197,9 @@
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\Source\Application\jucer_AppearanceSettings.h">
<Filter>The Introjucer\Application</Filter>
</ClInclude>
<ClInclude Include="..\..\Source\Application\jucer_Application.h">
<Filter>The Introjucer\Application</Filter>
</ClInclude>


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

@@ -65,6 +65,10 @@
</EXPORTFORMATS>
<MAINGROUP name="The Introjucer" id="NhrJq66R">
<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="Source/Application/jucer_Application.h"/>
<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_JuceUpdater.h"
#include "jucer_CommandLine.h"
#include "../Code Editor/jucer_SourceCodeEditor.h"
//==============================================================================
@@ -80,14 +81,15 @@ public:
void shutdown()
{
appearanceEditorWindow = nullptr;
#if JUCE_MAC
MenuBarModel::setMacMainMenu (nullptr);
#endif
menuModel = nullptr;
mainWindowList.forceCloseAllWindows();
OpenDocumentManager::deleteInstance();
openDocumentManager.clear();
commandManager = nullptr;
settings.flush();
}
@@ -204,7 +206,7 @@ public:
menu.addCommandItem (commandManager, CommandIDs::showProjectSettings);
menu.addSeparator();
menu.addCommandItem (commandManager, CommandIDs::test);
menu.addCommandItem (commandManager, CommandIDs::showAppearanceSettings);
menu.addSeparator();
menu.addCommandItem (commandManager, CommandIDs::showGrid);
@@ -223,11 +225,11 @@ public:
menu.addCommandItem (commandManager, CommandIDs::closeWindow);
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)
{
OpenDocumentManager::Document* doc = OpenDocumentManager::getInstance()->getOpenDocument(i);
OpenDocumentManager::Document* doc = getApp()->openDocumentManager.getOpenDocument(i);
menu.addItem (300 + i, doc->getName());
}
@@ -255,7 +257,7 @@ public:
}
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);
getApp()->mainWindowList.openDocument (doc);
@@ -274,6 +276,7 @@ public:
CommandIDs::closeAllDocuments,
CommandIDs::saveAll,
CommandIDs::updateModules,
CommandIDs::showAppearanceSettings,
CommandIDs::showUTF8Tool };
commands.addArray (ids, numElementsInArray (ids));
@@ -298,14 +301,18 @@ public:
result.defaultKeypresses.add (KeyPress (',', ModifierKeys::commandModifier, 0));
break;
case CommandIDs::showAppearanceSettings:
result.setInfo ("Fonts and Colours...", "Shows the appearance settings window.", CommandCategories::general, 0);
break;
case CommandIDs::closeAllDocuments:
result.setInfo ("Close All Documents", "Closes all open documents", CommandCategories::general, 0);
result.setActive (OpenDocumentManager::getInstance()->getNumOpenDocuments() > 0);
result.setActive (openDocumentManager.getNumOpenDocuments() > 0);
break;
case CommandIDs::saveAll:
result.setInfo ("Save All", "Saves all open documents", CommandCategories::general, 0);
result.setActive (OpenDocumentManager::getInstance()->anyFilesNeedSaving());
result.setActive (openDocumentManager.anyFilesNeedSaving());
break;
case CommandIDs::updateModules:
@@ -326,15 +333,17 @@ public:
{
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;
@@ -371,7 +380,7 @@ public:
bool closeAllDocuments (bool askUserToSave)
{
return OpenDocumentManager::getInstance()->closeAll (askUserToSave);
return openDocumentManager.closeAll (askUserToSave);
}
bool makeSureUserHasSelectedModuleFolder()
@@ -403,6 +412,14 @@ public:
return ModuleList::isJuceOrModulesFolder (list.getModulesFolder());
}
void showAppearanceEditorWindow()
{
if (appearanceEditorWindow == nullptr)
appearanceEditorWindow = AppearanceSettings::createEditorWindow();
appearanceEditorWindow->toFront (true);
}
//==============================================================================
virtual void doExtraInitialisation() {}
virtual void addExtraConfigItems (Project&, TreeViewItem&) {}
@@ -417,7 +434,11 @@ public:
Icons icons;
ScopedPointer<MainMenuModel> menuModel;
MainWindowList mainWindowList;
OpenDocumentManager openDocumentManager;
ScopedPointer<Component> appearanceEditorWindow;
private:
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 updateModules = 0x200075;
static const int showUTF8Tool = 0x200076;
static const int showAppearanceSettings = 0x200077;
static const int saveAll = 0x200080;
static const int undo = 0x200090;
@@ -48,7 +49,6 @@ namespace CommandIDs
static const int closeWindow = 0x201001;
static const int closeAllDocuments = 0x201000;
static const int test = 0x202090;
static const int toFront = 0x2020a0;
static const int toBack = 0x2030a1;
static const int showOrHideProperties = 0x2030b0;
@@ -71,21 +71,11 @@ namespace CommandIDs
static const int showGrid = 0x2020e0;
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 zoomOut = 0x202140;
static const int zoomNormal = 0x202150;
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 newComponentBase = 0x302010;


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

@@ -25,18 +25,19 @@
#include "jucer_DocumentEditorComponent.h"
#include "../Project/jucer_ProjectContentComponent.h"
#include "../Application/jucer_Application.h"
//==============================================================================
DocumentEditorComponent::DocumentEditorComponent (OpenDocumentManager::Document* document_)
: document (document_)
{
OpenDocumentManager::getInstance()->addListener (this);
JucerApplication::getApp()->openDocumentManager.addListener (this);
}
DocumentEditorComponent::~DocumentEditorComponent()
{
OpenDocumentManager::getInstance()->removeListener (this);
JucerApplication::getApp()->openDocumentManager.removeListener (this);
}
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());
if (! OpenDocumentManager::getInstance()->closeAllDocumentsUsingProject (*project, true))
if (! JucerApplication::getApp()->openDocumentManager.closeAllDocumentsUsingProject (*project, true))
return false;
ProjectContentComponent* const pcc = getProjectContentComponent();
@@ -174,7 +174,7 @@ void MainWindow::restoreWindowPosition()
bool MainWindow::canOpenFile (const File& file) const
{
return file.hasFileExtension (Project::projectFileExtension)
|| OpenDocumentManager::getInstance()->canOpenFile (file);
|| JucerApplication::getApp()->openDocumentManager.canOpenFile (file);
}
bool MainWindow::openFile (const File& file)
@@ -227,7 +227,7 @@ void MainWindow::activeWindowStatusChanged()
if (getProjectContentComponent() != nullptr)
getProjectContentComponent()->updateMissingFileStatuses();
OpenDocumentManager::getInstance()->reloadModifiedFiles();
JucerApplication::getApp()->openDocumentManager.reloadModifiedFiles();
}
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()
{
clearSingletonInstance();
}
juce_ImplementSingleton_SingleThreaded (OpenDocumentManager);
void OpenDocumentManager::clear()
{
documents.clear();
types.clear();
}
//==============================================================================
void OpenDocumentManager::registerType (DocumentType* type)


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

@@ -38,8 +38,6 @@ public:
OpenDocumentManager();
~OpenDocumentManager();
juce_DeclareSingleton_SingleThreaded_Minimal (OpenDocumentManager);
//==============================================================================
class Document
{
@@ -68,6 +66,7 @@ public:
int getNumOpenDocuments() const;
Document* getOpenDocument (int index) const;
void moveDocumentToTopOfStack (Document* doc);
void clear();
bool canOpenFile (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);
#if JUCE_MAC
Font font (10.6f);
Font font (13.0f);
font.setTypefaceName ("Menlo");
#else
Font font (10.0f);
@@ -46,10 +46,14 @@ SourceCodeEditor::SourceCodeEditor (OpenDocumentManager::Document* document_,
editor.setFont (font);
editor.setTabSize (4, true);
updateColourScheme();
getAppSettings().appearance.settings.addListener (this);
}
SourceCodeEditor::~SourceCodeEditor()
{
getAppSettings().appearance.settings.removeListener (this);
}
void SourceCodeEditor::resized()
@@ -71,6 +75,17 @@ CodeTokeniser* SourceCodeEditor::getTokeniserFor (const File& file)
SourceCodeEditor* SourceCodeEditor::createFor (OpenDocumentManager::Document* document,
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 "../Application/jucer_DocumentEditorComponent.h"
//==============================================================================
/**
*/
class SourceCodeEditor : public DocumentEditorComponent
class SourceCodeEditor : public DocumentEditorComponent,
private ValueTree::Listener
{
public:
//==============================================================================
@@ -54,6 +52,15 @@ public:
CodeEditorComponent editor;
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);
};


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

@@ -66,7 +66,7 @@ Project::Project (const File& file_)
Project::~Project()
{
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()))
{
setFile (newFile);
OpenDocumentManager::getInstance()->fileHasBeenRenamed (oldFile, newFile);
JucerApplication::getApp()->openDocumentManager.fileHasBeenRenamed (oldFile, newFile);
return true;
}


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

@@ -25,6 +25,7 @@
#include "jucer_ProjectContentComponent.h"
#include "../Application/jucer_MainWindow.h"
#include "../Application/jucer_Application.h"
#include "../Code Editor/jucer_SourceCodeEditor.h"
#include "jucer_ConfigPage.h"
#include "jucer_TreeViewTypes.h"
@@ -109,6 +110,25 @@ void ProjectContentComponent::paint (Graphics& g)
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)
{
if (project != newProject)
@@ -121,38 +141,44 @@ void ProjectContentComponent::setProject (Project* newProject)
contentView = 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;
if (project != nullptr)
{
treeViewTabs.setVisible (true);
addChildAndSetID (&treeViewTabs, "tree");
addAndMakeVisible (&treeViewTabs);
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();
resized();
}
else
{
@@ -163,6 +189,7 @@ void ProjectContentComponent::setProject (Project* newProject)
void ProjectContentComponent::createProjectTabs()
{
jassert (project != nullptr);
treeViewTabs.addTab ("Files", Colour::greyLevel (0.93f), new FileTreeTab (*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)
{
return showDocument (OpenDocumentManager::getInstance()->openFile (project, f));
return showDocument (JucerApplication::getApp()->openDocumentManager.openFile (project, f));
}
bool ProjectContentComponent::showDocument (OpenDocumentManager::Document* doc)
@@ -213,7 +240,7 @@ bool ProjectContentComponent::showDocument (OpenDocumentManager::Document* doc)
if (doc == nullptr)
return false;
OpenDocumentManager::getInstance()->moveDocumentToTopOfStack (doc);
JucerApplication::getApp()->openDocumentManager.moveDocumentToTopOfStack (doc);
if (doc->hasFileBeenModifiedExternally())
doc->reloadFromFile();
@@ -242,11 +269,10 @@ bool ProjectContentComponent::setEditorComponent (Component* editor, OpenDocumen
contentView = editor;
currentDocument = doc;
addAndMakeVisible (editor);
editor->setBounds ("resizer.right, 0, parent.right, parent.height");
resized();
updateMainWindowTitle();
commandManager->commandStatusChanged();
return true;
}
@@ -419,7 +445,7 @@ bool ProjectContentComponent::perform (const InvocationInfo& info)
case CommandIDs::closeDocument:
if (currentDocument != nullptr)
OpenDocumentManager::getInstance()->closeDocument (currentDocument, true);
JucerApplication::getApp()->openDocumentManager.closeDocument (currentDocument, true);
break;
case CommandIDs::openInIDE:


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

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


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

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


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

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


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

@@ -468,7 +468,7 @@ class CallOutBoxCallback : public ModalComponentManager::Callback
public:
CallOutBoxCallback (Component& attachTo, Component* content_)
: content (content_),
callout (*content_, attachTo, attachTo.getTopLevelComponent())
callout (*content_, attachTo, nullptr)
{
callout.setVisible (true);
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);
};
//==============================================================================
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 (androidKeyAlias);
DECLARE_ID (androidKeyAliasPass);
DECLARE_ID (font);
DECLARE_ID (colour);
const Identifier class_ ("class");
#undef DECLARE_ID


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

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


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

@@ -26,16 +26,13 @@
#ifndef __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
{
public:
//==============================================================================
StoredSettings();
~StoredSettings();
@@ -64,6 +61,12 @@ public:
void setSwatchColour (int index, const Colour& newColour) const;
};
//==============================================================================
AppearanceSettings appearance;
const char* getSchemeFileSuffix() const { return ".editorscheme"; }
File getSchemesFolder();
private:
ScopedPointer<PropertiesFile> props;
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);
}
void ValueTree::Listener::valueTreeRedirected (ValueTree&) {}
//==============================================================================
#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
will be made.
*/
virtual void valueTreeRedirected (ValueTree& treeWhichHasBeenChanged) {}
virtual void valueTreeRedirected (ValueTree& treeWhichHasBeenChanged);
};
/** 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
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:
/** Creates a ComponentBuilder that will use the given state.
@@ -235,16 +235,6 @@ public:
//=============================================================================
/** @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&);
/** @internal */
static RelativeRectangle getComponentBounds (const ValueTree&);
@@ -258,6 +248,12 @@ private:
WeakReference<Component> componentRef;
#endif
void valueTreePropertyChanged (ValueTree&, const Identifier&);
void valueTreeChildAdded (ValueTree&, ValueTree&);
void valueTreeChildRemoved (ValueTree&, ValueTree&);
void valueTreeChildOrderChanged (ValueTree&);
void valueTreeParentChanged (ValueTree&);
static const Identifier positionID;
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;
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;
}


+ 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()
{
linesOnScreen = (getHeight() - scrollbarThickness) / lineHeight;
columnsOnScreen = (int) ((getWidth() - scrollbarThickness) / charWidth);
linesOnScreen = jmax (1, (getHeight() - scrollbarThickness) / lineHeight);
columnsOnScreen = jmax (1, (int) ((getWidth() - scrollbarThickness) / charWidth));
lines.clear();
rebuildLineTokens();
updateCaretPosition();
@@ -1087,8 +1087,18 @@ void CodeEditorComponent::setFont (const Font& newFont)
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;
tt.name = name;
tt.colour = colour;


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

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


Loading…
Cancel
Save