summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/helper/icon-loader.cpp112
-rw-r--r--src/helper/icon-loader.h22
-rw-r--r--src/inkscape.cpp18
-rw-r--r--src/live_effects/parameter/togglebutton.cpp4
-rw-r--r--src/ui/dialog/attrdialog.cpp2
-rw-r--r--src/ui/dialog/clonetiler.cpp4
-rw-r--r--src/ui/dialog/cssdialog.cpp2
-rw-r--r--src/ui/dialog/document-properties.cpp2
-rw-r--r--src/ui/dialog/inkscape-preferences.cpp53
-rw-r--r--src/ui/dialog/inkscape-preferences.h1
-rw-r--r--src/ui/dialog/layers.cpp4
-rw-r--r--src/ui/dialog/livepatheffect-editor.cpp2
-rw-r--r--src/ui/dialog/objects.cpp2
-rw-r--r--src/ui/dialog/styledialog.cpp2
-rw-r--r--src/ui/dialog/symbols.cpp3
-rw-r--r--src/ui/dialog/tags.cpp6
-rw-r--r--src/ui/interface.cpp2
-rw-r--r--src/ui/widget/color-notebook.cpp8
-rw-r--r--src/widgets/button.cpp2
-rw-r--r--src/widgets/ege-adjustment-action.cpp2
-rw-r--r--src/widgets/gradient-selector.cpp2
-rw-r--r--src/widgets/ink-action.cpp2
-rw-r--r--src/widgets/ink-radio-action.cpp2
-rw-r--r--src/widgets/ink-toggle-action.cpp5
-rw-r--r--src/widgets/paint-selector.cpp6
-rw-r--r--src/widgets/toolbox.cpp12
-rw-r--r--src/widgets/toolbox.h1
27 files changed, 152 insertions, 131 deletions
diff --git a/src/helper/icon-loader.cpp b/src/helper/icon-loader.cpp
index 7116c2eaf..39918d8ff 100644
--- a/src/helper/icon-loader.cpp
+++ b/src/helper/icon-loader.cpp
@@ -20,11 +20,14 @@
#include <gtkmm/icontheme.h>
#include <gtkmm/toolitem.h>
-Glib::RefPtr<Gdk::Pixbuf> sp_get_icon_pixbuf(Glib::ustring icon_name, gint size, bool negative)
+void sp_load_theme()
{
+ }
+
+Glib::RefPtr<Gdk::Pixbuf> sp_get_icon_pixbuf(Glib::ustring icon_name, gint size)
+{
+
using namespace Inkscape::IO::Resource;
- Inkscape::Preferences *prefs = Inkscape::Preferences::get();
- Glib::RefPtr<Gdk::Pixbuf> _icon_pixbuf;
static auto icon_theme = Gtk::IconTheme::get_default();
static bool icon_theme_set;
if (!icon_theme_set) {
@@ -32,114 +35,63 @@ Glib::RefPtr<Gdk::Pixbuf> sp_get_icon_pixbuf(Glib::ustring icon_name, gint size,
icon_theme->prepend_search_path(get_path_ustring(SYSTEM, ICONS));
icon_theme->prepend_search_path(get_path_ustring(USER, ICONS));
}
- try {
- if (prefs->getBool("/theme/symbolicIcons", false)) {
- gchar colornamed[64];
- int colorset = prefs->getInt("/theme/symbolicColor", 0x000000ff);
- // Use in case the special widgets have inverse theme background and symbolic
- if (negative) {
- colorset = colorset ^ 0xffffff00;
- }
- sp_svg_write_color(colornamed, sizeof(colornamed), colorset);
- Gdk::RGBA color;
- color.set(colornamed);
- Gtk::IconInfo iconinfo =
- icon_theme->lookup_icon(icon_name + Glib::ustring("-symbolic"), size, Gtk::ICON_LOOKUP_FORCE_SIZE);
- if (bool(iconinfo)) {
- // TODO: view if we need parametrice other colors
- bool was_symbolic = false;
- _icon_pixbuf = iconinfo.load_symbolic(color, color, color, color, was_symbolic);
- }
- else {
- _icon_pixbuf = icon_theme->load_icon(icon_name, size, Gtk::ICON_LOOKUP_FORCE_SIZE);
- }
- }
- else {
- _icon_pixbuf = icon_theme->load_icon(icon_name, size, Gtk::ICON_LOOKUP_FORCE_SIZE);
- }
- }
- catch (const Gtk::IconThemeError &e) {
- std::cout << "Icon Loader: " << e.what() << std::endl;
- }
- return _icon_pixbuf;
+ return icon_theme->load_icon(icon_name, size, Gtk::ICON_LOOKUP_FORCE_SIZE);
}
-Glib::RefPtr<Gdk::Pixbuf> sp_get_icon_pixbuf(Glib::ustring icon_name, Gtk::BuiltinIconSize icon_size, bool negative)
+Glib::RefPtr<Gdk::Pixbuf> sp_get_icon_pixbuf(Glib::ustring icon_name, Gtk::BuiltinIconSize icon_size)
{
int width, height;
Gtk::IconSize::lookup(Gtk::IconSize(icon_size), width, height);
- return sp_get_icon_pixbuf(icon_name, width, negative);
+ return sp_get_icon_pixbuf(icon_name, width);
}
-Glib::RefPtr<Gdk::Pixbuf> sp_get_icon_pixbuf(Glib::ustring icon_name, GtkIconSize icon_size, bool negative)
+Glib::RefPtr<Gdk::Pixbuf> sp_get_icon_pixbuf(Glib::ustring icon_name, GtkIconSize icon_size)
{
gint width, height;
gtk_icon_size_lookup(icon_size, &width, &height);
- return sp_get_icon_pixbuf(icon_name, width, negative);
+ return sp_get_icon_pixbuf(icon_name, width);
}
-Glib::RefPtr<Gdk::Pixbuf> sp_get_icon_pixbuf(Glib::ustring icon_name, gchar const *prefs_size, bool negative)
+Glib::RefPtr<Gdk::Pixbuf> sp_get_icon_pixbuf(Glib::ustring icon_name, gchar const *prefs_size)
{
// Load icon based in preference size defined allowed values are:
//"/toolbox/tools/small" Toolbox icon size
//"/toolbox/small" Control bar icon size
//"/toolbox/secondary" Secondary toolbar icon size
GtkIconSize icon_size = Inkscape::UI::ToolboxFactory::prefToSize(prefs_size);
- return sp_get_icon_pixbuf(icon_name, icon_size, negative);
+ return sp_get_icon_pixbuf(icon_name, icon_size);
}
-Gtk::Image *sp_get_icon_image(Glib::ustring icon_name, gint size, bool negative)
+Gtk::Image *sp_get_icon_image(Glib::ustring icon_name, gint size)
{
- auto icon = sp_get_icon_pixbuf(icon_name, size, negative);
- Gtk::Image *image = new Gtk::Image(icon);
- return image;
+
+ Gtk::Image *icon = new Gtk::Image();
+ icon->set_from_icon_name(icon_name, Gtk::IconSize(size));
+ return icon;
}
-Gtk::Image *sp_get_icon_image(Glib::ustring icon_name, Gtk::BuiltinIconSize icon_size, bool negative)
+Gtk::Image *sp_get_icon_image(Glib::ustring icon_name, Gtk::BuiltinIconSize icon_size)
{
- auto icon = sp_get_icon_pixbuf(icon_name, icon_size, negative);
- Gtk::Image *image = new Gtk::Image(icon);
- return image;
+
+ Gtk::Image *icon = new Gtk::Image();
+ icon->set_from_icon_name(icon_name, Gtk::IconSize(icon_size));
+ return icon;
}
-Gtk::Image *sp_get_icon_image(Glib::ustring icon_name, GtkIconSize icon_size, bool negative)
+Gtk::Image *sp_get_icon_image(Glib::ustring icon_name, gchar const *prefs_size)
{
- auto icon = sp_get_icon_pixbuf(icon_name, icon_size, negative);
- Gtk::Image *image = new Gtk::Image(icon);
- return image;
+
+ Gtk::IconSize icon_size = Inkscape::UI::ToolboxFactory::prefToSize_mm(prefs_size);
+ Gtk::Image *icon = new Gtk::Image();
+ icon->set_from_icon_name(icon_name, icon_size);
+ return icon;
}
-Gtk::Image *sp_get_icon_image(Glib::ustring icon_name, gchar const *prefs_size, bool negative)
-{
- auto icon = sp_get_icon_pixbuf(icon_name, prefs_size, negative);
- Gtk::Image *image = new Gtk::Image(icon);
- return image;
-}
-std::pair<Glib::RefPtr<Gtk::RadioAction>, Gdk::RGBA> sp_set_radioaction_icon(Gtk::RadioAction::Group group,
- Glib::ustring icon_name,
- Glib::ustring label,
- Glib::ustring tooltip,
- bool negative)
+GtkWidget *sp_get_icon_image(Glib::ustring icon_name, GtkIconSize icon_size)
{
- Inkscape::Preferences *prefs = Inkscape::Preferences::get();
- if (prefs->getBool("/theme/symbolicIcons", false)) {
- icon_name = icon_name + Glib::ustring("-symbolic");
- }
-
- Glib::RefPtr<Gtk::RadioAction> action =
- Gtk::RadioAction::create_with_icon_name(group, "Anonymous", icon_name.c_str(), label.c_str(), tooltip.c_str());
- Gtk::ToolItem *item = action->create_tool_item();
- Gdk::RGBA color;
- gchar colornamed[64];
- int colorset = prefs->getInt("/theme/symbolicColor", 0x000000ff);
- // Use in case the special widgets have inverse theme background and symbolic
- if (negative) {
- colorset = colorset ^ 0xffffff00;
- }
- sp_svg_write_color(colornamed, sizeof(colornamed), colorset);
- color.set(colornamed);
- return std::make_pair(action, color);
+
+ return gtk_image_new_from_icon_name(icon_name.c_str(), icon_size);
}
/*
diff --git a/src/helper/icon-loader.h b/src/helper/icon-loader.h
index 1555871c3..22658225e 100644
--- a/src/helper/icon-loader.h
+++ b/src/helper/icon-loader.h
@@ -15,19 +15,13 @@
#include <gdkmm/pixbuf.h>
#include <gtkmm/box.h>
#include <gtkmm/image.h>
-#include <gtkmm/radioaction.h>
-Glib::RefPtr<Gdk::Pixbuf> sp_get_icon_pixbuf(Glib::ustring icon_name, gint size, bool negative = false);
-Glib::RefPtr<Gdk::Pixbuf> sp_get_icon_pixbuf(Glib::ustring icon_name, Gtk::BuiltinIconSize icon_size, bool negative = false);
-Glib::RefPtr<Gdk::Pixbuf> sp_get_icon_pixbuf(Glib::ustring icon_name, GtkIconSize icon_size, bool negative = false);
-Glib::RefPtr<Gdk::Pixbuf> sp_get_icon_pixbuf(Glib::ustring icon_name, gchar const *prefs_sice, bool negative = false);
-Gtk::Image *sp_get_icon_image(Glib::ustring icon_name, gint size, bool negative = false);
-Gtk::Image *sp_get_icon_image(Glib::ustring icon_name, Gtk::BuiltinIconSize icon_size, bool negative = false);
-Gtk::Image *sp_get_icon_image(Glib::ustring icon_name, GtkIconSize icon_size, bool negative = false);
-Gtk::Image *sp_get_icon_image(Glib::ustring icon_name, gchar const *prefs_sice, bool negative = false);
-std::pair<Glib::RefPtr<Gtk::RadioAction>, Gdk::RGBA> sp_set_radioaction_icon(Gtk::RadioAction::Group group,
- Glib::ustring icon_name,
- Glib::ustring label,
- Glib::ustring tooltip,
- bool negative = false);
+Glib::RefPtr<Gdk::Pixbuf> sp_get_icon_pixbuf(Glib::ustring icon_name, gint size);
+Glib::RefPtr<Gdk::Pixbuf> sp_get_icon_pixbuf(Glib::ustring icon_name, Gtk::BuiltinIconSize icon_size);
+Glib::RefPtr<Gdk::Pixbuf> sp_get_icon_pixbuf(Glib::ustring icon_name, GtkIconSize icon_size);
+Glib::RefPtr<Gdk::Pixbuf> sp_get_icon_pixbuf(Glib::ustring icon_name, gchar const *prefs_sice);
+Gtk::Image *sp_get_icon_image(Glib::ustring icon_name, gint size);
+Gtk::Image *sp_get_icon_image(Glib::ustring icon_name, Gtk::BuiltinIconSize icon_size);
+Gtk::Image *sp_get_icon_image(Glib::ustring icon_name, gchar const *prefs_sice);
+GtkWidget *sp_get_icon_image(Glib::ustring icon_name, GtkIconSize icon_size);
#endif // SEEN_INK_STOCK_ITEMS_H
diff --git a/src/inkscape.cpp b/src/inkscape.cpp
index 027dd9dce..a0dfa0a61 100644
--- a/src/inkscape.cpp
+++ b/src/inkscape.cpp
@@ -378,15 +378,26 @@ Application::add_style_sheet()
// Add style sheet (GTK3)
auto const screen = Gdk::Screen::get_default();
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
- // symbolic
auto provider = Gtk::CssProvider::create();
Glib::ustring css_str = "";
if (prefs->getBool("/theme/symbolicIcons", false)) {
+ int colorset = prefs->getInt("/theme/symbolicColor", 0x000000ff);
gchar colornamed[64];
- sp_svg_write_color(colornamed, sizeof(colornamed), prefs->getInt("/theme/symbolicColor", 0x000000ff));
- css_str += "*{-gtk-icon-style: symbolic;}toolbutton image{ color: ";
+ sp_svg_write_color(colornamed, sizeof(colornamed), colorset);
+ // Use in case the special widgets have inverse theme background and symbolic
+ int colorset_inverse = colorset ^ 0xffffff00;
+ gchar colornamed_inverse[64];
+ sp_svg_write_color(colornamed_inverse, sizeof(colornamed_inverse), colorset_inverse);
+ css_str += "*{ -gtk-icon-style: symbolic;}";
+ css_str += "image{ color:";
css_str += colornamed;
css_str += ";}";
+ css_str += "#iconinverse{ color:";
+ css_str += colornamed_inverse;
+ css_str += ";}";
+ css_str += "#iconregular{ -gtk-icon-style: regular;}";
+ } else {
+ css_str += "*{-gtk-icon-style: regular;}";
}
GtkSettings *settings = gtk_settings_get_default();
const gchar *gtk_font_name = "";
@@ -518,6 +529,7 @@ Application::Application(const char* argv, bool use_gui) :
g_object_set(settings, "gtk-application-prefer-dark-theme",
prefs->getBool("/theme/darkTheme", gtkApplicationPreferDarkTheme), NULL);
}
+
load_menus();
Inkscape::DeviceManager::getManager().loadConfig();
}
diff --git a/src/live_effects/parameter/togglebutton.cpp b/src/live_effects/parameter/togglebutton.cpp
index faeb27a55..89a1c426a 100644
--- a/src/live_effects/parameter/togglebutton.cpp
+++ b/src/live_effects/parameter/togglebutton.cpp
@@ -113,9 +113,9 @@ ToggleButtonParam::param_newWidget()
gtk_widget_show(box_button);
GtkWidget *icon_button = nullptr;
if (!value) {
- icon_button = GTK_WIDGET(sp_get_icon_image(_icon_inactive, _icon_size));
+ icon_button = sp_get_icon_image(_icon_inactive, _icon_size);
} else {
- icon_button = GTK_WIDGET(sp_get_icon_image(_icon_active, _icon_size));
+ icon_button = sp_get_icon_image(_icon_active, _icon_size);
}
gtk_widget_show(icon_button);
gtk_box_pack_start (GTK_BOX(box_button), icon_button, false, false, 1);
diff --git a/src/ui/dialog/attrdialog.cpp b/src/ui/dialog/attrdialog.cpp
index 43322b4d3..6d40750ed 100644
--- a/src/ui/dialog/attrdialog.cpp
+++ b/src/ui/dialog/attrdialog.cpp
@@ -72,7 +72,7 @@ AttrDialog::AttrDialog():
_treeView.append_column("", *addRenderer);
Gtk::TreeViewColumn *col = _treeView.get_column(0);
if (col) {
- auto add_icon = Gtk::manage(sp_get_icon_image("list-add", GTK_ICON_SIZE_SMALL_TOOLBAR));
+ auto add_icon = Gtk::manage(sp_get_icon_image("list-add", Gtk::ICON_SIZE_SMALL_TOOLBAR));
col->set_clickable(true);
col->set_widget(*add_icon);
add_icon->set_tooltip_text(_("Add a new attribute"));
diff --git a/src/ui/dialog/clonetiler.cpp b/src/ui/dialog/clonetiler.cpp
index 5505242a7..3dc88edb0 100644
--- a/src/ui/dialog/clonetiler.cpp
+++ b/src/ui/dialog/clonetiler.cpp
@@ -2681,7 +2681,7 @@ GtkWidget * CloneTiler::table_x_y_rand(int values)
auto hb = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
gtk_box_set_homogeneous(GTK_BOX(hb), FALSE);
- GtkWidget *i = GTK_WIDGET(sp_get_icon_image(INKSCAPE_ICON("object-rows"), GTK_ICON_SIZE_MENU)->gobj());
+ GtkWidget *i = sp_get_icon_image(INKSCAPE_ICON("object-rows"), GTK_ICON_SIZE_MENU);
gtk_box_pack_start(GTK_BOX(hb), i, FALSE, FALSE, 2);
GtkWidget *l = gtk_label_new("");
@@ -2695,7 +2695,7 @@ GtkWidget * CloneTiler::table_x_y_rand(int values)
auto hb = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
gtk_box_set_homogeneous(GTK_BOX(hb), FALSE);
- GtkWidget *i = GTK_WIDGET(sp_get_icon_image(INKSCAPE_ICON("object-columns"), GTK_ICON_SIZE_MENU)->gobj());
+ GtkWidget *i = sp_get_icon_image(INKSCAPE_ICON("object-columns"), GTK_ICON_SIZE_MENU);
gtk_box_pack_start(GTK_BOX(hb), i, FALSE, FALSE, 2);
GtkWidget *l = gtk_label_new("");
diff --git a/src/ui/dialog/cssdialog.cpp b/src/ui/dialog/cssdialog.cpp
index 64868f583..95f433a30 100644
--- a/src/ui/dialog/cssdialog.cpp
+++ b/src/ui/dialog/cssdialog.cpp
@@ -78,7 +78,7 @@ CssDialog::CssDialog():
_attrCol->add_attribute(_attrRenderer->property_text(), _cssColumns._styleAttrVal);
}
- GtkWidget *child = GTK_WIDGET(sp_get_icon_image("list-add", GTK_ICON_SIZE_SMALL_TOOLBAR)->gobj());
+ GtkWidget *child = sp_get_icon_image("list-add", GTK_ICON_SIZE_SMALL_TOOLBAR);
gtk_widget_show(child);
_buttonAddProperty.add(*manage(Glib::wrap(child)));
_buttonAddProperty.set_relief(Gtk::RELIEF_NONE);
diff --git a/src/ui/dialog/document-properties.cpp b/src/ui/dialog/document-properties.cpp
index 54277234c..f81fe79be 100644
--- a/src/ui/dialog/document-properties.cpp
+++ b/src/ui/dialog/document-properties.cpp
@@ -75,7 +75,7 @@ static Inkscape::XML::NodeEventVector const _repr_events = {
static void docprops_style_button(Gtk::Button& btn, char const* iconName)
{
- GtkWidget *child = GTK_WIDGET(sp_get_icon_image(iconName, GTK_ICON_SIZE_SMALL_TOOLBAR)->gobj());
+ GtkWidget *child = sp_get_icon_image(iconName, GTK_ICON_SIZE_SMALL_TOOLBAR);
gtk_widget_show( child );
btn.add(*Gtk::manage(Glib::wrap(child)));
btn.set_relief(Gtk::RELIEF_NONE);
diff --git a/src/ui/dialog/inkscape-preferences.cpp b/src/ui/dialog/inkscape-preferences.cpp
index 5b1bcc9d0..19048bc23 100644
--- a/src/ui/dialog/inkscape-preferences.cpp
+++ b/src/ui/dialog/inkscape-preferences.cpp
@@ -29,6 +29,7 @@
#include <gtkmm/main.h>
#include <gtkmm/recentinfo.h>
#include <gtkmm/recentmanager.h>
+#include <gtkmm/cssprovider.h>
#include "cms-system.h"
#include "document.h"
@@ -55,7 +56,7 @@
#include "object/color-profile.h"
#include "style.h"
-
+#include "svg/svg-color.h"
#include "ui/interface.h"
#include "ui/widget/style-swatch.h"
@@ -635,12 +636,53 @@ void InkscapePreferences::symbolicThemeCheck()
_symbolic_color.get_parent()->hide();
}
else {
+
_symbolic_icons.get_parent()->show();
_symbolic_color.get_parent()->show();
}
}
}
+void InkscapePreferences::symbolicAddClass()
+{
+ Inkscape::Preferences *prefs = Inkscape::Preferences::get();
+ auto const screen = Gdk::Screen::get_default();
+ auto provider = Gtk::CssProvider::create();
+ Glib::ustring css_str = "";
+ if (prefs->getBool("/theme/symbolicIcons", false)) {
+ int colorset = prefs->getInt("/theme/symbolicColor", 0x000000ff);
+ gchar colornamed[64];
+ sp_svg_write_color(colornamed, sizeof(colornamed), colorset);
+ // Use in case the special widgets have inverse theme background and symbolic
+ int colorset_inverse = colorset ^ 0xffffff00;
+ gchar colornamed_inverse[64];
+ sp_svg_write_color(colornamed_inverse, sizeof(colornamed_inverse), colorset_inverse);
+ css_str += "*{ -gtk-icon-style: symbolic;}";
+ css_str += "image{ color:";
+ css_str += colornamed;
+ css_str += ";}";
+ css_str += "iconinverse{ color:";
+ css_str += colornamed_inverse;
+ css_str += ";}";
+ css_str += "iconregular{ -gtk-icon-style: regular;}";
+ } else {
+ css_str += "*{-gtk-icon-style: regular;}";
+ }
+ // From 3.16, throws an error which we must catch.
+ try {
+ provider->load_from_data(css_str);
+ }
+#if GTK_CHECK_VERSION(3, 16, 0)
+ // Gtk::CssProviderError not defined until 3.16.
+ 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());
+ }
+#else
+ catch (...) {
+ }
+#endif
+ Gtk::StyleContext::add_provider_for_screen(screen, provider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+}
void InkscapePreferences::themeChange()
{
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
@@ -874,9 +916,13 @@ void InkscapePreferences::initPageUI()
_icon_theme.signal_changed().connect(sigc::mem_fun(*this, &InkscapePreferences::symbolicThemeCheck));
}
_symbolic_icons.init(_("Use symbolic icons"), "/theme/symbolicIcons", true);
+ _symbolic_icons.signal_clicked().connect(sigc::mem_fun(*this, &InkscapePreferences::symbolicAddClass));
_page_theme.add_line(true, "", _symbolic_icons, "", "", true),
_symbolic_color.init(_("Color for symbolic icons:"), "/theme/symbolicColor", 0x000000ff);
- _page_theme.add_line(false, "", _symbolic_color, _("Color for symbolic icons"), "", false);
+ Gtk::Button * _apply_color = new Gtk::Button(_("Apply color"));
+ _apply_color->set_tooltip_text(_("Apply color to symbolic icons)"));
+ _apply_color->signal_clicked().connect(sigc::mem_fun(*this, &InkscapePreferences::symbolicAddClass));
+ _page_theme.add_line(false, "", _symbolic_color, _("Color for symbolic icons"), "", false, _apply_color);
{
Glib::ustring sizeLabels[] = { C_("Icon size", "Larger"), C_("Icon size", "Large"), C_("Icon size", "Small"),
C_("Icon size", "Smaller") };
@@ -2388,6 +2434,9 @@ void InkscapePreferences::on_pagelist_selection_changed()
Gtk::Main::iteration();
}
this->show_all_children();
+ if (prefs->getInt("/dialogs/preferences/page",0) == PREFS_PAGE_UI_THEME) {
+ symbolicThemeCheck();
+ }
}
}
diff --git a/src/ui/dialog/inkscape-preferences.h b/src/ui/dialog/inkscape-preferences.h
index f55680223..c60630721 100644
--- a/src/ui/dialog/inkscape-preferences.h
+++ b/src/ui/dialog/inkscape-preferences.h
@@ -579,6 +579,7 @@ protected:
private:
void themeChange();
void symbolicThemeCheck();
+ void symbolicAddClass();
InkscapePreferences();
InkscapePreferences(InkscapePreferences const &d);
InkscapePreferences operator=(InkscapePreferences const &d);
diff --git a/src/ui/dialog/layers.cpp b/src/ui/dialog/layers.cpp
index 2a08a4355..6b7402e47 100644
--- a/src/ui/dialog/layers.cpp
+++ b/src/ui/dialog/layers.cpp
@@ -87,7 +87,7 @@ void LayersPanel::_styleButton( Gtk::Button& btn, SPDesktop *desktop, unsigned i
bool set = false;
if ( iconName ) {
- GtkWidget *child = GTK_WIDGET(sp_get_icon_image(iconName, GTK_ICON_SIZE_SMALL_TOOLBAR)->gobj());
+ GtkWidget *child = sp_get_icon_image(iconName, GTK_ICON_SIZE_SMALL_TOOLBAR);
gtk_widget_show( child );
btn.add( *Gtk::manage(Glib::wrap(child)) );
btn.set_relief(Gtk::RELIEF_NONE);
@@ -99,7 +99,7 @@ void LayersPanel::_styleButton( Gtk::Button& btn, SPDesktop *desktop, unsigned i
if ( verb ) {
SPAction *action = verb->get_action(Inkscape::ActionContext(desktop));
if ( !set && action && action->image ) {
- GtkWidget *child = GTK_WIDGET(sp_get_icon_image(action->image, GTK_ICON_SIZE_SMALL_TOOLBAR)->gobj());
+ GtkWidget *child = sp_get_icon_image(action->image, GTK_ICON_SIZE_SMALL_TOOLBAR);
gtk_widget_show( child );
btn.add( *Gtk::manage(Glib::wrap(child)) );
set = true;
diff --git a/src/ui/dialog/livepatheffect-editor.cpp b/src/ui/dialog/livepatheffect-editor.cpp
index 4ea6b737f..200ab86b7 100644
--- a/src/ui/dialog/livepatheffect-editor.cpp
+++ b/src/ui/dialog/livepatheffect-editor.cpp
@@ -71,7 +71,7 @@ void lpeeditor_selection_modified (Inkscape::Selection * selection, guint /*flag
static void lpe_style_button(Gtk::Button& btn, char const* iconName)
{
- GtkWidget *child = GTK_WIDGET(sp_get_icon_image(iconName, GTK_ICON_SIZE_SMALL_TOOLBAR)->gobj());
+ GtkWidget *child = sp_get_icon_image(iconName, GTK_ICON_SIZE_SMALL_TOOLBAR);
gtk_widget_show( child );
btn.add(*Gtk::manage(Glib::wrap(child)));
btn.set_relief(Gtk::RELIEF_NONE);
diff --git a/src/ui/dialog/objects.cpp b/src/ui/dialog/objects.cpp
index 4d9fcc16d..d6189fcb2 100644
--- a/src/ui/dialog/objects.cpp
+++ b/src/ui/dialog/objects.cpp
@@ -231,7 +231,7 @@ public:
*/
void ObjectsPanel::_styleButton(Gtk::Button& btn, char const* iconName, char const* tooltip)
{
- GtkWidget *child = GTK_WIDGET(sp_get_icon_image(iconName, GTK_ICON_SIZE_SMALL_TOOLBAR)->gobj());
+ GtkWidget *child = sp_get_icon_image(iconName, GTK_ICON_SIZE_SMALL_TOOLBAR);
gtk_widget_show( child );
btn.add( *Gtk::manage(Glib::wrap(child)) );
btn.set_relief(Gtk::RELIEF_NONE);
diff --git a/src/ui/dialog/styledialog.cpp b/src/ui/dialog/styledialog.cpp
index bd2cacafe..c20a458b9 100644
--- a/src/ui/dialog/styledialog.cpp
+++ b/src/ui/dialog/styledialog.cpp
@@ -1522,7 +1522,7 @@ bool StyleDialog::_delProperty(GdkEventButton *event)
void StyleDialog::_styleButton(Gtk::Button& btn, char const* iconName,
char const* tooltip)
{
- GtkWidget *child = GTK_WIDGET(sp_get_icon_image(iconName, GTK_ICON_SIZE_SMALL_TOOLBAR)->gobj());
+ GtkWidget *child = sp_get_icon_image(iconName, GTK_ICON_SIZE_SMALL_TOOLBAR);
gtk_widget_show(child);
btn.add(*manage(Glib::wrap(child)));
btn.set_relief(Gtk::RELIEF_NONE);
diff --git a/src/ui/dialog/symbols.cpp b/src/ui/dialog/symbols.cpp
index 8ed9ee516..d94ebc5b7 100644
--- a/src/ui/dialog/symbols.cpp
+++ b/src/ui/dialog/symbols.cpp
@@ -222,7 +222,8 @@ SymbolsDialog::SymbolsDialog( gchar const* prefsPath ) :
overlay_opacity->set_halign(Gtk::ALIGN_START );
overlay_opacity->set_valign(Gtk::ALIGN_START );
//No results
- overlay_icon = sp_get_icon_image("searching", 110, true);
+ overlay_icon = sp_get_icon_image("searching", 110);
+ overlay_icon->set_name("iconinverse");
overlay_icon->set_halign(Gtk::ALIGN_CENTER );
overlay_icon->set_valign(Gtk::ALIGN_START );
overlay_icon->set_margin_top(45);
diff --git a/src/ui/dialog/tags.cpp b/src/ui/dialog/tags.cpp
index f2f856758..9ee6f4851 100644
--- a/src/ui/dialog/tags.cpp
+++ b/src/ui/dialog/tags.cpp
@@ -123,7 +123,7 @@ public:
void TagsPanel::_styleButton(Gtk::Button& btn, char const* iconName, char const* tooltip)
{
- GtkWidget *child = GTK_WIDGET(sp_get_icon_image(iconName, GTK_ICON_SIZE_SMALL_TOOLBAR)->gobj());
+ GtkWidget *child = sp_get_icon_image(iconName, GTK_ICON_SIZE_SMALL_TOOLBAR);
gtk_widget_show(child);
btn.add(*manage(Glib::wrap(child)));
btn.set_relief(Gtk::RELIEF_NONE);
@@ -137,7 +137,7 @@ Gtk::MenuItem& TagsPanel::_addPopupItem( SPDesktop *desktop, unsigned int code,
const char* label = nullptr;
if ( iconName ) {
- iconWidget = GTK_WIDGET(sp_get_icon_image(iconName, GTK_ICON_SIZE_MENU)->gobj());
+ iconWidget = sp_get_icon_image(iconName, GTK_ICON_SIZE_MENU);
}
if ( desktop ) {
@@ -145,7 +145,7 @@ Gtk::MenuItem& TagsPanel::_addPopupItem( SPDesktop *desktop, unsigned int code,
if ( verb ) {
SPAction *action = verb->get_action(desktop);
if ( !iconWidget && action && action->image ) {
- iconWidget = GTK_WIDGET(sp_get_icon_image(action->image, GTK_ICON_SIZE_MENU)->gobj());
+ iconWidget = sp_get_icon_image(action->image, GTK_ICON_SIZE_MENU);
}
if ( action ) {
diff --git a/src/ui/interface.cpp b/src/ui/interface.cpp
index 5c0e44b44..f81d252de 100644
--- a/src/ui/interface.cpp
+++ b/src/ui/interface.cpp
@@ -504,7 +504,7 @@ static GtkWidget *sp_ui_menu_append_item_from_verb(GtkMenu *men
// If there is an image associated with the action, then we can add it as an icon for the menu item.
if (show_icon && action->image) {
item->set_name("ImageMenuItem"); // custom name to identify our "ImageMenuItems"
- GtkWidget *icon = GTK_WIDGET(sp_get_icon_image(action->image, GTK_ICON_SIZE_MENU)->gobj());
+ GtkWidget *icon = sp_get_icon_image(action->image, GTK_ICON_SIZE_MENU);
// create a box to hold icon and label as GtkMenuItem derives from GtkBin and can only hold one child
GtkWidget *box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
diff --git a/src/ui/widget/color-notebook.cpp b/src/ui/widget/color-notebook.cpp
index 6d6fee5e0..cc6832815 100644
--- a/src/ui/widget/color-notebook.cpp
+++ b/src/ui/widget/color-notebook.cpp
@@ -159,21 +159,21 @@ void ColorNotebook::_initUI()
#if defined(HAVE_LIBLCMS1) || defined(HAVE_LIBLCMS2)
/* Create color management icons */
_box_colormanaged = gtk_event_box_new();
- GtkWidget *colormanaged = GTK_WIDGET(sp_get_icon_image("color-management", GTK_ICON_SIZE_SMALL_TOOLBAR)->gobj());
+ GtkWidget *colormanaged = sp_get_icon_image("color-management", GTK_ICON_SIZE_SMALL_TOOLBAR);
gtk_container_add(GTK_CONTAINER(_box_colormanaged), colormanaged);
gtk_widget_set_tooltip_text(_box_colormanaged, _("Color Managed"));
gtk_widget_set_sensitive(_box_colormanaged, false);
gtk_box_pack_start(GTK_BOX(rgbabox), _box_colormanaged, FALSE, FALSE, 2);
_box_outofgamut = gtk_event_box_new();
- GtkWidget *outofgamut = GTK_WIDGET(sp_get_icon_image("out-of-gamut-icon", GTK_ICON_SIZE_SMALL_TOOLBAR)->gobj());
+ GtkWidget *outofgamut = sp_get_icon_image("out-of-gamut-icon", GTK_ICON_SIZE_SMALL_TOOLBAR);
gtk_container_add(GTK_CONTAINER(_box_outofgamut), outofgamut);
gtk_widget_set_tooltip_text(_box_outofgamut, _("Out of gamut!"));
gtk_widget_set_sensitive(_box_outofgamut, false);
gtk_box_pack_start(GTK_BOX(rgbabox), _box_outofgamut, FALSE, FALSE, 2);
_box_toomuchink = gtk_event_box_new();
- GtkWidget *toomuchink = GTK_WIDGET(sp_get_icon_image("too-much-ink-icon", GTK_ICON_SIZE_SMALL_TOOLBAR)->gobj());
+ GtkWidget *toomuchink = sp_get_icon_image("too-much-ink-icon", GTK_ICON_SIZE_SMALL_TOOLBAR);
gtk_container_add(GTK_CONTAINER(_box_toomuchink), toomuchink);
gtk_widget_set_tooltip_text(_box_toomuchink, _("Too much ink!"));
gtk_widget_set_sensitive(_box_toomuchink, false);
@@ -182,7 +182,7 @@ void ColorNotebook::_initUI()
/* Color picker */
- GtkWidget *picker = GTK_WIDGET(sp_get_icon_image("color-picker", GTK_ICON_SIZE_SMALL_TOOLBAR)->gobj());
+ GtkWidget *picker = sp_get_icon_image("color-picker", GTK_ICON_SIZE_SMALL_TOOLBAR);
_btn_picker = gtk_button_new();
gtk_button_set_relief(GTK_BUTTON(_btn_picker), GTK_RELIEF_NONE);
gtk_container_add(GTK_CONTAINER(_btn_picker), picker);
diff --git a/src/widgets/button.cpp b/src/widgets/button.cpp
index de7aa8880..8933c2672 100644
--- a/src/widgets/button.cpp
+++ b/src/widgets/button.cpp
@@ -214,7 +214,7 @@ static void sp_button_set_action(SPButton *button, SPAction *action)
button->c_set_sensitive = action->signal_set_sensitive.connect(
sigc::bind<0>(sigc::ptr_fun(&gtk_widget_set_sensitive), GTK_WIDGET(button)));
if (action->image) {
- child = GTK_WIDGET(sp_get_icon_image(action->image, button->lsize)->gobj());
+ child = sp_get_icon_image(action->image, button->lsize);
gtk_widget_show(child);
gtk_container_add(GTK_CONTAINER(button), child);
}
diff --git a/src/widgets/ege-adjustment-action.cpp b/src/widgets/ege-adjustment-action.cpp
index 15647c245..155f33389 100644
--- a/src/widgets/ege-adjustment-action.cpp
+++ b/src/widgets/ege-adjustment-action.cpp
@@ -867,7 +867,7 @@ static GtkWidget* create_tool_item( GtkAction* action )
/* Use an icon if available or use short-label */
if ( act->private_data->iconId && strcmp( act->private_data->iconId, "" ) != 0 ) {
GtkWidget *icon =
- GTK_WIDGET(sp_get_icon_image(act->private_data->iconId, act->private_data->iconSize)->gobj());
+ sp_get_icon_image(act->private_data->iconId, act->private_data->iconSize);
gtk_box_pack_start( GTK_BOX(hb), icon, FALSE, FALSE, 0 );
} else {
GtkWidget* lbl = gtk_label_new( g_value_get_string( &value ) ? g_value_get_string( &value ) : "wwww" );
diff --git a/src/widgets/gradient-selector.cpp b/src/widgets/gradient-selector.cpp
index 8da832a26..85c4214a7 100644
--- a/src/widgets/gradient-selector.cpp
+++ b/src/widgets/gradient-selector.cpp
@@ -95,7 +95,7 @@ static void sp_gradient_selector_class_init(SPGradientSelectorClass *klass)
static void gradsel_style_button(GtkWidget *gtkbtn, char const *iconName)
{
Gtk::Button *btn = Glib::wrap(GTK_BUTTON(gtkbtn));
- GtkWidget *child = GTK_WIDGET(sp_get_icon_image(iconName, GTK_ICON_SIZE_SMALL_TOOLBAR)->gobj());
+ GtkWidget *child = sp_get_icon_image(iconName, GTK_ICON_SIZE_SMALL_TOOLBAR);
gtk_widget_show(child);
btn->add(*manage(Glib::wrap(child)));
btn->set_relief(Gtk::RELIEF_NONE);
diff --git a/src/widgets/ink-action.cpp b/src/widgets/ink-action.cpp
index bbdcd1c66..c879f2c11 100644
--- a/src/widgets/ink-action.cpp
+++ b/src/widgets/ink-action.cpp
@@ -171,7 +171,7 @@ static GtkWidget* ink_action_create_tool_item( GtkAction* action )
GtkToolButton* button = GTK_TOOL_BUTTON(item);
GtkWidget *child =
- GTK_WIDGET(sp_get_icon_image(act->private_data->iconId, act->private_data->iconSize)->gobj());
+ sp_get_icon_image(act->private_data->iconId, act->private_data->iconSize);
gtk_tool_button_set_icon_widget( button, child );
} else {
// For now trigger a warning but don't do anything else
diff --git a/src/widgets/ink-radio-action.cpp b/src/widgets/ink-radio-action.cpp
index 5f8e3448a..fb117594a 100644
--- a/src/widgets/ink-radio-action.cpp
+++ b/src/widgets/ink-radio-action.cpp
@@ -168,7 +168,7 @@ static GtkWidget* ink_radio_action_create_tool_item( GtkAction* action )
GtkToolButton* button = GTK_TOOL_BUTTON(item);
GtkWidget *child =
- GTK_WIDGET(sp_get_icon_image(act->private_data->iconId, act->private_data->iconSize)->gobj());
+ sp_get_icon_image(act->private_data->iconId, act->private_data->iconSize);
gtk_widget_set_hexpand(child, FALSE);
gtk_widget_set_vexpand(child, FALSE);
gtk_tool_button_set_icon_widget(button, child);
diff --git a/src/widgets/ink-toggle-action.cpp b/src/widgets/ink-toggle-action.cpp
index fdd3e2498..f7dc36450 100644
--- a/src/widgets/ink-toggle-action.cpp
+++ b/src/widgets/ink-toggle-action.cpp
@@ -188,7 +188,7 @@ static GtkWidget* ink_toggle_action_create_tool_item( GtkAction* action )
GtkToolButton* button = GTK_TOOL_BUTTON(item);
if ( act->private_data->iconId ) {
GtkWidget *child =
- GTK_WIDGET(sp_get_icon_image(act->private_data->iconId, act->private_data->iconSize)->gobj());
+ sp_get_icon_image(act->private_data->iconId, act->private_data->iconSize);
gtk_widget_set_hexpand(child, FALSE);
gtk_widget_set_vexpand(child, FALSE);
@@ -220,8 +220,7 @@ static void ink_toggle_action_update_icon( InkToggleAction* action )
if ( GTK_IS_TOOL_BUTTON(proxies->data) ) {
GtkToolButton* button = GTK_TOOL_BUTTON(proxies->data);
- GtkWidget *child = GTK_WIDGET(
- sp_get_icon_image(action->private_data->iconId, action->private_data->iconSize)->gobj());
+ GtkWidget *child = sp_get_icon_image(action->private_data->iconId, action->private_data->iconSize);
gtk_widget_set_hexpand(child, FALSE);
gtk_widget_set_vexpand(child, FALSE);
gtk_widget_show_all(child);
diff --git a/src/widgets/paint-selector.cpp b/src/widgets/paint-selector.cpp
index 51061a947..b3e4c302d 100644
--- a/src/widgets/paint-selector.cpp
+++ b/src/widgets/paint-selector.cpp
@@ -238,7 +238,7 @@ sp_paint_selector_init(SPPaintSelector *psel)
// TRANSLATORS: for info, see http://www.w3.org/TR/2000/CR-SVG-20000802/painting.html#FillRuleProperty
gtk_widget_set_tooltip_text(psel->evenodd, _("Any path self-intersections or subpaths create holes in the fill (fill-rule: evenodd)"));
g_object_set_data(G_OBJECT(psel->evenodd), "mode", GUINT_TO_POINTER(SPPaintSelector::FILLRULE_EVENODD));
- w = GTK_WIDGET(sp_get_icon_image("fill-rule-even-odd", GTK_ICON_SIZE_MENU)->gobj());
+ w = sp_get_icon_image("fill-rule-even-odd", GTK_ICON_SIZE_MENU);
gtk_container_add(GTK_CONTAINER(psel->evenodd), w);
gtk_box_pack_start(GTK_BOX(psel->fillrulebox), psel->evenodd, FALSE, FALSE, 0);
g_signal_connect(G_OBJECT(psel->evenodd), "toggled", G_CALLBACK(sp_paint_selector_fillrule_toggled), psel);
@@ -249,7 +249,7 @@ sp_paint_selector_init(SPPaintSelector *psel)
// TRANSLATORS: for info, see http://www.w3.org/TR/2000/CR-SVG-20000802/painting.html#FillRuleProperty
gtk_widget_set_tooltip_text(psel->nonzero, _("Fill is solid unless a subpath is counterdirectional (fill-rule: nonzero)"));
g_object_set_data(G_OBJECT(psel->nonzero), "mode", GUINT_TO_POINTER(SPPaintSelector::FILLRULE_NONZERO));
- w = GTK_WIDGET(sp_get_icon_image("fill-rule-nonzero", GTK_ICON_SIZE_MENU)->gobj());
+ w = sp_get_icon_image("fill-rule-nonzero", GTK_ICON_SIZE_MENU);
gtk_container_add(GTK_CONTAINER(psel->nonzero), w);
gtk_box_pack_start(GTK_BOX(psel->fillrulebox), psel->nonzero, FALSE, FALSE, 0);
g_signal_connect(G_OBJECT(psel->nonzero), "toggled", G_CALLBACK(sp_paint_selector_fillrule_toggled), psel);
@@ -318,7 +318,7 @@ static GtkWidget *sp_paint_selector_style_button_add(SPPaintSelector *psel,
gtk_toggle_button_set_mode(GTK_TOGGLE_BUTTON(b), FALSE);
g_object_set_data(G_OBJECT(b), "mode", GUINT_TO_POINTER(mode));
- w = GTK_WIDGET(sp_get_icon_image(pixmap, GTK_ICON_SIZE_BUTTON)->gobj());
+ w = sp_get_icon_image(pixmap, GTK_ICON_SIZE_BUTTON);
gtk_container_add(GTK_CONTAINER(b), w);
gtk_box_pack_start(GTK_BOX(psel->style), b, FALSE, FALSE, 0);
diff --git a/src/widgets/toolbox.cpp b/src/widgets/toolbox.cpp
index 670693bc4..41b237b29 100644
--- a/src/widgets/toolbox.cpp
+++ b/src/widgets/toolbox.cpp
@@ -137,6 +137,18 @@ GtkIconSize ToolboxFactory::prefToSize( Glib::ustring const &path, int base ) {
return sizeChoices[index];
}
+Gtk::IconSize ToolboxFactory::prefToSize_mm( Glib::ustring const &path, int base ) {
+ static Gtk::IconSize sizeChoices[] = {
+ Gtk::ICON_SIZE_LARGE_TOOLBAR,
+ Gtk::ICON_SIZE_SMALL_TOOLBAR,
+ Gtk::ICON_SIZE_MENU,
+ Gtk::ICON_SIZE_DIALOG
+ };
+ Inkscape::Preferences *prefs = Inkscape::Preferences::get();
+ int index = prefs->getIntLimited( path, base, 0, G_N_ELEMENTS(sizeChoices) );
+ return sizeChoices[index];
+}
+
static struct {
gchar const *type_name;
gchar const *data_name;
diff --git a/src/widgets/toolbox.h b/src/widgets/toolbox.h
index ff19c802c..a5cc98b5c 100644
--- a/src/widgets/toolbox.h
+++ b/src/widgets/toolbox.h
@@ -62,6 +62,7 @@ public:
static void updateSnapToolbox(SPDesktop *desktop, Inkscape::UI::Tools::ToolBase *eventcontext, GtkWidget *toolbox);
static GtkIconSize prefToSize(Glib::ustring const &path, int base = 0 );
+ static Gtk::IconSize prefToSize_mm(Glib::ustring const &path, int base = 0 );
private:
ToolboxFactory() = delete;