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);
+ ItemPreviewComponent (const File& file_)
+ : file (file_)
+ {
+ tryToLoadImage();
+ }
- void paint (Graphics& g);
+ 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();
+ void paint (Graphics& g)
+ {
+ g.fillAll (findColour (projectPanelBackgroundColourId));
+ }
- int getNumRows();
- void paintListBoxItem (int rowNumber, Graphics& g, int width, int height, bool rowIsSelected);
- Component* refreshComponentForRow (int rowNumber, bool isRowSelected, Component* existingComponentToUpdate);
+ 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();