From 17c8fd95e525378804943fcf1c7fbb9a817a1794 Mon Sep 17 00:00:00 2001 From: Radek Doulik Date: Tue, 24 Jun 2003 20:26:03 +0000 Subject: use spell preferences at new location 2003-06-24 Radek Doulik * mail-composer-prefs.c: use spell preferences at new location * mail-config.c: copy old spell settings from /GNOME/Spell * evolution-mail.schemas: added spell color default + migration flag svn path=/trunk/; revision=21526 --- mail/ChangeLog | 9 +++++++ mail/evolution-mail.schemas | 28 ++++++++++++++++++++ mail/mail-composer-prefs.c | 39 +++++++++++++--------------- mail/mail-config.c | 63 +++++++++++++++++++++++++++++++++++++++------ 4 files changed, 110 insertions(+), 29 deletions(-) diff --git a/mail/ChangeLog b/mail/ChangeLog index 5208c99006..578830aa7b 100644 --- a/mail/ChangeLog +++ b/mail/ChangeLog @@ -1,3 +1,12 @@ +2003-06-24 Radek Doulik + + * mail-composer-prefs.c: use spell preferences at new location + + * mail-config.c: copy old spell settings from /GNOME/Spell + + * evolution-mail.schemas: added spell color default + migration + flag + 2003-06-23 Dan Winship * message-list.c (on_selection_changed_cmd): Save the idle_id diff --git a/mail/evolution-mail.schemas b/mail/evolution-mail.schemas index 9dcec79ee9..aed41f631f 100644 --- a/mail/evolution-mail.schemas +++ b/mail/evolution-mail.schemas @@ -143,6 +143,34 @@ + + /schemas/apps/evolution/mail/composer/spell_copied_from_old_location + /apps/evolution/mail/composer/spell_copied_from_old_location + evolution-mail + bool + false + + spell preferences are copied from an old location + + spell preferences are copied from an old location (/GNOME/Spell) + + + + + + /schemas/apps/evolution/mail/composer/spell_error_color + /apps/evolution/mail/composer/spell_error_color + evolution-mail + string + #ff0000 + + spell error color + + color for marking misspelled words. + + + + diff --git a/mail/mail-composer-prefs.c b/mail/mail-composer-prefs.c index cdbeb491f0..cf59aa5fbd 100644 --- a/mail/mail-composer-prefs.c +++ b/mail/mail-composer-prefs.c @@ -565,11 +565,6 @@ spell_get_ui (MailComposerPrefs *prefs) prefs->language_str = spell_get_language_str (prefs); } -#define GET(t,x,prop,f,c) \ - val = gconf_client_get_without_default (prefs->gconf, GNOME_SPELL_GCONF_DIR x, NULL); \ - if (val) { f; prop = c (gconf_value_get_ ## t (val)); \ - gconf_value_free (val); } - static void spell_save_orig (MailComposerPrefs *prefs) { @@ -590,6 +585,7 @@ static void spell_load_values (MailComposerPrefs *prefs) { GConfValue *val; + gchar *str_color; char *def_lang; def_lang = g_strdup (e_iconv_locale_language ()); @@ -598,13 +594,15 @@ spell_load_values (MailComposerPrefs *prefs) prefs->spell_error_color.red = 0xffff; prefs->spell_error_color.green = 0; prefs->spell_error_color.blue = 0; - - GET (int, "/spell_error_color_red", prefs->spell_error_color.red, (void)0, (int)); - GET (int, "/spell_error_color_green", prefs->spell_error_color.green, (void)0, (int)); - GET (int, "/spell_error_color_blue", prefs->spell_error_color.blue, (void)0, (int)); - GET (string, "/language", prefs->language_str, g_free (prefs->language_str), g_strdup); - - if (prefs->language_str == NULL) + + str_color = gconf_client_get_string (prefs->gconf, "/apps/evolution/mail/composer/spell_error_color", NULL); + gdk_color_parse (str_color, &prefs->spell_error_color); + + val = gconf_client_get_without_default (prefs->gconf, "/apps/evolution/mail/composer/spell_language", NULL); + if (val) { + prefs->language_str = g_strdup (gconf_value_get_string (val)); + gconf_value_free (val); + } else prefs->language_str = g_strdup (def_lang); spell_save_orig (prefs); @@ -612,23 +610,22 @@ spell_load_values (MailComposerPrefs *prefs) g_free (def_lang); } -#define SET(t,x,prop) \ - gconf_client_set_ ## t (prefs->gconf, GNOME_SPELL_GCONF_DIR x, prop, NULL); - #define STR_EQUAL(str1, str2) ((str1 == NULL && str2 == NULL) || (str1 && str2 && !strcmp (str1, str2))) static void spell_save_values (MailComposerPrefs *prefs, gboolean force) { if (force || !gdk_color_equal (&prefs->spell_error_color, &prefs->spell_error_color_orig)) { - SET (int, "/spell_error_color_red", prefs->spell_error_color.red); - SET (int, "/spell_error_color_green", prefs->spell_error_color.green); - SET (int, "/spell_error_color_blue", prefs->spell_error_color.blue); + gchar *str_color = g_strdup_printf ("#%02x%02x%02x", + prefs->spell_error_color.red >> 8, + prefs->spell_error_color.green >> 8, + prefs->spell_error_color.blue >> 8); + gconf_client_set_string (prefs->gconf, "/apps/evolution/mail/composer/spell_error_color", str_color, NULL); + g_free (str_color); } - if (force || !STR_EQUAL (prefs->language_str, prefs->language_str_orig)) { - SET (string, "/language", prefs->language_str ? prefs->language_str : ""); - } + if (force || !STR_EQUAL (prefs->language_str, prefs->language_str_orig)) + gconf_client_set_string (prefs->gconf, "/apps/evolution/mail/composer/spell_language", prefs->language_str ? prefs->language_str : "", NULL); gconf_client_suggest_sync (prefs->gconf, NULL); } diff --git a/mail/mail-config.c b/mail/mail-config.c index 15b5ebd331..428338f5ab 100644 --- a/mail/mail-config.c +++ b/mail/mail-config.c @@ -426,15 +426,63 @@ config_cache_mime_types (void) g_ptr_array_add (config->mime_types, NULL); } +static void +config_spell_ensure_copy () +{ + gboolean copied = gconf_client_get_bool (config->gconf, "/apps/evolution/mail/composer/spell_copied_from_old_location", NULL); + + if (!copied) { + GConfValue *val; + GdkColor color; + gchar *language; +#define GET(t,x,prop,c) \ + val = gconf_client_get_without_default (config->gconf, "/GNOME/Spell/" x, NULL); \ + if (val) { prop = c (gconf_value_get_ ## t (val)); \ + gconf_value_free (val); } + + GET (int, "spell_error_color_red", color.red, (int)); + if (val) { + gchar *str_color; + + GET (int, "spell_error_color_green", color.green, (int)); + GET (int, "spell_error_color_blue", color.blue, (int)); + str_color = g_strdup_printf ("#%02x%02x%02x", 0xff & (color.red >> 8), 0xff & (color.green >> 8), 0xff & (color.blue >> 8)); + gconf_client_set_string (config->gconf, "/apps/evolution/mail/composer/spell_error_color", str_color, NULL); + g_free (str_color); + } + + GET (string, "language", language, g_strdup); + if (val) { + gconf_client_set_string (config->gconf, "/apps/evolution/mail/composer/spell_language", language, NULL); + g_free (language); + } + + gconf_client_set_bool (config->gconf, "/apps/evolution/mail/composer/spell_copied_from_old_location", TRUE, NULL); + gconf_client_suggest_sync (config->gconf, NULL); + } +} + +static void +config_spell_get_error_color (GdkColor *color) +{ + gchar *str_color; + + config_spell_ensure_copy (); + + str_color = gconf_client_get_string (config->gconf, "/apps/evolution/mail/composer/spell_error_color", NULL); + gdk_color_parse (str_color, color); + g_free (str_color); +} + static void config_write_style (void) { + GdkColor spell_error_color; char *filename; FILE *rc; gboolean custom; char *fix_font; char *var_font; - gint red, green, blue; /* * This is the wrong way to get the path but it needs to @@ -458,13 +506,11 @@ config_write_style (void) var_font = gconf_client_get_string (config->gconf, "/apps/evolution/mail/display/fonts/variable", NULL); fix_font = gconf_client_get_string (config->gconf, "/apps/evolution/mail/display/fonts/monospace", NULL); - red = gconf_client_get_int (config->gconf, "/GNOME/Spell/spell_error_color_red", NULL); - green = gconf_client_get_int (config->gconf, "/GNOME/Spell/spell_error_color_green", NULL); - blue = gconf_client_get_int (config->gconf, "/GNOME/Spell/spell_error_color_blue", NULL); + config_spell_get_error_color (&spell_error_color); fprintf (rc, "style \"evolution-mail-custom-fonts\" {\n"); fprintf (rc, " GtkHTML::spell_error_color = \"#%02x%02x%02x\"\n", - red >> 8, green >> 8, blue >> 8); + 0xff & (spell_error_color.red >> 8), 0xff & (spell_error_color.green >> 8), 0xff & (spell_error_color.blue >> 8)); if (custom && var_font && fix_font) { fprintf (rc, @@ -528,13 +574,14 @@ mail_config_init (void) gtk_rc_parse (filename); g_free (filename); - gconf_client_add_dir (config->gconf, "/apps/evolution/mail/display/fonts", + gconf_client_add_dir (config->gconf, "/apps/evolution/mail/display/fonts", GCONF_CLIENT_PRELOAD_ONELEVEL, NULL); - gconf_client_add_dir (config->gconf, "/GNOME/Spell", + gconf_client_add_dir (config->gconf, "/apps/evolution/mail/composer/", GCONF_CLIENT_PRELOAD_ONELEVEL, NULL); + config_spell_ensure_copy (); config->font_notify_id = gconf_client_notify_add (config->gconf, "/apps/evolution/mail/display/fonts", gconf_style_changed, NULL, NULL, NULL); - config->spell_notify_id = gconf_client_notify_add (config->gconf, "/GNOME/Spell", + config->spell_notify_id = gconf_client_notify_add (config->gconf, "/apps/evolution/mail/composer/", gconf_style_changed, NULL, NULL, NULL); gconf_client_add_dir (config->gconf, "/apps/evolution/mail/labels", -- cgit v1.2.3