diff options
| -rw-r--r-- | share/icons/hicolor/symbolic/actions/dialog-align-and-distribute-symbolic.svg | 9 | ||||
| -rw-r--r-- | share/icons/nextgen/highlights.css | 8 | ||||
| -rw-r--r-- | share/icons/nextgen/scalable/actions/tool-measure.svg | 137 | ||||
| -rw-r--r-- | share/icons/nextgen/symbolic/actions/tool-measure-symbolic.svg | 1 | ||||
| -rw-r--r-- | share/icons/nextgen/symbolic/actions/tool-spray-symbolic.svg | 1 | ||||
| -rw-r--r-- | share/icons/nextgen/symbolic/actions/tool-tweak-symbolic.svg | 1 | ||||
| -rw-r--r-- | share/ui/style.css | 10 | ||||
| -rw-r--r-- | src/inkscape.cpp | 72 | ||||
| -rw-r--r-- | src/inkscape.h | 1 | ||||
| -rw-r--r-- | src/ui/dialog/inkscape-preferences.cpp | 237 | ||||
| -rw-r--r-- | src/ui/dialog/inkscape-preferences.h | 2 | ||||
| -rw-r--r-- | src/ui/icon-loader.cpp | 10 | ||||
| -rw-r--r-- | src/ui/widget/color-picker.cpp | 8 |
13 files changed, 318 insertions, 179 deletions
diff --git a/share/icons/hicolor/symbolic/actions/dialog-align-and-distribute-symbolic.svg b/share/icons/hicolor/symbolic/actions/dialog-align-and-distribute-symbolic.svg index 0f280bb38..62ea80d4e 100644 --- a/share/icons/hicolor/symbolic/actions/dialog-align-and-distribute-symbolic.svg +++ b/share/icons/hicolor/symbolic/actions/dialog-align-and-distribute-symbolic.svg @@ -3,16 +3,13 @@ <svg xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" version="1.1" id="svg1" width="16" height="16" viewBox="0 0 16 16" sodipodi:docname="dialog-align-and-distribute-symbolic.svg"><sodipodi:namedview objecttolerance="10" gridtolerance="10" guidetolerance="10" id="namedview" showgrid="true" inkscape:zoom="0.6002936" inkscape:cx="732.67439" inkscape:cy="-567.94603" inkscape:window-width="1920" inkscape:window-height="1016" inkscape:window-x="0" inkscape:window-y="27" inkscape:window-maximized="1" inkscape:current-layer="layer1"> <inkscape:grid type="xygrid" id="grid"/> </sodipodi:namedview> - <style id="style226"> + <style id="style226"> + .base {fill: #000000;} .success { fill:#4AD589; } .warning { fill:#F57900; } .error { fill:#cc0000; } </style> - <style id="style226"> - .success { fill:#009911; } - .warning { fill:#009911; } - .error { fill:#00ffff; } - </style> + <style id="highlights"> @import "../../highlights.css"; </style> <g transform="translate(-135,-807.36218)" inkscape:label="00069" id="dialog-align-and-distribute"> <path inkscape:connector-curvature="0" id="rect18735" d="m 135,807.36218 h 16 v 16 h -16 z" style="opacity:0;fill:none"/> <path inkscape:connector-curvature="0" id="rect18737" d="m 136,808.36218 h 1 v 13 h -1 z" style="opacity:1"/> diff --git a/share/icons/nextgen/highlights.css b/share/icons/nextgen/highlights.css index 1a6b42e15..e171edde0 100644 --- a/share/icons/nextgen/highlights.css +++ b/share/icons/nextgen/highlights.css @@ -1,15 +1,15 @@ .base { - fill: #FF1100; + fill: #333333; } .success { - fill: #FFCE00; + fill: rgb(213, 74, 201); } .warning { - fill: #00FF48; + fill: rgb(9, 61, 63); } .error { - fill: #FF00DB; + fill: #6dcc00; }
\ No newline at end of file diff --git a/share/icons/nextgen/scalable/actions/tool-measure.svg b/share/icons/nextgen/scalable/actions/tool-measure.svg new file mode 100644 index 000000000..1005334cc --- /dev/null +++ b/share/icons/nextgen/scalable/actions/tool-measure.svg @@ -0,0 +1,137 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="svg1" + width="16" + height="16" + viewBox="0 0 16 16" + sodipodi:docname="tool-measure-symbolic.svg" + inkscape:version="1.0alpha2 (92053aa9ea, 2019-06-13)"> + <style id="style226"> + .base {fill: #000000;} + .success { fill:#4AD589; } + .warning { fill:#F57900; } + .error { fill:#cc0000; } + </style> + <style id="highlights"> @import "../../highlights.css"; </style> + <metadata + id="metadata852"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs850" /> + <sodipodi:namedview + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + id="namedview" + showgrid="true" + inkscape:zoom="31.678384" + inkscape:cx="7.969267" + inkscape:cy="7.571171" + inkscape:window-width="1360" + inkscape:window-height="704" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:current-layer="svg1" + inkscape:document-rotation="0"> + <inkscape:grid + type="xygrid" + id="grid" /> + <style + id="style862">.success { fill:#25FF4E; } +.error { fill:#CC0000; } +.warning { fill:#FF25CE; } +</style> + </sodipodi:namedview> + <rect + style="opacity:0.60953183" + ry="0" + rx="0" + y="2" + x="8.0427818" + height="12.666823" + width="3.0714278" + id="rect878" + class="error" /> + <rect + style="opacity:0.78496546" + class="error" + id="rect856" + width="3.0714278" + height="12.666823" + x="5" + y="2" + rx="0" + ry="0" /> + <g + transform="matrix(0.666667,0,0,0.666667,-189.69806,-598.89953)" + id="tool-measure" + inkscape:label="00336"> + <path + inkscape:connector-curvature="0" + id="rect13362" + d="m 284.54709,898.3493 h 24 v 24 h -24 z" + style="opacity:0;fill:none" /> + <path + style="opacity:1" + d="m 290.6066,900.4247 v 20.9959 h 11.9246 v -17.1209 c 0,-1.8792 -1.1179,-3.875 -3.6875,-3.875 z m 2,2 h 6.1216 c 1.3125,0 1.8125,0.8107 1.8125,1.9375 v 15.0312 h -7.9341 z" + id="path13364" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="rect13370" + d="m 292.65979,903.36218 h 3.25001 c 0.277,0 0.5,0.223 0.5,0.5 0,0.277 -0.223,0.5 -0.5,0.5 h -3.25001 c -0.277,0 -0.5,-0.223 -0.5,-0.5 0,-0.277 0.223,-0.5 0.5,-0.5 z" + style="opacity:1" /> + <path + inkscape:connector-curvature="0" + id="rect13372" + d="m 292.65979,911.36218 h 3.25001 c 0.277,0 0.5,0.223 0.5,0.5 0,0.277 -0.223,0.5 -0.5,0.5 h -3.25001 c -0.277,0 -0.5,-0.223 -0.5,-0.5 0,-0.277 0.223,-0.5 0.5,-0.5 z" + style="opacity:1" /> + <path + inkscape:connector-curvature="0" + id="rect13376" + d="m 292.72229,917.36218 h 1.18751 c 0.277,0 0.5,0.223 0.5,0.5 0,0.277 -0.223,0.5 -0.5,0.5 h -1.18751 c -0.277,0 -0.5,-0.223 -0.5,-0.5 0,-0.277 0.223,-0.5 0.5,-0.5 z" + style="opacity:1" /> + <path + inkscape:connector-curvature="0" + id="rect13378" + d="m 292.72229,915.36218 h 1.18751 c 0.277,0 0.5,0.223 0.5,0.5 0,0.277 -0.223,0.5 -0.5,0.5 h -1.18751 c -0.277,0 -0.5,-0.223 -0.5,-0.5 0,-0.277 0.223,-0.5 0.5,-0.5 z" + style="opacity:1" /> + <path + inkscape:connector-curvature="0" + id="rect13380" + d="m 292.72229,913.36218 h 1.18751 c 0.277,0 0.5,0.223 0.5,0.5 0,0.277 -0.223,0.5 -0.5,0.5 h -1.18751 c -0.277,0 -0.5,-0.223 -0.5,-0.5 0,-0.277 0.223,-0.5 0.5,-0.5 z" + style="opacity:1" /> + <path + inkscape:connector-curvature="0" + id="rect13382" + d="m 292.72229,909.36218 h 1.18751 c 0.277,0 0.5,0.223 0.5,0.5 0,0.277 -0.223,0.5 -0.5,0.5 h -1.18751 c -0.277,0 -0.5,-0.223 -0.5,-0.5 0,-0.277 0.223,-0.5 0.5,-0.5 z" + style="opacity:1" /> + <path + inkscape:connector-curvature="0" + id="rect13384" + d="m 292.72229,907.36218 h 1.18751 c 0.277,0 0.5,0.223 0.5,0.5 0,0.277 -0.223,0.5 -0.5,0.5 h -1.18751 c -0.277,0 -0.5,-0.223 -0.5,-0.5 0,-0.277 0.223,-0.5 0.5,-0.5 z" + style="opacity:1" /> + <path + inkscape:connector-curvature="0" + id="rect13386" + d="m 292.72229,905.36218 h 1.18751 c 0.277,0 0.5,0.223 0.5,0.5 0,0.277 -0.223,0.5 -0.5,0.5 h -1.18751 c -0.277,0 -0.5,-0.223 -0.5,-0.5 0,-0.277 0.223,-0.5 0.5,-0.5 z" + style="opacity:1" /> + </g> +</svg> diff --git a/share/icons/nextgen/symbolic/actions/tool-measure-symbolic.svg b/share/icons/nextgen/symbolic/actions/tool-measure-symbolic.svg index 9874a1907..1005334cc 100644 --- a/share/icons/nextgen/symbolic/actions/tool-measure-symbolic.svg +++ b/share/icons/nextgen/symbolic/actions/tool-measure-symbolic.svg @@ -15,6 +15,7 @@ sodipodi:docname="tool-measure-symbolic.svg" inkscape:version="1.0alpha2 (92053aa9ea, 2019-06-13)"> <style id="style226"> + .base {fill: #000000;} .success { fill:#4AD589; } .warning { fill:#F57900; } .error { fill:#cc0000; } diff --git a/share/icons/nextgen/symbolic/actions/tool-spray-symbolic.svg b/share/icons/nextgen/symbolic/actions/tool-spray-symbolic.svg index 560753df7..28c6d443e 100644 --- a/share/icons/nextgen/symbolic/actions/tool-spray-symbolic.svg +++ b/share/icons/nextgen/symbolic/actions/tool-spray-symbolic.svg @@ -48,6 +48,7 @@ id="grid" /> </sodipodi:namedview> <style id="style226"> + .base {fill: #000000;} .success { fill:#4AD589; } .warning { fill:#F57900; } .error { fill:#cc0000; } diff --git a/share/icons/nextgen/symbolic/actions/tool-tweak-symbolic.svg b/share/icons/nextgen/symbolic/actions/tool-tweak-symbolic.svg index cca288dd2..a8e997ee3 100644 --- a/share/icons/nextgen/symbolic/actions/tool-tweak-symbolic.svg +++ b/share/icons/nextgen/symbolic/actions/tool-tweak-symbolic.svg @@ -64,6 +64,7 @@ type="xygrid" /> </sodipodi:namedview> <style id="style226"> + .base {fill: #000000;} .success { fill:#4AD589; } .warning { fill:#F57900; } .error { fill:#cc0000; } diff --git a/share/ui/style.css b/share/ui/style.css index 951ae4324..452b88917 100644 --- a/share/ui/style.css +++ b/share/ui/style.css @@ -137,6 +137,10 @@ image { * _symbolic_error_color has one of this calsses applied */ +.system_base_color { + color: @theme_fg_color; +} + .system_error_color { color: @error_color; } @@ -149,10 +153,6 @@ image { color: @success_color; } -.system_base_color { - color: @theme_fg_color; -} - GtkWidget, widget { /* font-size: 12pt; */ @@ -423,4 +423,4 @@ combobox window.popup scrolledwindow treeview separator {} #InkSpinScale spinbutton entry { padding: 0; outline-style: none; -} +}
\ No newline at end of file diff --git a/src/inkscape.cpp b/src/inkscape.cpp index c4e1f8dbe..418285c4c 100644 --- a/src/inkscape.cpp +++ b/src/inkscape.cpp @@ -503,11 +503,11 @@ Glib::ustring Application::get_symbolic_colors() 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; + guint32 colorsetbase = 0x2E3436ff; + guint32 colorsetbase_inverse = colorsetbase^ 0xffffff00; + guint32 colorsetsuccess = 0x4AD589ff; + guint32 colorsetwarning = 0xF57900ff; + guint32 colorseterror = 0xcc0000ff; colorsetbase = prefs->getInt("/theme/" + themeiconname + "/symbolicBaseColor", colorsetbase); sp_svg_write_color(colornamed, sizeof(colornamed), colorsetbase); colorsetsuccess = prefs->getInt("/theme/" + themeiconname + "/symbolicSuccessColor", colorsetsuccess); @@ -538,66 +538,6 @@ Glib::ustring Application::get_symbolic_colors() 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(); - Glib::ustring themeiconname = prefs->getString("/theme/iconTheme"); - if (themeiconname == prefs->getString("/theme/defaultIconTheme")) { - themeiconname = "hicolor"; - } - 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 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); - } - startpos = content.find(".warning"); - 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 warning_color = Gdk::RGBA(result); - SPColor warning_color_sp(warning_color.get_red(), warning_color.get_green(), warning_color.get_blue()); - colorsetwarning = warning_color_sp.toRGBA32(1); - } - startpos = content.find(".error"); - 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 error_color = Gdk::RGBA(result); - SPColor error_color_sp(error_color.get_red(), error_color.get_green(), error_color.get_blue()); - colorseterror = error_color_sp.toRGBA32(1); - } - } -} - /** * \brief Add our CSS style sheets */ @@ -654,7 +594,7 @@ Application::add_gtk_css() } Glib::ustring css_str = ""; if (prefs->getBool("/theme/symbolicIcons", false)) { - if (!prefs->getBool("/theme/symbolicIconsDefaultColor", true)) { + if (!prefs->getBool("/theme/symbolicDefaultColors", true)) { css_str = get_symbolic_colors(); } } diff --git a/src/inkscape.h b/src/inkscape.h index 7f899393f..ab6b65eac 100644 --- a/src/inkscape.h +++ b/src/inkscape.h @@ -141,7 +141,6 @@ public: void selection_set (Inkscape::Selection * selection); void readStyleSheets(bool forceupd = false); Glib::ustring get_symbolic_colors(); - 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 1068067d6..1ae581365 100644 --- a/src/ui/dialog/inkscape-preferences.cpp +++ b/src/ui/dialog/inkscape-preferences.cpp @@ -81,6 +81,9 @@ using Inkscape::UI::Widget::PrefSpinButton; using Inkscape::UI::Widget::StyleSwatch; using Inkscape::CMSSystem; +#define REMOVE_SPACES(x) \ + x.erase(0, x.find_first_not_of(' ')); \ + x.erase(x.find_last_not_of(' ') + 1); InkscapePreferences::InkscapePreferences() : UI::Widget::Panel ("/dialogs/preferences", SP_VERB_DIALOG_DISPLAY), @@ -618,20 +621,35 @@ void InkscapePreferences::symbolicThemeCheck() } if (_symbolic_icons.get_parent()) { if (!symbolic) { + // 2 first order might important + _symbolic_base_colors.set_active(true); _symbolic_icons.set_active(false); _symbolic_icons.get_parent()->hide(); - _symbolic_base_color.get_parent()->hide(); + _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_color.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(); } } } void InkscapePreferences::resetIconsColors() { Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - if (prefs->getBool("/theme/symbolicIconsDefaultColor", true)) { + if (!prefs->getBool("/theme/symbolicIcons", false)) { + _symbolic_base_colors.set_sensitive(false); + _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); + } 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(); Gdk::RGBA success_color = _symbolic_success_color.get_style_context()->get_color(); @@ -641,54 +659,142 @@ void InkscapePreferences::resetIconsColors() { 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()); - 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()); + 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()); _symbolic_base_color.setRgba32(colorsetbase); _symbolic_success_color.setRgba32(colorsetsuccess); - _symbolic_error_color.setRgba32(colorsetwarning); - _symbolic_warning_color.setRgba32(colorseterror); + _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 + "/symbolicErrorColor", colorsetwarning); - prefs->setInt("/theme/" + themeiconname + "/symbolicWaringColor", colorseterror); + 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); + } 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); + } +} + + +void InkscapePreferences::get_highlight_colors(guint32 &colorsetbase, guint32 &colorsetsuccess, guint32 &colorsetwarning, guint32 &colorseterror) +{ + using namespace Inkscape::IO::Resource; + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + Glib::ustring themeiconname = prefs->getString("/theme/iconTheme"); + if (themeiconname == prefs->getString("/theme/defaultIconTheme")) { + themeiconname = "hicolor"; + } + 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 endpos = content.find("}"); + if (startpos != std::string::npos) { + result = content.substr(startpos, endpos - startpos); + size_t startposin = result.find("fill:"); + size_t endposin = result.find(";"); + result = result.substr(startposin + 5, endposin - (startposin + 5)); + REMOVE_SPACES(result); + 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(base_color.get_alpha()); + } + content.erase(startpos, endpos - startpos + 1); + startpos = content.find(".success"); + endpos = content.find("}"); + if (startpos != std::string::npos) { + result = content.substr(startpos, endpos - startpos); + size_t startposin = result.find("fill:"); + size_t endposin = result.find(";"); + result = result.substr(startposin + 5, endposin - (startposin + 5)); + REMOVE_SPACES(result); + 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(success_color.get_alpha()); + } + content.erase(startpos, endpos - startpos + 1); + startpos = content.find(".warning"); + endpos = content.find("}"); + if (startpos != std::string::npos) { + result = content.substr(startpos, endpos - startpos); + size_t startposin = result.find("fill:"); + size_t endposin = result.find(";"); + result = result.substr(startposin + 5, endposin - (startposin + 5)); + REMOVE_SPACES(result); + Gdk::RGBA warning_color = Gdk::RGBA(result); + 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"); + endpos = content.find("}"); + if (startpos != std::string::npos) { + result = content.substr(startpos, endpos - startpos); + size_t startposin = result.find("fill:"); + size_t endposin = result.find(";"); + result = result.substr(startposin + 5, endposin - (startposin + 5)); + REMOVE_SPACES(result); + Gdk::RGBA error_color = Gdk::RGBA(result); + SPColor error_color_sp(error_color.get_red(), error_color.get_green(), error_color.get_blue()); + colorseterror = error_color_sp.toRGBA32(error_color.get_alpha()); + } } } void InkscapePreferences::themeIconsColors() { Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - if (!prefs->getBool("/theme/symbolicIconsDefaultColor", true)) { + if (!prefs->getBool("/theme/symbolicDefaultColors", 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); - INKSCAPE.get_higlight_colors(colorsetbase, colorsetsuccess, colorsetwarning, colorseterror); + 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 + "/symbolicErrorColor", colorsetwarning); - prefs->setInt("/theme/" + themeiconname + "/symbolicWaringColor", colorseterror); + 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/symbolicIconsDefaultColor", true)) { + if (!prefs->getBool("/theme/symbolicDefaultColors", 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); + 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); @@ -720,69 +826,19 @@ void InkscapePreferences::toggleSymbolic() { window->get_style_context()->add_class("symbolic"); window->get_style_context()->remove_class("regular"); } + _symbolic_base_colors.set_sensitive(true); + resetIconsColors(); } else { if (window) { window->get_style_context()->add_class("regular"); window->get_style_context()->remove_class("symbolic"); } + _symbolic_base_colors.set_active(true); + _symbolic_base_colors.set_sensitive(false); } INKSCAPE.signal_change_theme.emit(); } -/* void InkscapePreferences::symbolicCustomColorsReset() -{ - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - Glib::ustring themeiconname = prefs->getString("/theme/iconTheme"); - int colorsetbase = 0x2E3436ff; - int colorsetsuccess = 0x4AD589ff; - int colorsetwarning = 0xF57900ff; - int colorseterror = 0xcc0000ff; - 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 + "/symbolicBaseColor", colorsetbase); - prefs->setInt("/theme/" + themeiconname + "/symbolicSuccessColor", colorsetsuccess); - prefs->setInt("/theme/" + themeiconname + "/symbolicErrorColor", colorsetwarning); - prefs->setInt("/theme/" + themeiconname + "/symbolicWaringColor", colorseterror); - symbolicCustomColors(); -} - - -void InkscapePreferences::symbolicChangeCustom() -{ - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - 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 { - _symbolic_base_color.setSensitive(false); - _symbolic_success_color.setSensitive(false); - _symbolic_warning_color.setSensitive(false); - _symbolic_error_color.setSensitive(false); - } -} */ - void InkscapePreferences::themeChange() { Inkscape::Preferences *prefs = Inkscape::Preferences::get(); @@ -1043,10 +1099,10 @@ void InkscapePreferences::initPageUI() _icon_theme.signal_changed().connect(sigc::mem_fun(*this, &InkscapePreferences::symbolicThemeCheck)); } Glib::ustring themeiconname = prefs->getString("/theme/iconTheme"); - _symbolic_icons.init(_("Use symbolic icons"), "/theme/symbolicIcons", true); + _symbolic_icons.init(_("Use symbolic icons"), "/theme/symbolicIcons", false); _symbolic_icons.signal_clicked().connect(sigc::mem_fun(*this, &InkscapePreferences::toggleSymbolic)); _page_theme.add_line(true, "", _symbolic_icons, "", "", true); - _symbolic_base_colors.init(_("Use custom colors for icons"), "/theme/symbolicIconsDefaultColor", true); + _symbolic_base_colors.init(_("Use default colors for icons"), "/theme/symbolicDefaultColors", 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); @@ -1073,21 +1129,22 @@ void InkscapePreferences::initPageUI() } Gtk::Box *icon_buttons = Gtk::manage(new Gtk::Box()); 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); + _page_theme.add_line(false, "", *icon_buttons, _("Icon color"), + _("Base color for icons. Some icons changes need reload"), false); Gtk::Box *icon_buttons_hight = Gtk::manage(new Gtk::Box()); icon_buttons_hight->pack_start(_symbolic_success_color, true, true, 4); 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, "", - _("Set the predefined colors from the creator of icon set"), false); + _page_theme.add_line(false,"", *icon_buttons_hight, _("Highlights"), + _("Highlights colors, some symbolic icon themes use it. Some icons changes need reload"), 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::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); + _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"), false); { 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 7416e125a..beb49fa84 100644 --- a/src/ui/dialog/inkscape-preferences.h +++ b/src/ui/dialog/inkscape-preferences.h @@ -250,6 +250,7 @@ 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; @@ -598,6 +599,7 @@ private: void resetIconsColors(); void themeIconsColors(); void changeIconsColor(guint32 /*color*/) { changeIconsColors(); } + void get_highlight_colors(guint32 &colorsetbase, guint32 &colorsetsuccess, guint32 &colorsetwarning, guint32 &colorseterror); InkscapePreferences(); InkscapePreferences(InkscapePreferences const &d); diff --git a/src/ui/icon-loader.cpp b/src/ui/icon-loader.cpp index c308014f0..a94dd0be1 100644 --- a/src/ui/icon-loader.cpp +++ b/src/ui/icon-loader.cpp @@ -67,12 +67,12 @@ Glib::RefPtr<Gdk::Pixbuf> sp_get_icon_pixbuf(Glib::ustring icon_name, gint size) if (iconinfo && SP_ACTIVE_DESKTOP->getToplevel()) { bool was_symbolic = false; Glib::ustring css_str = ""; - if (!prefs->getBool("/theme/symbolicIconsDefaultColor", true)) { + if (!prefs->getBool("/theme/symbolicDefaultColors", 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); + 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); gchar colornamed[64]; gchar colornamedsuccess[64]; gchar colornamedwarning[64]; diff --git a/src/ui/widget/color-picker.cpp b/src/ui/widget/color-picker.cpp index 0e9984eac..4b8febce0 100644 --- a/src/ui/widget/color-picker.cpp +++ b/src/ui/widget/color-picker.cpp @@ -69,9 +69,13 @@ void ColorPicker::setupDialog(const Glib::ustring &title) } -void ColorPicker::setTransientFor(Glib::RefPtr<Gdk::Window> transientwindow) { _transientwindow = transientwindow; } +void ColorPicker::setTransientFor(Glib::RefPtr<Gdk::Window> transientwindow) { + _transientwindow = transientwindow; +} -void ColorPicker::setSensitive(bool sensitive) { _color_selector->set_sensitive(sensitive); } +void ColorPicker::setSensitive(bool sensitive) { + set_sensitive(sensitive); +} void ColorPicker::setRgba32 (guint32 rgba) { |
