diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/inkscape.cpp | 29 | ||||
| -rw-r--r-- | src/main.cpp | 14 | ||||
| -rw-r--r-- | src/ui/dialog/inkscape-preferences.cpp | 77 | ||||
| -rw-r--r-- | src/ui/interface.cpp | 3 |
4 files changed, 34 insertions, 89 deletions
diff --git a/src/inkscape.cpp b/src/inkscape.cpp index b2f032d47..798f4b487 100644 --- a/src/inkscape.cpp +++ b/src/inkscape.cpp @@ -457,10 +457,31 @@ Application::Application(const char* argv, bool use_gui) : /* Load the preferences and menus */ Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - g_object_set(gtk_settings_get_default(), "gtk-theme-name", prefs->getString("/theme/gtkTheme").c_str(), NULL); - g_object_set(gtk_settings_get_default(), "gtk-icon-theme-name", prefs->getString("/theme/iconTheme").c_str(), NULL); - g_object_set(gtk_settings_get_default(), "gtk-application-prefer-dark-theme", - prefs->getBool("/theme/darkTheme", false), NULL); + GtkSettings * settings = gtk_settings_get_default(); + const gchar * gtkThemeName; + g_object_get(settings ,"gtk-theme-name", >kThemeName, NULL); + const gchar * gtkIconThemeName; + g_object_get(settings ,"gtk-icon-theme-name", >kIconThemeName, NULL); + prefs->setString("/theme/defaultIconTheme", Glib::ustring(gtkIconThemeName)); + bool gtkApplicationPreferDarkTheme; + g_object_get(settings ,"gtk-application-prefer-dark-theme", >kApplicationPreferDarkTheme, NULL); + if (prefs->getString("/theme/gtkTheme") != "") { + g_object_set(settings, "gtk-theme-name", prefs->getString("/theme/gtkTheme").c_str(), NULL); + } else { + prefs->setString("/theme/gtkTheme", Glib::ustring(gtkThemeName)); + } + + if (prefs->getString("/theme/iconTheme") != "") { + g_object_set(settings, "gtk-icon-theme-name", prefs->getString("/theme/iconTheme").c_str(), NULL); + } else { + Glib::ustring defaulticontheme = prefs->getString("/theme/defaultIconTheme"); + if(defaulticontheme == "Adwaita") { + defaulticontheme = "hicolor"; + } + prefs->setString("/theme/iconTheme", defaulticontheme); + } + g_object_set(settings, "gtk-application-prefer-dark-theme", + prefs->getBool("/theme/darkTheme", gtkApplicationPreferDarkTheme), NULL); InkErrorHandler* handler = new InkErrorHandler(use_gui); prefs->setErrorHandler(handler); { diff --git a/src/main.cpp b/src/main.cpp index d9a1d37df..04fa4ec37 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -621,17 +621,17 @@ static void set_extensions_env() static void set_datadir_env() { gchar const *xgd = g_getenv("XDG_DATA_DIRS"); - Glib::ustring datadir = get_datadir_path(); - datadir += ":"; - datadir += INKSCAPE_DATADIR; -#ifdef WIN32 - datadir += g_win32_locale_filename_from_utf8("/inkscape"); +#ifdef _WIN32 + Glib::ustring pathwraper = "'"; #else - datadir += "/inkscape"; + Glib::ustring pathwraper = ""; #endif + Glib::ustring datadir = pathwraper + get_datadir_path() + pathwraper; + datadir += ":"; + datadir += pathwraper + append_inkscape_datadir("inkscape") + pathwraper; if (xgd) { datadir += ":"; - datadir += xgd; + datadir += pathwraper + xgd + pathwraper; } g_setenv("XDG_DATA_DIRS", datadir.c_str(), TRUE); // printf("XDG_DATA_DIRS = %s\n", g_getenv("XDG_DATA_DIRS")); diff --git a/src/ui/dialog/inkscape-preferences.cpp b/src/ui/dialog/inkscape-preferences.cpp index 1fe56360b..520efa323 100644 --- a/src/ui/dialog/inkscape-preferences.cpp +++ b/src/ui/dialog/inkscape-preferences.cpp @@ -860,85 +860,12 @@ void InkscapePreferences::initPageUI() std::sort(values.begin(), values.end()); labels.erase(unique(labels.begin(), labels.end()), labels.end()); values.erase(unique(values.begin(), values.end()), values.end()); + labels.push_back(_("Use system icons")); + values.push_back(prefs->getString("/theme/defaultIconTheme")); _icon_theme.init("/theme/iconTheme", labels, values, "hicolor"); _page_theme.add_line(false, _("Change icon theme:"), _icon_theme, "", "", false); _icon_theme.signal_changed().connect(sigc::mem_fun(*this, &InkscapePreferences::symbolicThemeCheck)); } -//TODO: this previous check only inkscape based folders dont check if icons are system wide -//Commented one give full list but maybe is strange because some icons in the system dont have inkscape ones -//static void _inkscape_fill_icons(const gchar *path, GHashTable *t) -//{ -// const gchar *dir_entry; -// GDir *dir; - -// 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, "index.theme", NULL); -// gchar *scalable = g_build_filename(path, dir_entry, "scalable", NULL); -// gchar *symbolic = g_build_filename(path, dir_entry, "symbolic", NULL); -// if (g_file_test(filename, G_FILE_TEST_IS_REGULAR) && -// (g_file_test(scalable, G_FILE_TEST_IS_DIR) || g_file_test(symbolic, G_FILE_TEST_IS_DIR)) && -// g_strcmp0(dir_entry, "default") != 0 && !g_hash_table_contains(t, dir_entry)) { -// g_hash_table_add(t, g_strdup(dir_entry)); -// } -// g_free(filename); -// g_free(scalable); -// } -// g_dir_close(dir); -//} -// { -// GHashTable *t; -// GHashTableIter iter; -// gchar *icon_theme, *path; -// gchar **builtin_icons; -// GList *list, *l; -// guint i; -// const gchar *const *dirs; - -// t = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL); - -// path = g_build_filename(g_get_user_data_dir(), "icons", NULL); -// _inkscape_fill_icons(path, t); -// g_free(path); - -// path = g_build_filename(g_get_home_dir(), ".icons", NULL); -// _inkscape_fill_icons(path, t); -// g_free(path); - -// dirs = g_get_system_data_dirs(); -// for (i = 0; dirs[i]; i++) { -// path = g_build_filename(dirs[i], "icons", NULL); -// _inkscape_fill_icons(path, t); -// g_free(path); -// } - -// list = NULL; -// g_hash_table_iter_init(&iter, t); - -// while (g_hash_table_iter_next(&iter, (gpointer *)&icon_theme, NULL)) { -// list = g_list_insert_sorted(list, icon_theme, (GCompareFunc)strcmp); -// } -// std::vector<Glib::ustring> labels; -// std::vector<Glib::ustring> values; -// for (l = list; l; l = l->next) { -// icon_theme = (gchar *)l->data; -// labels.push_back(Glib::ustring(icon_theme)); -// values.push_back(Glib::ustring(icon_theme)); -// } -// labels.erase(unique(labels.begin(), labels.end()), labels.end()); -// values.erase(unique(values.begin(), values.end()), values.end()); - -// g_list_free(list); -// g_hash_table_destroy(t); - -// _icon_theme.init("/theme/iconTheme", labels, values, "hicolor"); -// _page_theme.add_line(false, _("Change icon theme:"), _icon_theme, "", "", false); -// _icon_theme.signal_changed().connect(sigc::mem_fun(*this, &InkscapePreferences::symbolicThemeCheck)); -// } - _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); diff --git a/src/ui/interface.cpp b/src/ui/interface.cpp index 11a609901..17501019b 100644 --- a/src/ui/interface.cpp +++ b/src/ui/interface.cpp @@ -274,10 +274,7 @@ void sp_ui_reload() prefs_dialog->hide(); } 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/gtkTheme").c_str(), NULL); g_object_set(gtk_settings_get_default(), "gtk-icon-theme-name", prefs->getString("/theme/iconTheme").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; |
