summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJabiertxof <jabier.arraiza@marker.es>2019-06-20 20:10:11 +0000
committerJabier Arraiza <jabier.arraiza@marker.es>2019-07-08 21:04:15 +0000
commit5a9105c13eed05ede3936b210f2680426344a2d6 (patch)
treea46f6c9168bf99db7ae5c11d41c2ad87169a1575 /src
parentRemove clang diff (diff)
downloadinkscape-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.cpp6
-rw-r--r--src/ui/dialog/inkscape-preferences.cpp119
-rw-r--r--src/ui/dialog/inkscape-preferences.h2
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);