diff options
| author | Jabier Arraiza <jabier.arraiza@marker.es> | 2019-06-20 04:23:22 +0000 |
|---|---|---|
| committer | Jabier Arraiza <jabier.arraiza@marker.es> | 2019-07-08 21:04:14 +0000 |
| commit | 3cc699e9dff14c6c48cb718d968d5c82977e4d6d (patch) | |
| tree | 97a4cf32c120ef61b068a8b2729a0f796fe5a818 /src/ui | |
| parent | add improvements to color handling (diff) | |
| download | inkscape-3cc699e9dff14c6c48cb718d968d5c82977e4d6d.tar.gz inkscape-3cc699e9dff14c6c48cb718d968d5c82977e4d6d.zip | |
working wth colors for icons
Diffstat (limited to 'src/ui')
| -rw-r--r-- | src/ui/dialog/inkscape-preferences.cpp | 212 | ||||
| -rw-r--r-- | src/ui/dialog/inkscape-preferences.h | 17 | ||||
| -rw-r--r-- | src/ui/icon-loader.cpp | 18 |
3 files changed, 146 insertions, 101 deletions
diff --git a/src/ui/dialog/inkscape-preferences.cpp b/src/ui/dialog/inkscape-preferences.cpp index b81f97cb7..1068067d6 100644 --- a/src/ui/dialog/inkscape-preferences.cpp +++ b/src/ui/dialog/inkscape-preferences.cpp @@ -620,119 +620,168 @@ void InkscapePreferences::symbolicThemeCheck() if (!symbolic) { _symbolic_icons.set_active(false); _symbolic_icons.get_parent()->hide(); - _symbolic_color.get_parent()->hide(); + _symbolic_base_color.get_parent()->hide(); } else { _symbolic_icons.get_parent()->show(); - _symbolic_color.get_parent()->show(); + _symbolic_base_color.get_parent()->show(); } } } -void InkscapePreferences::symbolicChangeCustom() -{ +void InkscapePreferences::resetIconsColors() { Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - if (!prefs->getBool("/theme/symbolicIconsDefaultColor", true)) { - Gdk::RGBA normal_color = _symbolic_color.get_style_context()->get_color(); + if (prefs->getBool("/theme/symbolicIconsDefaultColor", true)) { + Glib::ustring themeiconname = prefs->getString("/theme/iconTheme"); + Gdk::RGBA normal_color = _symbolic_base_color.get_style_context()->get_color(); Gdk::RGBA success_color = _symbolic_success_color.get_style_context()->get_color(); Gdk::RGBA warning_color = _symbolic_warning_color.get_style_context()->get_color(); Gdk::RGBA error_color = _symbolic_error_color.get_style_context()->get_color(); SPColor normal_color_sp(normal_color.get_red(), normal_color.get_green(), normal_color.get_blue()); - _symbolic_color.setRgba32(normal_color_sp.toRGBA32(normal_color.get_alpha())); SPColor success_color_sp(success_color.get_red(), success_color.get_green(), success_color.get_blue()); - _symbolic_success_color.setRgba32(success_color_sp.toRGBA32(success_color.get_alpha())); SPColor warning_color_sp(warning_color.get_red(), warning_color.get_green(), warning_color.get_blue()); - _symbolic_warning_color.setRgba32(warning_color_sp.toRGBA32(warning_color.get_alpha())); SPColor error_color_sp(error_color.get_red(), error_color.get_green(), error_color.get_blue()); - _symbolic_error_color.setRgba32(error_color_sp.toRGBA32(error_color.get_alpha())); - _symbolic_color.setSensitive(false); - _symbolic_success_color.setSensitive(false); - _symbolic_warning_color.setSensitive(false); - _symbolic_error_color.setSensitive(false); - symbolicDefaultColor(); - } else if (prefs->getBool("/theme/symbolicIcons", true)) { - _symbolic_color.setSensitive(true); - _symbolic_success_color.setSensitive(true); - _symbolic_warning_color.setSensitive(true); - _symbolic_error_color.setSensitive(true); + int colorsetbase = normal_color_sp.toRGBA32(normal_color.get_alpha()); + int colorsetsuccess = success_color_sp.toRGBA32(success_color.get_alpha()); + int colorsetwarning = error_color_sp.toRGBA32(error_color.get_alpha()); + int colorseterror = warning_color_sp.toRGBA32(warning_color.get_alpha()); + _symbolic_base_color.setRgba32(colorsetbase); + _symbolic_success_color.setRgba32(colorsetsuccess); + _symbolic_error_color.setRgba32(colorsetwarning); + _symbolic_warning_color.setRgba32(colorseterror); + prefs->setInt("/theme/" + themeiconname + "/symbolicBaseColor", colorsetbase); + prefs->setInt("/theme/" + themeiconname + "/symbolicSuccessColor", colorsetsuccess); + prefs->setInt("/theme/" + themeiconname + "/symbolicErrorColor", colorsetwarning); + prefs->setInt("/theme/" + themeiconname + "/symbolicWaringColor", colorseterror); + auto const screen = Gdk::Screen::get_default(); + if (INKSCAPE.colorizeprovider) { + Gtk::StyleContext::remove_provider_for_screen(screen, INKSCAPE.colorizeprovider); + } + } +} + +void InkscapePreferences::themeIconsColors() +{ + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + if (!prefs->getBool("/theme/symbolicIconsDefaultColor", true)) { Glib::ustring themeiconname = prefs->getString("/theme/iconTheme"); - int colorset = prefs->getInt("/theme/" + themeiconname + "/symbolicColor", 0x2E3436ff); + int colorsetbase = prefs->getInt("/theme/" + themeiconname + "/symbolicBaseColor", 0x2E3436ff); int colorsetsuccess = prefs->getInt("/theme/" + themeiconname + "/symbolicSuccessColor", 0x4AD589ff); int colorsetwarning = prefs->getInt("/theme/" + themeiconname + "/symbolicWarningColor", 0xF57900ff); int colorseterror = prefs->getInt("/theme/" + themeiconname + "/symbolicErrorColor", 0xcc0000ff); - _symbolic_color.setRgba32(colorset); + INKSCAPE.get_higlight_colors(colorsetbase, colorsetsuccess, colorsetwarning, colorseterror); + _symbolic_base_color.setRgba32(colorsetbase); _symbolic_success_color.setRgba32(colorsetsuccess); _symbolic_warning_color.setRgba32(colorsetwarning); _symbolic_error_color.setRgba32(colorseterror); - symbolicCustomColors(); - } else { - _symbolic_color.setSensitive(false); - _symbolic_success_color.setSensitive(false); - _symbolic_warning_color.setSensitive(false); - _symbolic_error_color.setSensitive(false); + prefs->setInt("/theme/" + themeiconname + "/symbolicBaseColor", colorsetbase); + prefs->setInt("/theme/" + themeiconname + "/symbolicSuccessColor", colorsetsuccess); + prefs->setInt("/theme/" + themeiconname + "/symbolicErrorColor", colorsetwarning); + prefs->setInt("/theme/" + themeiconname + "/symbolicWaringColor", colorseterror); } } -void InkscapePreferences::symbolicDefaultColor() -{ - auto const screen = Gdk::Screen::get_default(); - if (INKSCAPE.colorizeprovider) { - Gtk::StyleContext::remove_provider_for_screen(screen, INKSCAPE.colorizeprovider); +void InkscapePreferences::changeIconsColors() { + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + if (!prefs->getBool("/theme/symbolicIconsDefaultColor", true)) { + Glib::ustring themeiconname = prefs->getString("/theme/iconTheme"); + int colorsetbase = prefs->getInt("/theme/" + themeiconname + "/symbolicBaseColor", 0x2E3436ff); + int colorsetsuccess = prefs->getInt("/theme/" + themeiconname + "/symbolicSuccessColor", 0x4AD589ff); + int colorsetwarning = prefs->getInt("/theme/" + themeiconname + "/symbolicWarningColor", 0xF57900ff); + int colorseterror = prefs->getInt("/theme/" + themeiconname + "/symbolicErrorColor", 0xcc0000ff); + _symbolic_base_color.setRgba32(colorsetbase); + _symbolic_success_color.setRgba32(colorsetsuccess); + _symbolic_warning_color.setRgba32(colorsetwarning); + _symbolic_error_color.setRgba32(colorseterror); + auto const screen = Gdk::Screen::get_default(); + if (INKSCAPE.colorizeprovider) { + Gtk::StyleContext::remove_provider_for_screen(screen, INKSCAPE.colorizeprovider); + } + Gtk::CssProvider::create(); + Glib::ustring css_str = ""; + if (prefs->getBool("/theme/symbolicIcons", false)) { + css_str = INKSCAPE.get_symbolic_colors(); + } + try { + INKSCAPE.colorizeprovider->load_from_data(css_str); + } catch (const Gtk::CssProviderError &ex) { + g_critical("CSSProviderError::load_from_data(): failed to load '%s'\n(%s)", css_str.c_str(), ex.what().c_str()); + } + Gtk::StyleContext::add_provider_for_screen(screen, INKSCAPE.colorizeprovider, + GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); } } -void InkscapePreferences::symbolicCustomColorsReset() + +void InkscapePreferences::toggleSymbolic() { + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + Gtk::Window *window = SP_ACTIVE_DESKTOP->getToplevel(); + if (prefs->getBool("/theme/symbolicIcons", false)) { + if (window ) { + window->get_style_context()->add_class("symbolic"); + window->get_style_context()->remove_class("regular"); + } + } else { + if (window) { + window->get_style_context()->add_class("regular"); + window->get_style_context()->remove_class("symbolic"); + } + } + INKSCAPE.signal_change_theme.emit(); +} + +/* void InkscapePreferences::symbolicCustomColorsReset() { Inkscape::Preferences *prefs = Inkscape::Preferences::get(); Glib::ustring themeiconname = prefs->getString("/theme/iconTheme"); - int colorset = 0x2E3436ff; + int colorsetbase = 0x2E3436ff; int colorsetsuccess = 0x4AD589ff; int colorsetwarning = 0xF57900ff; int colorseterror = 0xcc0000ff; - INKSCAPE.get_higlight_colors(colorset, colorsetsuccess, colorsetwarning, colorseterror); - _symbolic_color.setRgba32(colorset); + INKSCAPE.get_higlight_colors(colorsetbase, colorsetsuccess, colorsetwarning, colorseterror); + _symbolic_base_color.setRgba32(colorsetbase); _symbolic_success_color.setRgba32(colorsetsuccess); _symbolic_warning_color.setRgba32(colorsetwarning); _symbolic_error_color.setRgba32(colorseterror); - prefs->setInt("/theme/" + themeiconname + "/symbolicSuccessColor",colorset); - prefs->setInt("/theme/" + themeiconname + "/symbolicColor", colorsetsuccess); + prefs->setInt("/theme/" + themeiconname + "/symbolicBaseColor", colorsetbase); + prefs->setInt("/theme/" + themeiconname + "/symbolicSuccessColor", colorsetsuccess); prefs->setInt("/theme/" + themeiconname + "/symbolicErrorColor", colorsetwarning); prefs->setInt("/theme/" + themeiconname + "/symbolicWaringColor", colorseterror); symbolicCustomColors(); } -void InkscapePreferences::symbolicCustomColors() +void InkscapePreferences::symbolicChangeCustom() { - auto const screen = Gdk::Screen::get_default(); - if (INKSCAPE.colorizeprovider) { - Gtk::StyleContext::remove_provider_for_screen(screen, INKSCAPE.colorizeprovider); - } - using namespace Inkscape::IO::Resource; Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - Gtk::Window *window = SP_ACTIVE_DESKTOP->getToplevel(); - Gtk::CssProvider::create(); - Glib::ustring css_str = ""; - if (prefs->getBool("/theme/symbolicIcons", false)) { - css_str = INKSCAPE.get_symbolic_colors(); - if (window ) { - window->get_style_context()->add_class("symbolic"); - window->get_style_context()->remove_class("regular"); - } + if (!prefs->getBool("/theme/symbolicIconsDefaultColor", true)) { + resetColors(); + _symbolic_base_color.setSensitive(false); + _symbolic_success_color.setSensitive(false); + _symbolic_warning_color.setSensitive(false); + _symbolic_error_color.setSensitive(false); + symbolicDefaultColor(); + } else if (prefs->getBool("/theme/symbolicIcons", true)) { + _symbolic_base_color.setSensitive(true); + _symbolic_success_color.setSensitive(true); + _symbolic_warning_color.setSensitive(true); + _symbolic_error_color.setSensitive(true); + Glib::ustring themeiconname = prefs->getString("/theme/iconTheme"); + int colorsetbase = prefs->getInt("/theme/" + themeiconname + "/symbolicBaseColor", 0x2E3436ff); + int colorsetsuccess = prefs->getInt("/theme/" + themeiconname + "/symbolicSuccessColor", 0x4AD589ff); + int colorsetwarning = prefs->getInt("/theme/" + themeiconname + "/symbolicWarningColor", 0xF57900ff); + int colorseterror = prefs->getInt("/theme/" + themeiconname + "/symbolicErrorColor", 0xcc0000ff); + _symbolic_base_color.setRgba32(colorsetbase); + _symbolic_success_color.setRgba32(colorsetsuccess); + _symbolic_warning_color.setRgba32(colorsetwarning); + _symbolic_error_color.setRgba32(colorseterror); + symbolicCustomColors(); } else { - if (window) { - window->get_style_context()->add_class("regular"); - window->get_style_context()->remove_class("symbolic"); - } - } - INKSCAPE.signal_change_theme.emit(); - try { - INKSCAPE.colorizeprovider->load_from_data(css_str); - } catch (const Gtk::CssProviderError &ex) { - g_critical("CSSProviderError::load_from_data(): failed to load '%s'\n(%s)", css_str.c_str(), ex.what().c_str()); + _symbolic_base_color.setSensitive(false); + _symbolic_success_color.setSensitive(false); + _symbolic_warning_color.setSensitive(false); + _symbolic_error_color.setSensitive(false); } - Gtk::StyleContext::add_provider_for_screen(screen, INKSCAPE.colorizeprovider, - GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); -} +} */ void InkscapePreferences::themeChange() { @@ -995,35 +1044,35 @@ void InkscapePreferences::initPageUI() } Glib::ustring themeiconname = prefs->getString("/theme/iconTheme"); _symbolic_icons.init(_("Use symbolic icons"), "/theme/symbolicIcons", true); - _symbolic_icons.signal_clicked().connect(sigc::mem_fun(*this, &InkscapePreferences::symbolicCustomColors)); + _symbolic_icons.signal_clicked().connect(sigc::mem_fun(*this, &InkscapePreferences::toggleSymbolic)); _page_theme.add_line(true, "", _symbolic_icons, "", "", true); - _symbolic_colors.init(_("Use custom colors for icons"), "/theme/symbolicIconsDefaultColor", true); - _symbolic_colors.signal_clicked().connect(sigc::mem_fun(*this, &InkscapePreferences::symbolicChangeCustom)); - _page_theme.add_line(true, "", _symbolic_colors, "", "", true); - _symbolic_color.init(_("Color for symbolic icons:"), "/theme/" + themeiconname + "/symbolicColor", 0x2E3436ff); + _symbolic_base_colors.init(_("Use custom colors for icons"), "/theme/symbolicIconsDefaultColor", true); + _symbolic_base_colors.signal_clicked().connect(sigc::mem_fun(*this, &InkscapePreferences::resetIconsColors)); + _page_theme.add_line(true, "", _symbolic_base_colors, "", "", true); + _symbolic_base_color.init(_("Color for symbolic icons:"), "/theme/" + themeiconname + "/symbolicBaseColor", 0x2E3436ff); _symbolic_success_color.init(_("Color for symbolic success icons:"), "/theme/" + themeiconname + "/symbolicSuccessColor", 0x4AD589ff); _symbolic_warning_color.init(_("Color for symbolic warning icons:"), "/theme/" + themeiconname + "/symbolicWarningColor", 0xF57900ff); _symbolic_error_color.init(_("Color for symbolic error icons:"), "/theme/" + themeiconname + "/symbolicErrorColor", 0xcc0000ff); - _symbolic_color.get_style_context()->add_class("system_normal_color"); + _symbolic_base_color.get_style_context()->add_class("system_base_color"); _symbolic_success_color.get_style_context()->add_class("system_success_color"); _symbolic_warning_color.get_style_context()->add_class("system_warning_color"); _symbolic_error_color.get_style_context()->add_class("system_error_color"); - _symbolic_color.connectChanged(sigc::mem_fun(this, &InkscapePreferences::symbolicChangeColor)); - _symbolic_warning_color.connectChanged(sigc::mem_fun(this, &InkscapePreferences::symbolicChangeColor)); - _symbolic_success_color.connectChanged(sigc::mem_fun(this, &InkscapePreferences::symbolicChangeColor)); - _symbolic_error_color.connectChanged(sigc::mem_fun(this, &InkscapePreferences::symbolicChangeColor)); + _symbolic_base_color.connectChanged(sigc::mem_fun(this, &InkscapePreferences::changeIconsColor)); + _symbolic_warning_color.connectChanged(sigc::mem_fun(this, &InkscapePreferences::changeIconsColor)); + _symbolic_success_color.connectChanged(sigc::mem_fun(this, &InkscapePreferences::changeIconsColor)); + _symbolic_error_color.connectChanged(sigc::mem_fun(this, &InkscapePreferences::changeIconsColor)); Glib::RefPtr<Gdk::Window> window = get_parent_window(); if (window) { - _symbolic_color.setTransientFor(window); + _symbolic_base_color.setTransientFor(window); _symbolic_success_color.setTransientFor(window); _symbolic_warning_color.setTransientFor(window); _symbolic_error_color.setTransientFor(window); } Gtk::Box *icon_buttons = Gtk::manage(new Gtk::Box()); - icon_buttons->pack_start(_symbolic_color, true, true, 4); + icon_buttons->pack_start(_symbolic_base_color, true, true, 4); _page_theme.add_line(false, _("Change icon color:"), *icon_buttons, "", _("Color for symbolic icons. Some icons changes need reload"), false); Gtk::Box *icon_buttons_hight = Gtk::manage(new Gtk::Box()); @@ -1031,15 +1080,14 @@ void InkscapePreferences::initPageUI() icon_buttons_hight->pack_start(_symbolic_warning_color, true, true, 4); icon_buttons_hight->pack_start(_symbolic_error_color, true, true, 4); _page_theme.add_line(false, _("Change icon highlights:"), *icon_buttons_hight, "", - _("HSet the predefined colors fro the creator of icon set"), false); + _("Set the predefined colors from the creator of icon set"), false); Gtk::Box *icon_buttons_def = Gtk::manage(new Gtk::Box()); Gtk::Button *theme_decide_color = Gtk::manage(new Gtk::Button(_("Theme defaults"))); theme_decide_color->set_tooltip_text(_("Defaul colors from theme)")); - theme_decide_color->signal_clicked().connect(sigc::mem_fun(*this, &InkscapePreferences::symbolicCustomColorsReset)); + theme_decide_color->signal_clicked().connect(sigc::mem_fun(*this, &InkscapePreferences::themeIconsColors)); icon_buttons_def->pack_start(*theme_decide_color, true, true, 4); _page_theme.add_line(false, _("Default colors:"), *icon_buttons_def, "", _("Set the predefined colors fro the creator of icon set"), false); - symbolicChangeCustom(); { Glib::ustring sizeLabels[] = { C_("Icon size", "Larger"), C_("Icon size", "Large"), C_("Icon size", "Small"), C_("Icon size", "Smaller") }; diff --git a/src/ui/dialog/inkscape-preferences.h b/src/ui/dialog/inkscape-preferences.h index 09113dfa7..7416e125a 100644 --- a/src/ui/dialog/inkscape-preferences.h +++ b/src/ui/dialog/inkscape-preferences.h @@ -245,8 +245,11 @@ protected: UI::Widget::PrefCombo _icon_theme; UI::Widget::PrefCheckButton _dark_theme; UI::Widget::PrefCheckButton _symbolic_icons; - UI::Widget::PrefCheckButton _symbolic_colors; - UI::Widget::PrefColorPicker _symbolic_color; + UI::Widget::PrefCheckButton _symbolic_base_colors; + UI::Widget::PrefColorPicker _symbolic_base_color; + UI::Widget::PrefColorPicker _symbolic_warning_color; + UI::Widget::PrefColorPicker _symbolic_error_color; + UI::Widget::PrefColorPicker _symbolic_success_color; UI::Widget::PrefCombo _misc_small_toolbar; UI::Widget::PrefCombo _misc_small_secondary; UI::Widget::PrefCombo _misc_small_tools; @@ -590,11 +593,11 @@ private: void themeChange(); void changeIconsColor(guint32 /*color*/); void symbolicThemeCheck(); - void symbolicCustomColors(); - void symbolicDefaultColor(); - void symbolicChangeCustom(); - void symbolicCustomColorsReset(); - void symbolicChangeColor(guint32 /*color*/) { symbolicChangeCustom(); } + void toggleSymbolic(); + void changeIconsColors(); + void resetIconsColors(); + void themeIconsColors(); + void changeIconsColor(guint32 /*color*/) { changeIconsColors(); } InkscapePreferences(); InkscapePreferences(InkscapePreferences const &d); diff --git a/src/ui/icon-loader.cpp b/src/ui/icon-loader.cpp index a1696083d..c308014f0 100644 --- a/src/ui/icon-loader.cpp +++ b/src/ui/icon-loader.cpp @@ -68,24 +68,18 @@ Glib::RefPtr<Gdk::Pixbuf> sp_get_icon_pixbuf(Glib::ustring icon_name, gint size) bool was_symbolic = false; Glib::ustring css_str = ""; if (!prefs->getBool("/theme/symbolicIconsDefaultColor", true)) { - using namespace Inkscape::IO::Resource; - int colorset = 0x2E3436ff; - int colorsetsuccess = 0x4AD589ff; - int colorsetwarning = 0xF57900ff; - int colorseterror = 0xcc0000ff; + Glib::ustring themeiconname = prefs->getString("/theme/iconTheme"); + int colorsetbase = prefs->getInt("/theme/" + themeiconname + "/symbolicBaseColor", 0x2E3436ff); + int colorsetsuccess = prefs->getInt("/theme/" + themeiconname + "/symbolicSuccessColor", 0x4AD589ff); + int colorsetwarning = prefs->getInt("/theme/" + themeiconname + "/symbolicWarningColor", 0xF57900ff); + int colorseterror = prefs->getInt("/theme/" + themeiconname + "/symbolicErrorColor", 0xcc0000ff); gchar colornamed[64]; gchar colornamedsuccess[64]; gchar colornamedwarning[64]; gchar colornamederror[64]; - Glib::ustring themeiconname = prefs->getString("/theme/iconTheme"); - INKSCAPE.get_higlight_colors(colorset, colorsetsuccess, colorsetwarning, colorseterror); - colorset = prefs->getInt("/theme/" + themeiconname + "/symbolicColor", colorset); - sp_svg_write_color(colornamed, sizeof(colornamed), colorset); - colorsetsuccess = prefs->getInt("/theme/" + themeiconname + "/symbolicSuccessColor", colorsetsuccess); + sp_svg_write_color(colornamed, sizeof(colornamed), colorsetbase); sp_svg_write_color(colornamedsuccess, sizeof(colornamedsuccess), colorsetsuccess); - colorsetwarning = prefs->getInt("/theme/" + themeiconname + "/symbolicWarningColor", colorsetwarning); sp_svg_write_color(colornamedwarning, sizeof(colornamedwarning), colorsetwarning); - colorseterror = prefs->getInt("/theme/" + themeiconname + "/symbolicErrorColor", colorseterror); sp_svg_write_color(colornamederror, sizeof(colornamederror), colorseterror); _icon_pixbuf = iconinfo.load_symbolic(Gdk::RGBA(colornamed), Gdk::RGBA(colornamedsuccess), |
