From 44e454f0b7183b5335bb0dd4b37f92fb29617cc1 Mon Sep 17 00:00:00 2001 From: jules Date: Tue, 10 Jul 2012 12:08:35 +0100 Subject: [PATCH] Introjucer: colours and refactoring. --- extras/Introjucer/Builds/Linux/Makefile | 12 -- .../The Introjucer.xcodeproj/project.pbxproj | 48 +++--- .../VisualStudio2005/The Introjucer.vcproj | 2 - .../VisualStudio2008/The Introjucer.vcproj | 2 - .../VisualStudio2010/The Introjucer.vcxproj | 2 - .../The Introjucer.vcxproj.filters | 6 - extras/Introjucer/Introjucer.jucer | 4 - .../Application/jucer_AppearanceSettings.cpp | 85 +++++++--- .../Application/jucer_AppearanceSettings.h | 29 +++- .../Source/Application/jucer_Application.h | 8 + .../Source/Application/jucer_CommonHeaders.h | 7 + .../jucer_FilePreviewComponent.cpp | 77 --------- .../Application/jucer_FilePreviewComponent.h | 51 +++++- .../Source/Application/jucer_MainWindow.cpp | 6 + .../Source/Application/jucer_MainWindow.h | 2 + .../Source/Project/jucer_ConfigPage.cpp | 8 +- .../jucer_GroupInformationComponent.cpp | 155 ------------------ .../Project/jucer_GroupInformationComponent.h | 124 ++++++++++++-- .../Project/jucer_ProjectContentComponent.cpp | 29 +++- .../Project/jucer_ProjectContentComponent.h | 5 +- .../Project/jucer_ProjectTreeViewBase.h | 3 +- .../Utility/jucer_JucerTreeViewBase.cpp | 27 ++- .../Source/Utility/jucer_JucerTreeViewBase.h | 4 + .../Source/Utility/jucer_StoredSettings.cpp | 14 +- .../Source/Utility/jucer_StoredSettings.h | 2 + 25 files changed, 370 insertions(+), 342 deletions(-) delete mode 100644 extras/Introjucer/Source/Application/jucer_FilePreviewComponent.cpp delete mode 100644 extras/Introjucer/Source/Project/jucer_GroupInformationComponent.cpp diff --git a/extras/Introjucer/Builds/Linux/Makefile b/extras/Introjucer/Builds/Linux/Makefile index 345dd21267..89a3e15296 100644 --- a/extras/Introjucer/Builds/Linux/Makefile +++ b/extras/Introjucer/Builds/Linux/Makefile @@ -46,13 +46,11 @@ OBJECTS := \ $(OBJDIR)/jucer_AppearanceSettings_788d9889.o \ $(OBJDIR)/jucer_CommandLine_f35de107.o \ $(OBJDIR)/jucer_DocumentEditorComponent_695dff1d.o \ - $(OBJDIR)/jucer_FilePreviewComponent_55512f53.o \ $(OBJDIR)/jucer_JuceUpdater_cf7865c4.o \ $(OBJDIR)/jucer_Main_f8488f5b.o \ $(OBJDIR)/jucer_MainWindow_1e163aeb.o \ $(OBJDIR)/jucer_OpenDocumentManager_4c72d210.o \ $(OBJDIR)/jucer_ConfigPage_99b07caa.o \ - $(OBJDIR)/jucer_GroupInformationComponent_631ccf01.o \ $(OBJDIR)/jucer_Module_3f7666a5.o \ $(OBJDIR)/jucer_NewFileWizard_b8a19ef8.o \ $(OBJDIR)/jucer_NewProjectWizard_7a15bf5d.o \ @@ -108,11 +106,6 @@ $(OBJDIR)/jucer_DocumentEditorComponent_695dff1d.o: ../../Source/Application/juc @echo "Compiling jucer_DocumentEditorComponent.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/jucer_FilePreviewComponent_55512f53.o: ../../Source/Application/jucer_FilePreviewComponent.cpp - -@mkdir -p $(OBJDIR) - @echo "Compiling jucer_FilePreviewComponent.cpp" - @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" - $(OBJDIR)/jucer_JuceUpdater_cf7865c4.o: ../../Source/Application/jucer_JuceUpdater.cpp -@mkdir -p $(OBJDIR) @echo "Compiling jucer_JuceUpdater.cpp" @@ -138,11 +131,6 @@ $(OBJDIR)/jucer_ConfigPage_99b07caa.o: ../../Source/Project/jucer_ConfigPage.cpp @echo "Compiling jucer_ConfigPage.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/jucer_GroupInformationComponent_631ccf01.o: ../../Source/Project/jucer_GroupInformationComponent.cpp - -@mkdir -p $(OBJDIR) - @echo "Compiling jucer_GroupInformationComponent.cpp" - @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" - $(OBJDIR)/jucer_Module_3f7666a5.o: ../../Source/Project/jucer_Module.cpp -@mkdir -p $(OBJDIR) @echo "Compiling jucer_Module.cpp" diff --git a/extras/Introjucer/Builds/MacOSX/The Introjucer.xcodeproj/project.pbxproj b/extras/Introjucer/Builds/MacOSX/The Introjucer.xcodeproj/project.pbxproj index 7cfa1b94bc..f622e1fa5e 100644 --- a/extras/Introjucer/Builds/MacOSX/The Introjucer.xcodeproj/project.pbxproj +++ b/extras/Introjucer/Builds/MacOSX/The Introjucer.xcodeproj/project.pbxproj @@ -15,13 +15,11 @@ 357A6AA6960EF95D92929BEE = { isa = PBXBuildFile; fileRef = 441CFEA771BAA50E187342E9; }; 954A036F5DDB375DB23FFB3E = { isa = PBXBuildFile; fileRef = 0400CB0E056A1D840304D2DE; }; 3EB3D569250C4BA4CA9AF578 = { isa = PBXBuildFile; fileRef = C7608A3967D9AB9481848F2B; }; - 9A4D477F1924C31A52AF5C79 = { isa = PBXBuildFile; fileRef = F2FA27430D90E92F0C9EBEDF; }; B1A786B525176BEE309998EA = { isa = PBXBuildFile; fileRef = BE94248CF8069E6707174CDB; }; 95B44E6C74B1DED31DBE37EB = { isa = PBXBuildFile; fileRef = 8C52A3DDA62A746AA7A68535; }; AA9D0B8E23F3D87A23DE9F8A = { isa = PBXBuildFile; fileRef = 9069981E414A631B036CC9AC; }; 244BA1BDA5FAA465EA3F9C6D = { isa = PBXBuildFile; fileRef = 2247EE920DF0610CAF9F4513; }; D1A1998A202A88C617C9AB73 = { isa = PBXBuildFile; fileRef = E7F7033084AC10FB77B0F77A; }; - 349B4C837D996E71E08657A5 = { isa = PBXBuildFile; fileRef = 6FA01AEDB9DB70FD1EA6D380; }; 3FCA61C401007B243E2E9035 = { isa = PBXBuildFile; fileRef = F797071D88542C813CF7222A; }; 5BC89E7905397ABECD25ACCD = { isa = PBXBuildFile; fileRef = F1163B7856FDABA413A88D90; }; FBE57B26FE59319AA2E8B59D = { isa = PBXBuildFile; fileRef = 69A5D13490A62DAE9A7D5A22; }; @@ -356,7 +354,6 @@ 6EE1847181635ED3C0838A4B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LowLevelGraphicsPostScriptRenderer.h"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.h"; sourceTree = "SOURCE_ROOT"; }; 6EE91491434D058606460AFB = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GroupComponent.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_GroupComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 6F8A53EDF09094C83DE4D111 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CPlusPlusCodeTokeniser.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.h"; sourceTree = "SOURCE_ROOT"; }; - 6FA01AEDB9DB70FD1EA6D380 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_GroupInformationComponent.cpp"; path = "../../Source/Project/jucer_GroupInformationComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 7074AEDE4B0416BC898DD27A = { isa = PBXFileReference; lastKnownFileType = image.png; name = "brushed_aluminium.png"; path = "../../Source/BinaryData/brushed_aluminium.png"; sourceTree = "SOURCE_ROOT"; }; 70CF9F1991538524A7C4CE39 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Fonts.cpp"; path = "../../../../modules/juce_graphics/native/juce_android_Fonts.cpp"; sourceTree = "SOURCE_ROOT"; }; 70DC1D288DC6503E628A5A03 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_gui_basics.mm"; path = "../../../../modules/juce_gui_basics/juce_gui_basics.mm"; sourceTree = "SOURCE_ROOT"; }; @@ -562,6 +559,7 @@ 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"; }; @@ -601,7 +599,8 @@ 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"; }; - C90C66C5727759D5CBD5FB07 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AbstractFifo.cpp"; path = "../../../../modules/juce_core/containers/juce_AbstractFifo.cpp"; 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"; }; 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"; }; @@ -622,48 +621,46 @@ 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"; }; - D75EAC16FAECCC51E3669193 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandInfo.h"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.h"; sourceTree = "SOURCE_ROOT"; }; + D6C91E2BF537F75A80F5C1DB = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ListBox.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ListBox.h"; sourceTree = "SOURCE_ROOT"; }; D780ED33573AED5AD383A036 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CaretComponent.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_CaretComponent.h"; sourceTree = "SOURCE_ROOT"; }; D782DA091AD3ECE158FC6A5F = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ButtonPropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; - 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"; }; - D9E59DE07A815AB303A297D9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_data_structures.mm"; path = "../../../../modules/juce_data_structures/juce_data_structures.mm"; 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"; }; + D9B077E2ECDDA94961E134D7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringPairArray.h"; path = "../../../../modules/juce_core/text/juce_StringPairArray.h"; sourceTree = "SOURCE_ROOT"; }; DC5E7FF30B01118F6DAEC38F = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Time.cpp"; path = "../../../../modules/juce_core/time/juce_Time.cpp"; sourceTree = "SOURCE_ROOT"; }; - 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; }; 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"; }; - 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"; }; + C90C66C5727759D5CBD5FB07 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AbstractFifo.cpp"; path = "../../../../modules/juce_core/containers/juce_AbstractFifo.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"; }; + D75EAC16FAECCC51E3669193 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandInfo.h"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.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"; }; 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"; }; @@ -719,7 +716,6 @@ F2499004037A1C1D8FEE1FD6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ResizableEdgeComponent.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; F2759373EAAC820F17409939 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CriticalSection.h"; path = "../../../../modules/juce_core/threads/juce_CriticalSection.h"; sourceTree = "SOURCE_ROOT"; }; F2C7DE572E29A3D62EFB40F8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeCoordinate.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinate.cpp"; sourceTree = "SOURCE_ROOT"; }; - F2FA27430D90E92F0C9EBEDF = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_FilePreviewComponent.cpp"; path = "../../Source/Application/jucer_FilePreviewComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; F406A0F41B2C7A512FDBC9E0 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileLogger.cpp"; path = "../../../../modules/juce_core/logging/juce_FileLogger.cpp"; sourceTree = "SOURCE_ROOT"; }; F40F5C63CA1098C21B96C80F = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_InputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_InputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; F591F5E5E162D4667AC26419 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_JSON.cpp"; path = "../../../../modules/juce_core/json/juce_JSON.cpp"; sourceTree = "SOURCE_ROOT"; }; @@ -760,7 +756,6 @@ 6E6140969908E7619F858740, C7608A3967D9AB9481848F2B, E65A820D34BF39478B7C5925, - F2FA27430D90E92F0C9EBEDF, D526C38D581425949BA0E4AC, F03E2BDD36E6F4F53AB767A8, BE94248CF8069E6707174CDB, @@ -774,7 +769,6 @@ 93D03B2BC76998A3BDA747E8, E7F7033084AC10FB77B0F77A, C2080119AEDFDE0D477756FA, - 6FA01AEDB9DB70FD1EA6D380, C7B47372A9D5970E3D9A5400, F797071D88542C813CF7222A, 7211101FFA28400ADBB1D47A, @@ -1686,13 +1680,11 @@ 357A6AA6960EF95D92929BEE, 954A036F5DDB375DB23FFB3E, 3EB3D569250C4BA4CA9AF578, - 9A4D477F1924C31A52AF5C79, B1A786B525176BEE309998EA, 95B44E6C74B1DED31DBE37EB, AA9D0B8E23F3D87A23DE9F8A, 244BA1BDA5FAA465EA3F9C6D, D1A1998A202A88C617C9AB73, - 349B4C837D996E71E08657A5, 3FCA61C401007B243E2E9035, 5BC89E7905397ABECD25ACCD, FBE57B26FE59319AA2E8B59D, diff --git a/extras/Introjucer/Builds/VisualStudio2005/The Introjucer.vcproj b/extras/Introjucer/Builds/VisualStudio2005/The Introjucer.vcproj index 66093f9c48..c4dfe83c8a 100644 --- a/extras/Introjucer/Builds/VisualStudio2005/The Introjucer.vcproj +++ b/extras/Introjucer/Builds/VisualStudio2005/The Introjucer.vcproj @@ -139,7 +139,6 @@ - @@ -154,7 +153,6 @@ - diff --git a/extras/Introjucer/Builds/VisualStudio2008/The Introjucer.vcproj b/extras/Introjucer/Builds/VisualStudio2008/The Introjucer.vcproj index e2d81e2bd6..c17f9aa092 100644 --- a/extras/Introjucer/Builds/VisualStudio2008/The Introjucer.vcproj +++ b/extras/Introjucer/Builds/VisualStudio2008/The Introjucer.vcproj @@ -139,7 +139,6 @@ - @@ -154,7 +153,6 @@ - diff --git a/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj b/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj index f3ac0ffbae..73fc44aed4 100644 --- a/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj +++ b/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj @@ -129,13 +129,11 @@ - - diff --git a/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj.filters b/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj.filters index b9a7ccd616..47d49e5450 100644 --- a/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj.filters +++ b/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj.filters @@ -238,9 +238,6 @@ The Introjucer\Application - - The Introjucer\Application - The Introjucer\Application @@ -256,9 +253,6 @@ The Introjucer\Project - - The Introjucer\Project - The Introjucer\Project diff --git a/extras/Introjucer/Introjucer.jucer b/extras/Introjucer/Introjucer.jucer index b8155d278b..52e7de8ee6 100644 --- a/extras/Introjucer/Introjucer.jucer +++ b/extras/Introjucer/Introjucer.jucer @@ -83,8 +83,6 @@ resource="0" file="Source/Application/jucer_DocumentEditorComponent.cpp"/> - - getName()); getCodeFontValue() = f.toString(); + + settings.addListener (this); } bool AppearanceSettings::readFromXML (const XmlElement& xml) @@ -97,6 +121,27 @@ StringArray AppearanceSettings::getColourNames() const return s; } +void AppearanceSettings::updateColourScheme() +{ + applyToLookAndFeel (LookAndFeel::getDefaultLookAndFeel()); + JucerApplication::getApp().mainWindowList.sendLookAndFeelChange(); +} + +void AppearanceSettings::applyToLookAndFeel (LookAndFeel& lf) const +{ + for (int i = 0; i < sizeof (AppearanceColours::colours) / sizeof (AppearanceColours::colours[0]); ++i) + { + Colour col; + if (getColour (AppearanceColours::colours[i].name, col)) + { + if (AppearanceColours::colours[i].mustBeOpaque) + col = Colours::white.overlaidWith (col); + + lf.setColour (AppearanceColours::colours[i].colourID, col); + } + } +} + void AppearanceSettings::applyToCodeEditor (CodeEditorComponent& editor) const { CodeEditorComponent::ColourScheme cs (editor.getColourScheme()); @@ -108,20 +153,6 @@ void AppearanceSettings::applyToCodeEditor (CodeEditorComponent& editor) const } 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 ("Line Number Bkgd", col)) editor.setColour (CodeEditorComponent::lineNumberBackgroundId, col); - if (getColour ("Line Numbers", col)) editor.setColour (CodeEditorComponent::lineNumberTextId, col); - - if (getColour ("Background", col)) - { - col = Colours::white.overlaidWith (col); - editor.setColour (CodeEditorComponent::backgroundColourId, col); - editor.setColour (CaretComponent::caretColourId, col.contrasting()); - } - editor.setFont (getCodeFont()); } @@ -375,3 +406,19 @@ Component* AppearanceSettings::createEditorWindow() { return new AppearanceEditor::Window(); } + +//============================================================================== +IntrojucerLookAndFeel::IntrojucerLookAndFeel() +{ + setColour (mainBackgroundColourId, Colour::greyLevel (0.8f)); + setColour (projectPanelBackgroundColourId, Colour::greyLevel (0.93f)); + setColour (treeviewHighlightColourId, Colour (0x401111ee)); +} + +Rectangle IntrojucerLookAndFeel::getPropertyComponentContentPosition (PropertyComponent& component) +{ + if (component.findParentComponentOfClass() != nullptr) + return component.getLocalBounds().reduced (1, 1).removeFromRight (component.getWidth() / 2); + + return LookAndFeel::getPropertyComponentContentPosition (component); +} diff --git a/extras/Introjucer/Source/Application/jucer_AppearanceSettings.h b/extras/Introjucer/Source/Application/jucer_AppearanceSettings.h index 5d6c1809eb..35f68f2278 100644 --- a/extras/Introjucer/Source/Application/jucer_AppearanceSettings.h +++ b/extras/Introjucer/Source/Application/jucer_AppearanceSettings.h @@ -27,7 +27,7 @@ #define __JUCER_APPEARANCESETTINGS_H_34D762C7__ -class AppearanceSettings +class AppearanceSettings : private ValueTree::Listener { public: AppearanceSettings (const CodeEditorComponent& editorToCopyFrom); @@ -36,6 +36,7 @@ public: bool readFromXML (const XmlElement&); bool writeToFile (const File& file) const; + void applyToLookAndFeel (LookAndFeel&) const; void applyToCodeEditor (CodeEditorComponent& editor) const; StringArray getColourNames() const; @@ -48,6 +49,32 @@ public: ValueTree settings; static Component* createEditorWindow(); + + static void intialiseLookAndFeel (LookAndFeel&); + +private: + void updateColourScheme(); + void valueTreePropertyChanged (ValueTree&, const Identifier&) { updateColourScheme(); } + void valueTreeChildAdded (ValueTree&, ValueTree&) { updateColourScheme(); } + void valueTreeChildRemoved (ValueTree&, ValueTree&) { updateColourScheme(); } + void valueTreeChildOrderChanged (ValueTree&) { updateColourScheme(); } + void valueTreeParentChanged (ValueTree&) { updateColourScheme(); } + void valueTreeRedirected (ValueTree&) { updateColourScheme(); } +}; + +//============================================================================== +class IntrojucerLookAndFeel : public LookAndFeel +{ +public: + IntrojucerLookAndFeel(); + + void drawStretchableLayoutResizerBar (Graphics& g, int /*w*/, int /*h*/, bool /*isVerticalBar*/, bool isMouseOver, bool isMouseDragging) + { + if (isMouseOver || isMouseDragging) + g.fillAll (Colours::grey.withAlpha (0.4f)); + } + + Rectangle getPropertyComponentContentPosition (PropertyComponent& component); }; diff --git a/extras/Introjucer/Source/Application/jucer_Application.h b/extras/Introjucer/Source/Application/jucer_Application.h index 25a370f6be..6cb695c978 100644 --- a/extras/Introjucer/Source/Application/jucer_Application.h +++ b/extras/Introjucer/Source/Application/jucer_Application.h @@ -44,6 +44,10 @@ public: //============================================================================== void initialise (const String& commandLine) { + LookAndFeel::setDefaultLookAndFeel (&lookAndFeel); + + settings.initialise(); + if (commandLine.isNotEmpty()) { const int appReturnCode = performCommandLine (commandLine); @@ -92,6 +96,8 @@ public: openDocumentManager.clear(); commandManager = nullptr; settings.flush(); + + LookAndFeel::setDefaultLookAndFeel (nullptr); } //============================================================================== @@ -439,6 +445,8 @@ public: } //============================================================================== + IntrojucerLookAndFeel lookAndFeel; + StoredSettings settings; Icons icons; diff --git a/extras/Introjucer/Source/Application/jucer_CommonHeaders.h b/extras/Introjucer/Source/Application/jucer_CommonHeaders.h index 8cc17acf96..2ac8cdb148 100644 --- a/extras/Introjucer/Source/Application/jucer_CommonHeaders.h +++ b/extras/Introjucer/Source/Application/jucer_CommonHeaders.h @@ -48,4 +48,11 @@ const char* const sourceFileExtensions = "cpp;mm;m;c;cc;cxx"; const char* const headerFileExtensions = "h;hpp;hxx"; const char* const sourceOrHeaderFileExtensions = "cpp;mm;m;c;cc;cxx;h;hpp;hxx"; +enum ColourIds +{ + mainBackgroundColourId = 0x2340000, + projectPanelBackgroundColourId = 0x2340001, + treeviewHighlightColourId = 0x2340002, +}; + #endif // __JUCER_COMMONHEADERS_JUCEHEADER__ diff --git a/extras/Introjucer/Source/Application/jucer_FilePreviewComponent.cpp b/extras/Introjucer/Source/Application/jucer_FilePreviewComponent.cpp deleted file mode 100644 index c400a5b4ff..0000000000 --- a/extras/Introjucer/Source/Application/jucer_FilePreviewComponent.cpp +++ /dev/null @@ -1,77 +0,0 @@ -/* - ============================================================================== - - 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_Headers.h" -#include "jucer_FilePreviewComponent.h" - - -//============================================================================== -ItemPreviewComponent::ItemPreviewComponent (const File& file_) - : file (file_) -{ - tryToLoadImage(); -} - -void ItemPreviewComponent::tryToLoadImage() -{ - facts.clear(); - facts.add (file.getFullPathName()); - image = Image(); - - ScopedPointer input (file.createInputStream()); - - if (input != nullptr) - { - const int64 totalSize = input->getTotalLength(); - ImageFileFormat* format = ImageFileFormat::findImageFormatForStream (*input); - input = nullptr; - - String formatName; - if (format != nullptr) - formatName = " " + format->getFormatName(); - - image = ImageCache::getFromFile (file); - - if (image.isValid()) - facts.add (String (image.getWidth()) + " x " + String (image.getHeight()) + formatName); - - if (totalSize > 0) - facts.add (File::descriptionOfSizeInBytes (totalSize)); - } - - facts.removeEmptyStrings (true); -} - -void ItemPreviewComponent::paint (Graphics& g) -{ - g.drawImageWithin (image, 2, 22, getWidth() - 4, getHeight() - 24, - RectanglePlacement::centred | RectanglePlacement::onlyReduceInSize, - false); - - g.setFont (Font (15.0f, Font::bold)); - g.setColour (Colours::white); - g.drawMultiLineText (facts.joinIntoString ("\n"), - 10, 15, getWidth() - 16); -} diff --git a/extras/Introjucer/Source/Application/jucer_FilePreviewComponent.h b/extras/Introjucer/Source/Application/jucer_FilePreviewComponent.h index 16c1ef805f..581baebe09 100644 --- a/extras/Introjucer/Source/Application/jucer_FilePreviewComponent.h +++ b/extras/Introjucer/Source/Application/jucer_FilePreviewComponent.h @@ -33,17 +33,58 @@ class ItemPreviewComponent : public Component { public: - //============================================================================== - ItemPreviewComponent (const File& file); - - void paint (Graphics& g); + ItemPreviewComponent (const File& file_) + : file (file_) + { + tryToLoadImage(); + } + + void paint (Graphics& g) + { + g.drawImageWithin (image, 2, 22, getWidth() - 4, getHeight() - 24, + RectanglePlacement::centred | RectanglePlacement::onlyReduceInSize, + false); + + g.setFont (Font (14.0f, Font::bold)); + g.setColour (findColour (mainBackgroundColourId).contrasting()); + g.drawMultiLineText (facts.joinIntoString ("\n"), + 10, 15, getWidth() - 16); + } private: StringArray facts; File file; Image image; - void tryToLoadImage(); + void tryToLoadImage() + { + facts.clear(); + facts.add (file.getFullPathName()); + image = Image(); + + ScopedPointer input (file.createInputStream()); + + if (input != nullptr) + { + const int64 totalSize = input->getTotalLength(); + ImageFileFormat* format = ImageFileFormat::findImageFormatForStream (*input); + input = nullptr; + + String formatName; + if (format != nullptr) + formatName = " " + format->getFormatName(); + + image = ImageCache::getFromFile (file); + + if (image.isValid()) + facts.add (String (image.getWidth()) + " x " + String (image.getHeight()) + formatName); + + if (totalSize > 0) + facts.add (File::descriptionOfSizeInBytes (totalSize)); + } + + facts.removeEmptyStrings (true); + } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ItemPreviewComponent); }; diff --git a/extras/Introjucer/Source/Application/jucer_MainWindow.cpp b/extras/Introjucer/Source/Application/jucer_MainWindow.cpp index 721cebaaa4..13fd16bda8 100644 --- a/extras/Introjucer/Source/Application/jucer_MainWindow.cpp +++ b/extras/Introjucer/Source/Application/jucer_MainWindow.cpp @@ -486,3 +486,9 @@ void MainWindowList::reopenLastProjects() for (int i = 0; i < projects.size(); ++ i) openFile (projects.getReference(i)); } + +void MainWindowList::sendLookAndFeelChange() +{ + for (int i = windows.size(); --i >= 0;) + windows.getUnchecked(i)->sendLookAndFeelChange(); +} diff --git a/extras/Introjucer/Source/Application/jucer_MainWindow.h b/extras/Introjucer/Source/Application/jucer_MainWindow.h index d682c5bd9e..e92ad9cd1c 100644 --- a/extras/Introjucer/Source/Application/jucer_MainWindow.h +++ b/extras/Introjucer/Source/Application/jucer_MainWindow.h @@ -114,6 +114,8 @@ public: void avoidSuperimposedWindows (MainWindow*); + void sendLookAndFeelChange(); + OwnedArray windows; private: diff --git a/extras/Introjucer/Source/Project/jucer_ConfigPage.cpp b/extras/Introjucer/Source/Project/jucer_ConfigPage.cpp index 9f2097823b..e1cf0dd02b 100644 --- a/extras/Introjucer/Source/Project/jucer_ConfigPage.cpp +++ b/extras/Introjucer/Source/Project/jucer_ConfigPage.cpp @@ -74,7 +74,7 @@ namespace ProjectSettingsTreeClasses String getRenamingName() const { return getDisplayName(); } String getDisplayName() const { return config->getName(); } void setName (const String&) {} - Icon getIcon() const { return Icon (getIcons().config, Colours::darkgreen); } + Icon getIcon() const { return Icon (getIcons().config, getContrastingColour (Colours::green, 0.5f)); } void showDocument() { showSettingsPage (new SettingsComp (config, exporterName)); } void itemOpennessChanged (bool) {} @@ -175,7 +175,7 @@ namespace ProjectSettingsTreeClasses String getDisplayName() const { return exporter->getName(); } void setName (const String&) {} bool isMissing() { return false; } - Icon getIcon() const { return Icon (getIcons().exporter, Colours::darkgrey); } + Icon getIcon() const { return Icon (getIcons().exporter, getContrastingColour (0.5f)); } void showDocument() { showSettingsPage (new SettingsComp (exporter)); } void deleteItem() @@ -297,7 +297,7 @@ namespace ProjectSettingsTreeClasses String getDisplayName() const { return "Modules"; } void setName (const String&) {} bool isMissing() { return false; } - Icon getIcon() const { return Icon (getIcons().graph, Colours::darkred); } + Icon getIcon() const { return Icon (getIcons().graph, getContrastingColour (Colours::red, 0.5f)); } void showDocument() { showSettingsPage (new SettingsComp (project)); } private: @@ -349,7 +349,7 @@ namespace ProjectSettingsTreeClasses String getDisplayName() const { return project.getTitle(); } void setName (const String&) {} bool isMissing() { return false; } - Icon getIcon() const { return project.getMainGroup().getIcon(); } + Icon getIcon() const { return project.getMainGroup().getIcon().withContrastingColourTo (getBackgroundColour()); } void showDocument() { showSettingsPage (new SettingsComp (project)); } bool canBeSelected() const { return true; } bool mightContainSubItems() { return project.getNumExporters() > 0; } diff --git a/extras/Introjucer/Source/Project/jucer_GroupInformationComponent.cpp b/extras/Introjucer/Source/Project/jucer_GroupInformationComponent.cpp deleted file mode 100644 index ec6ce067c7..0000000000 --- a/extras/Introjucer/Source/Project/jucer_GroupInformationComponent.cpp +++ /dev/null @@ -1,155 +0,0 @@ -/* - ============================================================================== - - 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_GroupInformationComponent.h" - - -//============================================================================== -GroupInformationComponent::GroupInformationComponent (const Project::Item& item_) - : item (item_) -{ - list.setModel (this); - addAndMakeVisible (&list); - list.updateContent(); - list.setRowHeight (20); - item.state.addListener (this); -} - -GroupInformationComponent::~GroupInformationComponent() -{ - item.state.removeListener (this); -} - -void GroupInformationComponent::resized() -{ - list.setSize (getWidth(), getHeight()); -} - -int GroupInformationComponent::getNumRows() -{ - return item.getNumChildren(); -} - -void GroupInformationComponent::paintListBoxItem (int rowNumber, Graphics& g, int width, int height, bool rowIsSelected) -{ -} - -//============================================================================== -void GroupInformationComponent::valueTreePropertyChanged (ValueTree& treeWhosePropertyHasChanged, const Identifier& property) -{ - list.updateContent(); -} - -void GroupInformationComponent::valueTreeChildAdded (ValueTree&, ValueTree&) -{ - list.updateContent(); -} - -void GroupInformationComponent::valueTreeChildRemoved (ValueTree&, ValueTree&) -{ - list.updateContent(); -} - -void GroupInformationComponent::valueTreeChildOrderChanged (ValueTree&) -{ - list.updateContent(); -} - -void GroupInformationComponent::valueTreeParentChanged (ValueTree&) -{ - list.updateContent(); -} - -//============================================================================== -class FileOptionComponent : public Component -{ -public: - FileOptionComponent (const Project::Item& item_) - : item (item_), - compileButton ("Compile"), - resourceButton ("Add to Binary Resources") - { - if (item.isFile()) - { - addAndMakeVisible (&compileButton); - compileButton.getToggleStateValue().referTo (item.getShouldCompileValue()); - - addAndMakeVisible (&resourceButton); - resourceButton.getToggleStateValue().referTo (item.getShouldAddToResourceValue()); - } - } - - void paint (Graphics& g) - { - int x = getHeight() + 6; - - item.getIcon().draw (g, Rectangle (2.0f, 2.0f, x - 4.0f, getHeight() - 4.0f)); - - g.setColour (Colours::black); - g.setFont (getHeight() * 0.6f); - - const int x2 = compileButton.isVisible() ? compileButton.getX() - 4 - : getWidth() - 4; - - g.drawText (item.getName(), x, 0, x2 - x, getHeight(), Justification::centredLeft, true); - - g.setColour (Colours::lightgrey); - g.fillRect (0, getHeight() - 1, getWidth(), 1); - } - - void resized() - { - int w = 180; - resourceButton.setBounds (getWidth() - w, 1, w, getHeight() - 2); - w = 100; - compileButton.setBounds (resourceButton.getX() - w, 1, w, getHeight() - 2); - } - - Project::Item item; - -private: - ToggleButton compileButton, resourceButton; -}; - -Component* GroupInformationComponent::refreshComponentForRow (int rowNumber, bool isRowSelected, Component* existingComponentToUpdate) -{ - if (rowNumber < getNumRows()) - { - Project::Item child (item.getChild (rowNumber)); - - if (existingComponentToUpdate == nullptr - || dynamic_cast (existingComponentToUpdate)->item != child) - { - delete existingComponentToUpdate; - existingComponentToUpdate = new FileOptionComponent (child); - } - } - else - { - deleteAndZero (existingComponentToUpdate); - } - - return existingComponentToUpdate; -} diff --git a/extras/Introjucer/Source/Project/jucer_GroupInformationComponent.h b/extras/Introjucer/Source/Project/jucer_GroupInformationComponent.h index d52227b6e4..80713352cd 100644 --- a/extras/Introjucer/Source/Project/jucer_GroupInformationComponent.h +++ b/extras/Introjucer/Source/Project/jucer_GroupInformationComponent.h @@ -37,27 +37,127 @@ class GroupInformationComponent : public Component, { public: //============================================================================== - GroupInformationComponent (const Project::Item& item_); - ~GroupInformationComponent(); + GroupInformationComponent (const Project::Item& item_) + : item (item_) + { + list.setModel (this); + list.setColour (ListBox::backgroundColourId, Colours::transparentBlack); + addAndMakeVisible (&list); + list.updateContent(); + list.setRowHeight (20); + item.state.addListener (this); + lookAndFeelChanged(); + } + + ~GroupInformationComponent() + { + item.state.removeListener (this); + } //============================================================================== - void resized(); - - int getNumRows(); - void paintListBoxItem (int rowNumber, Graphics& g, int width, int height, bool rowIsSelected); - Component* refreshComponentForRow (int rowNumber, bool isRowSelected, Component* existingComponentToUpdate); + void paint (Graphics& g) + { + g.fillAll (findColour (projectPanelBackgroundColourId)); + } + + void resized() + { + list.setBounds (getLocalBounds().reduced (4, 2)); + } + + int getNumRows() + { + return item.getNumChildren(); + } + + void paintListBoxItem (int rowNumber, Graphics& g, int width, int height, bool rowIsSelected) + { + g.setColour (Colours::white.withAlpha (0.4f)); + g.fillRect (0, 0, width, height - 1); + } + + + Component* refreshComponentForRow (int rowNumber, bool isRowSelected, Component* existingComponentToUpdate) + { + if (rowNumber < getNumRows()) + { + Project::Item child (item.getChild (rowNumber)); + + if (existingComponentToUpdate == nullptr + || dynamic_cast (existingComponentToUpdate)->item != child) + { + delete existingComponentToUpdate; + existingComponentToUpdate = new FileOptionComponent (child); + } + } + else + { + deleteAndZero (existingComponentToUpdate); + } + + return existingComponentToUpdate; + } //============================================================================== - void valueTreePropertyChanged (ValueTree& treeWhosePropertyHasChanged, const Identifier& property); - void valueTreeChildAdded (ValueTree& parentTree, ValueTree& childWhichHasBeenAdded); - void valueTreeChildRemoved (ValueTree& parentTree, ValueTree& childWhichHasBeenRemoved); - void valueTreeChildOrderChanged (ValueTree& parentTree); - void valueTreeParentChanged (ValueTree& treeWhoseParentHasChanged); + void valueTreePropertyChanged (ValueTree&, const Identifier&) { list.updateContent(); } + void valueTreeChildAdded (ValueTree&, ValueTree&) { list.updateContent(); } + void valueTreeChildRemoved (ValueTree&, ValueTree&) { list.updateContent(); } + void valueTreeChildOrderChanged (ValueTree&) { list.updateContent(); } + void valueTreeParentChanged (ValueTree&) { list.updateContent(); } private: Project::Item item; ListBox list; + //============================================================================== + class FileOptionComponent : public Component + { + public: + FileOptionComponent (const Project::Item& item_) + : item (item_), + compileButton ("Compile"), + resourceButton ("Add to Binary Resources") + { + if (item.isFile()) + { + addAndMakeVisible (&compileButton); + compileButton.getToggleStateValue().referTo (item.getShouldCompileValue()); + + addAndMakeVisible (&resourceButton); + resourceButton.getToggleStateValue().referTo (item.getShouldAddToResourceValue()); + } + } + + void paint (Graphics& g) + { + int x = getHeight() + 6; + + item.getIcon().withContrastingColourTo (Colours::grey) + .draw (g, Rectangle (2.0f, 2.0f, x - 4.0f, getHeight() - 4.0f)); + + g.setColour (Colours::black); + g.setFont (getHeight() * 0.6f); + + const int x2 = compileButton.isVisible() ? compileButton.getX() - 4 + : getWidth() - 4; + + g.drawText (item.getName(), x, 0, x2 - x, getHeight(), Justification::centredLeft, true); + } + + void resized() + { + int w = 180; + resourceButton.setBounds (getWidth() - w, 1, w, getHeight() - 2); + w = 100; + compileButton.setBounds (resourceButton.getX() - w, 1, w, getHeight() - 2); + } + + Project::Item item; + + private: + ToggleButton compileButton, resourceButton; + }; + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (GroupInformationComponent); }; diff --git a/extras/Introjucer/Source/Project/jucer_ProjectContentComponent.cpp b/extras/Introjucer/Source/Project/jucer_ProjectContentComponent.cpp index 9bc7f227f2..dc3886aacb 100644 --- a/extras/Introjucer/Source/Project/jucer_ProjectContentComponent.cpp +++ b/extras/Introjucer/Source/Project/jucer_ProjectContentComponent.cpp @@ -96,10 +96,16 @@ ProjectContentComponent::ProjectContentComponent() treeSizeConstrainer.setMinimumWidth (100); treeSizeConstrainer.setMaximumWidth (500); + + treeViewTabs.setOutline (0); + + JucerApplication::getApp().openDocumentManager.addListener (this); } ProjectContentComponent::~ProjectContentComponent() { + JucerApplication::getApp().openDocumentManager.removeListener (this); + setProject (nullptr); contentView = nullptr; removeChildComponent (&bubbleMessage); @@ -108,7 +114,7 @@ ProjectContentComponent::~ProjectContentComponent() void ProjectContentComponent::paint (Graphics& g) { - g.fillAll (Colour::greyLevel (0.8f)); + g.fillAll (findColour (mainBackgroundColourId)); } void ProjectContentComponent::resized() @@ -124,6 +130,16 @@ void ProjectContentComponent::resized() contentView->setBounds (r); } +void ProjectContentComponent::lookAndFeelChanged() +{ + const Colour tabColour (findColour (projectPanelBackgroundColourId)); + + for (int i = treeViewTabs.getNumTabs(); --i >= 0;) + treeViewTabs.setTabBackgroundColour (i, tabColour); + + repaint(); +} + void ProjectContentComponent::childBoundsChanged (Component* child) { if (child == &treeViewTabs) @@ -191,8 +207,10 @@ 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); + const Colour tabColour (findColour (projectPanelBackgroundColourId)); + + treeViewTabs.addTab ("Files", tabColour, new FileTreeTab (*project), true); + treeViewTabs.addTab ("Config", tabColour, new ConfigTreeTab (*project), true); } TreeView* ProjectContentComponent::getFilesTreeView() const @@ -243,6 +261,11 @@ void ProjectContentComponent::reloadLastOpenDocuments() } } +void ProjectContentComponent::documentAboutToClose (OpenDocumentManager::Document* document) +{ + hideDocument (document); +} + void ProjectContentComponent::changeListenerCallback (ChangeBroadcaster*) { updateMissingFileStatuses(); diff --git a/extras/Introjucer/Source/Project/jucer_ProjectContentComponent.h b/extras/Introjucer/Source/Project/jucer_ProjectContentComponent.h index d346f29f95..da76812959 100644 --- a/extras/Introjucer/Source/Project/jucer_ProjectContentComponent.h +++ b/extras/Introjucer/Source/Project/jucer_ProjectContentComponent.h @@ -35,7 +35,8 @@ class ProjectTreeViewBase; */ class ProjectContentComponent : public Component, public ApplicationCommandTarget, - private ChangeListener + private ChangeListener, + private OpenDocumentManager::DocumentCloseListener { public: //============================================================================== @@ -78,6 +79,7 @@ public: void paint (Graphics& g); void resized(); void childBoundsChanged (Component* child); + void lookAndFeelChanged(); protected: Project* project; @@ -91,6 +93,7 @@ protected: ComponentBoundsConstrainer treeSizeConstrainer; BubbleMessageComponent bubbleMessage; + void documentAboutToClose (OpenDocumentManager::Document*); void changeListenerCallback (ChangeBroadcaster*); void updateMainWindowTitle(); bool reinvokeCommandAfterClosingPropertyEditors (const InvocationInfo&); diff --git a/extras/Introjucer/Source/Project/jucer_ProjectTreeViewBase.h b/extras/Introjucer/Source/Project/jucer_ProjectTreeViewBase.h index a01c1d5c16..5294b37b80 100644 --- a/extras/Introjucer/Source/Project/jucer_ProjectTreeViewBase.h +++ b/extras/Introjucer/Source/Project/jucer_ProjectTreeViewBase.h @@ -101,7 +101,8 @@ protected: //============================================================================== void treeChildrenChanged (const ValueTree& parentTree); virtual ProjectTreeViewBase* createSubItem (const Project::Item& node) = 0; - Icon getIcon() const { return item.getIcon(); } + + Icon getIcon() const { return item.getIcon().withContrastingColourTo (getBackgroundColour()); } //============================================================================== void triggerAsyncRename (const Project::Item& itemToRename); diff --git a/extras/Introjucer/Source/Utility/jucer_JucerTreeViewBase.cpp b/extras/Introjucer/Source/Utility/jucer_JucerTreeViewBase.cpp index 2a6956a541..efdc36494a 100644 --- a/extras/Introjucer/Source/Utility/jucer_JucerTreeViewBase.cpp +++ b/extras/Introjucer/Source/Utility/jucer_JucerTreeViewBase.cpp @@ -49,7 +49,7 @@ Font JucerTreeViewBase::getFont() const void JucerTreeViewBase::paintItem (Graphics& g, int width, int height) { if (isSelected()) - g.fillAll (Colour (0x401111ee)); + g.fillAll (getOwnerView()->findColour (treeviewHighlightColourId)); } float JucerTreeViewBase::getIconSize() const @@ -66,14 +66,35 @@ void JucerTreeViewBase::paintOpenCloseButton (Graphics& g, int width, int height else p.addTriangle (width * 0.25f, height * 0.25f, width * 0.8f, height * 0.5f, width * 0.25f, height * 0.75f); - g.setColour (Colours::lightgrey); + g.setColour (getContrastingColour (0.3f)); g.fillPath (p); } +Colour JucerTreeViewBase::getBackgroundColour() const +{ + Colour background (getOwnerView()->findColour (projectPanelBackgroundColourId)); + + if (isSelected()) + background = background.overlaidWith (getOwnerView()->findColour (treeviewHighlightColourId)); + + return background; +} + +Colour JucerTreeViewBase::getContrastingColour (float contrast) const +{ + return getBackgroundColour().contrasting (contrast); +} + +Colour JucerTreeViewBase::getContrastingColour (const Colour& target, float minContrast) const +{ + return getBackgroundColour().contrasting (target, minContrast); +} + void JucerTreeViewBase::paintContent (Graphics& g, const Rectangle& area) { g.setFont (getFont()); - g.setColour (isMissing() ? Colours::red : Colours::black); + g.setColour (isMissing() ? getContrastingColour (Colours::red, 0.8f) + : getContrastingColour (0.8f)); g.drawFittedText (getDisplayName(), area.getX(), area.getY(), area.getWidth(), area.getHeight(), diff --git a/extras/Introjucer/Source/Utility/jucer_JucerTreeViewBase.h b/extras/Introjucer/Source/Utility/jucer_JucerTreeViewBase.h index 94efd50798..d3f5548260 100644 --- a/extras/Introjucer/Source/Utility/jucer_JucerTreeViewBase.h +++ b/extras/Introjucer/Source/Utility/jucer_JucerTreeViewBase.h @@ -93,6 +93,10 @@ protected: ProjectContentComponent* getProjectContentComponent() const; virtual void addSubItems() {} + Colour getBackgroundColour() const; + Colour getContrastingColour (float contrast) const; + Colour getContrastingColour (const Colour& targetColour, float minContrast) const; + private: class ItemSelectionTimer; friend class ItemSelectionTimer; diff --git a/extras/Introjucer/Source/Utility/jucer_StoredSettings.cpp b/extras/Introjucer/Source/Utility/jucer_StoredSettings.cpp index 3b0ce5319a..62499fd33b 100644 --- a/extras/Introjucer/Source/Utility/jucer_StoredSettings.cpp +++ b/extras/Introjucer/Source/Utility/jucer_StoredSettings.cpp @@ -49,6 +49,15 @@ static AppearanceSettings getDefaultScheme() //============================================================================== StoredSettings::StoredSettings() : appearance (getDefaultScheme()) +{ +} + +StoredSettings::~StoredSettings() +{ + flush(); +} + +void StoredSettings::initialise() { reload(); @@ -58,11 +67,6 @@ StoredSettings::StoredSettings() appearance.writeToFile (defaultSchemeFile); } -StoredSettings::~StoredSettings() -{ - flush(); -} - PropertiesFile& StoredSettings::getProps() { jassert (props != nullptr); diff --git a/extras/Introjucer/Source/Utility/jucer_StoredSettings.h b/extras/Introjucer/Source/Utility/jucer_StoredSettings.h index 66fed7e742..7074a3550f 100644 --- a/extras/Introjucer/Source/Utility/jucer_StoredSettings.h +++ b/extras/Introjucer/Source/Utility/jucer_StoredSettings.h @@ -36,6 +36,8 @@ public: StoredSettings(); ~StoredSettings(); + void initialise(); + PropertiesFile& getProps(); void flush(); void reload();