aboutsummaryrefslogtreecommitdiffstats
path: root/shell
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@src.gnome.org>2009-02-19 09:36:04 +0800
committerMatthew Barnes <mbarnes@src.gnome.org>2009-02-19 09:36:04 +0800
commitfd564be3203400024147469faaa7de0884861566 (patch)
tree80e69ff89307a7393193520e0f2fe51cdc21540e /shell
parent7ed5f59771262651ee8b0d29a123e43a6ac0b6c6 (diff)
downloadgsoc2013-evolution-fd564be3203400024147469faaa7de0884861566.tar
gsoc2013-evolution-fd564be3203400024147469faaa7de0884861566.tar.gz
gsoc2013-evolution-fd564be3203400024147469faaa7de0884861566.tar.bz2
gsoc2013-evolution-fd564be3203400024147469faaa7de0884861566.tar.lz
gsoc2013-evolution-fd564be3203400024147469faaa7de0884861566.tar.xz
gsoc2013-evolution-fd564be3203400024147469faaa7de0884861566.tar.zst
gsoc2013-evolution-fd564be3203400024147469faaa7de0884861566.zip
Clean up the EMFormat stack. Add some GObject properties to bind to.
Add some handy color conversion functions to e-util. svn path=/branches/kill-bonobo/; revision=37290
Diffstat (limited to 'shell')
-rw-r--r--shell/e-shell-migrate.c14
-rw-r--r--shell/e-shell-window-private.c14
-rw-r--r--shell/e-shell.c27
-rw-r--r--shell/e-shell.h2
4 files changed, 40 insertions, 17 deletions
diff --git a/shell/e-shell-migrate.c b/shell/e-shell-migrate.c
index b4467028f4..aa3e1e0f97 100644
--- a/shell/e-shell-migrate.c
+++ b/shell/e-shell-migrate.c
@@ -85,7 +85,8 @@ shell_migrate_attempt (EShell *shell,
}
static void
-shell_migrate_get_version (gint *major,
+shell_migrate_get_version (EShell *shell,
+ gint *major,
gint *minor,
gint *micro)
{
@@ -97,9 +98,8 @@ shell_migrate_get_version (gint *major,
old_data_dir = shell_migrate_get_old_data_dir ();
key = GCONF_VERSION_KEY;
- client = gconf_client_get_default ();
+ client = e_shell_get_gconf_client (shell);
string = gconf_client_get_string (client, key, NULL);
- g_object_unref (client);
if (string != NULL) {
/* Since 1.4.0 we've kept the version key in GConf. */
@@ -206,6 +206,7 @@ e_shell_migrate_attempt (EShell *shell)
g_return_val_if_fail (E_IS_SHELL (shell), FALSE);
+ client = e_shell_get_gconf_client (shell);
old_data_dir = shell_migrate_get_old_data_dir ();
if (sscanf (BASE_VERSION, "%d.%d", &curr_major, &curr_minor) != 2) {
@@ -215,7 +216,7 @@ e_shell_migrate_attempt (EShell *shell)
curr_micro = atoi (UPGRADE_REVISION);
- shell_migrate_get_version (&major, &minor, &micro);
+ shell_migrate_get_version (shell, &major, &minor, &micro);
if (!(curr_major > major ||
(curr_major == major && curr_minor > minor) ||
@@ -253,10 +254,8 @@ e_shell_migrate_attempt (EShell *shell)
_exit (EXIT_SUCCESS);
/* Record a successful migration. */
- client = gconf_client_get_default ();
string = g_strdup_printf ("%d.%d.%d", major, minor, micro);
gconf_client_set_string (client, GCONF_VERSION_KEY, string, NULL);
- g_object_unref (client);
g_free (string);
migrated = TRUE;
@@ -264,7 +263,6 @@ e_shell_migrate_attempt (EShell *shell)
check_old:
key = GCONF_LAST_VERSION_KEY;
- client = gconf_client_get_default ();
/* Try to retrieve the last migrated version from GConf. */
string = gconf_client_get_string (client, key, NULL);
@@ -321,8 +319,6 @@ check_old:
gconf_client_set_string (client, key, string, NULL);
g_free (string);
- g_object_unref (client);
-
return TRUE;
}
diff --git a/shell/e-shell-window-private.c b/shell/e-shell-window-private.c
index 02aac6cf10..bfaa87396b 100644
--- a/shell/e-shell-window-private.c
+++ b/shell/e-shell-window-private.c
@@ -26,13 +26,16 @@ shell_window_save_switcher_style_cb (GtkRadioAction *action,
GtkRadioAction *current,
EShellWindow *shell_window)
{
+ EShell *shell;
GConfClient *client;
GtkToolbarStyle style;
const gchar *key;
const gchar *string;
GError *error = NULL;
- client = gconf_client_get_default ();
+ shell = e_shell_window_get_shell (shell_window);
+ client = e_shell_get_gconf_client (shell);
+
style = gtk_radio_action_get_current_value (action);
key = "/apps/evolution/shell/view_defaults/buttons_style";
@@ -59,13 +62,12 @@ shell_window_save_switcher_style_cb (GtkRadioAction *action,
g_warning ("%s", error->message);
g_error_free (error);
}
-
- g_object_unref (client);
}
static void
shell_window_init_switcher_style (EShellWindow *shell_window)
{
+ EShell *shell;
GtkAction *action;
GConfClient *client;
GtkToolbarStyle style;
@@ -76,7 +78,9 @@ shell_window_init_switcher_style (EShellWindow *shell_window)
/* XXX GConfBridge doesn't let you convert between numeric properties
* and string keys, so we have to create the binding manually. */
- client = gconf_client_get_default ();
+ shell = e_shell_window_get_shell (shell_window);
+ client = e_shell_get_gconf_client (shell);
+
action = ACTION (SWITCHER_STYLE_ICONS);
key = "/apps/evolution/shell/view_defaults/buttons_style";
string = gconf_client_get_string (client, key, &error);
@@ -99,8 +103,6 @@ shell_window_init_switcher_style (EShellWindow *shell_window)
action, "changed",
G_CALLBACK (shell_window_save_switcher_style_cb),
shell_window);
-
- g_object_unref (client);
}
static void
diff --git a/shell/e-shell.c b/shell/e-shell.c
index e2d7761965..203e216344 100644
--- a/shell/e-shell.c
+++ b/shell/e-shell.c
@@ -40,6 +40,7 @@
struct _EShellPrivate {
GList *watched_windows;
EShellSettings *settings;
+ GConfClient *gconf_client;
/* Shell Modules */
GList *loaded_modules;
@@ -459,6 +460,11 @@ shell_dispose (GObject *object)
priv->settings = NULL;
}
+ if (priv->gconf_client != NULL) {
+ g_object_unref (priv->gconf_client);
+ priv->gconf_client = NULL;
+ }
+
g_list_foreach (
priv->loaded_modules,
(GFunc) g_type_module_unuse, NULL);
@@ -830,6 +836,7 @@ shell_init (EShell *shell)
modules_by_scheme = g_hash_table_new (g_str_hash, g_str_equal);
shell->priv->settings = g_object_new (E_TYPE_SHELL_SETTINGS, NULL);
+ shell->priv->gconf_client = gconf_client_get_default ();
shell->priv->modules_by_name = modules_by_name;
shell->priv->modules_by_scheme = modules_by_scheme;
shell->priv->safe_mode = e_file_lock_exists ();
@@ -1021,6 +1028,23 @@ e_shell_get_shell_settings (EShell *shell)
}
/**
+ * e_shell_get_gconf_client:
+ * @shell: an #EShell
+ *
+ * Returns the default #GConfClient. This function is purely for
+ * convenience. The @shell owns the reference so you don't have to.
+ *
+ * Returns: the default #GConfClient
+ **/
+GConfClient *
+e_shell_get_gconf_client (EShell *shell)
+{
+ g_return_val_if_fail (E_IS_SHELL (shell), NULL);
+
+ return shell->priv->gconf_client;
+}
+
+/**
* e_shell_create_shell_window:
* @shell: an #EShell
* @view_name: name of the initial shell view, or %NULL
@@ -1055,10 +1079,9 @@ e_shell_create_shell_window (EShell *shell,
const gchar *key;
GError *error = NULL;
- client = gconf_client_get_default ();
+ client = e_shell_get_gconf_client (shell);
key = "/apps/evolution/shell/view_defaults/component_id";
gconf_client_set_string (client, key, view_name, &error);
- g_object_unref (client);
if (error != NULL) {
g_warning ("%s", error->message);
diff --git a/shell/e-shell.h b/shell/e-shell.h
index 3f23779ee7..137900214d 100644
--- a/shell/e-shell.h
+++ b/shell/e-shell.h
@@ -29,6 +29,7 @@
#define E_SHELL_H
#include <unique/unique.h>
+#include <gconf/gconf-client.h>
#include <shell/e-shell-common.h>
#include <shell/e-shell-module.h>
#include <shell/e-shell-settings.h>
@@ -85,6 +86,7 @@ EShellModule * e_shell_get_module_by_name (EShell *shell,
EShellModule * e_shell_get_module_by_scheme (EShell *shell,
const gchar *scheme);
EShellSettings *e_shell_get_shell_settings (EShell *shell);
+GConfClient * e_shell_get_gconf_client (EShell *shell);
GtkWidget * e_shell_create_shell_window (EShell *shell,
const gchar *view_name);
guint e_shell_handle_uris (EShell *shell,