summaryrefslogtreecommitdiffstats
path: root/src/ui
diff options
context:
space:
mode:
authorJabier Arraiza <jabier.arraiza@marker.es>2018-07-21 02:55:31 +0000
committerJabier Arraiza <jabier.arraiza@marker.es>2018-07-21 02:55:31 +0000
commit75d662f71d8eeb4b1c83e9bb61c1bd56f9b0e959 (patch)
treee31f9e32ffa511bb495fc75eac6484681798e0d2 /src/ui
parentCMake/MSYS2: Update for enchant-2 (diff)
downloadinkscape-75d662f71d8eeb4b1c83e9bb61c1bd56f9b0e959.tar.gz
inkscape-75d662f71d8eeb4b1c83e9bb61c1bd56f9b0e959.zip
adding gtk-theme
Diffstat (limited to 'src/ui')
-rw-r--r--src/ui/dialog/align-and-distribute.cpp3
-rw-r--r--src/ui/dialog/clonetiler.cpp25
-rw-r--r--src/ui/dialog/cssdialog.cpp3
-rw-r--r--src/ui/dialog/document-properties.cpp6
-rw-r--r--src/ui/dialog/fill-and-stroke.cpp4
-rw-r--r--src/ui/dialog/inkscape-preferences.cpp191
-rw-r--r--src/ui/dialog/inkscape-preferences.h15
-rw-r--r--src/ui/dialog/layers.cpp12
-rw-r--r--src/ui/dialog/livepatheffect-editor.cpp3
-rw-r--r--src/ui/dialog/objects.cpp9
-rw-r--r--src/ui/dialog/ocaldialogs.cpp12
-rw-r--r--src/ui/dialog/styledialog.cpp4
-rw-r--r--src/ui/dialog/symbols.cpp40
-rw-r--r--src/ui/dialog/tags.cpp16
-rw-r--r--src/ui/dialog/transformation.cpp7
-rw-r--r--src/ui/dialog/undo-history.cpp11
-rw-r--r--src/ui/dialog/xml-tree.cpp29
-rw-r--r--src/ui/interface.cpp49
-rw-r--r--src/ui/interface.h2
-rw-r--r--src/ui/view/edit-widget-interface.h3
-rw-r--r--src/ui/widget/addtoicon.cpp16
-rw-r--r--src/ui/widget/addtoicon.h1
-rw-r--r--src/ui/widget/alignment-selector.cpp4
-rw-r--r--src/ui/widget/anchor-selector.cpp7
-rw-r--r--src/ui/widget/clipmaskicon.cpp18
-rw-r--r--src/ui/widget/color-notebook.cpp10
-rw-r--r--src/ui/widget/dock-item.cpp17
-rw-r--r--src/ui/widget/imagetoggler.cpp19
-rw-r--r--src/ui/widget/insertordericon.cpp16
-rw-r--r--src/ui/widget/labelled.cpp5
-rw-r--r--src/ui/widget/layer-selector.cpp9
-rw-r--r--src/ui/widget/layertypeicon.cpp17
-rw-r--r--src/ui/widget/preferences-widget.cpp57
-rw-r--r--src/ui/widget/preferences-widget.h10
-rw-r--r--src/ui/widget/random.cpp5
35 files changed, 437 insertions, 218 deletions
diff --git a/src/ui/dialog/align-and-distribute.cpp b/src/ui/dialog/align-and-distribute.cpp
index 3d9a53951..7ad8a5e18 100644
--- a/src/ui/dialog/align-and-distribute.cpp
+++ b/src/ui/dialog/align-and-distribute.cpp
@@ -45,6 +45,7 @@
#include "object/sp-root.h"
#include "object/sp-text.h"
+#include "helper/icon-loader.h"
#include "ui/icon-names.h"
#include "ui/tool/control-point-selection.h"
#include "ui/tool/multi-path-manipulator.h"
@@ -68,7 +69,7 @@ Action::Action(Glib::ustring id,
_parent(parent)
{
Gtk::Image* pIcon = Gtk::manage(new Gtk::Image());
- pIcon->set_from_icon_name( _id, Gtk::ICON_SIZE_LARGE_TOOLBAR);
+ pIcon = sp_get_icon_image(_id, Gtk::ICON_SIZE_LARGE_TOOLBAR);
Gtk::Button * pButton = Gtk::manage(new Gtk::Button());
pButton->set_relief(Gtk::RELIEF_NONE);
pIcon->show();
diff --git a/src/ui/dialog/clonetiler.cpp b/src/ui/dialog/clonetiler.cpp
index 9a4cd92ab..3cec38022 100644
--- a/src/ui/dialog/clonetiler.cpp
+++ b/src/ui/dialog/clonetiler.cpp
@@ -43,6 +43,7 @@
#include "display/drawing-context.h"
#include "display/drawing.h"
+#include "helper/icon-loader.h"
#include "helper/window.h"
#include "object/sp-item.h"
@@ -2683,28 +2684,28 @@ 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_image_new_from_icon_name (INKSCAPE_ICON("object-rows"), GTK_ICON_SIZE_MENU);
- gtk_box_pack_start (GTK_BOX (hb), i, FALSE, FALSE, 2);
+ GtkWidget *i = GTK_WIDGET(sp_get_icon_image(INKSCAPE_ICON("object-rows"), GTK_ICON_SIZE_MENU)->gobj());
+ gtk_box_pack_start(GTK_BOX(hb), i, FALSE, FALSE, 2);
- GtkWidget *l = gtk_label_new ("");
- gtk_label_set_markup (GTK_LABEL(l), _("<small>Per row:</small>"));
- gtk_box_pack_start (GTK_BOX (hb), l, FALSE, FALSE, 2);
+ GtkWidget *l = gtk_label_new("");
+ gtk_label_set_markup(GTK_LABEL(l), _("<small>Per row:</small>"));
+ gtk_box_pack_start(GTK_BOX(hb), l, FALSE, FALSE, 2);
- table_attach (table, hb, 0, 1, 2);
+ table_attach(table, hb, 0, 1, 2);
}
{
auto hb = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
gtk_box_set_homogeneous(GTK_BOX(hb), FALSE);
- GtkWidget *i = gtk_image_new_from_icon_name (INKSCAPE_ICON("object-columns"), GTK_ICON_SIZE_MENU);
- gtk_box_pack_start (GTK_BOX (hb), i, FALSE, FALSE, 2);
+ GtkWidget *i = GTK_WIDGET(sp_get_icon_image(INKSCAPE_ICON("object-columns"), GTK_ICON_SIZE_MENU)->gobj());
+ gtk_box_pack_start(GTK_BOX(hb), i, FALSE, FALSE, 2);
- GtkWidget *l = gtk_label_new ("");
- gtk_label_set_markup (GTK_LABEL(l), _("<small>Per column:</small>"));
- gtk_box_pack_start (GTK_BOX (hb), l, FALSE, FALSE, 2);
+ GtkWidget *l = gtk_label_new("");
+ gtk_label_set_markup(GTK_LABEL(l), _("<small>Per column:</small>"));
+ gtk_box_pack_start(GTK_BOX(hb), l, FALSE, FALSE, 2);
- table_attach (table, hb, 0, 1, 3);
+ table_attach(table, hb, 0, 1, 3);
}
{
diff --git a/src/ui/dialog/cssdialog.cpp b/src/ui/dialog/cssdialog.cpp
index aa0198f27..901bcf36c 100644
--- a/src/ui/dialog/cssdialog.cpp
+++ b/src/ui/dialog/cssdialog.cpp
@@ -16,6 +16,7 @@
#include "verbs.h"
#include "selection.h"
+#include "helper/icon-loader.h"
#include "ui/widget/addtoicon.h"
#include "xml/attribute-record.h"
@@ -123,7 +124,7 @@ void CssDialog::setDesktop(SPDesktop* desktop)
void CssDialog::_styleButton(Gtk::Button& btn, char const* iconName,
char const* tooltip)
{
- GtkWidget *child = gtk_image_new_from_icon_name(iconName, GTK_ICON_SIZE_SMALL_TOOLBAR);
+ GtkWidget *child = GTK_WIDGET(sp_get_icon_image(iconName, GTK_ICON_SIZE_SMALL_TOOLBAR)->gobj());
gtk_widget_show(child);
btn.add(*manage(Glib::wrap(child)));
btn.set_relief(Gtk::RELIEF_NONE);
diff --git a/src/ui/dialog/document-properties.cpp b/src/ui/dialog/document-properties.cpp
index 0b47f9bac..39993bc09 100644
--- a/src/ui/dialog/document-properties.cpp
+++ b/src/ui/dialog/document-properties.cpp
@@ -34,6 +34,7 @@
#include "object/sp-script.h"
#include "style.h"
+#include "helper/icon-loader.h"
#include "ui/dialog/filedialog.h"
#include "ui/icon-names.h"
#include "ui/shape-editor.h"
@@ -75,7 +76,7 @@ static Inkscape::XML::NodeEventVector const _repr_events = {
static void docprops_style_button(Gtk::Button& btn, char const* iconName)
{
- GtkWidget *child = gtk_image_new_from_icon_name(iconName, GTK_ICON_SIZE_SMALL_TOOLBAR);
+ GtkWidget *child = GTK_WIDGET(sp_get_icon_image(iconName, GTK_ICON_SIZE_SMALL_TOOLBAR)->gobj());
gtk_widget_show( child );
btn.add(*Gtk::manage(Glib::wrap(child)));
btn.set_relief(Gtk::RELIEF_NONE);
@@ -1511,8 +1512,7 @@ DocumentProperties::_createPageTabLabel(const Glib::ustring& label, const char *
Gtk::HBox *_tab_label_box = Gtk::manage(new Gtk::HBox(false, 0));
_tab_label_box->set_spacing(4);
- auto img = Gtk::manage(new Gtk::Image());
- img->set_from_icon_name(label_image, Gtk::ICON_SIZE_MENU);
+ auto img = Gtk::manage(sp_get_icon_image(label_image, Gtk::ICON_SIZE_MENU));
_tab_label_box->pack_start(*img);
Gtk::Label *_tab_label = Gtk::manage(new Gtk::Label(label, true));
diff --git a/src/ui/dialog/fill-and-stroke.cpp b/src/ui/dialog/fill-and-stroke.cpp
index dd387c37e..067749fa0 100644
--- a/src/ui/dialog/fill-and-stroke.cpp
+++ b/src/ui/dialog/fill-and-stroke.cpp
@@ -26,6 +26,7 @@
#include "svg/css-ostringstream.h"
+#include "helper/icon-loader.h"
#include "ui/icon-names.h"
#include "ui/view/view-widget.h"
#include "ui/widget/notebook-page.h"
@@ -177,8 +178,7 @@ FillAndStroke::_createPageTabLabel(const Glib::ustring& label, const char *label
{
Gtk::HBox *_tab_label_box = Gtk::manage(new Gtk::HBox(false, 4));
- auto img = Gtk::manage(new Gtk::Image());
- img->set_from_icon_name(label_image, Gtk::ICON_SIZE_MENU);
+ auto img = Gtk::manage(sp_get_icon_image(label_image, Gtk::ICON_SIZE_MENU));
_tab_label_box->pack_start(*img);
Gtk::Label *_tab_label = Gtk::manage(new Gtk::Label(label, true));
diff --git a/src/ui/dialog/inkscape-preferences.cpp b/src/ui/dialog/inkscape-preferences.cpp
index 03c3587d9..5bf594c38 100644
--- a/src/ui/dialog/inkscape-preferences.cpp
+++ b/src/ui/dialog/inkscape-preferences.cpp
@@ -25,6 +25,8 @@
#include <gtkmm/main.h>
#include <gtkmm/recentmanager.h>
#include <gtkmm/recentinfo.h>
+#include <gtk/gtksettings.h>
+#include <gio/gio.h>
#include "cms-system.h"
#include "document.h"
@@ -51,6 +53,7 @@
#include "style.h"
#include "ui/widget/style-swatch.h"
+#include "ui/interface.h"
#ifdef HAVE_ASPELL
# include <aspell.h>
@@ -337,6 +340,12 @@ void InkscapePreferences::AddNewObjectsStyle(DialogPage &p, Glib::ustring const
_("Remember the style of the (first) selected object as this tool's style"));
}
+//static void changeTheme()
+//{
+// sp_ui_reload();
+//}
+
+
void InkscapePreferences::initPageTools()
{
Gtk::TreeModel::iterator iter_tools = this->AddPage(_page_tools, _("Tools"), PREFS_PAGE_TOOLS);
@@ -571,6 +580,41 @@ void InkscapePreferences::initPageTools()
#endif // WITH_LPETOOL
}
+gchar * _inkscape_get_theme_dir (void)
+{
+ const gchar *var;
+
+ var = g_getenv ("GTK_DATA_PREFIX");
+ if (var == NULL)
+ var = g_getenv ("GTK_PATH");
+ return g_build_filename (var, "share", "themes", NULL);
+}
+
+static void
+_inkscape_fill_gtk (const gchar *path,
+ GHashTable *t)
+{
+ const gchar *dir_entry;
+ GDir *dir = g_dir_open (path, 0, NULL);
+
+ if (!dir)
+ return;
+
+ while ((dir_entry = g_dir_read_name (dir)))
+ {
+ gchar *filename = g_build_filename (path, dir_entry, "gtk-3.0", "gtk.css", NULL);
+
+ if (g_file_test (filename, G_FILE_TEST_IS_REGULAR) &&
+ !g_hash_table_contains (t, dir_entry))
+ g_hash_table_add (t, g_strdup (dir_entry));
+
+ g_free (filename);
+ }
+
+ g_dir_close (dir);
+}
+
+
void InkscapePreferences::initPageUI()
{
Gtk::TreeModel::iterator iter_ui = this->AddPage(_page_ui, _("Interface"), PREFS_PAGE_UI);
@@ -654,23 +698,7 @@ void InkscapePreferences::initPageUI()
_page_ui.add_line( false, _("Language (requires restart):"), _ui_languages, "",
_("Set the language for menus and number formats"), false);
- {
- Glib::ustring sizeLabels[] = {C_("Icon size", "Larger"), C_("Icon size", "Large"), C_("Icon size", "Small"), C_("Icon size", "Smaller")};
- int sizeValues[] = {3, 0, 1, 2};
- // "Larger" is 3 to not break existing preference files. Should fix in GTK3
-
- _misc_small_tools.init( "/toolbox/tools/small", sizeLabels, sizeValues, G_N_ELEMENTS(sizeLabels), 0 );
- _page_ui.add_line( false, _("Toolbox icon size:"), _misc_small_tools, "",
- _("Set the size for the tool icons (requires restart)"), false);
-
- _misc_small_toolbar.init( "/toolbox/small", sizeLabels, sizeValues, G_N_ELEMENTS(sizeLabels), 0 );
- _page_ui.add_line( false, _("Control bar icon size:"), _misc_small_toolbar, "",
- _("Set the size for the icons in tools' control bars to use (requires restart)"), false);
-
- _misc_small_secondary.init( "/toolbox/secondary", sizeLabels, sizeValues, G_N_ELEMENTS(sizeLabels), 1 );
- _page_ui.add_line( false, _("Secondary toolbar icon size:"), _misc_small_secondary, "",
- _("Set the size for the icons in secondary toolbars to use (requires restart)"), false);
- }
+ Inkscape::Preferences *prefs = Inkscape::Preferences::get();
_ui_colorsliders_top.init( _("Work-around color sliders not drawing"), "/options/workarounds/colorsontop", false);
_page_ui.add_line( false, "", _ui_colorsliders_top, "",
@@ -717,6 +745,131 @@ void InkscapePreferences::initPageUI()
_("Selects whether the dockbar switcher will show text labels, icons, or both"), false);
}
+ //Theme
+ _page_theme.add_group_header( _("Theme changes, require restart"));
+ {
+ GHashTable *t;
+ GHashTableIter iter;
+ gchar *theme, *path;
+ gchar **builtin_themes;
+ GList *list, *l;
+ guint i;
+ const gchar * const *dirs;
+
+ t = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
+ /* Builtin themes */
+ builtin_themes = g_resources_enumerate_children ("/org/gtk/libgtk/theme", G_RESOURCE_LOOKUP_FLAGS_NONE, NULL);
+ for (i = 0; builtin_themes[i] != NULL; i++)
+ {
+ if (g_str_has_suffix (builtin_themes[i], "/"))
+ g_hash_table_add (t, g_strndup (builtin_themes[i], strlen (builtin_themes[i]) - 1));
+ }
+ g_strfreev (builtin_themes);
+
+ path = _inkscape_get_theme_dir ();
+ _inkscape_fill_gtk (path, t);
+ g_free (path);
+
+ path = g_build_filename (g_get_user_data_dir (), "themes", NULL);
+ _inkscape_fill_gtk (path, t);
+ g_free (path);
+
+ path = g_build_filename (g_get_home_dir (), ".themes", NULL);
+ _inkscape_fill_gtk (path, t);
+ g_free (path);
+
+ dirs = g_get_system_data_dirs ();
+ for (i = 0; dirs[i]; i++)
+ {
+ path = g_build_filename (dirs[i], "themes", NULL);
+ _inkscape_fill_gtk (path, t);
+ g_free (path);
+ }
+
+ list = NULL;
+ g_hash_table_iter_init (&iter, t);
+ while (g_hash_table_iter_next (&iter, (gpointer *)&theme, NULL))
+ list = g_list_insert_sorted (list, theme, (GCompareFunc)strcmp);
+
+ std::vector<Glib::ustring> labels;
+ std::vector<Glib::ustring> values;
+ for (l = list; l; l = l->next)
+ {
+ theme = (gchar *)l->data;
+ labels.push_back(Glib::ustring(theme));
+ values.push_back(Glib::ustring(theme));
+ }
+
+ g_list_free (list);
+ g_hash_table_destroy (t);
+
+// g_object_bind_property (gtk_settings_get_default (), "gtk-theme-name",
+// (gpointer *)&_theme, "active-id",
+// (GBindingFlags)(G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE));
+
+ _theme.init("/theme/theme", labels, values, "Adwaita");
+ _page_theme.add_line(false, _("Change theme:"), _theme, "", "", false);
+ }
+
+ {
+ using namespace Inkscape::IO::Resource;
+ auto files = get_filenames(UIS, {".css"}, {"style.css","dark.css","symbolic.css"});
+ std::vector<Glib::ustring> labels;
+ std::vector<Glib::ustring> values;
+ for(auto &filename: files) {
+ // from https://stackoverflow.com/questions/8520560/get-a-file-name-from-a-path#8520871
+ // Maybe we can link boost path utilities
+ // Remove directory if present.
+ // Do this before extension removal incase directory has a period character.
+ const size_t last_slash_idx = filename.find_last_of("\\/");
+ if (std::string::npos != last_slash_idx)
+ {
+ filename.erase(0, last_slash_idx + 1);
+ }
+
+ // Remove extension if present.
+ const size_t period_idx = filename.rfind('.');
+ if (std::string::npos != period_idx)
+ {
+ filename.erase(period_idx);
+ }
+ labels.push_back(filename);
+ values.push_back(filename);
+ }
+ _icon_theme.init("/theme/iconTheme", labels, values, "hicolor");
+ _page_theme.add_line(false, _("Change icon theme:"), _icon_theme, "", "", false);
+ }
+
+ _dark_theme.init(_("Use dark theme"), "/theme/darkTheme", true);
+ _page_theme.add_line(true, "", _dark_theme, "", _("Use dark theme"), true);
+ _symbolic_icons.init(_("Use symbolic icons"), "/theme/symbolicIcons", true);
+ _page_theme.add_line(true, "", _symbolic_icons, "", "", true),
+ _symbolic_color.init(_("Color for symbolic icons:"), "/theme/symbolicColor", 0x000000ff);
+ _page_theme.add_line(false, _("Color for symbolic icons:"), _symbolic_color, "", "", true);
+ {
+ Glib::ustring sizeLabels[] = {C_("Icon size", "Larger"), C_("Icon size", "Large"), C_("Icon size", "Small"), C_("Icon size", "Smaller")};
+ int sizeValues[] = {3, 0, 1, 2};
+ // "Larger" is 3 to not break existing preference files. Should fix in GTK3
+
+ _misc_small_tools.init( "/toolbox/tools/small", sizeLabels, sizeValues, G_N_ELEMENTS(sizeLabels), 0 );
+ _page_theme.add_line( false, _("Toolbox icon size:"), _misc_small_tools, "",
+ _("Set the size for the tool icons (requires restart)"), false);
+
+ _misc_small_toolbar.init( "/toolbox/small", sizeLabels, sizeValues, G_N_ELEMENTS(sizeLabels), 0 );
+ _page_theme.add_line( false, _("Control bar icon size:"), _misc_small_toolbar, "",
+ _("Set the size for the icons in tools' control bars to use (requires restart)"), false);
+
+ _misc_small_secondary.init( "/toolbox/secondary", sizeLabels, sizeValues, G_N_ELEMENTS(sizeLabels), 1 );
+ _page_theme.add_line( false, _("Secondary toolbar icon size:"), _misc_small_secondary, "",
+ _("Set the size for the icons in secondary toolbars to use (requires restart)"), false);
+ }
+ Glib::ustring const label = _("Now");
+ Glib::ustring const tooltip = _("A bit slow process");
+ _apply_theme = new UI::Widget::Button(label,tooltip);
+ _page_theme.add_line( false, _("Apply theme"), *_apply_theme, "",
+ _("Apply theme"), false);
+ _apply_theme->signal_clicked().connect(sigc::ptr_fun(sp_ui_reload));
+ this->AddPage(_page_theme, _("Theme"), iter_ui, PREFS_PAGE_UI_THEME);
// Windows
_win_save_geom.init ( _("Save and restore window geometry for each document"), "/options/savewindowgeometry/value", PREFS_WINDOW_GEOMETRY_FILE, true, nullptr);
_win_save_geom_prefs.init ( _("Remember and use last window's geometry"), "/options/savewindowgeometry/value", PREFS_WINDOW_GEOMETRY_LAST, false, &_win_save_geom);
@@ -2004,13 +2157,11 @@ void InkscapePreferences::initPageSystem()
_misc_latency_skew.init("/debug/latency/skew", 0.5, 2.0, 0.01, 0.10, 1.0, false, false);
_page_system.add_line( false, _("Latency _skew:"), _misc_latency_skew, _("(requires restart)"),
_("Factor by which the event clock is skewed from the actual time (0.9766 on some systems)"), false);
-
+ Inkscape::Preferences *prefs = Inkscape::Preferences::get();
_misc_namedicon_delay.init( _("Pre-render named icons"), "/options/iconrender/named_nodelay", false);
_page_system.add_line( false, "", _misc_namedicon_delay, "",
_("When on, named icons will be rendered before displaying the ui. This is for working around bugs in GTK+ named icon notification"), true);
- Inkscape::Preferences *prefs = Inkscape::Preferences::get();
-
_page_system.add_group_header( _("System info"));
_sys_user_config.set_text((char const *)Inkscape::IO::Resource::profile_path(""));
diff --git a/src/ui/dialog/inkscape-preferences.h b/src/ui/dialog/inkscape-preferences.h
index 3a1105b11..f705d8e29 100644
--- a/src/ui/dialog/inkscape-preferences.h
+++ b/src/ui/dialog/inkscape-preferences.h
@@ -70,6 +70,7 @@ enum {
PREFS_PAGE_TOOLS_CONNECTOR,
PREFS_PAGE_TOOLS_LPETOOL,
PREFS_PAGE_UI,
+ PREFS_PAGE_UI_THEME,
PREFS_PAGE_UI_WINDOWS,
PREFS_PAGE_UI_GRIDS,
PREFS_PAGE_UI_KEYBOARD_SHORTCUTS,
@@ -160,6 +161,7 @@ protected:
UI::Widget::DialogPage _page_eraser;
UI::Widget::DialogPage _page_ui;
+ UI::Widget::DialogPage _page_theme;
UI::Widget::DialogPage _page_windows;
UI::Widget::DialogPage _page_grids;
@@ -238,6 +240,16 @@ protected:
UI::Widget::PrefCheckButton _t_node_delete_preserves_shape;
UI::Widget::PrefColorPicker _t_node_pathoutline_color;
+ UI::Widget::PrefCombo _theme;
+ UI::Widget::PrefCombo _icon_theme;
+ UI::Widget::PrefCheckButton _dark_theme;
+ UI::Widget::PrefCheckButton _symbolic_icons;
+ UI::Widget::PrefColorPicker _symbolic_color;
+ UI::Widget::PrefCombo _misc_small_toolbar;
+ UI::Widget::PrefCombo _misc_small_secondary;
+ UI::Widget::PrefCombo _misc_small_tools;
+ UI::Widget::Button *_apply_theme;
+
UI::Widget::PrefRadioButton _win_dockable;
UI::Widget::PrefRadioButton _win_floating;
UI::Widget::PrefRadioButton _win_native;
@@ -357,9 +369,6 @@ protected:
// UI page
UI::Widget::PrefCombo _ui_languages;
- UI::Widget::PrefCombo _misc_small_toolbar;
- UI::Widget::PrefCombo _misc_small_secondary;
- UI::Widget::PrefCombo _misc_small_tools;
UI::Widget::PrefCheckButton _ui_colorsliders_top;
UI::Widget::PrefSpinButton _misc_recent;
UI::Widget::PrefCheckButton _ui_partialdynamic;
diff --git a/src/ui/dialog/layers.cpp b/src/ui/dialog/layers.cpp
index fe528d34d..bfd0e05e3 100644
--- a/src/ui/dialog/layers.cpp
+++ b/src/ui/dialog/layers.cpp
@@ -30,11 +30,13 @@
#include "verbs.h"
#include "helper/action.h"
+#include "helper/icon-loader.h"
#include "object/sp-root.h"
#include "svg/css-ostringstream.h"
+#include "helper/icon-loader.h"
#include "ui/icon-names.h"
#include "ui/tools/tool-base.h"
#include "ui/widget/imagetoggler.h"
@@ -85,7 +87,7 @@ void LayersPanel::_styleButton( Gtk::Button& btn, SPDesktop *desktop, unsigned i
bool set = false;
if ( iconName ) {
- GtkWidget *child = gtk_image_new_from_icon_name( iconName, GTK_ICON_SIZE_SMALL_TOOLBAR );
+ GtkWidget *child = GTK_WIDGET(sp_get_icon_image(iconName, GTK_ICON_SIZE_SMALL_TOOLBAR)->gobj());
gtk_widget_show( child );
btn.add( *Gtk::manage(Glib::wrap(child)) );
btn.set_relief(Gtk::RELIEF_NONE);
@@ -97,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_image_new_from_icon_name( action->image, GTK_ICON_SIZE_SMALL_TOOLBAR );
+ GtkWidget *child = GTK_WIDGET(sp_get_icon_image(action->image, GTK_ICON_SIZE_SMALL_TOOLBAR)->gobj());
gtk_widget_show( child );
btn.add( *Gtk::manage(Glib::wrap(child)) );
set = true;
@@ -121,8 +123,7 @@ Gtk::MenuItem& LayersPanel::_addPopupItem( SPDesktop *desktop, unsigned int code
const char* label = nullptr;
if ( iconName ) {
- iconWidget = Gtk::manage(new Gtk::Image());
- iconWidget->set_from_icon_name( iconName, Gtk::ICON_SIZE_MENU );
+ iconWidget = Gtk::manage(sp_get_icon_image(iconName, Gtk::ICON_SIZE_MENU));
}
if ( desktop ) {
@@ -130,8 +131,7 @@ Gtk::MenuItem& LayersPanel::_addPopupItem( SPDesktop *desktop, unsigned int code
if ( verb ) {
SPAction *action = verb->get_action(Inkscape::ActionContext(desktop));
if ( !iconWidget && action && action->image ) {
- iconWidget = Gtk::manage(new Gtk::Image());
- iconWidget->set_from_icon_name( action->image, Gtk::ICON_SIZE_MENU );
+ iconWidget = Gtk::manage(sp_get_icon_image(action->image, Gtk::ICON_SIZE_MENU));
}
if ( action ) {
diff --git a/src/ui/dialog/livepatheffect-editor.cpp b/src/ui/dialog/livepatheffect-editor.cpp
index dd019cfba..ccd71a171 100644
--- a/src/ui/dialog/livepatheffect-editor.cpp
+++ b/src/ui/dialog/livepatheffect-editor.cpp
@@ -30,6 +30,7 @@
#include "verbs.h"
#include "helper/action.h"
+#include "helper/icon-loader.h"
#include "live_effects/effect.h"
#include "live_effects/lpeobject-reference.h"
@@ -73,7 +74,7 @@ void lpeeditor_selection_modified (Inkscape::Selection * selection, guint /*flag
static void lpe_style_button(Gtk::Button& btn, char const* iconName)
{
- GtkWidget *child = gtk_image_new_from_icon_name(iconName, GTK_ICON_SIZE_SMALL_TOOLBAR);
+ GtkWidget *child = GTK_WIDGET(sp_get_icon_image(iconName, GTK_ICON_SIZE_SMALL_TOOLBAR)->gobj());
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 397f5690e..2bcde597f 100644
--- a/src/ui/dialog/objects.cpp
+++ b/src/ui/dialog/objects.cpp
@@ -33,6 +33,7 @@
#include "verbs.h"
#include "helper/action.h"
+#include "helper/icon-loader.h"
#include "object/filters/blend.h"
#include "object/filters/gaussian-blur.h"
@@ -230,7 +231,7 @@ public:
*/
void ObjectsPanel::_styleButton(Gtk::Button& btn, char const* iconName, char const* tooltip)
{
- GtkWidget *child = gtk_image_new_from_icon_name( iconName, GTK_ICON_SIZE_SMALL_TOOLBAR );
+ GtkWidget *child = GTK_WIDGET(sp_get_icon_image(iconName, GTK_ICON_SIZE_SMALL_TOOLBAR)->gobj());
gtk_widget_show( child );
btn.add( *Gtk::manage(Glib::wrap(child)) );
btn.set_relief(Gtk::RELIEF_NONE);
@@ -252,8 +253,7 @@ Gtk::MenuItem& ObjectsPanel::_addPopupItem( SPDesktop *desktop, unsigned int cod
const char* label = nullptr;
if ( iconName ) {
- iconWidget = Gtk::manage(new Gtk::Image());
- iconWidget->set_from_icon_name( iconName, Gtk::ICON_SIZE_MENU );
+ iconWidget = Gtk::manage(sp_get_icon_image(iconName, Gtk::ICON_SIZE_MENU));
}
if ( desktop ) {
@@ -261,8 +261,7 @@ Gtk::MenuItem& ObjectsPanel::_addPopupItem( SPDesktop *desktop, unsigned int cod
if ( verb ) {
SPAction *action = verb->get_action(Inkscape::ActionContext(desktop));
if ( !iconWidget && action && action->image ) {
- iconWidget = Gtk::manage(new Gtk::Image());
- iconWidget->set_from_icon_name( action->image, Gtk::ICON_SIZE_MENU );
+ iconWidget = Gtk::manage(sp_get_icon_image(action->image, Gtk::ICON_SIZE_MENU));
}
if ( action ) {
diff --git a/src/ui/dialog/ocaldialogs.cpp b/src/ui/dialog/ocaldialogs.cpp
index 2c457b6d0..ffa535b78 100644
--- a/src/ui/dialog/ocaldialogs.cpp
+++ b/src/ui/dialog/ocaldialogs.cpp
@@ -18,12 +18,13 @@
#include "ocaldialogs.h"
-#include "path-prefix.h"
#include "filedialogimpl-gtkmm.h"
-#include "ui/interface.h"
+#include "helper/icon-loader.h"
#include "inkgc/gc-core.h"
#include "io/sys.h"
+#include "path-prefix.h"
#include "preferences.h"
+#include "ui/interface.h"
#include <gtkmm/notebook.h>
#include <gtkmm/spinner.h>
@@ -462,8 +463,7 @@ bool PreviewWidget::_on_draw(const Cairo::RefPtr<Cairo::Context>& cr)
StatusWidget::StatusWidget() : Gtk::HBox(false, 6)
{
- image = new Gtk::Image();
- image->set_from_icon_name("dialog-error", Gtk::ICON_SIZE_MENU);
+ image = sp_get_icon_image("dialog-error", Gtk::ICON_SIZE_MENU);
spinner = new Gtk::Spinner();
label = new Gtk::Label();
@@ -488,7 +488,7 @@ void StatusWidget::set_info(Glib::ustring text)
spinner->hide();
image->show();
label->show();
- image->set_from_icon_name("dialog-information", Gtk::ICON_SIZE_MENU);
+ image = sp_get_icon_image("dialog-information", Gtk::ICON_SIZE_MENU);
label->set_text(text);
}
@@ -497,7 +497,7 @@ void StatusWidget::set_error(Glib::ustring text)
spinner->hide();
image->show();
label->show();
- image->set_from_icon_name("dialog-error", Gtk::ICON_SIZE_MENU);
+ image = sp_get_icon_image("dialog-error", Gtk::ICON_SIZE_MENU);
label->set_text(text);
}
diff --git a/src/ui/dialog/styledialog.cpp b/src/ui/dialog/styledialog.cpp
index 9171dd9ce..e978667ef 100644
--- a/src/ui/dialog/styledialog.cpp
+++ b/src/ui/dialog/styledialog.cpp
@@ -18,7 +18,7 @@
#include "inkscape.h"
#include "document-undo.h"
-
+#include "helper/icon-loader.h"
#include "ui/widget/addtoicon.h"
#include "xml/attribute-record.h"
@@ -1518,7 +1518,7 @@ bool StyleDialog::_delProperty(GdkEventButton *event)
void StyleDialog::_styleButton(Gtk::Button& btn, char const* iconName,
char const* tooltip)
{
- GtkWidget *child = gtk_image_new_from_icon_name(iconName, GTK_ICON_SIZE_SMALL_TOOLBAR);
+ GtkWidget *child = GTK_WIDGET(sp_get_icon_image(iconName, GTK_ICON_SIZE_SMALL_TOOLBAR)->gobj());
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 578562a79..cc5434318 100644
--- a/src/ui/dialog/symbols.cpp
+++ b/src/ui/dialog/symbols.cpp
@@ -28,6 +28,7 @@
#include "io/resource.h"
#include "display/cairo-utils.h"
+#include "helper/icon-loader.h"
#include "ui/cache/svg_preview_cache.h"
#include "ui/clipboard.h"
#include "ui/icon-names.h"
@@ -272,8 +273,7 @@ SymbolsDialog::SymbolsDialog( gchar const* prefsPath ) :
scroller->set_hexpand();
table->attach(*Gtk::manage(tools),0,row,2,1);
- auto add_symbol_image = Gtk::manage(new Gtk::Image());
- add_symbol_image->set_from_icon_name("symbol-add", Gtk::ICON_SIZE_SMALL_TOOLBAR);
+ auto add_symbol_image = Gtk::manage(sp_get_icon_image("symbol-add", Gtk::ICON_SIZE_SMALL_TOOLBAR));
add_symbol = Gtk::manage(new Gtk::Button());
add_symbol->add(*add_symbol_image);
@@ -283,8 +283,7 @@ SymbolsDialog::SymbolsDialog( gchar const* prefsPath ) :
add_symbol->signal_clicked().connect(sigc::mem_fun(*this, &SymbolsDialog::insertSymbol));
tools->pack_start(* add_symbol, Gtk::PACK_SHRINK);
- auto remove_symbolImage = Gtk::manage(new Gtk::Image());
- remove_symbolImage->set_from_icon_name("symbol-remove", Gtk::ICON_SIZE_SMALL_TOOLBAR);
+ auto remove_symbolImage = Gtk::manage(sp_get_icon_image("symbol-remove", Gtk::ICON_SIZE_SMALL_TOOLBAR));
remove_symbol = Gtk::manage(new Gtk::Button());
remove_symbol->add(*remove_symbolImage);
@@ -300,8 +299,7 @@ SymbolsDialog::SymbolsDialog( gchar const* prefsPath ) :
// Pack size (controls display area)
pack_size = 2; // Default 32px
- auto packMoreImage = Gtk::manage(new Gtk::Image());
- packMoreImage->set_from_icon_name("pack-more", Gtk::ICON_SIZE_SMALL_TOOLBAR);
+ auto packMoreImage = Gtk::manage(sp_get_icon_image("pack-more", Gtk::ICON_SIZE_SMALL_TOOLBAR));
more = Gtk::manage(new Gtk::Button());
more->add(*packMoreImage);
@@ -311,8 +309,7 @@ SymbolsDialog::SymbolsDialog( gchar const* prefsPath ) :
more->signal_clicked().connect(sigc::mem_fun(*this, &SymbolsDialog::packmore));
tools->pack_start(* more, Gtk::PACK_SHRINK);
- auto packLessImage = Gtk::manage(new Gtk::Image());
- packLessImage->set_from_icon_name("pack-less", Gtk::ICON_SIZE_SMALL_TOOLBAR);
+ auto packLessImage = Gtk::manage(sp_get_icon_image("pack-less", Gtk::ICON_SIZE_SMALL_TOOLBAR));
fewer = Gtk::manage(new Gtk::Button());
fewer->add(*packLessImage);
@@ -323,8 +320,7 @@ SymbolsDialog::SymbolsDialog( gchar const* prefsPath ) :
tools->pack_start(* fewer, Gtk::PACK_SHRINK);
// Toggle scale to fit on/off
- auto fit_symbolImage = Gtk::manage(new Gtk::Image());
- fit_symbolImage->set_from_icon_name("symbol-fit", Gtk::ICON_SIZE_SMALL_TOOLBAR);
+ auto fit_symbolImage = Gtk::manage(sp_get_icon_image("symbol-fit", Gtk::ICON_SIZE_SMALL_TOOLBAR));
fit_symbol = Gtk::manage(new Gtk::ToggleButton());
fit_symbol->add(*fit_symbolImage);
@@ -337,8 +333,7 @@ SymbolsDialog::SymbolsDialog( gchar const* prefsPath ) :
// Render size (scales symbols within display area)
scale_factor = 0; // Default 1:1 * pack_size/pack_size default
- auto zoom_outImage = Gtk::manage(new Gtk::Image());
- zoom_outImage->set_from_icon_name("symbol-smaller", Gtk::ICON_SIZE_SMALL_TOOLBAR);
+ auto zoom_outImage = Gtk::manage(sp_get_icon_image("symbol-smaller", Gtk::ICON_SIZE_SMALL_TOOLBAR));
zoom_out = Gtk::manage(new Gtk::Button());
zoom_out->add(*zoom_outImage);
@@ -349,8 +344,7 @@ SymbolsDialog::SymbolsDialog( gchar const* prefsPath ) :
zoom_out->signal_clicked().connect(sigc::mem_fun(*this, &SymbolsDialog::zoomout));
tools->pack_start(* zoom_out, Gtk::PACK_SHRINK);
- auto zoom_inImage = Gtk::manage(new Gtk::Image());
- zoom_inImage->set_from_icon_name("symbol-bigger", Gtk::ICON_SIZE_SMALL_TOOLBAR);
+ auto zoom_inImage = Gtk::manage(sp_get_icon_image("symbol-bigger", Gtk::ICON_SIZE_SMALL_TOOLBAR));
zoom_in = Gtk::manage(new Gtk::Button());
zoom_in->add(*zoom_inImage);
@@ -471,20 +465,24 @@ void SymbolsDialog::rebuild() {
void SymbolsDialog::showOverlay() {
#if GTKMM_CHECK_VERSION(3,14,0)
Glib::ustring current = Glib::Markup::escape_text(symbol_set->get_active_text());
- overlay_icon->set_from_icon_name("none", iconsize);
+ overlay_icon = sp_get_icon_image("none", iconsize);
if (current == ALLDOCS && !l.size())
{
if (!all_docs_processed ) {
- overlay_icon->set_from_icon_name("searching", iconsize);
- overlay_title->set_markup(Glib::ustring("<span foreground=\"#333333\" size=\"large\">") + Glib::ustring(_("Search in all symbol sets...")) + Glib::ustring("</span>"));
- overlay_desc->set_markup(Glib::ustring("<span foreground=\"#333333\" size=\"small\">") + Glib::ustring(_("First search can be slow.")) + Glib::ustring("</span>"));
+ overlay_icon = sp_get_icon_image("searching", iconsize);
+ overlay_title->set_markup(Glib::ustring("<span foreground=\"#333333\" size=\"large\">") +
+ Glib::ustring(_("Search in all symbol sets...")) + Glib::ustring("</span>"));
+ overlay_desc->set_markup(Glib::ustring("<span foreground=\"#333333\" size=\"small\">") +
+ Glib::ustring(_("First search can be slow.")) + Glib::ustring("</span>"));
} else if (!icons_found && !search_str.empty()) {
overlay_title->set_markup(Glib::ustring("<span foreground=\"#333333\" size=\"large\">") + Glib::ustring(_("No results found")) + Glib::ustring("</span>"));
overlay_desc->set_markup(Glib::ustring("<span foreground=\"#333333\" size=\"small\">") + Glib::ustring(_("Try a different search term.")) + Glib::ustring("</span>"));
} else {
- overlay_icon->set_from_icon_name("searching", iconsize);
- overlay_title->set_markup(Glib::ustring("<span foreground=\"#333333\" size=\"large\">") + Glib::ustring(_("Search in all symbol sets...")) + Glib::ustring("</span>"));
- overlay_desc->set_markup(Glib::ustring("<span foreground=\"#333333\" size=\"small\">") + Glib::ustring("</span>"));
+ overlay_icon = sp_get_icon_image("searching", iconsize);
+ overlay_title->set_markup(Glib::ustring("<span foreground=\"#333333\" size=\"large\">") +
+ Glib::ustring(_("Search in all symbol sets...")) + Glib::ustring("</span>"));
+ overlay_desc->set_markup(Glib::ustring("<span foreground=\"#333333\" size=\"small\">") +
+ Glib::ustring("</span>"));
}
} else if (!number_symbols && (current != CURRENTDOC || !search_str.empty())) {
overlay_title->set_markup(Glib::ustring("<span foreground=\"#333333\" size=\"large\">") + Glib::ustring(_("No results found")) + Glib::ustring("</span>"));
diff --git a/src/ui/dialog/tags.cpp b/src/ui/dialog/tags.cpp
index ed8c00c61..d27a320a7 100644
--- a/src/ui/dialog/tags.cpp
+++ b/src/ui/dialog/tags.cpp
@@ -18,21 +18,23 @@
#include <gtkmm/imagemenuitem.h>
#include <glibmm/main.h>
-#include "desktop.h"
#include "desktop-style.h"
-#include "document.h"
+#include "desktop.h"
#include "document-undo.h"
+#include "document.h"
#include "helper/action.h"
+#include "helper/icon-loader.h"
#include "inkscape.h"
#include "layer-fns.h"
#include "layer-manager.h"
+#include "helper/icon-loader.h"
#include "svg/css-ostringstream.h"
-#include "ui/widget/layertypeicon.h"
+#include "ui/tools/tool-base.h" //"event-context.h"
#include "ui/widget/addtoicon.h"
+#include "ui/widget/layertypeicon.h"
#include "verbs.h"
#include "xml/node-observer.h"
-#include "ui/tools/tool-base.h" //"event-context.h"
//#include "dialogs/dialog-events.h"
#include "ui/widget/color-notebook.h"
#include "filter-chemistry.h"
@@ -125,7 +127,7 @@ public:
void TagsPanel::_styleButton(Gtk::Button& btn, char const* iconName, char const* tooltip)
{
- GtkWidget *child = gtk_image_new_from_icon_name(iconName, GTK_ICON_SIZE_SMALL_TOOLBAR);
+ GtkWidget *child = GTK_WIDGET(sp_get_icon_image(iconName, GTK_ICON_SIZE_SMALL_TOOLBAR)->gobj());
gtk_widget_show(child);
btn.add(*manage(Glib::wrap(child)));
btn.set_relief(Gtk::RELIEF_NONE);
@@ -139,7 +141,7 @@ Gtk::MenuItem& TagsPanel::_addPopupItem( SPDesktop *desktop, unsigned int code,
const char* label = nullptr;
if ( iconName ) {
- iconWidget = gtk_image_new_from_icon_name( iconName, GTK_ICON_SIZE_MENU );
+ iconWidget = GTK_WIDGET(sp_get_icon_image(iconName, GTK_ICON_SIZE_MENU)->gobj());
}
if ( desktop ) {
@@ -147,7 +149,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_image_new_from_icon_name( action->image, GTK_ICON_SIZE_MENU );
+ iconWidget = GTK_WIDGET(sp_get_icon_image(action->image, GTK_ICON_SIZE_MENU)->gobj());
}
if ( action ) {
diff --git a/src/ui/dialog/transformation.cpp b/src/ui/dialog/transformation.cpp
index 9a0e4ddf4..14ddc9044 100644
--- a/src/ui/dialog/transformation.cpp
+++ b/src/ui/dialog/transformation.cpp
@@ -29,6 +29,7 @@
#include "transformation.h"
#include "verbs.h"
+#include "helper/icon-loader.h"
#include "object/sp-item-transform.h"
#include "object/sp-namedview.h"
@@ -280,16 +281,14 @@ void Transformation::layoutPageRotate()
_scalar_rotate.setDigits(3);
_scalar_rotate.setIncrements(0.1, 1.0);
- auto object_rotate_left_icon = Gtk::manage(new Gtk::Image());
- object_rotate_left_icon->set_from_icon_name("object-rotate-left", Gtk::ICON_SIZE_SMALL_TOOLBAR);
+ auto object_rotate_left_icon = Gtk::manage(sp_get_icon_image("object-rotate-left", Gtk::ICON_SIZE_SMALL_TOOLBAR));
_counterclockwise_rotate.add(*object_rotate_left_icon);
_counterclockwise_rotate.set_mode(false);
_counterclockwise_rotate.set_relief(Gtk::RELIEF_NONE);
_counterclockwise_rotate.set_tooltip_text(_("Rotate in a counterclockwise direction"));
- auto object_rotate_right_icon = Gtk::manage(new Gtk::Image());
- object_rotate_right_icon->set_from_icon_name("object-rotate-right", Gtk::ICON_SIZE_SMALL_TOOLBAR);
+ auto object_rotate_right_icon = Gtk::manage(sp_get_icon_image("object-rotate-right", Gtk::ICON_SIZE_SMALL_TOOLBAR));
_clockwise_rotate.add(*object_rotate_right_icon);
_clockwise_rotate.set_mode(false);
diff --git a/src/ui/dialog/undo-history.cpp b/src/ui/dialog/undo-history.cpp
index e95724435..c480624fd 100644
--- a/src/ui/dialog/undo-history.cpp
+++ b/src/ui/dialog/undo-history.cpp
@@ -17,14 +17,14 @@
#include "undo-history.h"
-#include "document.h"
#include "document-undo.h"
+#include "document.h"
+#include "helper/icon-loader.h"
#include "inkscape.h"
-
#include "util/signal-blocker.h"
#include "desktop.h"
-#include <gtkmm/icontheme.h>
+
namespace Inkscape {
namespace UI {
@@ -45,14 +45,13 @@ void CellRendererSPIcon::render_vfunc(const Cairo::RefPtr<Cairo::Context>& cr,
Glib::ustring image_name = Inkscape::Verb::get(_property_event_type)->get_image();
Gtk::Image* icon = Gtk::manage(new Gtk::Image());
- icon->set_from_icon_name(image_name, Gtk::ICON_SIZE_MENU);
+ icon = sp_get_icon_image(image_name, Gtk::ICON_SIZE_MENU);
if (icon) {
// check icon type (inkscape, gtk, none)
if ( GTK_IS_IMAGE(icon->gobj()) ) {
- auto icon_theme = Gtk::IconTheme::get_default();
- _property_icon = icon_theme->load_icon(image_name, 16);
+ _property_icon = sp_get_icon_pixbuf(image_name, 16);
} else {
delete icon;
return;
diff --git a/src/ui/dialog/xml-tree.cpp b/src/ui/dialog/xml-tree.cpp
index c7c5424eb..647e0beed 100644
--- a/src/ui/dialog/xml-tree.cpp
+++ b/src/ui/dialog/xml-tree.cpp
@@ -35,6 +35,7 @@
#include "object/sp-root.h"
#include "object/sp-string.h"
+#include "helper/icon-loader.h"
#include "ui/dialog-events.h"
#include "ui/icon-names.h"
#include "ui/interface.h"
@@ -113,24 +114,21 @@ XmlTree::XmlTree() :
tree_toolbar.set_toolbar_style(Gtk::TOOLBAR_ICONS);
- auto xml_element_new_icon = Gtk::manage(new Gtk::Image());
- xml_element_new_icon->set_from_icon_name("xml-element-new", Gtk::ICON_SIZE_LARGE_TOOLBAR);
+ auto xml_element_new_icon = Gtk::manage(sp_get_icon_image("xml-element-new", Gtk::ICON_SIZE_LARGE_TOOLBAR));
xml_element_new_button.set_icon_widget(*xml_element_new_icon);
xml_element_new_button.set_tooltip_text(_("New element node"));
xml_element_new_button.set_sensitive(false);
tree_toolbar.add(xml_element_new_button);
- auto xml_text_new_icon = Gtk::manage(new Gtk::Image());
- xml_text_new_icon->set_from_icon_name("xml-text-new", Gtk::ICON_SIZE_LARGE_TOOLBAR);
+ auto xml_text_new_icon = Gtk::manage(sp_get_icon_image("xml-text-new", Gtk::ICON_SIZE_LARGE_TOOLBAR));
xml_text_new_button.set_icon_widget(*xml_text_new_icon);
xml_text_new_button.set_tooltip_text(_("New text node"));
xml_text_new_button.set_sensitive(false);
tree_toolbar.add(xml_text_new_button);
- auto xml_node_duplicate_icon = Gtk::manage(new Gtk::Image());
- xml_node_duplicate_icon->set_from_icon_name("xml-node-duplicate", Gtk::ICON_SIZE_LARGE_TOOLBAR);
+ auto xml_node_duplicate_icon = Gtk::manage(sp_get_icon_image("xml-node-duplicate", Gtk::ICON_SIZE_LARGE_TOOLBAR));
xml_node_duplicate_button.set_icon_widget(*xml_node_duplicate_icon);
xml_node_duplicate_button.set_tooltip_text(_("Duplicate node"));
@@ -139,8 +137,7 @@ XmlTree::XmlTree() :
tree_toolbar.add(separator);
- auto xml_node_delete_icon = Gtk::manage(new Gtk::Image());
- xml_node_delete_icon->set_from_icon_name("xml-node-delete", Gtk::ICON_SIZE_LARGE_TOOLBAR);
+ auto xml_node_delete_icon = Gtk::manage(sp_get_icon_image("xml-node-delete", Gtk::ICON_SIZE_LARGE_TOOLBAR));
xml_node_delete_button.set_icon_widget(*xml_node_delete_icon);
xml_node_delete_button.set_tooltip_text(Q_("nodeAsInXMLdialogTooltip|Delete node"));
@@ -149,8 +146,7 @@ XmlTree::XmlTree() :
tree_toolbar.add(separator2);
- auto format_indent_less_icon = Gtk::manage(new Gtk::Image());
- format_indent_less_icon->set_from_icon_name("format-indent-less", Gtk::ICON_SIZE_LARGE_TOOLBAR);
+ auto format_indent_less_icon = Gtk::manage(sp_get_icon_image("format-indent-less", Gtk::ICON_SIZE_LARGE_TOOLBAR));
unindent_node_button.set_icon_widget(*format_indent_less_icon);
unindent_node_button.set_label(_("Unindent node"));
@@ -158,8 +154,7 @@ XmlTree::XmlTree() :
unindent_node_button.set_sensitive(false);
tree_toolbar.add(unindent_node_button);
- auto format_indent_more_icon = Gtk::manage(new Gtk::Image());
- format_indent_more_icon->set_from_icon_name("format-indent-more", Gtk::ICON_SIZE_LARGE_TOOLBAR);
+ auto format_indent_more_icon = Gtk::manage(sp_get_icon_image("format-indent-more", Gtk::ICON_SIZE_LARGE_TOOLBAR));
indent_node_button.set_icon_widget(*format_indent_more_icon);
indent_node_button.set_label(_("Indent node"));
@@ -167,8 +162,7 @@ XmlTree::XmlTree() :
indent_node_button.set_sensitive(false);
tree_toolbar.add(indent_node_button);
- auto go_up_icon = Gtk::manage(new Gtk::Image());
- go_up_icon->set_from_icon_name("go-up", Gtk::ICON_SIZE_LARGE_TOOLBAR);
+ auto go_up_icon = Gtk::manage(sp_get_icon_image("go-up", Gtk::ICON_SIZE_LARGE_TOOLBAR));
raise_node_button.set_icon_widget(*go_up_icon);
raise_node_button.set_label(_("Raise node"));
@@ -176,8 +170,7 @@ XmlTree::XmlTree() :
raise_node_button.set_sensitive(false);
tree_toolbar.add(raise_node_button);
- auto go_down_icon = Gtk::manage(new Gtk::Image());
- go_down_icon->set_from_icon_name("go-down", Gtk::ICON_SIZE_LARGE_TOOLBAR);
+ auto go_down_icon = Gtk::manage(sp_get_icon_image("go-down", Gtk::ICON_SIZE_LARGE_TOOLBAR));
lower_node_button.set_icon_widget(*go_down_icon);
lower_node_button.set_label(_("Lower node"));
@@ -204,8 +197,8 @@ XmlTree::XmlTree() :
attr_toolbar.set_toolbar_style(Gtk::TOOLBAR_ICONS);
- auto xml_attribute_delete_icon = Gtk::manage(new Gtk::Image());
- xml_attribute_delete_icon->set_from_icon_name("xml-attribute-delete", Gtk::ICON_SIZE_LARGE_TOOLBAR);
+ auto xml_attribute_delete_icon =
+ Gtk::manage(sp_get_icon_image("xml-attribute-delete", Gtk::ICON_SIZE_LARGE_TOOLBAR));
xml_attribute_delete_button.set_icon_widget(*xml_attribute_delete_icon);
xml_attribute_delete_button.set_tooltip_text(_("Delete attribute"));
xml_attribute_delete_button.set_sensitive(false);
diff --git a/src/ui/interface.cpp b/src/ui/interface.cpp
index 7e64e876b..9f5d2d38c 100644
--- a/src/ui/interface.cpp
+++ b/src/ui/interface.cpp
@@ -51,6 +51,7 @@
#include "extension/input.h"
#include "helper/action.h"
+#include "helper/icon-loader.h"
#include "helper/window.h"
#include "io/sys.h"
@@ -262,6 +263,52 @@ sp_ui_new_view()
sp_namedview_update_layers_from_document(static_cast<SPDesktop*>(dtw->view));
}
+void
+sp_ui_reload()
+{
+
+ Inkscape::Preferences *prefs = Inkscape::Preferences::get();
+ int window_geometry = prefs->getInt("/options/savewindowgeometry/value", PREFS_WINDOW_GEOMETRY_NONE);
+ g_object_set (gtk_settings_get_default (), "gtk-theme-name", prefs->getString("/theme/theme").c_str(), NULL);
+ g_object_set (gtk_settings_get_default (), "gtk-application-prefer-dark-theme", prefs->getBool("/theme/darkTheme", false), NULL);
+ prefs->setInt("/options/savewindowgeometry/value", PREFS_WINDOW_GEOMETRY_LAST);
+ prefs->save();
+ std::list<SPDesktop *> desktops;
+ INKSCAPE.get_all_desktops(desktops);
+ std::list<SPDesktop *>::iterator i = desktops.begin();
+ while (i != desktops.end())
+ {
+ SPDesktop * dt = *i;
+ if (dt == nullptr) {
+ ++i;
+ continue;
+ }
+ dt->storeDesktopPosition();
+
+ SPDocument *document;
+ SPViewWidget *dtw;
+
+ document = dt->getDocument();
+ if (!document) {
+ ++i;
+ continue;
+ }
+
+ dtw = sp_desktop_widget_new(sp_document_namedview(document, nullptr));
+ if (dtw == nullptr) {
+ ++i;
+ continue;
+ }
+ sp_create_window(dtw, TRUE);
+ sp_namedview_window_from_document(static_cast<SPDesktop*>(dtw->view));
+ sp_namedview_update_layers_from_document(static_cast<SPDesktop*>(dtw->view));
+ dt->destroyWidget();
+ i++;
+ }
+ INKSCAPE.add_style_sheet();
+ prefs->setInt("/options/savewindowgeometry/value", window_geometry);
+}
+
void sp_ui_new_view_preview()
{
SPDocument *document = SP_ACTIVE_DOCUMENT;
@@ -467,7 +514,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 not, give the label a bit more space
if(show_icon && action->image) {
- icon = gtk_image_new_from_icon_name(action->image, GTK_ICON_SIZE_MENU);
+ icon = GTK_WIDGET(sp_get_icon_image(action->image, GTK_ICON_SIZE_MENU)->gobj());
}
else {
icon = gtk_label_new(nullptr); // A fake icon just to act as a placeholder
diff --git a/src/ui/interface.h b/src/ui/interface.h
index 83788ca1b..90d86bea7 100644
--- a/src/ui/interface.h
+++ b/src/ui/interface.h
@@ -45,6 +45,8 @@ void sp_ui_close_view (GtkWidget *widget);
void sp_ui_new_view ();
+void sp_ui_reload ();
+
/**
* @todo TODO: not yet working. To be re-enabled (by adding to menu) once it works.
*/
diff --git a/src/ui/view/edit-widget-interface.h b/src/ui/view/edit-widget-interface.h
index f2e34b534..7004fea95 100644
--- a/src/ui/view/edit-widget-interface.h
+++ b/src/ui/view/edit-widget-interface.h
@@ -83,6 +83,9 @@ struct EditWidgetInterface
virtual void destroy() = 0;
+ /// Store window position to prefs
+ virtual void storeDesktopPosition() = 0;
+
/// Queue a redraw request with the canvas
virtual void requestCanvasUpdate() = 0;
diff --git a/src/ui/widget/addtoicon.cpp b/src/ui/widget/addtoicon.cpp
index e5119fc60..4542333b5 100644
--- a/src/ui/widget/addtoicon.cpp
+++ b/src/ui/widget/addtoicon.cpp
@@ -14,11 +14,10 @@
#include "ui/widget/addtoicon.h"
-#include <gtkmm/icontheme.h>
-
-#include "widgets/toolbox.h"
-#include "ui/icon-names.h"
+#include "helper/icon-loader.h"
#include "layertypeicon.h"
+#include "ui/icon-names.h"
+#include "widgets/toolbox.h"
namespace Inkscape {
namespace UI {
@@ -33,9 +32,6 @@ AddToIcon::AddToIcon() :
{
property_mode() = Gtk::CELL_RENDERER_MODE_ACTIVATABLE;
- gint width, height;
- gtk_icon_size_lookup(GTK_ICON_SIZE_BUTTON, &width, &height);
- phys = width; // Assumes that we have a square icon?
// Glib::RefPtr<Gtk::IconTheme> icon_theme = Gtk::IconTheme::get_default();
//
@@ -103,11 +99,7 @@ bool AddToIcon::activate_vfunc(GdkEvent* /*event*/,
void AddToIcon::set_pixbuf()
{
bool active = property_active().get_value();
-
- auto icon_theme = Gtk::IconTheme::get_default();
-
- property_pixbuf() = icon_theme->load_icon(active ? "list-add" : "edit-delete",
- phys);
+ property_pixbuf() = sp_get_icon_pixbuf((active ? "list-add" : "edit-delete"), GTK_ICON_SIZE_BUTTON);
}
diff --git a/src/ui/widget/addtoicon.h b/src/ui/widget/addtoicon.h
index 60c773e84..c17ae907a 100644
--- a/src/ui/widget/addtoicon.h
+++ b/src/ui/widget/addtoicon.h
@@ -54,7 +54,6 @@ protected:
private:
- int phys; ///< Physical size of the icon (px)
// Glib::ustring _pixAddName;
diff --git a/src/ui/widget/alignment-selector.cpp b/src/ui/widget/alignment-selector.cpp
index c6c95f097..9256a08bd 100644
--- a/src/ui/widget/alignment-selector.cpp
+++ b/src/ui/widget/alignment-selector.cpp
@@ -5,6 +5,7 @@
*/
#include "ui/widget/alignment-selector.h"
+#include "helper/icon-loader.h"
#include "ui/icon-names.h"
#include <gtkmm/image.h>
@@ -14,8 +15,7 @@ namespace UI {
namespace Widget {
void AlignmentSelector::setupButton(const Glib::ustring& icon, Gtk::Button& button) {
- Gtk::Image* buttonIcon = Gtk::manage(new Gtk::Image());
- buttonIcon->set_from_icon_name(icon, Gtk::ICON_SIZE_SMALL_TOOLBAR);
+ Gtk::Image *buttonIcon = Gtk::manage(sp_get_icon_image(icon, Gtk::ICON_SIZE_SMALL_TOOLBAR));
buttonIcon->show();
button.set_relief(Gtk::RELIEF_NONE);
diff --git a/src/ui/widget/anchor-selector.cpp b/src/ui/widget/anchor-selector.cpp
index 52768b7f1..fc7c15f21 100644
--- a/src/ui/widget/anchor-selector.cpp
+++ b/src/ui/widget/anchor-selector.cpp
@@ -6,8 +6,8 @@
*
* Released under GNU GPL. Read the file 'COPYING' for more information.
*/
-
#include "ui/widget/anchor-selector.h"
+#include "helper/icon-loader.h"
#include "ui/icon-names.h"
#include <gtkmm/image.h>
@@ -17,9 +17,8 @@ namespace UI {
namespace Widget {
void AnchorSelector::setupButton(const Glib::ustring& icon, Gtk::ToggleButton& button) {
- Gtk::Image* buttonIcon = Gtk::manage(new Gtk::Image());
- buttonIcon->set_from_icon_name(icon, Gtk::ICON_SIZE_SMALL_TOOLBAR);
- buttonIcon->show();
+ Gtk::Image *buttonIcon = Gtk::manage(sp_get_icon_image(icon, Gtk::ICON_SIZE_SMALL_TOOLBAR));
+ buttonIcon->show();
button.set_relief(Gtk::RELIEF_NONE);
button.show();
diff --git a/src/ui/widget/clipmaskicon.cpp b/src/ui/widget/clipmaskicon.cpp
index 509e218a9..704b5c653 100644
--- a/src/ui/widget/clipmaskicon.cpp
+++ b/src/ui/widget/clipmaskicon.cpp
@@ -13,11 +13,10 @@
#include "ui/widget/clipmaskicon.h"
-#include <gtkmm/icontheme.h>
-
-#include "widgets/toolbox.h"
-#include "ui/icon-names.h"
+#include "helper/icon-loader.h"
#include "layertypeicon.h"
+#include "ui/icon-names.h"
+#include "widgets/toolbox.h"
namespace Inkscape {
namespace UI {
@@ -37,14 +36,9 @@ ClipMaskIcon::ClipMaskIcon() :
property_mode() = Gtk::CELL_RENDERER_MODE_ACTIVATABLE;
- gint width, height;
- gtk_icon_size_lookup(GTK_ICON_SIZE_MENU, &width, &height);
- phys = width;
-
- Glib::RefPtr<Gtk::IconTheme> icon_theme = Gtk::IconTheme::get_default();
- _property_pixbuf_clip = icon_theme->load_icon(_pixClipName, phys, (Gtk::IconLookupFlags)0);
- _property_pixbuf_mask = icon_theme->load_icon(_pixMaskName, phys, (Gtk::IconLookupFlags)0);
- _property_pixbuf_both = icon_theme->load_icon(_pixBothName, phys, (Gtk::IconLookupFlags)0);
+ _property_pixbuf_clip = sp_get_icon_pixbuf(_pixClipName, GTK_ICON_SIZE_MENU);
+ _property_pixbuf_mask = sp_get_icon_pixbuf(_pixMaskName, GTK_ICON_SIZE_MENU);
+ _property_pixbuf_both = sp_get_icon_pixbuf(_pixBothName, GTK_ICON_SIZE_MENU);
property_pixbuf() = Glib::RefPtr<Gdk::Pixbuf>(nullptr);
}
diff --git a/src/ui/widget/color-notebook.cpp b/src/ui/widget/color-notebook.cpp
index 5b0f12e51..2d8dcc310 100644
--- a/src/ui/widget/color-notebook.cpp
+++ b/src/ui/widget/color-notebook.cpp
@@ -30,6 +30,7 @@
#include "preferences.h"
#include "profile-manager.h"
+#include "helper/icon-loader.h"
#include "object/color-profile.h"
#include "svg/svg-icc-color.h"
@@ -159,21 +160,22 @@ void ColorNotebook::_initUI()
#if defined(HAVE_LIBLCMS1) || defined(HAVE_LIBLCMS2)
/* Create color management icons */
_box_colormanaged = gtk_event_box_new();
- GtkWidget *colormanaged = gtk_image_new_from_icon_name("color-management-icon", GTK_ICON_SIZE_SMALL_TOOLBAR);
+ GtkWidget *colormanaged =
+ GTK_WIDGET(sp_get_icon_image("color-management-icon", GTK_ICON_SIZE_SMALL_TOOLBAR)->gobj());
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_image_new_from_icon_name("out-of-gamut-icon", GTK_ICON_SIZE_SMALL_TOOLBAR);
+ GtkWidget *outofgamut = GTK_WIDGET(sp_get_icon_image("out-of-gamut-icon", GTK_ICON_SIZE_SMALL_TOOLBAR)->gobj());
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_image_new_from_icon_name("too-much-ink-icon", GTK_ICON_SIZE_SMALL_TOOLBAR);
+ GtkWidget *toomuchink = GTK_WIDGET(sp_get_icon_image("too-much-ink-icon", GTK_ICON_SIZE_SMALL_TOOLBAR)->gobj());
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 +184,7 @@ void ColorNotebook::_initUI()
/* Color picker */
- GtkWidget *picker = gtk_image_new_from_icon_name("color-picker", GTK_ICON_SIZE_SMALL_TOOLBAR);
+ GtkWidget *picker = GTK_WIDGET(sp_get_icon_image("color-picker", GTK_ICON_SIZE_SMALL_TOOLBAR)->gobj());
_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/ui/widget/dock-item.cpp b/src/ui/widget/dock-item.cpp
index 7cd841d88..c85abd6de 100644
--- a/src/ui/widget/dock-item.cpp
+++ b/src/ui/widget/dock-item.cpp
@@ -10,11 +10,11 @@
#include "ui/widget/dock.h"
#include "desktop.h"
+#include "helper/icon-loader.h"
#include "inkscape.h"
#include "ui/icon-names.h"
-
-#include <gtkmm/icontheme.h>
#include <glibmm/exceptionhandler.h>
+#include <gtkmm/icontheme.h>
namespace Inkscape {
namespace UI {
@@ -31,6 +31,7 @@ DockItem::DockItem(Dock& dock, const Glib::ustring& name, const Glib::ustring& l
_grab_focus_on_realize(false),
_gdl_dock_item(nullptr)
{
+
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
GdlDockItemBehavior gdl_dock_behavior =
(prefs->getBool("/options/dock/cancenterdock", true) ?
@@ -39,17 +40,7 @@ DockItem::DockItem(Dock& dock, const Glib::ustring& name, const Glib::ustring& l
if (!icon_name.empty()) {
- Glib::RefPtr<Gtk::IconTheme> iconTheme = Gtk::IconTheme::get_default();
-
- int width = 0;
- int height = 0;
- Gtk::IconSize::lookup(Gtk::ICON_SIZE_MENU, width, height);
- try {
- _icon_pixbuf = iconTheme->load_icon(icon_name, width);
- }
- catch (const Gtk::IconThemeError& e) {
- std::cerr << "DocItem::DocItem(): " << e.what() << std::endl;
- }
+ _icon_pixbuf = sp_get_icon_pixbuf(icon_name, "/toolbox/secondary");
}
if ( _icon_pixbuf ) {
diff --git a/src/ui/widget/imagetoggler.cpp b/src/ui/widget/imagetoggler.cpp
index 1200144f1..76b48fbbe 100644
--- a/src/ui/widget/imagetoggler.cpp
+++ b/src/ui/widget/imagetoggler.cpp
@@ -11,10 +11,9 @@
#include "ui/widget/imagetoggler.h"
-#include <gtkmm/icontheme.h>
-
-#include "widgets/toolbox.h"
+#include "helper/icon-loader.h"
#include "ui/icon-names.h"
+#include "widgets/toolbox.h"
#include <iostream>
@@ -34,18 +33,8 @@ ImageToggler::ImageToggler( char const* on, char const* off) :
{
property_mode() = Gtk::CELL_RENDERER_MODE_ACTIVATABLE;
- gint width, height;
- gtk_icon_size_lookup(GTK_ICON_SIZE_MENU, &width, &height);
- int phys = width;
-
- Glib::RefPtr<Gtk::IconTheme> icon_theme = Gtk::IconTheme::get_default();
- try {
- _property_pixbuf_on = icon_theme->load_icon(_pixOnName, phys, (Gtk::IconLookupFlags)0);
- _property_pixbuf_off = icon_theme->load_icon(_pixOffName, phys, (Gtk::IconLookupFlags)0);
- }
- catch (const Gtk::IconThemeError& e) {
- std::cerr << "ImageToggler::ImageToggler(): " << e.what() << std::endl;
- }
+ _property_pixbuf_on = sp_get_icon_pixbuf(_pixOnName, GTK_ICON_SIZE_MENU);
+ _property_pixbuf_off = sp_get_icon_pixbuf(_pixOffName, GTK_ICON_SIZE_MENU);
property_pixbuf() = _property_pixbuf_off.get_value();
}
diff --git a/src/ui/widget/insertordericon.cpp b/src/ui/widget/insertordericon.cpp
index d402aca37..1343786a1 100644
--- a/src/ui/widget/insertordericon.cpp
+++ b/src/ui/widget/insertordericon.cpp
@@ -8,12 +8,11 @@
*/
#include "ui/widget/insertordericon.h"
-
-#include <gtkmm/icontheme.h>
-#include "widgets/toolbox.h"
-#include "ui/icon-names.h"
+#include "helper/icon-loader.h"
#include "layertypeicon.h"
+#include "ui/icon-names.h"
+#include "widgets/toolbox.h"
namespace Inkscape {
namespace UI {
@@ -31,13 +30,8 @@ InsertOrderIcon::InsertOrderIcon() :
property_mode() = Gtk::CELL_RENDERER_MODE_ACTIVATABLE;
- gint width, height;
- gtk_icon_size_lookup(GTK_ICON_SIZE_MENU, &width, &height);
- phys=width;
-
- Glib::RefPtr<Gtk::IconTheme> icon_theme = Gtk::IconTheme::get_default();
- _property_pixbuf_top = icon_theme->load_icon(_pixTopName, phys, (Gtk::IconLookupFlags)0);
- _property_pixbuf_bottom = icon_theme->load_icon(_pixBottomName, phys, (Gtk::IconLookupFlags)0);
+ _property_pixbuf_top = sp_get_icon_pixbuf(_pixTopName, GTK_ICON_SIZE_MENU);
+ _property_pixbuf_bottom = sp_get_icon_pixbuf(_pixBottomName, GTK_ICON_SIZE_MENU);
property_pixbuf() = Glib::RefPtr<Gdk::Pixbuf>(nullptr);
}
diff --git a/src/ui/widget/labelled.cpp b/src/ui/widget/labelled.cpp
index 2e9840035..6ee2b752f 100644
--- a/src/ui/widget/labelled.cpp
+++ b/src/ui/widget/labelled.cpp
@@ -12,8 +12,8 @@
# include <config.h>
#endif
+#include "helper/icon-loader.h"
#include "labelled.h"
-
#include <gtkmm/image.h>
#include <gtkmm/label.h>
@@ -32,8 +32,7 @@ Labelled::Labelled(Glib::ustring const &label, Glib::ustring const &tooltip,
{
g_assert(g_utf8_validate(icon.c_str(), -1, nullptr));
if (icon != "") {
- _icon = Gtk::manage(new Gtk::Image());
- _icon->set_from_icon_name(icon, Gtk::ICON_SIZE_LARGE_TOOLBAR);
+ _icon = Gtk::manage(sp_get_icon_image(icon, Gtk::ICON_SIZE_LARGE_TOOLBAR));
pack_start(*_icon, Gtk::PACK_SHRINK);
}
pack_start(*Gtk::manage(_label), Gtk::PACK_EXPAND_WIDGET, 6);
diff --git a/src/ui/widget/layer-selector.cpp b/src/ui/widget/layer-selector.cpp
index b86222404..c8aefa656 100644
--- a/src/ui/widget/layer-selector.cpp
+++ b/src/ui/widget/layer-selector.cpp
@@ -17,10 +17,11 @@
#include <cstring>
#include <string>
+#include "helper/icon-loader.h"
#include "ui/dialog/layer-properties.h"
-#include <glibmm/i18n.h>
#include <boost/range/adaptor/filtered.hpp>
#include <boost/range/adaptor/reversed.hpp>
+#include <glibmm/i18n.h>
#include "desktop.h"
@@ -46,14 +47,12 @@ public:
{
set_name("AlternateIcons");
if (!a.empty()) {
- _a = Gtk::manage(new Gtk::Image());
- _a->set_from_icon_name(a, size);
+ _a = Gtk::manage(sp_get_icon_image(a, size));
_a->set_no_show_all(true);
add(*_a);
}
if (!b.empty()) {
- _b = Gtk::manage(new Gtk::Image());
- _b->set_from_icon_name(b, size);
+ _b = Gtk::manage(sp_get_icon_image(b, size));
_b->set_no_show_all(true);
add(*_b);
}
diff --git a/src/ui/widget/layertypeicon.cpp b/src/ui/widget/layertypeicon.cpp
index 278bd317b..356531620 100644
--- a/src/ui/widget/layertypeicon.cpp
+++ b/src/ui/widget/layertypeicon.cpp
@@ -13,10 +13,9 @@
#include "ui/widget/layertypeicon.h"
-#include <gtkmm/icontheme.h>
-
-#include "widgets/toolbox.h"
+#include "helper/icon-loader.h"
#include "ui/icon-names.h"
+#include "widgets/toolbox.h"
namespace Inkscape {
namespace UI {
@@ -36,14 +35,10 @@ LayerTypeIcon::LayerTypeIcon() :
{
property_mode() = Gtk::CELL_RENDERER_MODE_ACTIVATABLE;
- gint width, height;
- gtk_icon_size_lookup(GTK_ICON_SIZE_MENU, &width, &height);
- int phys = width;
-
- Glib::RefPtr<Gtk::IconTheme> icon_theme = Gtk::IconTheme::get_default();
- _property_pixbuf_layer = icon_theme->load_icon(_pixLayerName, phys, (Gtk::IconLookupFlags)0);
- _property_pixbuf_group = icon_theme->load_icon(_pixGroupName, phys, (Gtk::IconLookupFlags)0);
- _property_pixbuf_path = icon_theme->load_icon(_pixPathName, phys, (Gtk::IconLookupFlags)0);
+
+ _property_pixbuf_layer = sp_get_icon_pixbuf(_pixLayerName, GTK_ICON_SIZE_MENU);
+ _property_pixbuf_group = sp_get_icon_pixbuf(_pixGroupName, GTK_ICON_SIZE_MENU);
+ _property_pixbuf_path = sp_get_icon_pixbuf(_pixPathName, GTK_ICON_SIZE_MENU);
property_pixbuf() = _property_pixbuf_path.get_value();
}
diff --git a/src/ui/widget/preferences-widget.cpp b/src/ui/widget/preferences-widget.cpp
index fee392632..09656a800 100644
--- a/src/ui/widget/preferences-widget.cpp
+++ b/src/ui/widget/preferences-widget.cpp
@@ -34,6 +34,7 @@
#include "io/sys.h"
+#include "helper/icon-loader.h"
#include "ui/dialog/filedialog.h"
#include "ui/widget/preferences-widget.h"
@@ -633,6 +634,58 @@ void PrefCombo::init(Glib::ustring const &prefs_path,
this->set_active(row);
}
+void PrefCombo::init(Glib::ustring const &prefs_path,
+ std::vector<Glib::ustring> labels, std::vector<int> values, int default_value)
+{
+ size_t labels_size = labels.size();
+ size_t values_size = values.size();
+ if (values_size != labels_size) {
+ std::cout << "PrefCombo::" << "Diferent number of values/labels in " << prefs_path << std::endl;
+ return;
+ }
+ _prefs_path = prefs_path;
+ Inkscape::Preferences *prefs = Inkscape::Preferences::get();
+ int row = 0;
+ int value = prefs->getInt(_prefs_path, default_value);
+
+ for (int i = 0 ; i < labels_size; ++i)
+ {
+ this->append(labels[i]);
+ _values.push_back(values[i]);
+ if (value == values[i])
+ row = i;
+ }
+ this->set_active(row);
+}
+
+void PrefCombo::init(Glib::ustring const &prefs_path,
+ std::vector<Glib::ustring> labels, std::vector<Glib::ustring> values, Glib::ustring default_value)
+{
+ size_t labels_size = labels.size();
+ size_t values_size = values.size();
+ if (values_size != labels_size) {
+ std::cout << "PrefCombo::" << "Diferent number of values/labels in " << prefs_path << std::endl;
+ return;
+ }
+ _prefs_path = prefs_path;
+ Inkscape::Preferences *prefs = Inkscape::Preferences::get();
+ int row = 0;
+ Glib::ustring value = prefs->getString(_prefs_path);
+ if(value.empty())
+ {
+ value = default_value;
+ }
+
+ for (int i = 0 ; i < labels_size; ++i)
+ {
+ this->append(labels[i]);
+ _ustr_values.push_back(values[i]);
+ if (value == values[i])
+ row = i;
+ }
+ this->set_active(row);
+}
+
void PrefCombo::on_changed()
{
if (this->get_visible()) //only take action if user changed value
@@ -705,9 +758,7 @@ void PrefEntryFileButtonHBox::init(Glib::ustring const &prefs_path,
relatedButton = new Gtk::Button();
Gtk::HBox* pixlabel = new Gtk::HBox(false, 3);
- Gtk::Image *im = new Gtk::Image();
- im->set_from_icon_name("applications-graphics",
- Gtk::ICON_SIZE_BUTTON);
+ Gtk::Image *im = sp_get_icon_image("applications-graphics", Gtk::ICON_SIZE_BUTTON);
pixlabel->pack_start(*im);
Gtk::Label *l = new Gtk::Label();
l->set_markup_with_mnemonic(_("_Browse..."));
diff --git a/src/ui/widget/preferences-widget.h b/src/ui/widget/preferences-widget.h
index 8e1602ff9..f75079c77 100644
--- a/src/ui/widget/preferences-widget.h
+++ b/src/ui/widget/preferences-widget.h
@@ -181,6 +181,16 @@ public:
*/
void init(Glib::ustring const &prefs_path,
Glib::ustring labels[], Glib::ustring values[], int num_items, Glib::ustring default_value);
+ /**
+ * Initialize a combo box.
+ * with vectors.
+ */
+ void init(Glib::ustring const &prefs_path,
+ std::vector<Glib::ustring> labels, std::vector<int> values, int default_value);
+
+ void init(Glib::ustring const &prefs_path,
+ std::vector<Glib::ustring> labels, std::vector<Glib::ustring> values, Glib::ustring default_value);
+
protected:
Glib::ustring _prefs_path;
std::vector<int> _values;
diff --git a/src/ui/widget/random.cpp b/src/ui/widget/random.cpp
index 237144c7c..3bda641d7 100644
--- a/src/ui/widget/random.cpp
+++ b/src/ui/widget/random.cpp
@@ -14,8 +14,8 @@
#endif
+#include "helper/icon-loader.h"
#include "random.h"
-
#include <glibmm/i18n.h>
#include <gtkmm/button.h>
@@ -70,8 +70,7 @@ void Random::setStartSeed(long newseed)
void Random::addReseedButton()
{
- Gtk::Image* pIcon = Gtk::manage(new Gtk::Image());
- pIcon->set_from_icon_name( "randomize", Gtk::ICON_SIZE_BUTTON);
+ Gtk::Image *pIcon = Gtk::manage(sp_get_icon_image("randomize", Gtk::ICON_SIZE_BUTTON));
Gtk::Button * pButton = Gtk::manage(new Gtk::Button());
pButton->set_relief(Gtk::RELIEF_NONE);
pIcon->show();