From a1d9e5a43124f4e6114e1d894e0fbd0d6b7e8419 Mon Sep 17 00:00:00 2001 From: Tobias Hienzsch Date: Tue, 24 Oct 2023 04:53:29 +0200 Subject: [PATCH] [viewer] Match icon colour to labels --- tools/jml-viewer/Application/MenuBar.cpp | 36 +++++++++++++----------- tools/jml-viewer/Viewer/ScriptPanel.cpp | 9 ++++-- tools/jml_tools/graphics/Drawable.cpp | 7 +++++ tools/jml_tools/graphics/Drawable.hpp | 1 + 4 files changed, 33 insertions(+), 20 deletions(-) diff --git a/tools/jml-viewer/Application/MenuBar.cpp b/tools/jml-viewer/Application/MenuBar.cpp index a59433f..86a6223 100644 --- a/tools/jml-viewer/Application/MenuBar.cpp +++ b/tools/jml-viewer/Application/MenuBar.cpp @@ -28,8 +28,10 @@ auto MenuBar::getMenuForIndex(int menuIndex, juce::String const& /*menuName*/) - { using IDs = CommandIDs; - auto* cmd = &_commands; - auto const index = static_cast(menuIndex); + auto* cmd = &_commands; + auto const index = static_cast(menuIndex); + auto const iconColor = getLookAndFeel().findColour(juce::PopupMenu::textColourId); + auto const icon = [iconColor](auto const* name) { return getIcon(name, iconColor); }; if (index == MenuIndex::File) { auto files = juce::PopupMenu{}; @@ -45,36 +47,36 @@ auto MenuBar::getMenuForIndex(int menuIndex, juce::String const& /*menuName*/) - files.addItem("Clear", [] { getApplicationSettings().clearRecentFiles(); }); auto menu = juce::PopupMenu{}; - menu.addCommandItem(cmd, IDs::open, "Open", getIcon("launch_black_48dp_svg")); - menu.addCommandItem(cmd, IDs::reload, "Reload", getIcon("autorenew_black_48dp_svg")); - menu.addSubMenu("Recent Files", files, true, getIcon("restore_black_48dp_svg")); + menu.addCommandItem(cmd, IDs::open, "Open", icon("launch_black_48dp_svg")); + menu.addCommandItem(cmd, IDs::reload, "Reload", icon("autorenew_black_48dp_svg")); + menu.addSubMenu("Recent Files", files, true, icon("restore_black_48dp_svg")); menu.addSeparator(); - menu.addCommandItem(cmd, IDs::save, "Save", getIcon("save_black_48dp_svg")); - menu.addCommandItem(cmd, IDs::saveAs, "Save As", getIcon("save_as_black_48dp_svg")); + menu.addCommandItem(cmd, IDs::save, "Save", icon("save_black_48dp_svg")); + menu.addCommandItem(cmd, IDs::saveAs, "Save As", icon("save_as_black_48dp_svg")); menu.addSeparator(); - menu.addCommandItem(cmd, IDs::settings, "Settings", getIcon("settings_black_48dp_svg")); + menu.addCommandItem(cmd, IDs::settings, "Settings", icon("settings_black_48dp_svg")); menu.addSeparator(); - menu.addCommandItem(cmd, IDs::quit, "Quit", getIcon("close_black_48dp_svg")); + menu.addCommandItem(cmd, IDs::quit, "Quit", icon("close_black_48dp_svg")); return menu; } if (index == MenuIndex::Edit) { auto menu = juce::PopupMenu{}; - menu.addCommandItem(cmd, IDs::undo, "Undo", getIcon("undo_black_48dp_svg")); - menu.addCommandItem(cmd, IDs::redo, "Redo", getIcon("redo_black_48dp_svg")); + menu.addCommandItem(cmd, IDs::undo, "Undo", icon("undo_black_48dp_svg")); + menu.addCommandItem(cmd, IDs::redo, "Redo", icon("redo_black_48dp_svg")); menu.addSeparator(); - menu.addCommandItem(cmd, IDs::cut, "Cut", getIcon("content_cut_black_48dp_svg")); - menu.addCommandItem(cmd, IDs::copy, "Copy", getIcon("content_copy_black_48dp_svg")); - menu.addCommandItem(cmd, IDs::paste, "Paste", getIcon("content_paste_black_48dp_svg")); + menu.addCommandItem(cmd, IDs::cut, "Cut", icon("content_cut_black_48dp_svg")); + menu.addCommandItem(cmd, IDs::copy, "Copy", icon("content_copy_black_48dp_svg")); + menu.addCommandItem(cmd, IDs::paste, "Paste", icon("content_paste_black_48dp_svg")); menu.addSeparator(); - menu.addCommandItem(cmd, IDs::selectAll, "Select All", getIcon("select_all_black_48dp_svg")); - menu.addCommandItem(cmd, IDs::deselectAll, "Deselect", getIcon("deselect_black_48dp_svg")); + menu.addCommandItem(cmd, IDs::selectAll, "Select All", icon("select_all_black_48dp_svg")); + menu.addCommandItem(cmd, IDs::deselectAll, "Deselect", icon("deselect_black_48dp_svg")); return menu; } if (index == MenuIndex::Help) { auto menu = juce::PopupMenu{}; - menu.addCommandItem(cmd, IDs::about, "About", getIcon("info_black_48dp_svg")); + menu.addCommandItem(cmd, IDs::about, "About", icon("info_black_48dp_svg")); return menu; } diff --git a/tools/jml-viewer/Viewer/ScriptPanel.cpp b/tools/jml-viewer/Viewer/ScriptPanel.cpp index 1c20ac9..c49e85b 100644 --- a/tools/jml-viewer/Viewer/ScriptPanel.cpp +++ b/tools/jml-viewer/Viewer/ScriptPanel.cpp @@ -60,10 +60,13 @@ auto MultiScriptPanel::paint(juce::Graphics& g) -> void auto area = getLocalBounds().reduced(proportionOfWidth(0.25F), proportionOfHeight(0.25F)); - auto const iconArea = area.removeFromTop(area.proportionOfHeight(0.5)); - auto const text = juce::String{R"(Drop lua script or go to File -> Open)"}; + auto const iconColor = getLookAndFeel().findColour(juce::PopupMenu::textColourId); + auto const iconArea = area.removeFromTop(area.proportionOfHeight(0.5)); + auto const text = juce::String{R"(Drop lua script or go to File -> Open)"}; - _openIcon->drawWithin(g, iconArea.toFloat(), juce::RectanglePlacement::centred, 1.0); + auto icon = _openIcon->createCopy(); + icon->replaceColour(juce::Colours::black, iconColor); + icon->drawWithin(g, iconArea.toFloat(), juce::RectanglePlacement::centred, 1.0); g.setColour(getSchemeDefaultTextColour()); g.setFont(32.0F); g.drawText(text, area, juce::Justification::centred, false); diff --git a/tools/jml_tools/graphics/Drawable.cpp b/tools/jml_tools/graphics/Drawable.cpp index d3a3e1a..c8aac4c 100644 --- a/tools/jml_tools/graphics/Drawable.cpp +++ b/tools/jml_tools/graphics/Drawable.cpp @@ -11,4 +11,11 @@ auto getIcon(char const* name) -> std::unique_ptr return svg; } +auto getIcon(char const* name, juce::Colour colour) -> std::unique_ptr +{ + auto icon = getIcon(name); + icon->replaceColour(juce::Colours::black, colour); + return icon; +} + } // namespace jml diff --git a/tools/jml_tools/graphics/Drawable.hpp b/tools/jml_tools/graphics/Drawable.hpp index 9e86c2f..160423f 100644 --- a/tools/jml_tools/graphics/Drawable.hpp +++ b/tools/jml_tools/graphics/Drawable.hpp @@ -3,5 +3,6 @@ namespace jml { [[nodiscard]] auto getIcon(char const* name) -> std::unique_ptr; +[[nodiscard]] auto getIcon(char const* name, juce::Colour colour) -> std::unique_ptr; } // namespace jml