From 2e87aa81fc94f5d9564421e036adae7b48e7380a Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sun, 10 Mar 2013 09:53:12 -0400 Subject: Remove EMailShellSettings. EShellSettings predates GSettings and is no longer necessary. GSettings allows binding GObject properties to GSettings keys, with optional mapping functions. That fulfills the purpose of EShellSettings. --- modules/settings/e-settings-web-view-gtkhtml.c | 146 ++++++++++++------------- 1 file changed, 71 insertions(+), 75 deletions(-) (limited to 'modules/settings/e-settings-web-view-gtkhtml.c') diff --git a/modules/settings/e-settings-web-view-gtkhtml.c b/modules/settings/e-settings-web-view-gtkhtml.c index 49e8112601..297e88f508 100644 --- a/modules/settings/e-settings-web-view-gtkhtml.c +++ b/modules/settings/e-settings-web-view-gtkhtml.c @@ -25,7 +25,7 @@ #include "e-settings-web-view-gtkhtml.h" -#include +#include #define E_SETTINGS_WEB_VIEW_GTKHTML_GET_PRIVATE(obj) \ (G_TYPE_INSTANCE_GET_PRIVATE \ @@ -33,7 +33,7 @@ struct _ESettingsWebViewGtkHTMLPrivate { GtkCssProvider *css_provider; - EShellSettings *shell_settings; + GSettings *settings; }; G_DEFINE_DYNAMIC_TYPE ( @@ -74,33 +74,28 @@ settings_web_view_gtkhtml_load_style (ESettingsWebViewGtkHTML *extension) gboolean custom_fonts; gboolean mark_citations; EExtensible *extensible; - EShellSettings *shell_settings; GtkStyleContext *style_context; + GSettings *settings; GError *error = NULL; /* Some of our mail and composer preferences are passed down to * GtkHtml through style properties, unfortunately. This builds * a style sheet for the EWebView using values from GSettings. */ - shell_settings = extension->priv->shell_settings; - - custom_fonts = e_shell_settings_get_boolean ( - shell_settings, "mail-use-custom-fonts"); - - monospace_font = e_shell_settings_get_string ( - shell_settings, "mail-font-monospace"); - - variable_font = e_shell_settings_get_string ( - shell_settings, "mail-font-variable"); - - mark_citations = e_shell_settings_get_boolean ( - shell_settings, "mail-mark-citations"); - - citation_color = e_shell_settings_get_string ( - shell_settings, "mail-citation-color"); - - spell_color = e_shell_settings_get_string ( - shell_settings, "composer-spell-color"); + settings = extension->priv->settings; + + custom_fonts = + g_settings_get_boolean (settings, "use-custom-font"); + monospace_font = + g_settings_get_string (settings, "monospace-font"); + variable_font = + g_settings_get_string (settings, "variable-width-font"); + mark_citations = + g_settings_get_boolean (settings, "mark-citations"); + citation_color = + g_settings_get_string (settings, "citation-color"); + spell_color = + g_settings_get_string (settings, "composer-spell-color"); buffer = g_string_new ("EWebViewGtkHTML {\n"); @@ -149,28 +144,36 @@ settings_web_view_gtkhtml_load_style (ESettingsWebViewGtkHTML *extension) gtk_style_context_invalidate (style_context); } +static void +settings_web_view_gtkhtml_changed_cb (GSettings *settings, + const gchar *key, + ESettingsWebViewGtkHTML *extension) +{ + settings_web_view_gtkhtml_load_style (extension); +} + static void settings_web_view_gtkhtml_realize (GtkWidget *widget, ESettingsWebViewGtkHTML *extension) { - EShellSettings *shell_settings; + GSettings *settings; - shell_settings = extension->priv->shell_settings; + settings = extension->priv->settings; - g_object_bind_property ( - shell_settings, "composer-inline-spelling", + g_settings_bind ( + settings, "composer-inline-spelling", widget, "inline-spelling", - G_BINDING_SYNC_CREATE); + G_SETTINGS_BIND_GET); - g_object_bind_property ( - shell_settings, "composer-magic-links", + g_settings_bind ( + settings, "composer-magic-links", widget, "magic-links", - G_BINDING_SYNC_CREATE); + G_SETTINGS_BIND_GET); - g_object_bind_property ( - shell_settings, "composer-magic-smileys", + g_settings_bind ( + settings, "composer-magic-smileys", widget, "magic-smileys", - G_BINDING_SYNC_CREATE); + G_SETTINGS_BIND_GET); gtk_style_context_add_provider ( gtk_widget_get_style_context (widget), @@ -181,34 +184,34 @@ settings_web_view_gtkhtml_realize (GtkWidget *widget, /* Reload the style sheet when certain settings change. */ - g_signal_connect_swapped ( - shell_settings, "notify::mail-use-custom-fonts", - G_CALLBACK (settings_web_view_gtkhtml_load_style), + g_signal_connect ( + settings, "changed::use-custom-font", + G_CALLBACK (settings_web_view_gtkhtml_changed_cb), extension); - g_signal_connect_swapped ( - shell_settings, "notify::mail-font-monospace", - G_CALLBACK (settings_web_view_gtkhtml_load_style), + g_signal_connect ( + settings, "changed::monospace-font", + G_CALLBACK (settings_web_view_gtkhtml_changed_cb), extension); - g_signal_connect_swapped ( - shell_settings, "notify::mail-font-variable", - G_CALLBACK (settings_web_view_gtkhtml_load_style), + g_signal_connect ( + settings, "changed::variable-width-font", + G_CALLBACK (settings_web_view_gtkhtml_changed_cb), extension); - g_signal_connect_swapped ( - shell_settings, "notify::mail-mark-citations", - G_CALLBACK (settings_web_view_gtkhtml_load_style), + g_signal_connect ( + settings, "changed::mark-citations", + G_CALLBACK (settings_web_view_gtkhtml_changed_cb), extension); - g_signal_connect_swapped ( - shell_settings, "notify::mail-citation-color", - G_CALLBACK (settings_web_view_gtkhtml_load_style), + g_signal_connect ( + settings, "changed::citation-color", + G_CALLBACK (settings_web_view_gtkhtml_changed_cb), extension); - g_signal_connect_swapped ( - shell_settings, "notify::composer-spell-color", - G_CALLBACK (settings_web_view_gtkhtml_load_style), + g_signal_connect ( + settings, "changed::composer-spell-color", + G_CALLBACK (settings_web_view_gtkhtml_changed_cb), extension); } @@ -219,19 +222,15 @@ settings_web_view_gtkhtml_dispose (GObject *object) priv = E_SETTINGS_WEB_VIEW_GTKHTML_GET_PRIVATE (object); - if (priv->css_provider != NULL) { - g_object_unref (priv->css_provider); - priv->css_provider = NULL; - } - - if (priv->shell_settings != NULL) { + if (priv->settings != NULL) { g_signal_handlers_disconnect_by_func ( - priv->shell_settings, - settings_web_view_gtkhtml_load_style, object); - g_object_unref (priv->shell_settings); - priv->shell_settings = NULL; + priv->settings, + settings_web_view_gtkhtml_changed_cb, object); } + g_clear_object (&priv->css_provider); + g_clear_object (&priv->settings); + /* Chain up to parent's dispose() method. */ G_OBJECT_CLASS (e_settings_web_view_gtkhtml_parent_class)-> dispose (object); @@ -240,27 +239,17 @@ settings_web_view_gtkhtml_dispose (GObject *object) static void settings_web_view_gtkhtml_constructed (GObject *object) { - EShell *shell; - EShellSettings *shell_settings; - ESettingsWebViewGtkHTML *extension; EExtensible *extensible; - shell = e_shell_get_default (); - shell_settings = e_shell_get_shell_settings (shell); - - extension = (ESettingsWebViewGtkHTML *) object; - extensible = e_extension_get_extensible (E_EXTENSION (extension)); - - extension->priv->css_provider = gtk_css_provider_new (); - extension->priv->shell_settings = g_object_ref (shell_settings); + extensible = e_extension_get_extensible (E_EXTENSION (object)); - /* Wait to bind shell settings until the EWebView is realized - * so GtkhtmlEditor has a chance to install a GtkHTMLEditorAPI. + /* Wait to bind settings until the EWebView is realized so + * GtkhtmlEditor has a chance to install a GtkHTMLEditorAPI. * Otherwise our settings will have no effect. */ g_signal_connect ( extensible, "realize", - G_CALLBACK (settings_web_view_gtkhtml_realize), extension); + G_CALLBACK (settings_web_view_gtkhtml_realize), object); /* Chain up to parent's constructed() method. */ G_OBJECT_CLASS (e_settings_web_view_gtkhtml_parent_class)-> @@ -292,8 +281,15 @@ e_settings_web_view_gtkhtml_class_finalize (ESettingsWebViewGtkHTMLClass *class) static void e_settings_web_view_gtkhtml_init (ESettingsWebViewGtkHTML *extension) { + GSettings *settings; + extension->priv = E_SETTINGS_WEB_VIEW_GTKHTML_GET_PRIVATE (extension); + + extension->priv->css_provider = gtk_css_provider_new (); + + settings = g_settings_new ("org.gnome.evolution.mail"); + extension->priv->settings = settings; } void -- cgit v1.2.3