diff options
| author | Jabiertxof <jabier.arraiza@marker.es> | 2019-06-20 20:10:11 +0000 |
|---|---|---|
| committer | Jabier Arraiza <jabier.arraiza@marker.es> | 2019-07-08 21:04:15 +0000 |
| commit | 5a9105c13eed05ede3936b210f2680426344a2d6 (patch) | |
| tree | a46f6c9168bf99db7ae5c11d41c2ad87169a1575 /src | |
| parent | Remove clang diff (diff) | |
| download | inkscape-5a9105c13eed05ede3936b210f2680426344a2d6.tar.gz inkscape-5a9105c13eed05ede3936b210f2680426344a2d6.zip | |
Improvements to temming allow diferent on dark themes
Diffstat (limited to 'src')
| -rw-r--r-- | src/object/sp-style-elem.cpp | 6 | ||||
| -rw-r--r-- | src/ui/dialog/inkscape-preferences.cpp | 119 | ||||
| -rw-r--r-- | src/ui/dialog/inkscape-preferences.h | 2 |
3 files changed, 45 insertions, 82 deletions
diff --git a/src/object/sp-style-elem.cpp b/src/object/sp-style-elem.cpp index 3b93ff190..dc9712938 100644 --- a/src/object/sp-style-elem.cpp +++ b/src/object/sp-style-elem.cpp @@ -203,14 +203,14 @@ import_style_cb (CRDocHandler *a_handler, CRStatus const parse_status = cr_parser_parse_file (parser, reinterpret_cast<const guchar *>(import_file.c_str()), CR_UTF_8); if (parse_status == CR_OK) { - if (!document->getStyleSheet()) { + if(!document->getStyleSheet()) { // if the style is the first style sheet that we've seen, set the document's // first style sheet to this style and create a cascade object with it. document->setStyleSheet(stylesheet); - cr_cascade_set_sheet(document->getStyleCascade(), document->getStyleSheet(), ORIGIN_AUTHOR); + cr_cascade_set_sheet (document->getStyleCascade(), document->getStyleSheet(), ORIGIN_AUTHOR); } else { // If not the first, then chain up this style_sheet - cr_stylesheet_append_import(document->getStyleSheet(), stylesheet); + cr_stylesheet_append_import (document->getStyleSheet(), stylesheet); } } else { std::cerr << "import_style_cb: Could not parse: " << import_file << std::endl; diff --git a/src/ui/dialog/inkscape-preferences.cpp b/src/ui/dialog/inkscape-preferences.cpp index 669d39c2d..50edd7622 100644 --- a/src/ui/dialog/inkscape-preferences.cpp +++ b/src/ui/dialog/inkscape-preferences.cpp @@ -628,16 +628,15 @@ void InkscapePreferences::symbolicThemeCheck() _symbolic_base_colors.get_parent()->hide(); _symbolic_base_color.get_parent()->get_parent()->hide(); _symbolic_success_color.get_parent()->get_parent()->hide(); - _theme_decide_color.get_parent()->hide(); } else { _symbolic_icons.get_parent()->show(); _symbolic_base_colors.get_parent()->show(); _symbolic_base_color.get_parent()->get_parent()->show(); _symbolic_success_color.get_parent()->get_parent()->show(); - _theme_decide_color.get_parent()->show(); } } + changeIconsColors(); } void InkscapePreferences::resetIconsColors() @@ -649,7 +648,6 @@ void InkscapePreferences::resetIconsColors() _symbolic_success_color.setSensitive(false); _symbolic_warning_color.setSensitive(false); _symbolic_error_color.setSensitive(false); - _theme_decide_color.set_sensitive(false); } else if (prefs->getBool("/theme/symbolicDefaultColors", true)) { Glib::ustring themeiconname = prefs->getString("/theme/iconTheme"); Gdk::RGBA normal_color = _symbolic_base_color.get_style_context()->get_color(); @@ -664,6 +662,7 @@ void InkscapePreferences::resetIconsColors() guint32 colorsetsuccess = success_color_sp.toRGBA32(success_color.get_alpha()); guint32 colorsetwarning = warning_color_sp.toRGBA32(warning_color.get_alpha()); guint32 colorseterror = error_color_sp.toRGBA32(error_color.get_alpha()); + get_highlight_colors(colorsetbase, colorsetsuccess, colorsetwarning, colorseterror); _symbolic_base_color.setRgba32(colorsetbase); _symbolic_success_color.setRgba32(colorsetsuccess); _symbolic_warning_color.setRgba32(colorsetwarning); @@ -672,21 +671,16 @@ void InkscapePreferences::resetIconsColors() prefs->setInt("/theme/" + themeiconname + "/symbolicSuccessColor", colorsetsuccess); prefs->setInt("/theme/" + themeiconname + "/symbolicWarningColor", colorsetwarning); prefs->setInt("/theme/" + themeiconname + "/symbolicErrorColor", colorseterror); - auto const screen = Gdk::Screen::get_default(); - if (INKSCAPE.colorizeprovider) { - Gtk::StyleContext::remove_provider_for_screen(screen, INKSCAPE.colorizeprovider); - } _symbolic_base_color.setSensitive(false); _symbolic_success_color.setSensitive(false); _symbolic_warning_color.setSensitive(false); _symbolic_error_color.setSensitive(false); - _theme_decide_color.set_sensitive(false); + changeIconsColors(); } else { _symbolic_base_color.setSensitive(true); _symbolic_success_color.setSensitive(true); _symbolic_warning_color.setSensitive(true); _symbolic_error_color.setSensitive(true); - _theme_decide_color.set_sensitive(true); } } @@ -700,12 +694,16 @@ void InkscapePreferences::get_highlight_colors(guint32 &colorsetbase, guint32 &c if (themeiconname == prefs->getString("/theme/defaultIconTheme")) { themeiconname = "hicolor"; } + Glib::ustring prefix = ""; + if (prefs->getBool("/theme/darkTheme", false)) { + prefix = ".dark "; + } Glib::ustring higlight = get_filename(ICONS, Glib::ustring(themeiconname + "/highlights.css").c_str(), false, true); if (!higlight.empty()) { std::ifstream ifs(higlight); std::string content((std::istreambuf_iterator<char>(ifs)), (std::istreambuf_iterator<char>())); Glib::ustring result; - size_t startpos = content.find(".base"); + size_t startpos = content.find(prefix + ".base"); size_t endpos = content.find("}"); if (startpos != std::string::npos) { result = content.substr(startpos, endpos - startpos); @@ -717,8 +715,8 @@ void InkscapePreferences::get_highlight_colors(guint32 &colorsetbase, guint32 &c SPColor base_color_sp(base_color.get_red(), base_color.get_green(), base_color.get_blue()); colorsetbase = base_color_sp.toRGBA32(base_color.get_alpha()); } - content.erase(startpos, endpos - startpos + 1); - startpos = content.find(".success"); + content.erase(0, endpos + 1); + startpos = content.find(prefix + ".success"); endpos = content.find("}"); if (startpos != std::string::npos) { result = content.substr(startpos, endpos - startpos); @@ -730,8 +728,8 @@ void InkscapePreferences::get_highlight_colors(guint32 &colorsetbase, guint32 &c SPColor success_color_sp(success_color.get_red(), success_color.get_green(), success_color.get_blue()); colorsetsuccess = success_color_sp.toRGBA32(success_color.get_alpha()); } - content.erase(startpos, endpos - startpos + 1); - startpos = content.find(".warning"); + content.erase(0, endpos + 1); + startpos = content.find(prefix + ".warning"); endpos = content.find("}"); if (startpos != std::string::npos) { result = content.substr(startpos, endpos - startpos); @@ -743,8 +741,8 @@ void InkscapePreferences::get_highlight_colors(guint32 &colorsetbase, guint32 &c SPColor warning_color_sp(warning_color.get_red(), warning_color.get_green(), warning_color.get_blue()); colorsetwarning = warning_color_sp.toRGBA32(warning_color.get_alpha()); } - content.erase(startpos, endpos - startpos + 1); - startpos = content.find(".error"); + content.erase(0, endpos + 1); + startpos = content.find(prefix + ".error"); endpos = content.find("}"); if (startpos != std::string::npos) { result = content.substr(startpos, endpos - startpos); @@ -759,67 +757,35 @@ void InkscapePreferences::get_highlight_colors(guint32 &colorsetbase, guint32 &c } } -void InkscapePreferences::themeIconsColors() -{ - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - if (!prefs->getBool("/theme/symbolicDefaultColors", 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()); - SPColor success_color_sp(success_color.get_red(), success_color.get_green(), success_color.get_blue()); - SPColor warning_color_sp(warning_color.get_red(), warning_color.get_green(), warning_color.get_blue()); - SPColor error_color_sp(error_color.get_red(), error_color.get_green(), error_color.get_blue()); - guint32 colorsetbase = normal_color_sp.toRGBA32(normal_color.get_alpha()); - guint32 colorsetsuccess = success_color_sp.toRGBA32(success_color.get_alpha()); - guint32 colorsetwarning = warning_color_sp.toRGBA32(warning_color.get_alpha()); - guint32 colorseterror = error_color_sp.toRGBA32(error_color.get_alpha()); - get_highlight_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 + "/symbolicBaseColor", colorsetbase); - prefs->setInt("/theme/" + themeiconname + "/symbolicSuccessColor", colorsetsuccess); - prefs->setInt("/theme/" + themeiconname + "/symbolicWarningColor", colorsetwarning); - prefs->setInt("/theme/" + themeiconname + "/symbolicErrorColor", colorseterror); - changeIconsColors(); - } -} - void InkscapePreferences::changeIconsColors() { Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - if (!prefs->getBool("/theme/symbolicDefaultColors", true)) { - Glib::ustring themeiconname = prefs->getString("/theme/iconTheme"); - guint32 colorsetbase = prefs->getInt("/theme/" + themeiconname + "/symbolicBaseColor", 0x2E3436ff); - guint32 colorsetsuccess = prefs->getInt("/theme/" + themeiconname + "/symbolicSuccessColor", 0x4AD589ff); - guint32 colorsetwarning = prefs->getInt("/theme/" + themeiconname + "/symbolicWarningColor", 0xF57900ff); - guint32 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); + Glib::ustring themeiconname = prefs->getString("/theme/iconTheme"); + guint32 colorsetbase = prefs->getInt("/theme/" + themeiconname + "/symbolicBaseColor", 0x2E3436ff); + guint32 colorsetsuccess = prefs->getInt("/theme/" + themeiconname + "/symbolicSuccessColor", 0x4AD589ff); + guint32 colorsetwarning = prefs->getInt("/theme/" + themeiconname + "/symbolicWarningColor", 0xF57900ff); + guint32 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::toggleSymbolic() @@ -866,12 +832,15 @@ void InkscapePreferences::themeChange() } } if (dark) { + prefs->setBool("/theme/darkTheme", true); window->get_style_context()->add_class("dark"); window->get_style_context()->remove_class("bright"); } else { + prefs->setBool("/theme/darkTheme", false); window->get_style_context()->add_class("bright"); window->get_style_context()->remove_class("dark"); } + resetIconsColors(); INKSCAPE.signal_change_theme.emit(); } } @@ -1145,10 +1114,6 @@ void InkscapePreferences::initPageUI() _("Highlights colors, some symbolic icon themes use it. Some icons changes need reload"), false); Gtk::Box *icon_buttons_def = Gtk::manage(new Gtk::Box()); - _theme_decide_color.set_label(_("Theme default colors")); - _theme_decide_color.set_tooltip_text(_("Defaul colors from theme)")); - _theme_decide_color.signal_clicked().connect(sigc::mem_fun(*this, &InkscapePreferences::themeIconsColors)); - icon_buttons_def->pack_start(_theme_decide_color, true, true, 4); resetIconsColors(); _page_theme.add_line(false, "", *icon_buttons_def, "", _("Reset theme colors, some symbolic icon themes use it. Some icons changes need reload"), diff --git a/src/ui/dialog/inkscape-preferences.h b/src/ui/dialog/inkscape-preferences.h index 592877796..c0b7f3938 100644 --- a/src/ui/dialog/inkscape-preferences.h +++ b/src/ui/dialog/inkscape-preferences.h @@ -250,7 +250,6 @@ protected: UI::Widget::PrefColorPicker _symbolic_warning_color; UI::Widget::PrefColorPicker _symbolic_error_color; UI::Widget::PrefColorPicker _symbolic_success_color; - Gtk::Button _theme_decide_color; UI::Widget::PrefCombo _misc_small_toolbar; UI::Widget::PrefCombo _misc_small_secondary; UI::Widget::PrefCombo _misc_small_tools; @@ -597,7 +596,6 @@ private: void toggleSymbolic(); void changeIconsColors(); void resetIconsColors(); - void themeIconsColors(); void changeIconsColor(guint32 /*color*/) { changeIconsColors(); } void get_highlight_colors(guint32 &colorsetbase, guint32 &colorsetsuccess, guint32 &colorsetwarning, guint32 &colorseterror); |
