SF.net SVN: geany:[5330] trunk

ntrel at users.sourceforge.net ntrel at xxxxx
Tue Oct 26 17:20:48 UTC 2010


Revision: 5330
          http://geany.svn.sourceforge.net/geany/?rev=5330&view=rev
Author:   ntrel
Date:     2010-10-26 17:20:48 +0000 (Tue, 26 Oct 2010)

Log Message:
-----------
Show mimetype icon in sidebar Documents list (patch by Colomban
Wendling, thanks).

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/src/document.c
    trunk/src/sidebar.c

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2010-10-26 16:02:30 UTC (rev 5329)
+++ trunk/ChangeLog	2010-10-26 17:20:48 UTC (rev 5330)
@@ -11,6 +11,9 @@
    exponential time.
  * src/ui_utils.h, src/filetypes.c, src/filetypes.h, src/ui_utils.c:
    Add filetype mimetype field (patch by Colomban Wendling, thanks).
+ * src/sidebar.c, src/document.c:
+   Show mimetype icon in sidebar Documents list (patch by Colomban
+   Wendling, thanks).
 
 
 2010-10-25  Nick Treleaven  <nick(dot)treleaven(at)btinternet(dot)com>

Modified: trunk/src/document.c
===================================================================
--- trunk/src/document.c	2010-10-26 16:02:30 UTC (rev 5329)
+++ trunk/src/document.c	2010-10-26 17:20:48 UTC (rev 5330)
@@ -2512,7 +2512,10 @@
 	document_load_config(doc, type, ft_changed);
 
 	if (ft_changed)
+	{
+		sidebar_openfiles_update(doc); /* to update the icon */
 		g_signal_emit_by_name(geany_object, "document-filetype-set", doc, old_ft);
+	}
 }
 
 

Modified: trunk/src/sidebar.c
===================================================================
--- trunk/src/sidebar.c	2010-10-26 16:02:30 UTC (rev 5329)
+++ trunk/src/sidebar.c	2010-10-26 17:20:48 UTC (rev 5330)
@@ -272,7 +272,7 @@
 
 	/* store the icon and the short filename to show, and the index as reference,
 	 * the colour (black/red/green) and the full name for the tooltip */
-	store_openfiles = gtk_tree_store_new(5, G_TYPE_STRING, G_TYPE_STRING,
+	store_openfiles = gtk_tree_store_new(5, GDK_TYPE_PIXBUF, G_TYPE_STRING,
 		G_TYPE_POINTER, GDK_TYPE_COLOR, G_TYPE_STRING);
 	gtk_tree_view_set_model(GTK_TREE_VIEW(tv.tree_openfiles), GTK_TREE_MODEL(store_openfiles));
 
@@ -287,7 +287,7 @@
 	g_object_set(text_renderer, "ellipsize", PANGO_ELLIPSIZE_MIDDLE, NULL);
 	column = gtk_tree_view_column_new();
 	gtk_tree_view_column_pack_start(column, icon_renderer, FALSE);
-	gtk_tree_view_column_set_attributes(column, icon_renderer, "stock-id", DOCUMENTS_ICON, NULL);
+	gtk_tree_view_column_set_attributes(column, icon_renderer, "pixbuf", DOCUMENTS_ICON, NULL);
 	gtk_tree_view_column_pack_start(column, text_renderer, TRUE);
 	gtk_tree_view_column_set_attributes(column, text_renderer, "text", DOCUMENTS_SHORTNAME,
 		"foreground-gdk", DOCUMENTS_COLOR, NULL);
@@ -399,6 +399,7 @@
 	gchar *dirname = NULL;
 	static GtkTreeIter parent;
 	GtkTreeModel *model = GTK_TREE_MODEL(store_openfiles);
+	static GdkPixbuf *dir_icon = NULL;
 
 	if (!documents_show_paths)
 		return NULL;
@@ -420,8 +421,11 @@
 		while (gtk_tree_model_iter_next(model, &parent));
 	}
 	/* no match, add dir parent */
+	if (!dir_icon)
+		dir_icon = ui_get_mime_icon("inode/directory", GTK_ICON_SIZE_MENU);
+
 	gtk_tree_store_append(store_openfiles, &parent, NULL);
-	gtk_tree_store_set(store_openfiles, &parent, DOCUMENTS_ICON, GTK_STOCK_DIRECTORY,
+	gtk_tree_store_set(store_openfiles, &parent, DOCUMENTS_ICON, dir_icon,
 		DOCUMENTS_FILENAME, path,
 		DOCUMENTS_SHORTNAME, doc->file_name ? dirname : GEANY_STRING_UNTITLED, -1);
 
@@ -439,6 +443,7 @@
 	GtkTreeIter *parent = get_doc_parent(doc);
 	gchar *basename;
 	const GdkColor *color = document_get_status_color(doc);
+	static GdkPixbuf *file_icon = NULL;
 
 	gtk_tree_store_append(store_openfiles, iter, parent);
 
@@ -452,8 +457,12 @@
 		gtk_tree_view_expand_row(GTK_TREE_VIEW(tv.tree_openfiles), path, TRUE);
 		gtk_tree_path_free(path);
 	}
+	if (!file_icon)
+		file_icon = ui_get_mime_icon("text/plain", GTK_ICON_SIZE_MENU);
+
 	basename = g_path_get_basename(DOC_FILENAME(doc));
-	gtk_tree_store_set(store_openfiles, iter, DOCUMENTS_ICON, GTK_STOCK_FILE,
+	gtk_tree_store_set(store_openfiles, iter,
+		DOCUMENTS_ICON, (doc->file_type && doc->file_type->icon) ? doc->file_type->icon : file_icon,
 		DOCUMENTS_SHORTNAME, basename, DOCUMENTS_DOCUMENT, doc, DOCUMENTS_COLOR, color,
 		DOCUMENTS_FILENAME, DOC_FILENAME(doc), -1);
 	g_free(basename);
@@ -482,10 +491,13 @@
 
 	if (utils_str_equal(fname, DOC_FILENAME(doc)))
 	{
-		/* just update color */
+		/* just update color and the icon */
 		const GdkColor *color = document_get_status_color(doc);
+		GdkPixbuf *icon = doc->file_type->icon;
 
 		gtk_tree_store_set(store_openfiles, iter, DOCUMENTS_COLOR, color, -1);
+		if (icon)
+			gtk_tree_store_set(store_openfiles, iter, DOCUMENTS_ICON, icon, -1);
 	}
 	else
 	{


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



More information about the Commits mailing list