diff --git a/extras/Introjucer/Builds/MacOSX/The Introjucer.xcodeproj/project.pbxproj b/extras/Introjucer/Builds/MacOSX/The Introjucer.xcodeproj/project.pbxproj index f622e1fa5e..b7792bd872 100644 --- a/extras/Introjucer/Builds/MacOSX/The Introjucer.xcodeproj/project.pbxproj +++ b/extras/Introjucer/Builds/MacOSX/The Introjucer.xcodeproj/project.pbxproj @@ -322,6 +322,7 @@ 6367309B2092121B86FE3AA0 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_posix_NamedPipe.cpp"; path = "../../../../modules/juce_core/native/juce_posix_NamedPipe.cpp"; sourceTree = "SOURCE_ROOT"; }; 63B72B34BC9AC448422EF1A0 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DocumentWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_DocumentWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; 63B74F9D9F43393F6427501C = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WebBrowserComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_WebBrowserComponent.h"; sourceTree = "SOURCE_ROOT"; }; + 645DD595F5E5F46F69A0BF03 = { isa = PBXFileReference; lastKnownFileType = file.xml; name = "dark_scheme.xml"; path = "../../Source/BinaryData/dark_scheme.xml"; sourceTree = "SOURCE_ROOT"; }; 64CF8D7D0C97323C1B4F16F2 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageComponent.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ImageComponent.h"; sourceTree = "SOURCE_ROOT"; }; 65F4749184C84C2FDBB4C305 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_AudioPluginFilterTemplate.cpp"; path = "../../Source/BinaryData/jucer_AudioPluginFilterTemplate.cpp"; sourceTree = "SOURCE_ROOT"; }; 6658BF44509F89120F6C6F8C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileListComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileListComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; @@ -818,6 +819,7 @@ 88DFD62CB6545EE8CA5C485B = { isa = PBXGroup; children = ( 5F4F4EAB042F2730F94A1CEA, 7074AEDE4B0416BC898DD27A, + 645DD595F5E5F46F69A0BF03, B483D960309FAFC193F9CDA2, 0075C5208947159AF2802F3B, AFF72BA2B130F3F9AC029080, diff --git a/extras/Introjucer/Builds/VisualStudio2005/The Introjucer.vcproj b/extras/Introjucer/Builds/VisualStudio2005/The Introjucer.vcproj index c4dfe83c8a..5205d0c4de 100644 --- a/extras/Introjucer/Builds/VisualStudio2005/The Introjucer.vcproj +++ b/extras/Introjucer/Builds/VisualStudio2005/The Introjucer.vcproj @@ -224,7 +224,7 @@ - + @@ -234,6 +234,7 @@ + diff --git a/extras/Introjucer/Builds/VisualStudio2008/The Introjucer.vcproj b/extras/Introjucer/Builds/VisualStudio2008/The Introjucer.vcproj index c17f9aa092..9df7f30bc5 100644 --- a/extras/Introjucer/Builds/VisualStudio2008/The Introjucer.vcproj +++ b/extras/Introjucer/Builds/VisualStudio2008/The Introjucer.vcproj @@ -224,7 +224,7 @@ - + @@ -234,6 +234,7 @@ + diff --git a/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj b/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj index 73fc44aed4..85f47f5c65 100644 --- a/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj +++ b/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj @@ -1332,6 +1332,7 @@ + diff --git a/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj.filters b/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj.filters index 47d49e5450..c59aab341e 100644 --- a/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj.filters +++ b/extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj.filters @@ -2291,6 +2291,9 @@ The Introjucer\BinaryData + + The Introjucer\BinaryData + The Introjucer\BinaryData diff --git a/extras/Introjucer/Introjucer.jucer b/extras/Introjucer/Introjucer.jucer index 52e7de8ee6..cbeab22e58 100644 --- a/extras/Introjucer/Introjucer.jucer +++ b/extras/Introjucer/Introjucer.jucer @@ -205,7 +205,8 @@ file="Source/BinaryData/AudioPluginXCodeScript.txt"/> - + + \r\n" +"\r\n" +"\r\n" +" \r\n" +" \r\n" +" \r\n" +" \r\n" +" \r\n" +" \r\n" +" \r\n" +" \r\n" +" \r\n" +" \r\n" +" \r\n" +" \r\n" +" \r\n" +" \r\n" +" \r\n" +" \r\n" +" \r\n" +" \r\n" +" \r\n" +"\r\n"; -const char* juce_icon_png = (const char*) temp_ee6f0c0f; +const char* dark_scheme_xml = (const char*) temp_b8a2e640; //================== jucer_AudioPluginEditorTemplate.cpp ================== static const unsigned char temp_6eda5614[] = @@ -1151,8 +898,8 @@ const char* getNamedResource (const char* resourceNameUTF8, int& numBytes) throw case 0x2981a553: numBytes = 2112; return AudioPluginXCodeScript_txt; case 0x950fd7dd: case 0xa6cfe0e2: numBytes = 14724; return brushed_aluminium_png; - case 0x154a7275: - case 0xcd05ca61: numBytes = 19826; return juce_icon_png; + case 0x42b71ae6: + case 0xfbf631c1: numBytes = 1045; return dark_scheme_xml; case 0x27c5a93a: case 0xb6575890: numBytes = 1008; return jucer_AudioPluginEditorTemplate_cpp; case 0x4d0721bf: diff --git a/extras/Introjucer/JuceLibraryCode/BinaryData.h b/extras/Introjucer/JuceLibraryCode/BinaryData.h index 5bc86feeaa..70e8dbea55 100644 --- a/extras/Introjucer/JuceLibraryCode/BinaryData.h +++ b/extras/Introjucer/JuceLibraryCode/BinaryData.h @@ -13,8 +13,8 @@ namespace BinaryData extern const char* brushed_aluminium_png; const int brushed_aluminium_pngSize = 14724; - extern const char* juce_icon_png; - const int juce_icon_pngSize = 19826; + extern const char* dark_scheme_xml; + const int dark_scheme_xmlSize = 1045; extern const char* jucer_AudioPluginEditorTemplate_cpp; const int jucer_AudioPluginEditorTemplate_cppSize = 1008; diff --git a/extras/Introjucer/Source/Application/jucer_AppearanceSettings.cpp b/extras/Introjucer/Source/Application/jucer_AppearanceSettings.cpp index c6029f81f4..5c36f850e0 100644 --- a/extras/Introjucer/Source/Application/jucer_AppearanceSettings.cpp +++ b/extras/Introjucer/Source/Application/jucer_AppearanceSettings.cpp @@ -70,26 +70,38 @@ AppearanceSettings::AppearanceSettings() getColourValue (t.name) = t.colour.toString(); } - Font f (editor.getFont()); - f.setTypefaceName (f.getTypeface()->getName()); - getCodeFontValue() = f.toString(); + getCodeFontValue() = getDefaultCodeFont().toString(); settings.addListener (this); } File AppearanceSettings::getSchemesFolder() { - File f (getAppProperties().getFile().getSiblingFile ("Colour Schemes")); + File f (getAppProperties().getFile().getSiblingFile ("Schemes")); f.createDirectory(); return f; } +void AppearanceSettings::writeDefaultSchemeFile (const String& xmlString, const String& name) +{ + const File file (getSchemesFolder().getChildFile (name).withFileExtension (getSchemeFileSuffix())); + + if (! file.exists()) + { + AppearanceSettings settings; + + ScopedPointer xml (XmlDocument::parse (xmlString)); + if (xml != nullptr) + settings.readFromXML (*xml); + + settings.writeToFile (file); + } +} + void AppearanceSettings::refreshPresetSchemeList() { - const File defaultSchemeFile (getSchemesFolder().getChildFile ("Default").withFileExtension (getSchemeFileSuffix())); - - if (! defaultSchemeFile.exists()) - AppearanceSettings().writeToFile (defaultSchemeFile); + writeDefaultSchemeFile (String::empty, "Default (Light)"); + writeDefaultSchemeFile (BinaryData::dark_scheme_xml, "Default (Dark)"); Array newSchemes; getSchemesFolder().findChildFiles (newSchemes, File::findFiles, false, String ("*") + getSchemeFileSuffix()); @@ -153,6 +165,11 @@ bool AppearanceSettings::writeToFile (const File& file) const return xml != nullptr && xml->writeToFile (file, String::empty); } +Font AppearanceSettings::getDefaultCodeFont() +{ + return Font (Font::getDefaultMonospacedFontName(), Font::getDefaultStyle(), 13.0f); +} + StringArray AppearanceSettings::getColourNames() const { StringArray s; @@ -214,17 +231,7 @@ Font AppearanceSettings::getCodeFont() const const String fontString (settings [Ids::font].toString()); if (fontString.isEmpty()) - { - #if JUCE_MAC - Font font (13.0f); - font.setTypefaceName ("Menlo"); - #else - Font font (10.0f); - font.setTypefaceName (Font::getDefaultMonospacedFontName()); - #endif - - return font; - } + return Font (Font::getDefaultMonospacedFontName(), 13.0f); return Font::fromString (fontString); } @@ -272,7 +279,7 @@ struct AppearanceEditor class Window : public DialogWindow { public: - Window() : DialogWindow ("Appearance Settings", Colours::black, true, true) + Window() : DialogWindow ("Appearance Settings", Colours::darkgrey, true, true) { setUsingNativeTitleBar (true); setContentOwned (new EditorPanel(), false); @@ -316,13 +323,13 @@ struct AppearanceEditor : loadButton ("Load Scheme..."), saveButton ("Save Scheme...") { - setOpaque (true); - rebuildProperties(); addAndMakeVisible (&panel); - loadButton.setColour (TextButton::buttonColourId, Colours::grey); - saveButton.setColour (TextButton::buttonColourId, Colours::grey); + loadButton.setColour (TextButton::buttonColourId, Colours::darkgrey.withAlpha (0.5f)); + saveButton.setColour (TextButton::buttonColourId, Colours::darkgrey.withAlpha (0.5f)); + loadButton.setColour (TextButton::textColourOffId, Colours::white); + saveButton.setColour (TextButton::textColourOffId, Colours::white); addAndMakeVisible (&loadButton); addAndMakeVisible (&saveButton); @@ -351,16 +358,11 @@ struct AppearanceEditor panel.addProperties (props); } - void paint (Graphics& g) - { - g.fillAll (Colours::black); - } - void resized() { Rectangle r (getLocalBounds()); - panel.setBounds (r.removeFromTop (getHeight() - 26).reduced (4, 3)); - loadButton.setBounds (r.removeFromLeft (getWidth() / 2).reduced (10, 3)); + panel.setBounds (r.removeFromTop (getHeight() - 28).reduced (4, 2)); + loadButton.setBounds (r.removeFromLeft (getWidth() / 2).reduced (10, 4)); saveButton.setBounds (r.reduced (10, 3)); } @@ -379,12 +381,13 @@ struct AppearanceEditor void saveScheme() { FileChooser fc ("Select a file in which to save this colour-scheme...", - getAppSettings().appearance.getSchemesFolder().getNonexistentChildFile ("Scheme", ".editorscheme"), - "*.editorscheme"); + getAppSettings().appearance.getSchemesFolder() + .getNonexistentChildFile ("Scheme", AppearanceSettings::getSchemeFileSuffix()), + AppearanceSettings::getSchemeFileWildCard()); if (fc.browseForFileToSave (true)) { - File file (fc.getResult().withFileExtension (".editorscheme")); + File file (fc.getResult().withFileExtension (AppearanceSettings::getSchemeFileSuffix())); getAppSettings().appearance.writeToFile (file); getAppSettings().appearance.refreshPresetSchemeList(); } @@ -394,7 +397,7 @@ struct AppearanceEditor { FileChooser fc ("Please select a colour-scheme file to load...", getAppSettings().appearance.getSchemesFolder(), - "*.editorscheme"); + AppearanceSettings::getSchemeFileWildCard()); if (fc.browseForFileToOpen()) { @@ -426,14 +429,22 @@ struct AppearanceEditor static ChoicePropertyComponent* createProperty (const String& title, const Value& value) { - const StringArray& fontNames = getAppSettings().getFontNames(); + StringArray fontNames = getAppSettings().getFontNames(); Array values; + values.add (Font::getDefaultMonospacedFontName()); + values.add (var()); + for (int i = 0; i < fontNames.size(); ++i) values.add (fontNames[i]); + StringArray names; + names.add (""); + names.add (String::empty); + names.addArray (getAppSettings().getFontNames()); + return new ChoicePropertyComponent (Value (new FontNameValueSource (value)), - title, fontNames, values); + title, names, values); } }; @@ -497,7 +508,7 @@ void IntrojucerLookAndFeel::createTabTextLayout (const TabBarButton& button, con Colour IntrojucerLookAndFeel::getTabBackgroundColour (TabBarButton& button) { - Colour normalBkg (button.getTabBackgroundColour()); + const Colour normalBkg (button.getTabBackgroundColour()); Colour bkg (normalBkg.contrasting (0.15f)); if (button.isFrontTab()) bkg = bkg.overlaidWith (Colours::yellow.withAlpha (0.5f)); @@ -509,7 +520,7 @@ void IntrojucerLookAndFeel::drawTabButton (TabBarButton& button, Graphics& g, bo { const Rectangle activeArea (button.getActiveArea()); - Colour bkg (getTabBackgroundColour (button)); + 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)); @@ -552,7 +563,7 @@ void IntrojucerLookAndFeel::drawScrollbar (Graphics& g, ScrollBar& scrollbar, in if (thumbSize > 0) { - const float thumbIndent = jmin (width, height) * 0.25f; + const float thumbIndent = (isScrollbarVertical ? width : height) * 0.25f; const float thumbIndentx2 = thumbIndent * 2.0f; if (isScrollbarVertical) diff --git a/extras/Introjucer/Source/Application/jucer_AppearanceSettings.h b/extras/Introjucer/Source/Application/jucer_AppearanceSettings.h index 62f23a9585..568372e6bf 100644 --- a/extras/Introjucer/Source/Application/jucer_AppearanceSettings.h +++ b/extras/Introjucer/Source/Application/jucer_AppearanceSettings.h @@ -48,20 +48,25 @@ public: ValueTree settings; - File getSchemesFolder(); + static File getSchemesFolder(); StringArray getPresetSchemes(); void refreshPresetSchemeList(); void selectPresetScheme (int index); + static Font getDefaultCodeFont(); static Colour getScrollbarColourForBackground (const Colour& background); static Component* createEditorWindow(); + static const char* getSchemeFileSuffix() { return ".scheme"; } + static const char* getSchemeFileWildCard() { return "*.scheme"; } + private: - static const char* getSchemeFileSuffix() { return ".editorscheme"; } Array presetSchemeFiles; + static void writeDefaultSchemeFile (const String& xml, const String& name); + void applyToLookAndFeel (LookAndFeel&) const; void valueTreePropertyChanged (ValueTree&, const Identifier&) { updateColourScheme(); } diff --git a/extras/Introjucer/Source/BinaryData/dark_scheme.xml b/extras/Introjucer/Source/BinaryData/dark_scheme.xml new file mode 100644 index 0000000000..9db2982280 --- /dev/null +++ b/extras/Introjucer/Source/BinaryData/dark_scheme.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/extras/Introjucer/Source/Code Editor/jucer_SourceCodeEditor.cpp b/extras/Introjucer/Source/Code Editor/jucer_SourceCodeEditor.cpp index 61cc207b9f..c2a1f5c8e8 100644 --- a/extras/Introjucer/Source/Code Editor/jucer_SourceCodeEditor.cpp +++ b/extras/Introjucer/Source/Code Editor/jucer_SourceCodeEditor.cpp @@ -126,15 +126,7 @@ void SourceCodeEditor::setEditor (CodeEditorComponent* newEditor) { addAndMakeVisible (editor = newEditor); - #if JUCE_MAC - Font font (13.0f); - font.setTypefaceName ("Menlo"); - #else - Font font (12.0f); - font.setTypefaceName (Font::getDefaultMonospacedFontName()); - #endif - editor->setFont (font); - + editor->setFont (AppearanceSettings::getDefaultCodeFont()); editor->setTabSize (4, true); updateColourScheme(); diff --git a/extras/Introjucer/Source/Project/jucer_ProjectContentComponent.cpp b/extras/Introjucer/Source/Project/jucer_ProjectContentComponent.cpp index 189d39fbb2..e99ff69c84 100644 --- a/extras/Introjucer/Source/Project/jucer_ProjectContentComponent.cpp +++ b/extras/Introjucer/Source/Project/jucer_ProjectContentComponent.cpp @@ -61,10 +61,12 @@ public: addAndMakeVisible (&openProjectButton); openProjectButton.setCommandToTrigger (commandManager, CommandIDs::openInIDE, true); openProjectButton.setButtonText (commandManager->getNameOfCommand (CommandIDs::openInIDE)); + openProjectButton.setColour (TextButton::buttonColourId, Colours::white.withAlpha (0.5f)); addAndMakeVisible (&saveAndOpenButton); saveAndOpenButton.setCommandToTrigger (commandManager, CommandIDs::saveAndOpenInIDE, true); saveAndOpenButton.setButtonText (commandManager->getNameOfCommand (CommandIDs::saveAndOpenInIDE)); + saveAndOpenButton.setColour (TextButton::buttonColourId, Colours::white.withAlpha (0.5f)); #endif } diff --git a/extras/JuceDemo/Builds/VisualStudio2010/Juce Demo.vcxproj b/extras/JuceDemo/Builds/VisualStudio2010/Juce Demo.vcxproj index d976fb8b46..6739cd5433 100644 --- a/extras/JuceDemo/Builds/VisualStudio2010/Juce Demo.vcxproj +++ b/extras/JuceDemo/Builds/VisualStudio2010/Juce Demo.vcxproj @@ -93,7 +93,7 @@ - MaxSpeed + MinSpace ..\..\JuceLibraryCode;%(AdditionalIncludeDirectories) WIN32;_WINDOWS;NDEBUG;JUCE_UNIT_TESTS=1;JUCER_VS2010_78A501D=1;%(PreprocessorDefinitions) MultiThreaded diff --git a/extras/static library/Builds/VisualStudio2010/juce.vcxproj b/extras/static library/Builds/VisualStudio2010/juce.vcxproj index a938f7c132..df593b6675 100644 --- a/extras/static library/Builds/VisualStudio2010/juce.vcxproj +++ b/extras/static library/Builds/VisualStudio2010/juce.vcxproj @@ -93,7 +93,7 @@ - MaxSpeed + MinSpace ..\..\JuceLibraryCode;%(AdditionalIncludeDirectories) _LIB;WIN32;_WINDOWS;NDEBUG;JUCER_VS2010_78A501D=1;%(PreprocessorDefinitions) MultiThreaded diff --git a/extras/the jucer/Builds/VisualStudio2010/Jucer.vcxproj b/extras/the jucer/Builds/VisualStudio2010/Jucer.vcxproj index 26023cccab..daf99e8247 100644 --- a/extras/the jucer/Builds/VisualStudio2010/Jucer.vcxproj +++ b/extras/the jucer/Builds/VisualStudio2010/Jucer.vcxproj @@ -93,7 +93,7 @@ - MaxSpeed + MinSpace ..\..\JuceLibraryCode;%(AdditionalIncludeDirectories) WIN32;_WINDOWS;NDEBUG;JUCER_VS2010_78A501D=1;%(PreprocessorDefinitions) MultiThreaded