[gedit] Added gedit_document_set_content_type



commit 7de4013c74bfbcd42f9dcd2437418f586b960aca
Author: Jesse van den Kieboom <jessevdk gnome org>
Date:   Sun Feb 14 20:46:44 2010 +0100

    Added gedit_document_set_content_type

 gedit/gedit-document.c |   38 +++++++++++++++++++++++++++++---------
 gedit/gedit-document.h |    4 ++++
 2 files changed, 33 insertions(+), 9 deletions(-)
---
diff --git a/gedit/gedit-document.c b/gedit/gedit-document.c
index 43cb3f4..17183fa 100644
--- a/gedit/gedit-document.c
+++ b/gedit/gedit-document.c
@@ -376,6 +376,10 @@ gedit_document_set_property (GObject      *object,
 			gedit_document_set_short_name_for_display (doc,
 			                                           g_value_get_string (value));
 			break;
+		case PROP_CONTENT_TYPE:
+			gedit_document_set_content_type (doc,
+			                                 g_value_get_string (value));
+			break;
 		default:
 			G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 			break;
@@ -457,7 +461,7 @@ gedit_document_class_init (GeditDocumentClass *klass)
 							      "Content Type",
 							      "The document's Content Type",
 							      NULL,
-							      G_PARAM_READABLE |
+							      G_PARAM_READWRITE |
 							      G_PARAM_STATIC_STRINGS));
 
 	g_object_class_install_property (object_class, PROP_MIME_TYPE,
@@ -761,22 +765,29 @@ guess_language (GeditDocument *doc,
 	else
 	{
 		GFile *file;
-		gchar *basename;
+		gchar *basename = NULL;
 
 		file = gedit_document_get_location (doc);
+		gedit_debug_message (DEBUG_DOCUMENT, "Sniffing Language");
 
 		if (file)
 		{
-			gedit_debug_message (DEBUG_DOCUMENT, "Sniffing Language");
-
 			basename = g_file_get_basename (file);
+		}
+		else if (doc->priv->short_name != NULL)
+		{
+			basename = g_strdup (doc->priv->short_name);
+		}
 
-			language = gtk_source_language_manager_guess_language (
-						gedit_get_language_manager (),
-						basename,
-						content_type);
+		language = gtk_source_language_manager_guess_language (
+					gedit_get_language_manager (),
+					basename,
+					content_type);
 
-			g_free (basename);
+		g_free (basename);
+
+		if (file != NULL)
+		{
 			g_object_unref (file);
 		}
 	}
@@ -916,6 +927,15 @@ set_content_type (GeditDocument *doc,
 	g_object_notify (G_OBJECT (doc), "content-type");
 }
 
+void
+gedit_document_set_content_type (GeditDocument *doc,
+                                 const gchar   *content_type)
+{
+	g_return_if_fail (GEDIT_IS_DOCUMENT (doc));
+
+	set_content_type (doc, content_type);
+}
+
 #ifndef G_OS_WIN32
 static void
 query_info_cb (GFile         *source,
diff --git a/gedit/gedit-document.h b/gedit/gedit-document.h
index 3cb6893..cf966b1 100644
--- a/gedit/gedit-document.h
+++ b/gedit/gedit-document.h
@@ -194,6 +194,10 @@ void		 gedit_document_set_short_name_for_display
 gchar		*gedit_document_get_content_type
 					 	(GeditDocument       *doc);
 
+void		 gedit_document_set_content_type
+					 	(GeditDocument       *doc,
+					 	 const gchar         *content_type);
+
 gchar		*gedit_document_get_mime_type 	(GeditDocument       *doc);
 
 gboolean	 gedit_document_get_readonly 	(GeditDocument       *doc);



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