gedit r6720 - in branches/win32: . gedit plugin-loaders/python/bindings



Author: pborelli
Date: Thu Dec 25 11:48:51 2008
New Revision: 6720
URL: http://svn.gnome.org/viewvc/gedit?rev=6720&view=rev

Log:
2008-12-25  Paolo Borelli  <pborelli katamail com>

	* gedit/gedit-document.[ch]:
	* gedit/gedit-tab.c:
	Use content type instead of mime type where possible.



Modified:
   branches/win32/ChangeLog
   branches/win32/gedit/gedit-document.c
   branches/win32/gedit/gedit-document.h
   branches/win32/gedit/gedit-tab.c
   branches/win32/plugin-loaders/python/bindings/gedit.defs

Modified: branches/win32/gedit/gedit-document.c
==============================================================================
--- branches/win32/gedit/gedit-document.c	(original)
+++ branches/win32/gedit/gedit-document.c	Thu Dec 25 11:48:51 2008
@@ -109,7 +109,7 @@
 
 	const GeditEncoding *encoding;
 
-	gchar	    *mime_type;
+	gchar	    *content_type;
 
 	time_t       mtime;
 
@@ -143,6 +143,7 @@
 
 	PROP_URI,
 	PROP_SHORTNAME,
+	PROP_CONTENT_TYPE,
 	PROP_MIME_TYPE,
 	PROP_READ_ONLY,
 	PROP_ENCODING,
@@ -278,7 +279,7 @@
 	}
 
 	g_free (doc->priv->uri);
-	g_free (doc->priv->mime_type);
+	g_free (doc->priv->content_type);
 	g_free (doc->priv->search_text);
 
 	if (doc->priv->to_search_region != NULL)
@@ -306,8 +307,11 @@
 		case PROP_SHORTNAME:
 			g_value_take_string (value, gedit_document_get_short_name_for_display (doc));
 			break;
+		case PROP_CONTENT_TYPE:
+			g_value_take_string (value, gedit_document_get_content_type (doc));
+			break;
 		case PROP_MIME_TYPE:
-			g_value_set_string (value, doc->priv->mime_type);
+			g_value_take_string (value, gedit_document_get_mime_type (doc));
 			break;
 		case PROP_READ_ONLY:
 			g_value_set_boolean (value, doc->priv->readonly);
@@ -416,6 +420,14 @@
 							      G_PARAM_READABLE |
 							      G_PARAM_STATIC_STRINGS));
 
+	g_object_class_install_property (object_class, PROP_CONTENT_TYPE,
+					 g_param_spec_string ("content-type",
+							      "Content Type",
+							      "The document's Content Type",
+							      NULL,
+							      G_PARAM_READABLE |
+							      G_PARAM_STATIC_STRINGS));
+
 	g_object_class_install_property (object_class, PROP_MIME_TYPE,
 					 g_param_spec_string ("mime-type",
 							      "MIME Type",
@@ -689,7 +701,7 @@
 	doc->priv->uri = NULL;
 	doc->priv->untitled_number = get_untitled_number ();
 
-	doc->priv->mime_type = g_strdup ("text/plain");
+	doc->priv->content_type = g_content_type_from_mime_type ("text/plain");
 
 	doc->priv->readonly = FALSE;
 
@@ -741,7 +753,7 @@
 
 static GtkSourceLanguage *
 guess_language (const gchar *uri,
-		const gchar *mime_type)
+		const gchar *content_type)
 
 {
 	gchar *data;
@@ -764,35 +776,32 @@
 	}
 	else
 	{
+		GFile *file;
+		gchar *basename;
+
 		gedit_debug_message (DEBUG_DOCUMENT, "Sniffing Language");
 
-		if (strcmp (mime_type, "text/plain") != 0)
-		{
-			GFile *file;
-			gchar *basename;
+		file = g_file_new_for_uri (uri);
+		basename = g_file_get_basename (file);
 
-			file = g_file_new_for_uri (uri);
-			basename = g_file_get_basename (file);
+		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,
-						mime_type);
-
-			g_free (basename);
-			g_object_unref (file);
-		}
+		g_free (basename);
+		g_object_unref (file);
 	}
 
 	return language;
 }
 
-/* If mime type is null, we guess from the filename */
-/* If uri is null, we only set the mime-type */
+/* If content type is null, we guess from the filename */
+/* If uri is null, we only set the content-type */
 static void
 set_uri (GeditDocument *doc,
 	 const gchar   *uri,
-	 const gchar   *mime_type)
+	 const gchar   *content_type)
 {
 	gedit_debug (DEBUG_DOCUMENT);
 
@@ -813,32 +822,21 @@
 		}
 	}
 
-	g_free (doc->priv->mime_type);
-	if (mime_type != NULL)
+	g_free (doc->priv->content_type);
+
+	if (content_type != NULL)
 	{
-		doc->priv->mime_type = g_strdup (mime_type);
+		doc->priv->content_type = g_strdup (content_type);
 	}
 	else
 	{
 		if (doc->priv->uri != NULL)
 		{
-			gchar *content_type;
-			gchar *detected_mime;
-
-			content_type = g_content_type_guess (doc->priv->uri, NULL, 0, NULL);
-
-			if (content_type == NULL || g_content_type_is_unknown (content_type))
-				detected_mime = g_strdup ("text/plain");
-			else
-				detected_mime = g_content_type_get_mime_type (content_type);
-
-			doc->priv->mime_type = detected_mime != NULL ? detected_mime : g_strdup ("text/plain");
-
-			g_free (content_type);
+			doc->priv->content_type = g_content_type_guess (doc->priv->uri, NULL, 0, NULL);
 		}
 		else
 		{
-			doc->priv->mime_type = g_strdup ("text/plain");
+			doc->priv->content_type = g_content_type_from_mime_type ("text/plain");
 		}
 	}
 
@@ -846,7 +844,7 @@
 	{
 		GtkSourceLanguage *language;
 
-		language = guess_language (doc->priv->uri, doc->priv->mime_type);
+		language = guess_language (doc->priv->uri, doc->priv->content_type);
 
 		gedit_debug_message (DEBUG_DOCUMENT, "Language: %s",
 				     language != NULL ? gtk_source_language_get_name (language) : "None");
@@ -878,12 +876,7 @@
 gedit_document_set_uri (GeditDocument *doc,
 			const gchar   *uri)
 {
-	gchar *mime_type;
-
-	mime_type = g_strdup (doc->priv->mime_type);
-	set_uri (doc, uri, mime_type);
-	
-	g_free (mime_type);
+	set_uri (doc, uri, doc->priv->content_type);
 }
 
 /* Never returns NULL */
@@ -912,14 +905,29 @@
 		return gedit_utils_basename_for_display (doc->priv->uri);
 }
 
+gchar *
+gedit_document_get_content_type (GeditDocument *doc)
+{
+	g_return_val_if_fail (GEDIT_IS_DOCUMENT (doc), NULL);
+
+ 	return g_strdup (doc->priv->content_type);
+}
+
 /* Never returns NULL */
 gchar *
 gedit_document_get_mime_type (GeditDocument *doc)
 {
+	gchar *mime_type = NULL;
+
 	g_return_val_if_fail (GEDIT_IS_DOCUMENT (doc), "text/plain");
-	g_return_val_if_fail (doc->priv->mime_type != NULL, "text/plain");
 
- 	return g_strdup (doc->priv->mime_type);
+	if ((doc->priv->content_type != NULL) &&
+	    (!g_content_type_is_unknown (doc->priv->content_type)))
+	{
+		mime_type = g_content_type_get_mime_type (doc->priv->content_type);
+	}
+
+ 	return mime_type != NULL ? g_strdup (mime_type) : g_strdup ("text/plain");
 }
 
 /* Note: do not emit the notify::read-only signal */
@@ -1012,12 +1020,8 @@
 	{
 		GtkTextIter iter;
 		const gchar *content_type;
-		gchar *mime_type = NULL;
 
 		content_type = gedit_document_loader_get_content_type (loader);
-		
-		if (content_type)
-			mime_type = g_content_type_get_mime_type (content_type);
 
 		doc->priv->mtime = gedit_document_loader_get_mtime (loader);
 
@@ -1031,9 +1035,7 @@
 			      (doc->priv->requested_encoding != NULL));
 		      
 		/* We already set the uri */
-		set_uri (doc, NULL, mime_type);
-
-		g_free (mime_type);
+		set_uri (doc, NULL, content_type);
 
 		/* move the cursor at the requested line if any */
 		if (doc->priv->requested_line_pos > 0)
@@ -1209,12 +1211,10 @@
 		{
 			const gchar *uri;
 			const gchar *content_type;
-			gchar *mime_type;
 
 			uri = gedit_document_saver_get_uri (saver);
 
 			content_type = gedit_document_saver_get_content_type (saver);
-			mime_type = g_content_type_get_mime_type (content_type);
 
 			doc->priv->mtime = gedit_document_saver_get_mtime (saver);
 
@@ -1225,9 +1225,7 @@
 			gtk_text_buffer_set_modified (GTK_TEXT_BUFFER (doc),
 						      FALSE);
 
-			set_uri (doc, uri, mime_type);
-
-			g_free (mime_type);
+			set_uri (doc, uri, content_type);
 
 			set_encoding (doc, 
 				      doc->priv->requested_encoding, 

Modified: branches/win32/gedit/gedit-document.h
==============================================================================
--- branches/win32/gedit/gedit-document.h	(original)
+++ branches/win32/gedit/gedit-document.h	Thu Dec 25 11:48:51 2008
@@ -162,6 +162,9 @@
 gchar		*gedit_document_get_short_name_for_display
 					 	(GeditDocument       *doc);
 
+gchar		*gedit_document_get_content_type
+					 	(GeditDocument       *doc);
+
 gchar		*gedit_document_get_mime_type 	(GeditDocument       *doc);
 
 gboolean	 gedit_document_get_readonly 	(GeditDocument       *doc);

Modified: branches/win32/gedit/gedit-tab.c
==============================================================================
--- branches/win32/gedit/gedit-tab.c	(original)
+++ branches/win32/gedit/gedit-tab.c	Thu Dec 25 11:48:51 2008
@@ -1717,9 +1717,10 @@
 
 	switch (tab->priv->state)
 	{
+		gchar *content_type;
 		gchar *mime_type;
-		gchar *mime_description;
-		gchar *mime_full_description; 
+		gchar *content_description;
+		gchar *content_full_description; 
 		gchar *encoding;
 		const GeditEncoding *enc;
 
@@ -1738,16 +1739,17 @@
 						ruri_markup);
 			break;			
 		default:
+			content_type = gedit_document_get_content_type (doc);
 			mime_type = gedit_document_get_mime_type (doc);
-			mime_description = g_content_type_get_description (mime_type);
+			content_description = g_content_type_get_description (content_type);
 
-			if (mime_description == NULL)
-				mime_full_description = g_strdup (mime_type);
+			if (content_description == NULL)
+				content_full_description = g_strdup (mime_type);
 			else
-				mime_full_description = g_strdup_printf ("%s (%s)", 
-						mime_description, mime_type);
+				content_full_description = g_strdup_printf ("%s (%s)", 
+						content_description, mime_type);
 
-			g_free (mime_description);
+			g_free (content_description);
 			g_free (mime_type);
 
 			enc = gedit_document_get_encoding (doc);
@@ -1761,15 +1763,15 @@
 						        "<b>%s</b> %s\n"
 						        "<b>%s</b> %s",
 						        _("Name:"), ruri,
-						        _("MIME Type:"), mime_full_description,
+						        _("MIME Type:"), content_full_description,
 						        _("Encoding:"), encoding);
 
 			g_free (encoding);
-			g_free (mime_full_description);
+			g_free (content_full_description);
 
 			break;
 	}
-	
+
 	g_free (ruri);	
 	g_free (ruri_markup);
 	

Modified: branches/win32/plugin-loaders/python/bindings/gedit.defs
==============================================================================
--- branches/win32/plugin-loaders/python/bindings/gedit.defs	(original)
+++ branches/win32/plugin-loaders/python/bindings/gedit.defs	Thu Dec 25 11:48:51 2008
@@ -244,6 +244,12 @@
   (return-type "gchar*")
 )
 
+(define-method get_content_type
+  (of-object "GeditDocument")
+  (c-name "gedit_document_get_content_type")
+  (return-type "gchar*")
+)
+
 (define-method get_mime_type
   (of-object "GeditDocument")
   (c-name "gedit_document_get_mime_type")



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