[gthumb] activate the default extensions only if the key was not set



commit bed6cab99568b0fea7e6db4f11dc716c0640ff00
Author: Paolo Bacchilega <paobac src gnome org>
Date:   Sun Nov 7 09:01:39 2010 +0100

    activate the default extensions only if the key was not set

 gthumb/gconf-utils.c |   27 +++++++++++++++++++++++++++
 gthumb/gconf-utils.h |    3 +++
 gthumb/gth-main.c    |    9 +++++----
 3 files changed, 35 insertions(+), 4 deletions(-)
---
diff --git a/gthumb/gconf-utils.c b/gthumb/gconf-utils.c
index fd2db91..7ecde24 100644
--- a/gthumb/gconf-utils.c
+++ b/gthumb/gconf-utils.c
@@ -439,6 +439,33 @@ eel_gconf_get_string_list (const char *key)
 
 
 GSList *
+eel_gconf_get_string_list_with_error (const char  *key,
+				      GError     **error)
+{
+	GSList      *slist;
+	GConfClient *client;
+
+	g_return_val_if_fail (key != NULL, NULL);
+
+	client = eel_gconf_client_get_global ();
+	if (client == NULL) {
+		if (error != NULL)
+			*error = g_error_new_literal (GCONF_ERROR, GCONF_ERROR_NO_SERVER, "");
+		return NULL;
+	}
+
+	if (error)
+		*error = NULL;
+	slist = gconf_client_get_list (client, key, GCONF_VALUE_STRING, error);
+
+	if (*error != NULL)
+		slist = NULL;
+
+	return  slist;
+}
+
+
+GSList *
 eel_gconf_get_path_list (const char *key)
 {
 	GSList *str_slist, *slist, *scan;
diff --git a/gthumb/gconf-utils.h b/gthumb/gconf-utils.h
index 1b61c8e..43cf026 100644
--- a/gthumb/gconf-utils.h
+++ b/gthumb/gconf-utils.h
@@ -87,6 +87,9 @@ char *       eel_gconf_get_locale_string     (const char             *key,
 void         eel_gconf_set_locale_string     (const char             *key,
 					      const char             *value);
 GSList *     eel_gconf_get_string_list       (const char             *key);
+GSList *     eel_gconf_get_string_list_with_error
+					     (const char             *key,
+					      GError                **error);
 void         eel_gconf_set_string_list       (const char             *key,
 					      const GSList           *string_list_value);
 GSList *     eel_gconf_get_path_list         (const char             *key);
diff --git a/gthumb/gth-main.c b/gthumb/gth-main.c
index 9b8b655..7a480a6 100644
--- a/gthumb/gth-main.c
+++ b/gthumb/gth-main.c
@@ -1247,6 +1247,7 @@ gth_main_activate_extensions (void)
 						"webalbums",
 						NULL };
 	int                  i;
+	GError              *error = NULL;
 	GSList              *active_extensions;
 	GthExtensionManager *manager;
 	GSList              *scan;
@@ -1255,18 +1256,18 @@ gth_main_activate_extensions (void)
 		Main->priv->extension_manager = gth_extension_manager_new ();
 
 	for (i = 0; mandatory_extensions[i] != NULL; i++) {
-		GError *error = NULL;
-
 		if (! gth_extension_manager_activate (Main->priv->extension_manager, mandatory_extensions[i], &error)) {
 			g_warning ("Could not load the '%s' extension: %s", mandatory_extensions[i], error->message);
 			g_clear_error (&error);
 		}
 	}
 
-	active_extensions = eel_gconf_get_string_list (PREF_ACTIVE_EXTENSIONS);
-	if (active_extensions == NULL)
+	active_extensions = eel_gconf_get_string_list_with_error (PREF_ACTIVE_EXTENSIONS, &error);
+	if (error != NULL) {
+		g_clear_error (&error);
 		for (i = 0; default_extensions[i] != NULL; i++)
 			active_extensions = g_slist_prepend (active_extensions, g_strdup (default_extensions[i]));
+	}
 	active_extensions = gth_extension_manager_order_extensions (Main->priv->extension_manager, active_extensions);
 
 	manager = gth_main_get_default_extension_manager ();



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]