diff --git a/extras/Introjucer/Builds/CodeBlocks/The Introjucer.cbp b/extras/Introjucer/Builds/CodeBlocks/The Introjucer.cbp
index 3ebce581a0..ef08b18e77 100644
--- a/extras/Introjucer/Builds/CodeBlocks/The Introjucer.cbp
+++ b/extras/Introjucer/Builds/CodeBlocks/The Introjucer.cbp
@@ -563,6 +563,11 @@
+
+
+
+
+
diff --git a/extras/Introjucer/Builds/Linux/Makefile b/extras/Introjucer/Builds/Linux/Makefile
index 2017b751f9..4ad04849fd 100644
--- a/extras/Introjucer/Builds/Linux/Makefile
+++ b/extras/Introjucer/Builds/Linux/Makefile
@@ -88,6 +88,7 @@ OBJECTS := \
$(OBJDIR)/jucer_CodeHelpers_c317179c.o \
$(OBJDIR)/jucer_FileHelpers_f98ed0ad.o \
$(OBJDIR)/jucer_Icons_9db2f51e.o \
+ $(OBJDIR)/jucer_IntrojucerLookAndFeel_d578c909.o \
$(OBJDIR)/jucer_JucerTreeViewBase_d043309d.o \
$(OBJDIR)/jucer_MiscUtilities_25b68c82.o \
$(OBJDIR)/jucer_SlidingPanelComponent_9aa7a2ab.o \
@@ -315,6 +316,11 @@ $(OBJDIR)/jucer_Icons_9db2f51e.o: ../../Source/Utility/jucer_Icons.cpp
@echo "Compiling jucer_Icons.cpp"
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
+$(OBJDIR)/jucer_IntrojucerLookAndFeel_d578c909.o: ../../Source/Utility/jucer_IntrojucerLookAndFeel.cpp
+ -@mkdir -p $(OBJDIR)
+ @echo "Compiling jucer_IntrojucerLookAndFeel.cpp"
+ @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
+
$(OBJDIR)/jucer_JucerTreeViewBase_d043309d.o: ../../Source/Utility/jucer_JucerTreeViewBase.cpp
-@mkdir -p $(OBJDIR)
@echo "Compiling jucer_JucerTreeViewBase.cpp"
diff --git a/extras/Introjucer/Builds/MacOSX/The Introjucer.xcodeproj/project.pbxproj b/extras/Introjucer/Builds/MacOSX/The Introjucer.xcodeproj/project.pbxproj
index a5c7535522..a56224707c 100644
--- a/extras/Introjucer/Builds/MacOSX/The Introjucer.xcodeproj/project.pbxproj
+++ b/extras/Introjucer/Builds/MacOSX/The Introjucer.xcodeproj/project.pbxproj
@@ -52,6 +52,7 @@
CD4F7B119CE718BCE78D61F4 = {isa = PBXBuildFile; fileRef = 9B9CAD20E1243B4351B4C8D8; };
78CB463DD98A55313A543859 = {isa = PBXBuildFile; fileRef = 1729AEDC34001C31B8CC357C; };
1499DF2E85B05AC1BF423773 = {isa = PBXBuildFile; fileRef = CF21D9DB3AEC0A4DCAB36A99; };
+ 92A214B8ED913EB1925B5C41 = {isa = PBXBuildFile; fileRef = 72744569CBFA8AC9880E7AA2; };
123810DAF8AF758928916ECE = {isa = PBXBuildFile; fileRef = 47DD50A5A9091F9900E0EAD9; };
C9F11BA62D6D092A300363F7 = {isa = PBXBuildFile; fileRef = 0F249640243FBD5717F6ADD9; };
4A1DB797F1356E85110FF871 = {isa = PBXBuildFile; fileRef = 20FAAE9F3A7B96C2D8C75BB2; };
@@ -466,6 +467,7 @@
6E8B46E33BF7A0DD930A5100 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileTreeComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
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"; };
+ 6F45E2C7C9665CD6E4B6E2F4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_IntrojucerLookAndFeel.h"; path = "../../Source/Utility/jucer_IntrojucerLookAndFeel.h"; 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"; };
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"; };
@@ -473,6 +475,7 @@
71A61C2973404BD68E8E7902 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_IPAddress.cpp"; path = "../../../../modules/juce_core/network/juce_IPAddress.cpp"; sourceTree = "SOURCE_ROOT"; };
7211101FFA28400ADBB1D47A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_Module.h"; path = "../../Source/Project/jucer_Module.h"; sourceTree = "SOURCE_ROOT"; };
7256D1C79741E66E2C002EE2 = {isa = PBXFileReference; lastKnownFileType = file.svg; name = "wizard_DLL.svg"; path = "../../Source/BinaryData/wizard_DLL.svg"; sourceTree = "SOURCE_ROOT"; };
+ 72744569CBFA8AC9880E7AA2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_IntrojucerLookAndFeel.cpp"; path = "../../Source/Utility/jucer_IntrojucerLookAndFeel.cpp"; sourceTree = "SOURCE_ROOT"; };
72FED7B10FBF5AD1F504FDFF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Value.h"; path = "../../../../modules/juce_data_structures/values/juce_Value.h"; sourceTree = "SOURCE_ROOT"; };
736E99601AB6C492D82DBF3A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_HyperlinkButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_HyperlinkButton.h"; sourceTree = "SOURCE_ROOT"; };
73B9F17FE55A02C2BB87E008 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_OpenGLComponentTemplate.cpp"; path = "../../Source/BinaryData/jucer_OpenGLComponentTemplate.cpp"; sourceTree = "SOURCE_ROOT"; };
@@ -802,9 +805,11 @@
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"; };
D374DC78AAC02504576AA9B3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_GroupComponentHandler.h"; path = "../../Source/ComponentEditor/components/jucer_GroupComponentHandler.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"; };
D3E139185095C486DD3D61F2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_TranslationTool.h"; path = "../../Source/Utility/jucer_TranslationTool.h"; sourceTree = "SOURCE_ROOT"; };
D4444EC6342A2A7BC4F7BC46 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ComponentTextProperty.h"; path = "../../Source/ComponentEditor/properties/jucer_ComponentTextProperty.h"; 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"; };
@@ -820,7 +825,9 @@
D782DA091AD3ECE158FC6A5F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ButtonPropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; };
D800DE818BEDBF4579D15B1D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_AppleRemote.mm"; path = "../../../../modules/juce_gui_extra/native/juce_mac_AppleRemote.mm"; sourceTree = "SOURCE_ROOT"; };
D87FC8F6834E9DC9C8E88B94 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_JustificationProperty.h"; path = "../../Source/ComponentEditor/properties/jucer_JustificationProperty.h"; sourceTree = "SOURCE_ROOT"; };
+ D926E13AB5AD647A7A00F486 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Network.cpp"; path = "../../../../modules/juce_core/native/juce_linux_Network.cpp"; sourceTree = "SOURCE_ROOT"; };
D92A6E9404A30EED32DCE4ED = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_RelativePositionedRectangle.h"; path = "../../Source/ComponentEditor/ui/jucer_RelativePositionedRectangle.h"; sourceTree = "SOURCE_ROOT"; };
+ D9342535EA61901A1AD816C6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_WebBrowserComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_linux_WebBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
D95D7B49EC6C6BDCB5A1B988 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_MessageManager.mm"; path = "../../../../modules/juce_events/native/juce_ios_MessageManager.mm"; sourceTree = "SOURCE_ROOT"; };
DA345D5B9DABD049F90DC96F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_GeneratedCode.h"; path = "../../Source/ComponentEditor/jucer_GeneratedCode.h"; sourceTree = "SOURCE_ROOT"; };
DB20268A566DABEAE3F2CBEE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RectanglePlacement.cpp"; path = "../../../../modules/juce_graphics/placement/juce_RectanglePlacement.cpp"; sourceTree = "SOURCE_ROOT"; };
@@ -840,18 +847,12 @@
E4BD4C43370651B49F75855B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_MainTemplate_SimpleWindow.cpp"; path = "../../Source/BinaryData/jucer_MainTemplate_SimpleWindow.cpp"; sourceTree = "SOURCE_ROOT"; };
E570E57CC1FCEF78B54A7084 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileOutputStream.h"; path = "../../../../modules/juce_core/files/juce_FileOutputStream.h"; sourceTree = "SOURCE_ROOT"; };
E5D6C36496F5BC84D7213BE8 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
- E62D9BA6E92FE7BB6EF65699 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_JSON.h"; path = "../../../../modules/juce_core/javascript/juce_JSON.h"; sourceTree = "SOURCE_ROOT"; };
E65A820D34BF39478B7C5925 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_DocumentEditorComponent.h"; path = "../../Source/Application/jucer_DocumentEditorComponent.h"; sourceTree = "SOURCE_ROOT"; };
E6F5CEC32EDC917B054467EF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ReadWriteLock.cpp"; path = "../../../../modules/juce_core/threads/juce_ReadWriteLock.cpp"; sourceTree = "SOURCE_ROOT"; };
- E720FBCD836FF3AA466C31B6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_HighResolutionTimer.cpp"; path = "../../../../modules/juce_core/threads/juce_HighResolutionTimer.cpp"; sourceTree = "SOURCE_ROOT"; };
E96597BBC6A98255B51B94DC = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = System/Library/Frameworks/IOKit.framework; sourceTree = SDKROOT; };
25F52316D256B4534BED16D1 = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Introjucer.app; sourceTree = "BUILT_PRODUCTS_DIR"; };
- D253F74B7F5734984E568CA7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Files.cpp"; path = "../../../../modules/juce_core/native/juce_linux_Files.cpp"; sourceTree = "SOURCE_ROOT"; };
- D376B9B54EC944E766AFEC45 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PopupMenu.cpp"; path = "../../../../modules/juce_gui_basics/menus/juce_PopupMenu.cpp"; sourceTree = "SOURCE_ROOT"; };
D780ED33573AED5AD383A036 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CaretComponent.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_CaretComponent.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"; };
- 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"; };
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"; };
DAF84A553D264705FA6EB6FF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_TreeViewHandler.h"; path = "../../Source/ComponentEditor/components/jucer_TreeViewHandler.h"; sourceTree = "SOURCE_ROOT"; };
@@ -880,10 +881,12 @@
E530742870F07704E9616358 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarItemComponent.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.h"; sourceTree = "SOURCE_ROOT"; };
E54D0994D31E20A0A05EBA2B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SystemTrayIconComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.h"; sourceTree = "SOURCE_ROOT"; };
E60E28D1B7491047DEA236AE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ProjectContentComponent.h"; path = "../../Source/Project/jucer_ProjectContentComponent.h"; sourceTree = "SOURCE_ROOT"; };
+ E62D9BA6E92FE7BB6EF65699 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_JSON.h"; path = "../../../../modules/juce_core/javascript/juce_JSON.h"; sourceTree = "SOURCE_ROOT"; };
E63F54CF8D5D922A319C6962 = {isa = PBXFileReference; lastKnownFileType = image.png; name = projectIconXcodeIOS.png; path = ../../Source/BinaryData/projectIconXcodeIOS.png; sourceTree = "SOURCE_ROOT"; };
E642193A9990C48CFB6479A9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileListComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileListComponent.h"; sourceTree = "SOURCE_ROOT"; };
E654E3A3CD45A888C5F773DF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MenuBarModel.h"; path = "../../../../modules/juce_gui_basics/menus/juce_MenuBarModel.h"; sourceTree = "SOURCE_ROOT"; };
E70CA21960A64CCB835725FF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ProjectType.cpp"; path = "../../Source/Project/jucer_ProjectType.cpp"; sourceTree = "SOURCE_ROOT"; };
+ E720FBCD836FF3AA466C31B6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_HighResolutionTimer.cpp"; path = "../../../../modules/juce_core/threads/juce_HighResolutionTimer.cpp"; sourceTree = "SOURCE_ROOT"; };
E73C7E17116F6085765622E3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Drawable.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_Drawable.h"; sourceTree = "SOURCE_ROOT"; };
E7A4604F766ABC8BE26C94A1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeParallelogram.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeParallelogram.cpp"; sourceTree = "SOURCE_ROOT"; };
E7B6A0CBA0D27A095E83F5B7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_WebBrowserComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_win32_WebBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
@@ -1126,6 +1129,8 @@
E382C78A1D837DD98916E86A,
CF21D9DB3AEC0A4DCAB36A99,
515FF6E74826E3E3F7273621,
+ 72744569CBFA8AC9880E7AA2,
+ 6F45E2C7C9665CD6E4B6E2F4,
47DD50A5A9091F9900E0EAD9,
820291543BF93243B718F0EE,
0F249640243FBD5717F6ADD9,
@@ -2159,6 +2164,7 @@
CD4F7B119CE718BCE78D61F4,
78CB463DD98A55313A543859,
1499DF2E85B05AC1BF423773,
+ 92A214B8ED913EB1925B5C41,
123810DAF8AF758928916ECE,
C9F11BA62D6D092A300363F7,
4A1DB797F1356E85110FF871,
diff --git a/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj b/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj
index 701855c341..0a45ec8c9a 100644
--- a/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj
+++ b/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj
@@ -162,6 +162,7 @@
+
@@ -1171,6 +1172,7 @@
+
diff --git a/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj.filters b/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj.filters
index be436283df..1246784620 100644
--- a/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj.filters
+++ b/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj.filters
@@ -367,6 +367,9 @@
The Introjucer\Utility
+
+ The Introjucer\Utility
+
The Introjucer\Utility
@@ -1680,6 +1683,9 @@
The Introjucer\Utility
+
+ The Introjucer\Utility
+
The Introjucer\Utility
diff --git a/extras/Introjucer/Builds/VisualStudio2012/The Introjucer.vcxproj b/extras/Introjucer/Builds/VisualStudio2012/The Introjucer.vcxproj
index d90d5b4336..53ac6d5fd2 100644
--- a/extras/Introjucer/Builds/VisualStudio2012/The Introjucer.vcxproj
+++ b/extras/Introjucer/Builds/VisualStudio2012/The Introjucer.vcxproj
@@ -168,6 +168,7 @@
+
@@ -1177,6 +1178,7 @@
+
diff --git a/extras/Introjucer/Builds/VisualStudio2012/The Introjucer.vcxproj.filters b/extras/Introjucer/Builds/VisualStudio2012/The Introjucer.vcxproj.filters
index be436283df..1246784620 100644
--- a/extras/Introjucer/Builds/VisualStudio2012/The Introjucer.vcxproj.filters
+++ b/extras/Introjucer/Builds/VisualStudio2012/The Introjucer.vcxproj.filters
@@ -367,6 +367,9 @@
The Introjucer\Utility
+
+ The Introjucer\Utility
+
The Introjucer\Utility
@@ -1680,6 +1683,9 @@
The Introjucer\Utility
+
+ The Introjucer\Utility
+
The Introjucer\Utility
diff --git a/extras/Introjucer/Builds/VisualStudio2013/The Introjucer.vcxproj b/extras/Introjucer/Builds/VisualStudio2013/The Introjucer.vcxproj
index a5acf011dd..fae9c7b30f 100644
--- a/extras/Introjucer/Builds/VisualStudio2013/The Introjucer.vcxproj
+++ b/extras/Introjucer/Builds/VisualStudio2013/The Introjucer.vcxproj
@@ -168,6 +168,7 @@
+
@@ -1177,6 +1178,7 @@
+
diff --git a/extras/Introjucer/Builds/VisualStudio2013/The Introjucer.vcxproj.filters b/extras/Introjucer/Builds/VisualStudio2013/The Introjucer.vcxproj.filters
index e873d45abe..bc1354062d 100644
--- a/extras/Introjucer/Builds/VisualStudio2013/The Introjucer.vcxproj.filters
+++ b/extras/Introjucer/Builds/VisualStudio2013/The Introjucer.vcxproj.filters
@@ -367,6 +367,9 @@
The Introjucer\Utility
+
+ The Introjucer\Utility
+
The Introjucer\Utility
@@ -1680,6 +1683,9 @@
The Introjucer\Utility
+
+ The Introjucer\Utility
+
The Introjucer\Utility
diff --git a/extras/Introjucer/Builds/VisualStudio2015/The Introjucer.vcxproj b/extras/Introjucer/Builds/VisualStudio2015/The Introjucer.vcxproj
index c65268ec44..cb3c462847 100644
--- a/extras/Introjucer/Builds/VisualStudio2015/The Introjucer.vcxproj
+++ b/extras/Introjucer/Builds/VisualStudio2015/The Introjucer.vcxproj
@@ -168,6 +168,7 @@
+
@@ -1177,6 +1178,7 @@
+
diff --git a/extras/Introjucer/Builds/VisualStudio2015/The Introjucer.vcxproj.filters b/extras/Introjucer/Builds/VisualStudio2015/The Introjucer.vcxproj.filters
index 1475663a35..393599cbdd 100644
--- a/extras/Introjucer/Builds/VisualStudio2015/The Introjucer.vcxproj.filters
+++ b/extras/Introjucer/Builds/VisualStudio2015/The Introjucer.vcxproj.filters
@@ -367,6 +367,9 @@
The Introjucer\Utility
+
+ The Introjucer\Utility
+
The Introjucer\Utility
@@ -1680,6 +1683,9 @@
The Introjucer\Utility
+
+ The Introjucer\Utility
+
The Introjucer\Utility
diff --git a/extras/Introjucer/Introjucer.jucer b/extras/Introjucer/Introjucer.jucer
index 66e07ebe70..8fa087296c 100644
--- a/extras/Introjucer/Introjucer.jucer
+++ b/extras/Introjucer/Introjucer.jucer
@@ -447,6 +447,10 @@
file="Source/Utility/jucer_FloatingToolWindow.h"/>
+
+
activeArea (button.getActiveArea());
-
- const Colour bkg (getTabBackgroundColour (button));
-
- g.setGradientFill (ColourGradient (bkg.brighter (0.1f), 0, (float) activeArea.getY(),
- bkg.darker (0.1f), 0, (float) activeArea.getBottom(), false));
- g.fillRect (activeArea);
-
- g.setColour (button.findColour (mainBackgroundColourId).darker (0.3f));
- g.drawRect (activeArea);
-
- const float alpha = button.isEnabled() ? ((isMouseOver || isMouseDown) ? 1.0f : 0.8f) : 0.3f;
- const Colour col (bkg.contrasting().withMultipliedAlpha (alpha));
-
- TextLayout textLayout;
- LookAndFeel_V3::createTabTextLayout (button, (float) activeArea.getWidth(), (float) activeArea.getHeight(), col, textLayout);
-
- textLayout.draw (g, button.getTextArea().toFloat());
-}
-
-void IntrojucerLookAndFeel::drawConcertinaPanelHeader (Graphics& g, const Rectangle& area,
- bool isMouseOver, bool /*isMouseDown*/,
- ConcertinaPanel&, Component& panel)
-{
- const Colour bkg (Colours::grey);
-
- g.setGradientFill (ColourGradient (Colour::greyLevel (isMouseOver ? 0.6f : 0.5f), 0, (float) area.getY(),
- Colour::greyLevel (0.4f), 0, (float) area.getBottom(), false));
- g.fillAll();
-
- g.setColour (bkg.contrasting().withAlpha (0.1f));
- g.fillRect (area.withHeight (1));
- g.fillRect (area.withTop (area.getBottom() - 1));
-
- g.setColour (bkg.contrasting());
- g.setFont (Font (area.getHeight() * 0.6f).boldened());
- g.drawFittedText (panel.getName(), 4, 0, area.getWidth() - 6, area.getHeight(), Justification::centredLeft, 1);
-}
-
-static Range getBrightnessRange (const Image& im)
-{
- float minB = 1.0f, maxB = 0;
- const int w = im.getWidth();
- const int h = im.getHeight();
-
- for (int y = 0; y < h; ++y)
- {
- for (int x = 0; x < w; ++x)
- {
- const float b = im.getPixelAt (x, y).getBrightness();
- minB = jmin (minB, b);
- maxB = jmax (maxB, b);
- }
- }
-
- return Range (minB, maxB);
-}
-
-void IntrojucerLookAndFeel::fillWithBackgroundTexture (Graphics& g)
-{
- const Colour bkg (findColour (mainBackgroundColourId));
-
- if (backgroundTextureBaseColour != bkg)
- {
- backgroundTextureBaseColour = bkg;
-
- const Image original (ImageCache::getFromMemory (BinaryData::background_tile_png,
- BinaryData::background_tile_pngSize));
- const int w = original.getWidth();
- const int h = original.getHeight();
-
- backgroundTexture = Image (Image::RGB, w, h, false);
-
- const Range brightnessRange (getBrightnessRange (original));
- const float brightnessOffset = (brightnessRange.getStart() + brightnessRange.getEnd()) / 2.0f;
- const float brightnessScale = 0.025f / brightnessRange.getLength();
- const float bkgB = bkg.getBrightness();
-
- for (int y = 0; y < h; ++y)
- {
- for (int x = 0; x < w; ++x)
- {
- const float b = (original.getPixelAt (x, y).getBrightness() - brightnessOffset) * brightnessScale;
- backgroundTexture.setPixelAt (x, y, bkg.withBrightness (jlimit (0.0f, 1.0f, bkgB + b)));
- }
- }
- }
-
- g.setTiledImageFill (backgroundTexture, 0, 0, 1.0f);
- g.fillAll();
-}
-
-void IntrojucerLookAndFeel::fillWithBackgroundTexture (Component& c, Graphics& g)
-{
- dynamic_cast (c.getLookAndFeel()).fillWithBackgroundTexture (g);
-}
diff --git a/extras/Introjucer/Source/Application/jucer_AppearanceSettings.h b/extras/Introjucer/Source/Application/jucer_AppearanceSettings.h
index 6b29257ebc..87fff40816 100644
--- a/extras/Introjucer/Source/Application/jucer_AppearanceSettings.h
+++ b/extras/Introjucer/Source/Application/jucer_AppearanceSettings.h
@@ -77,25 +77,6 @@ private:
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AppearanceSettings)
};
-//==============================================================================
-class IntrojucerLookAndFeel : public LookAndFeel_V3
-{
-public:
- IntrojucerLookAndFeel();
-
- void fillWithBackgroundTexture (Graphics&);
- static void fillWithBackgroundTexture (Component&, Graphics&);
-
- void drawTabButton (TabBarButton& button, Graphics&, bool isMouseOver, bool isMouseDown) override;
- void drawTabAreaBehindFrontButton (TabbedButtonBar&, Graphics&, int, int) override {}
- int getTabButtonBestWidth (TabBarButton&, int tabDepth) override;
- void drawConcertinaPanelHeader (Graphics&, const juce::Rectangle&, bool, bool, ConcertinaPanel&, Component&) override;
- static Colour getTabBackgroundColour (TabBarButton&);
-
-private:
- Image backgroundTexture;
- Colour backgroundTextureBaseColour;
-};
#endif // JUCER_APPEARANCESETTINGS_H_INCLUDED
diff --git a/extras/Introjucer/Source/Application/jucer_Application.h b/extras/Introjucer/Source/Application/jucer_Application.h
index 90f32917b0..1a1e47703d 100644
--- a/extras/Introjucer/Source/Application/jucer_Application.h
+++ b/extras/Introjucer/Source/Application/jucer_Application.h
@@ -25,7 +25,6 @@
#ifndef JUCER_APPLICATION_H_INCLUDED
#define JUCER_APPLICATION_H_INCLUDED
-#include "../jucer_Headers.h"
#include "jucer_MainWindow.h"
#include "jucer_CommandLine.h"
#include "../Project/jucer_Module.h"
@@ -34,6 +33,7 @@
#include "../Utility/jucer_UTF8Component.h"
#include "../Utility/jucer_SVGPathDataComponent.h"
#include "../Utility/jucer_FloatingToolWindow.h"
+#include "../Utility/jucer_IntrojucerLookAndFeel.h"
void createGUIEditorMenu (PopupMenu&);
void handleGUIEditorMenuCommand (int);
diff --git a/extras/Introjucer/Source/Application/jucer_AutoUpdater.cpp b/extras/Introjucer/Source/Application/jucer_AutoUpdater.cpp
index 17f34f1a94..accbcbbe41 100644
--- a/extras/Introjucer/Source/Application/jucer_AutoUpdater.cpp
+++ b/extras/Introjucer/Source/Application/jucer_AutoUpdater.cpp
@@ -22,6 +22,7 @@
==============================================================================
*/
+#include "../jucer_Headers.h"
#include "jucer_Application.h"
#include "jucer_AutoUpdater.h"
diff --git a/extras/Introjucer/Source/Application/jucer_CommandLine.cpp b/extras/Introjucer/Source/Application/jucer_CommandLine.cpp
index 510f060e79..8a54f0de14 100644
--- a/extras/Introjucer/Source/Application/jucer_CommandLine.cpp
+++ b/extras/Introjucer/Source/Application/jucer_CommandLine.cpp
@@ -22,6 +22,7 @@
==============================================================================
*/
+#include "../jucer_Headers.h"
#include "../Project/jucer_Project.h"
#include "../Project/jucer_Module.h"
#include "jucer_CommandLine.h"
diff --git a/extras/Introjucer/Source/Application/jucer_DocumentEditorComponent.cpp b/extras/Introjucer/Source/Application/jucer_DocumentEditorComponent.cpp
index 2b2eb1ebd9..c1aad3527e 100644
--- a/extras/Introjucer/Source/Application/jucer_DocumentEditorComponent.cpp
+++ b/extras/Introjucer/Source/Application/jucer_DocumentEditorComponent.cpp
@@ -22,6 +22,7 @@
==============================================================================
*/
+#include "../jucer_Headers.h"
#include "jucer_DocumentEditorComponent.h"
#include "../Project/jucer_ProjectContentComponent.h"
#include "../Application/jucer_Application.h"
diff --git a/extras/Introjucer/Source/Application/jucer_FilePreviewComponent.h b/extras/Introjucer/Source/Application/jucer_FilePreviewComponent.h
index ac14f408d0..bb0ebfce4a 100644
--- a/extras/Introjucer/Source/Application/jucer_FilePreviewComponent.h
+++ b/extras/Introjucer/Source/Application/jucer_FilePreviewComponent.h
@@ -25,6 +25,8 @@
#ifndef JUCER_FILEPREVIEWCOMPONENT_H_INCLUDED
#define JUCER_FILEPREVIEWCOMPONENT_H_INCLUDED
+#include "../Utility/jucer_IntrojucerLookAndFeel.h"
+
//==============================================================================
/**
diff --git a/extras/Introjucer/Source/Application/jucer_Main.cpp b/extras/Introjucer/Source/Application/jucer_Main.cpp
index 643546db71..78b0e7bfec 100644
--- a/extras/Introjucer/Source/Application/jucer_Main.cpp
+++ b/extras/Introjucer/Source/Application/jucer_Main.cpp
@@ -22,6 +22,7 @@
==============================================================================
*/
+#include "../jucer_Headers.h"
#include "jucer_Application.h"
START_JUCE_APPLICATION (IntrojucerApp)
diff --git a/extras/Introjucer/Source/Application/jucer_OpenDocumentManager.cpp b/extras/Introjucer/Source/Application/jucer_OpenDocumentManager.cpp
index d01265e749..25e26823d9 100644
--- a/extras/Introjucer/Source/Application/jucer_OpenDocumentManager.cpp
+++ b/extras/Introjucer/Source/Application/jucer_OpenDocumentManager.cpp
@@ -22,6 +22,7 @@
==============================================================================
*/
+#include "../jucer_Headers.h"
#include "jucer_OpenDocumentManager.h"
#include "jucer_FilePreviewComponent.h"
#include "../Code Editor/jucer_SourceCodeEditor.h"
diff --git a/extras/Introjucer/Source/Code Editor/jucer_SourceCodeEditor.cpp b/extras/Introjucer/Source/Code Editor/jucer_SourceCodeEditor.cpp
index 2e5a700c1b..35c93552c5 100644
--- a/extras/Introjucer/Source/Code Editor/jucer_SourceCodeEditor.cpp
+++ b/extras/Introjucer/Source/Code Editor/jucer_SourceCodeEditor.cpp
@@ -22,6 +22,7 @@
==============================================================================
*/
+#include "../jucer_Headers.h"
#include "jucer_SourceCodeEditor.h"
#include "../Application/jucer_Application.h"
#include "../Application/jucer_OpenDocumentManager.h"
diff --git a/extras/Introjucer/Source/Project Saving/jucer_ProjectExporter.cpp b/extras/Introjucer/Source/Project Saving/jucer_ProjectExporter.cpp
index c1b260f659..7cb8db7e9a 100644
--- a/extras/Introjucer/Source/Project Saving/jucer_ProjectExporter.cpp
+++ b/extras/Introjucer/Source/Project Saving/jucer_ProjectExporter.cpp
@@ -22,6 +22,7 @@
==============================================================================
*/
+#include "../jucer_Headers.h"
#include "jucer_ProjectExporter.h"
#include "jucer_ProjectSaver.h"
diff --git a/extras/Introjucer/Source/Project Saving/jucer_ProjectExporter.h b/extras/Introjucer/Source/Project Saving/jucer_ProjectExporter.h
index 4d2a43d965..d987a2b7a8 100644
--- a/extras/Introjucer/Source/Project Saving/jucer_ProjectExporter.h
+++ b/extras/Introjucer/Source/Project Saving/jucer_ProjectExporter.h
@@ -25,7 +25,6 @@
#ifndef JUCER_PROJECTEXPORTER_H_INCLUDED
#define JUCER_PROJECTEXPORTER_H_INCLUDED
-#include "../jucer_Headers.h"
#include "../Project/jucer_Project.h"
#include "../Project/jucer_ProjectType.h"
#include "../Application/jucer_GlobalPreferences.h"
diff --git a/extras/Introjucer/Source/Project Saving/jucer_ResourceFile.cpp b/extras/Introjucer/Source/Project Saving/jucer_ResourceFile.cpp
index b835756f77..f30b303d3a 100644
--- a/extras/Introjucer/Source/Project Saving/jucer_ResourceFile.cpp
+++ b/extras/Introjucer/Source/Project Saving/jucer_ResourceFile.cpp
@@ -22,6 +22,7 @@
==============================================================================
*/
+#include "../jucer_Headers.h"
#include "jucer_ResourceFile.h"
#include "../Application/jucer_OpenDocumentManager.h"
diff --git a/extras/Introjucer/Source/Project Saving/jucer_ResourceFile.h b/extras/Introjucer/Source/Project Saving/jucer_ResourceFile.h
index 49990e0f22..d8c9038c7c 100644
--- a/extras/Introjucer/Source/Project Saving/jucer_ResourceFile.h
+++ b/extras/Introjucer/Source/Project Saving/jucer_ResourceFile.h
@@ -25,7 +25,6 @@
#ifndef JUCER_RESOURCEFILE_H_INCLUDED
#define JUCER_RESOURCEFILE_H_INCLUDED
-#include "../jucer_Headers.h"
#include "../Project/jucer_Project.h"
diff --git a/extras/Introjucer/Source/Project/jucer_GroupInformationComponent.h b/extras/Introjucer/Source/Project/jucer_GroupInformationComponent.h
index 104ed2455a..50ca8c8658 100644
--- a/extras/Introjucer/Source/Project/jucer_GroupInformationComponent.h
+++ b/extras/Introjucer/Source/Project/jucer_GroupInformationComponent.h
@@ -25,7 +25,6 @@
#ifndef JUCER_GROUPINFORMATIONCOMPONENT_H_INCLUDED
#define JUCER_GROUPINFORMATIONCOMPONENT_H_INCLUDED
-#include "../jucer_Headers.h"
#include "../Project/jucer_Project.h"
diff --git a/extras/Introjucer/Source/Project/jucer_Module.cpp b/extras/Introjucer/Source/Project/jucer_Module.cpp
index e66c8db906..a689c0bb9b 100644
--- a/extras/Introjucer/Source/Project/jucer_Module.cpp
+++ b/extras/Introjucer/Source/Project/jucer_Module.cpp
@@ -22,6 +22,7 @@
==============================================================================
*/
+#include "../jucer_Headers.h"
#include "jucer_Module.h"
#include "jucer_ProjectType.h"
#include "../Project Saving/jucer_ProjectExporter.h"
diff --git a/extras/Introjucer/Source/Project/jucer_Module.h b/extras/Introjucer/Source/Project/jucer_Module.h
index 850b389019..b6e406ed36 100644
--- a/extras/Introjucer/Source/Project/jucer_Module.h
+++ b/extras/Introjucer/Source/Project/jucer_Module.h
@@ -25,7 +25,6 @@
#ifndef JUCER_MODULE_H_INCLUDED
#define JUCER_MODULE_H_INCLUDED
-#include "../jucer_Headers.h"
#include "jucer_Project.h"
class ProjectExporter;
class ProjectSaver;
diff --git a/extras/Introjucer/Source/Project/jucer_Project.cpp b/extras/Introjucer/Source/Project/jucer_Project.cpp
index 930240be1d..6e85e0d30a 100644
--- a/extras/Introjucer/Source/Project/jucer_Project.cpp
+++ b/extras/Introjucer/Source/Project/jucer_Project.cpp
@@ -22,6 +22,7 @@
==============================================================================
*/
+#include "../jucer_Headers.h"
#include "jucer_Project.h"
#include "jucer_ProjectType.h"
#include "../Project Saving/jucer_ProjectExporter.h"
diff --git a/extras/Introjucer/Source/Project/jucer_Project.h b/extras/Introjucer/Source/Project/jucer_Project.h
index 6e3489f85e..dbbf1c5a2d 100644
--- a/extras/Introjucer/Source/Project/jucer_Project.h
+++ b/extras/Introjucer/Source/Project/jucer_Project.h
@@ -25,7 +25,6 @@
#ifndef JUCER_PROJECT_H_INCLUDED
#define JUCER_PROJECT_H_INCLUDED
-#include "../jucer_Headers.h"
class ProjectExporter;
class ProjectType;
class LibraryModule;
diff --git a/extras/Introjucer/Source/Project/jucer_ProjectContentComponent.cpp b/extras/Introjucer/Source/Project/jucer_ProjectContentComponent.cpp
index da0e186ccb..42ff4c5579 100644
--- a/extras/Introjucer/Source/Project/jucer_ProjectContentComponent.cpp
+++ b/extras/Introjucer/Source/Project/jucer_ProjectContentComponent.cpp
@@ -22,6 +22,7 @@
==============================================================================
*/
+#include "../jucer_Headers.h"
#include "jucer_ProjectContentComponent.h"
#include "jucer_Module.h"
#include "../Application/jucer_MainWindow.h"
diff --git a/extras/Introjucer/Source/Project/jucer_ProjectType.cpp b/extras/Introjucer/Source/Project/jucer_ProjectType.cpp
index 6dd1720500..067a9a1cc8 100644
--- a/extras/Introjucer/Source/Project/jucer_ProjectType.cpp
+++ b/extras/Introjucer/Source/Project/jucer_ProjectType.cpp
@@ -22,6 +22,7 @@
==============================================================================
*/
+#include "../jucer_Headers.h"
#include "jucer_ProjectType.h"
#include "../Project Saving/jucer_ProjectExporter.h"
#include "../Project Saving/jucer_ProjectSaver.h"
diff --git a/extras/Introjucer/Source/Project/jucer_ProjectType.h b/extras/Introjucer/Source/Project/jucer_ProjectType.h
index 06efd9fd1d..b1bc55a8c3 100644
--- a/extras/Introjucer/Source/Project/jucer_ProjectType.h
+++ b/extras/Introjucer/Source/Project/jucer_ProjectType.h
@@ -25,7 +25,6 @@
#ifndef JUCER_PROJECTTYPE_H_INCLUDED
#define JUCER_PROJECTTYPE_H_INCLUDED
-#include "../jucer_Headers.h"
class Project;
class ProjectExporter;
diff --git a/extras/Introjucer/Source/Utility/jucer_IntrojucerLookAndFeel.cpp b/extras/Introjucer/Source/Utility/jucer_IntrojucerLookAndFeel.cpp
new file mode 100644
index 0000000000..0bfe503c98
--- /dev/null
+++ b/extras/Introjucer/Source/Utility/jucer_IntrojucerLookAndFeel.cpp
@@ -0,0 +1,146 @@
+/*
+ ==============================================================================
+
+ This file is part of the JUCE library.
+ Copyright (c) 2015 - ROLI Ltd.
+
+ Permission is granted to use this software under the terms of either:
+ a) the GPL v2 (or any later version)
+ b) the Affero GPL v3
+
+ Details of these licenses can be found 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.juce.com for more information.
+
+ ==============================================================================
+*/
+
+#include "../jucer_Headers.h"
+#include "jucer_IntrojucerLookAndFeel.h"
+
+
+IntrojucerLookAndFeel::IntrojucerLookAndFeel()
+{
+ setColour (mainBackgroundColourId, Colour::greyLevel (0.8f));
+}
+
+int IntrojucerLookAndFeel::getTabButtonBestWidth (TabBarButton&, int)
+{
+ return 120;
+}
+
+Colour IntrojucerLookAndFeel::getTabBackgroundColour (TabBarButton& button)
+{
+ const Colour bkg (button.findColour (mainBackgroundColourId).contrasting (0.15f));
+
+ if (button.isFrontTab())
+ return bkg.overlaidWith (Colours::yellow.withAlpha (0.5f));
+
+ return bkg;
+}
+
+void IntrojucerLookAndFeel::drawTabButton (TabBarButton& button, Graphics& g, bool isMouseOver, bool isMouseDown)
+{
+ const Rectangle activeArea (button.getActiveArea());
+
+ const Colour bkg (getTabBackgroundColour (button));
+
+ g.setGradientFill (ColourGradient (bkg.brighter (0.1f), 0, (float) activeArea.getY(),
+ bkg.darker (0.1f), 0, (float) activeArea.getBottom(), false));
+ g.fillRect (activeArea);
+
+ g.setColour (button.findColour (mainBackgroundColourId).darker (0.3f));
+ g.drawRect (activeArea);
+
+ const float alpha = button.isEnabled() ? ((isMouseOver || isMouseDown) ? 1.0f : 0.8f) : 0.3f;
+ const Colour col (bkg.contrasting().withMultipliedAlpha (alpha));
+
+ TextLayout textLayout;
+ LookAndFeel_V3::createTabTextLayout (button, (float) activeArea.getWidth(), (float) activeArea.getHeight(), col, textLayout);
+
+ textLayout.draw (g, button.getTextArea().toFloat());
+}
+
+void IntrojucerLookAndFeel::drawConcertinaPanelHeader (Graphics& g, const Rectangle& area,
+ bool isMouseOver, bool /*isMouseDown*/,
+ ConcertinaPanel&, Component& panel)
+{
+ const Colour bkg (Colours::grey);
+
+ g.setGradientFill (ColourGradient (Colour::greyLevel (isMouseOver ? 0.6f : 0.5f), 0, (float) area.getY(),
+ Colour::greyLevel (0.4f), 0, (float) area.getBottom(), false));
+ g.fillAll();
+
+ g.setColour (bkg.contrasting().withAlpha (0.1f));
+ g.fillRect (area.withHeight (1));
+ g.fillRect (area.withTop (area.getBottom() - 1));
+
+ g.setColour (bkg.contrasting());
+ g.setFont (Font (area.getHeight() * 0.6f).boldened());
+ g.drawFittedText (panel.getName(), 4, 0, area.getWidth() - 6, area.getHeight(), Justification::centredLeft, 1);
+}
+
+static Range getBrightnessRange (const Image& im)
+{
+ float minB = 1.0f, maxB = 0;
+ const int w = im.getWidth();
+ const int h = im.getHeight();
+
+ for (int y = 0; y < h; ++y)
+ {
+ for (int x = 0; x < w; ++x)
+ {
+ const float b = im.getPixelAt (x, y).getBrightness();
+ minB = jmin (minB, b);
+ maxB = jmax (maxB, b);
+ }
+ }
+
+ return Range (minB, maxB);
+}
+
+void IntrojucerLookAndFeel::fillWithBackgroundTexture (Graphics& g)
+{
+ const Colour bkg (findColour (mainBackgroundColourId));
+
+ if (backgroundTextureBaseColour != bkg)
+ {
+ backgroundTextureBaseColour = bkg;
+
+ const Image original (ImageCache::getFromMemory (BinaryData::background_tile_png,
+ BinaryData::background_tile_pngSize));
+ const int w = original.getWidth();
+ const int h = original.getHeight();
+
+ backgroundTexture = Image (Image::RGB, w, h, false);
+
+ const Range brightnessRange (getBrightnessRange (original));
+ const float brightnessOffset = (brightnessRange.getStart() + brightnessRange.getEnd()) / 2.0f;
+ const float brightnessScale = 0.025f / brightnessRange.getLength();
+ const float bkgB = bkg.getBrightness();
+
+ for (int y = 0; y < h; ++y)
+ {
+ for (int x = 0; x < w; ++x)
+ {
+ const float b = (original.getPixelAt (x, y).getBrightness() - brightnessOffset) * brightnessScale;
+ backgroundTexture.setPixelAt (x, y, bkg.withBrightness (jlimit (0.0f, 1.0f, bkgB + b)));
+ }
+ }
+ }
+
+ g.setTiledImageFill (backgroundTexture, 0, 0, 1.0f);
+ g.fillAll();
+}
+
+void IntrojucerLookAndFeel::fillWithBackgroundTexture (Component& c, Graphics& g)
+{
+ dynamic_cast (c.getLookAndFeel()).fillWithBackgroundTexture (g);
+}
diff --git a/extras/Introjucer/Source/Utility/jucer_IntrojucerLookAndFeel.h b/extras/Introjucer/Source/Utility/jucer_IntrojucerLookAndFeel.h
new file mode 100644
index 0000000000..8442841723
--- /dev/null
+++ b/extras/Introjucer/Source/Utility/jucer_IntrojucerLookAndFeel.h
@@ -0,0 +1,51 @@
+/*
+ ==============================================================================
+
+ This file is part of the JUCE library.
+ Copyright (c) 2015 - ROLI Ltd.
+
+ Permission is granted to use this software under the terms of either:
+ a) the GPL v2 (or any later version)
+ b) the Affero GPL v3
+
+ Details of these licenses can be found 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.juce.com for more information.
+
+ ==============================================================================
+*/
+
+#ifndef JUCER_INTROJUCERLOOKANDFEEL_H_INCLUDED
+#define JUCER_INTROJUCERLOOKANDFEEL_H_INCLUDED
+
+
+//==============================================================================
+class IntrojucerLookAndFeel : public LookAndFeel_V3
+{
+public:
+ IntrojucerLookAndFeel();
+
+ void fillWithBackgroundTexture (Graphics&);
+ static void fillWithBackgroundTexture (Component&, Graphics&);
+
+ void drawTabButton (TabBarButton& button, Graphics&, bool isMouseOver, bool isMouseDown) override;
+ void drawTabAreaBehindFrontButton (TabbedButtonBar&, Graphics&, int, int) override {}
+ int getTabButtonBestWidth (TabBarButton&, int tabDepth) override;
+ void drawConcertinaPanelHeader (Graphics&, const juce::Rectangle&, bool, bool, ConcertinaPanel&, Component&) override;
+ static Colour getTabBackgroundColour (TabBarButton&);
+
+private:
+ Image backgroundTexture;
+ Colour backgroundTextureBaseColour;
+};
+
+
+
+#endif // JUCER_INTROJUCERLOOKANDFEEL_H_INCLUDED
diff --git a/extras/Introjucer/Source/Utility/jucer_JucerTreeViewBase.cpp b/extras/Introjucer/Source/Utility/jucer_JucerTreeViewBase.cpp
index e9f11d9d4c..7299ab6cef 100644
--- a/extras/Introjucer/Source/Utility/jucer_JucerTreeViewBase.cpp
+++ b/extras/Introjucer/Source/Utility/jucer_JucerTreeViewBase.cpp
@@ -22,6 +22,7 @@
==============================================================================
*/
+#include "../jucer_Headers.h"
#include "jucer_JucerTreeViewBase.h"
#include "../Project/jucer_ProjectContentComponent.h"
diff --git a/extras/Introjucer/Source/Utility/jucer_JucerTreeViewBase.h b/extras/Introjucer/Source/Utility/jucer_JucerTreeViewBase.h
index 7ffd0db4be..b9e70202d4 100644
--- a/extras/Introjucer/Source/Utility/jucer_JucerTreeViewBase.h
+++ b/extras/Introjucer/Source/Utility/jucer_JucerTreeViewBase.h
@@ -25,7 +25,6 @@
#ifndef JUCER_JUCERTREEVIEWBASE_H_INCLUDED
#define JUCER_JUCERTREEVIEWBASE_H_INCLUDED
-#include "../jucer_Headers.h"
class ProjectContentComponent;
class Project;
diff --git a/extras/Introjucer/Source/Utility/jucer_SlidingPanelComponent.cpp b/extras/Introjucer/Source/Utility/jucer_SlidingPanelComponent.cpp
index 854bba51df..0522776801 100644
--- a/extras/Introjucer/Source/Utility/jucer_SlidingPanelComponent.cpp
+++ b/extras/Introjucer/Source/Utility/jucer_SlidingPanelComponent.cpp
@@ -22,6 +22,7 @@
==============================================================================
*/
+#include "../jucer_Headers.h"
#include "jucer_SlidingPanelComponent.h"
diff --git a/extras/Introjucer/Source/Utility/jucer_SlidingPanelComponent.h b/extras/Introjucer/Source/Utility/jucer_SlidingPanelComponent.h
index 13d810cc65..37812f1dea 100644
--- a/extras/Introjucer/Source/Utility/jucer_SlidingPanelComponent.h
+++ b/extras/Introjucer/Source/Utility/jucer_SlidingPanelComponent.h
@@ -25,7 +25,6 @@
#ifndef JUCER_SLIDINGPANELCOMPONENT_H_INCLUDED
#define JUCER_SLIDINGPANELCOMPONENT_H_INCLUDED
-#include "../jucer_Headers.h"
#include "../Application/jucer_Application.h"
diff --git a/extras/Introjucer/Source/Wizards/jucer_NewFileWizard.cpp b/extras/Introjucer/Source/Wizards/jucer_NewFileWizard.cpp
index 5f52d77dba..e0d5255f74 100644
--- a/extras/Introjucer/Source/Wizards/jucer_NewFileWizard.cpp
+++ b/extras/Introjucer/Source/Wizards/jucer_NewFileWizard.cpp
@@ -22,6 +22,7 @@
==============================================================================
*/
+#include "../jucer_Headers.h"
#include "jucer_NewFileWizard.h"
NewFileWizard::Type* createGUIComponentWizard();