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 | |
| parent | add improvements to color handling (diff) | |
| download | inkscape-3cc699e9dff14c6c48cb718d968d5c82977e4d6d.tar.gz inkscape-3cc699e9dff14c6c48cb718d968d5c82977e4d6d.zip | |
working wth colors for icons
| -rw-r--r-- | share/ui/style.css | 2 | ||||
| -rw-r--r-- | src/inkscape.cpp | 119 | ||||
| -rw-r--r-- | src/inkscape.h | 2 | ||||
| -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 |
6 files changed, 207 insertions, 163 deletions
diff --git a/share/ui/style.css b/share/ui/style.css index a1bb7d77b..951ae4324 100644 --- a/share/ui/style.css +++ b/share/ui/style.css @@ -149,7 +149,7 @@ image { color: @success_color; } -.system_normal_color { +.system_base_color { color: @theme_fg_color; } diff --git a/src/inkscape.cpp b/src/inkscape.cpp index 47e66db52..c4e1f8dbe 100644 --- a/src/inkscape.cpp +++ b/src/inkscape.cpp @@ -368,53 +368,6 @@ void Application::autosave_init() } } -Glib::ustring Application::get_symbolic_colors() -{ - Glib::ustring css_str; - gchar colornamed[64]; - gchar colornamedsuccess[64]; - gchar colornamedwarning[64]; - gchar colornamederror[64]; - gchar colornamed_inverse[64]; - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - Glib::ustring themeiconname = prefs->getString("/theme/iconTheme"); - int colorset = 0x2E3436ff; - int colorset_inverse = colorset ^ 0xffffff00; - int colorsetsuccess = 0x4AD589ff; - int colorsetwarning = 0xF57900ff; - int colorseterror = 0xcc0000ff; - 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(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); - sp_svg_write_color(colornamed_inverse, sizeof(colornamed_inverse), colorset_inverse); - css_str += "*{-gtk-icon-palette: success "; - css_str += colornamedsuccess; - css_str += ", warning "; - css_str += colornamedwarning; - css_str += ", error "; - css_str += colornamederror; - css_str += ";}"; - css_str += "SPRuler, ruler-widget,"; - css_str += ".bright image, .dark image"; - css_str += "{color:"; - css_str += colornamed; - css_str += ";}"; - css_str += ".dark .brightstyle image,"; - css_str += ".bright .darkstyle image,"; - css_str += ".invertstyle image"; - css_str += "{color:"; - css_str += colornamed_inverse; - css_str += ";}"; - return css_str; -} - - /* \brief Constructor for the application. * Creates a new Inkscape::Application. * @@ -539,7 +492,53 @@ Application::~Application() // gtk_main_quit (); } -void Application::get_higlight_colors(int &colorset, int &colorsetsuccess, int &colorsetwarning, int &colorseterror) + +Glib::ustring Application::get_symbolic_colors() +{ + Glib::ustring css_str; + gchar colornamed[64]; + gchar colornamedsuccess[64]; + gchar colornamedwarning[64]; + gchar colornamederror[64]; + gchar colornamed_inverse[64]; + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + Glib::ustring themeiconname = prefs->getString("/theme/iconTheme"); + int colorsetbase = 0x2E3436ff; + int colorsetbase_inverse = colorsetbase^ 0xffffff00; + int colorsetsuccess = 0x4AD589ff; + int colorsetwarning = 0xF57900ff; + int colorseterror = 0xcc0000ff; + colorsetbase = prefs->getInt("/theme/" + themeiconname + "/symbolicBaseColor", colorsetbase); + sp_svg_write_color(colornamed, sizeof(colornamed), colorsetbase); + colorsetsuccess = prefs->getInt("/theme/" + themeiconname + "/symbolicSuccessColor", colorsetsuccess); + 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); + sp_svg_write_color(colornamed_inverse, sizeof(colornamed_inverse), colorsetbase_inverse); + css_str += "*{-gtk-icon-palette: success "; + css_str += colornamedsuccess; + css_str += ", warning "; + css_str += colornamedwarning; + css_str += ", error "; + css_str += colornamederror; + css_str += ";}"; + css_str += "SPRuler, ruler-widget,"; + css_str += ".bright image, .dark image"; + css_str += "{color:"; + css_str += colornamed; + css_str += ";}"; + css_str += ".dark .brightstyle image,"; + css_str += ".bright .darkstyle image,"; + css_str += ".invertstyle image"; + css_str += "{color:"; + css_str += colornamed_inverse; + css_str += ";}"; + return css_str; +} + +void Application::get_higlight_colors(int &colorsetbase, int &colorsetsuccess, int &colorsetwarning, int &colorseterror) { using namespace Inkscape::IO::Resource; Inkscape::Preferences *prefs = Inkscape::Preferences::get(); @@ -552,13 +551,24 @@ void Application::get_higlight_colors(int &colorset, int &colorsetsuccess, int & std::ifstream ifs(higlight); std::string content((std::istreambuf_iterator<char>(ifs)), (std::istreambuf_iterator<char>())); Glib::ustring result; - size_t startpos = content.find(".success"); + size_t startpos = content.find(".base"); size_t endpos = content.find("}"); if (startpos != std::string::npos) { result = content.substr(startpos, endpos - startpos); startpos = result.find("fill:"); endpos = result.find(";"); result = content.substr(startpos + 5, endpos - (startpos + 5)); + Gdk::RGBA base_color = Gdk::RGBA(result); + SPColor base_color_sp(base_color.get_red(), base_color.get_green(), base_color.get_blue()); + colorsetbase = base_color_sp.toRGBA32(1); + } + startpos = content.find(".success"); + endpos = content.find("}"); + if (startpos != std::string::npos) { + result = content.substr(startpos, endpos - startpos); + startpos = result.find("fill:"); + endpos = result.find(";"); + result = content.substr(startpos + 5, endpos - (startpos + 5)); Gdk::RGBA success_color = Gdk::RGBA(result); SPColor success_color_sp(success_color.get_red(), success_color.get_green(), success_color.get_blue()); colorsetsuccess = success_color_sp.toRGBA32(1); @@ -585,17 +595,6 @@ void Application::get_higlight_colors(int &colorset, int &colorsetsuccess, int & SPColor error_color_sp(error_color.get_red(), error_color.get_green(), error_color.get_blue()); colorseterror = error_color_sp.toRGBA32(1); } - startpos = content.find(".base"); - endpos = content.find("}"); - if (startpos != std::string::npos) { - result = content.substr(startpos, endpos - startpos); - startpos = result.find("fill:"); - endpos = result.find(";"); - result = content.substr(startpos + 5, endpos - (startpos + 5)); - Gdk::RGBA base_color = Gdk::RGBA(result); - SPColor base_color_sp(base_color.get_red(), base_color.get_green(), base_color.get_blue()); - colorset = base_color_sp.toRGBA32(1); - } } } diff --git a/src/inkscape.h b/src/inkscape.h index c9bff2cf3..7f899393f 100644 --- a/src/inkscape.h +++ b/src/inkscape.h @@ -141,7 +141,7 @@ public: void selection_set (Inkscape::Selection * selection); void readStyleSheets(bool forceupd = false); Glib::ustring get_symbolic_colors(); - void get_higlight_colors(int &colorset, int &colorsetsuccess, int &colorsetwarning, int &colorseterror); + void get_higlight_colors(int &colorsetbase, int &colorsetsuccess, int &colorsetwarning, int &colorseterror); void eventcontext_set (Inkscape::UI::Tools::ToolBase * eventcontext); // Moved document add/remove functions into public inkscape.h as they are used 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), |
