[gedit] Use the gio metadata system.



commit 91cc070c0b46049badcd8db4fff304caba3b2994
Author: Ignacio Casal Quinteiro <icq gnome org>
Date:   Sun Nov 29 21:26:25 2009 +0100

    Use the gio metadata system.
    
    Use the new api to get the metadata and to store, and let the old
    system for win32.

 plugins/spell/gedit-spell-plugin.c |   59 ++++++++++++++++++++++++++++++++----
 1 files changed, 53 insertions(+), 6 deletions(-)
---
diff --git a/plugins/spell/gedit-spell-plugin.c b/plugins/spell/gedit-spell-plugin.c
index 0d5fe15..d70daf5 100644
--- a/plugins/spell/gedit-spell-plugin.c
+++ b/plugins/spell/gedit-spell-plugin.c
@@ -32,7 +32,6 @@
 #include <gmodule.h>
 
 #include <gedit/gedit-debug.h>
-#include <gedit/gedit-metadata-manager.h>
 #include <gedit/gedit-prefs-manager.h>
 #include <gedit/gedit-statusbar.h>
 
@@ -41,6 +40,12 @@
 #include "gedit-spell-language-dialog.h"
 #include "gedit-automatic-spell-checker.h"
 
+#ifdef G_OS_WIN32
+#include <gedit/gedit-metadata-manager.h>
+#else
+#define GEDIT_METADATA_ATTRIBUTE_SPELL_LANGUAGE "metadata::gedit-spell-language"
+#endif
+
 #define WINDOW_DATA_KEY "GeditSpellPluginWindowData"
 #define MENU_PATH "/MenuBar/ToolsMenu/ToolsOps_1"
 
@@ -134,11 +139,12 @@ set_spell_language_cb (GeditSpellChecker   *spell,
 		       const GeditSpellCheckerLanguage *lang,
 		       GeditDocument 	   *doc)
 {
-	gchar *uri;
-
 	g_return_if_fail (GEDIT_IS_DOCUMENT (doc));
 	g_return_if_fail (lang != NULL);
 
+#ifdef G_OS_WIN32
+	gchar *uri;
+
 	uri = gedit_document_get_uri (doc);
 
 	if (uri != NULL)
@@ -154,6 +160,21 @@ set_spell_language_cb (GeditSpellChecker   *spell,
 
 		g_free (uri);
 	}
+#else
+	GFileInfo *info;
+	const gchar *key;
+
+	key = gedit_spell_checker_language_to_key (lang);
+	g_return_if_fail (key != NULL);
+
+	info = g_file_info_new ();
+
+	g_file_info_set_attribute_string (info, GEDIT_METADATA_ATTRIBUTE_SPELL_LANGUAGE,
+					  key);
+
+	gedit_document_set_metadata (doc, info);
+	g_object_unref (info);
+#endif
 }
 
 static GeditSpellChecker *
@@ -170,10 +191,11 @@ get_spell_checker_from_document (GeditDocument *doc)
 
 	if (data == NULL)
 	{
-		gchar *uri;
-
 		spell = gedit_spell_checker_new ();
 
+#ifdef G_OS_WIN32
+		gchar *uri;
+
 		uri = gedit_document_get_uri (doc);
 
 		if (uri != NULL)
@@ -194,8 +216,33 @@ get_spell_checker_from_document (GeditDocument *doc)
 				gedit_spell_checker_set_language (spell,
 								  lang);
 
-			g_free (uri);	
+			g_free (uri);
 		}
+#else
+		GFileInfo *info;
+
+		info = gedit_document_get_metadata (doc);
+
+		if (info != NULL)
+		{
+			const GeditSpellCheckerLanguage *lang = NULL;
+			const gchar *value = NULL;
+
+			if (g_file_info_has_attribute (info,
+						       GEDIT_METADATA_ATTRIBUTE_SPELL_LANGUAGE))
+			{
+				value = g_file_info_get_attribute_string (info,
+									  GEDIT_METADATA_ATTRIBUTE_SPELL_LANGUAGE);
+
+				lang = gedit_spell_checker_language_from_key (value);
+			}
+
+			if (lang != NULL)
+			{
+				gedit_spell_checker_set_language (spell, lang);
+			}
+		}
+#endif
 
 		g_object_set_qdata_full (G_OBJECT (doc), 
 					 spell_checker_id, 



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