[evolution-patches] spell prefs in evo/mail



attached patch adds default spell error color to schema file and moves
spell preferences from /GNOME/Spell to /apps/evolution/mail/composer
(gconf location).

Index: evolution-mail.schemas
===================================================================
RCS file: /cvs/gnome/evolution/mail/evolution-mail.schemas,v
retrieving revision 1.15
diff -u -p -r1.15 evolution-mail.schemas
--- evolution-mail.schemas	20 May 2003 18:33:32 -0000	1.15
+++ evolution-mail.schemas	24 Jun 2003 15:10:09 -0000
@@ -143,6 +143,34 @@
       </locale>
     </schema>
 
+    <schema>
+      <key>/schemas/apps/evolution/mail/composer/spell_copied_from_old_location</key>
+      <applyto>/apps/evolution/mail/composer/spell_copied_from_old_location</applyto>
+      <owner>evolution-mail</owner>
+      <type>bool</type>
+      <default>false</default>
+      <locale name="C">
+         <short>spell preferences are copied from an old location</short>
+         <long>
+	 spell preferences are copied from an old location (/GNOME/Spell)
+         </long>
+      </locale>
+    </schema>
+
+    <schema>
+      <key>/schemas/apps/evolution/mail/composer/spell_error_color</key>
+      <applyto>/apps/evolution/mail/composer/spell_error_color</applyto>
+      <owner>evolution-mail</owner>
+      <type>string</type>
+      <default>#ff0000</default>
+      <locale name="C">
+         <short>spell error color</short>
+         <long>
+	 color for marking misspelled words.
+         </long>
+      </locale>
+    </schema>
+
     <!-- Display Settings -->
 
     <schema>
Index: mail-composer-prefs.c
===================================================================
RCS file: /cvs/gnome/evolution/mail/mail-composer-prefs.c,v
retrieving revision 1.64
diff -u -p -r1.64 mail-composer-prefs.c
--- mail-composer-prefs.c	11 Jun 2003 16:19:34 -0000	1.64
+++ mail-composer-prefs.c	24 Jun 2003 15:10:12 -0000
@@ -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 *pr
 	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 *pr
 	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);
 }
Index: mail-config.c
===================================================================
RCS file: /cvs/gnome/evolution/mail/mail-config.c,v
retrieving revision 1.280
diff -u -p -r1.280 mail-config.c
--- mail-config.c	11 Jun 2003 16:19:34 -0000	1.280
+++ mail-config.c	24 Jun 2003 15:10:13 -0000
@@ -427,14 +427,62 @@ config_cache_mime_types (void)
 }
 
 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", color.red >> 8, color.green >> 8, 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);
+		 spell_error_color.red >> 8, spell_error_color.green >> 8, 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",


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