SF.net SVN: geany: [1728] trunk

ntrel at users.sourceforge.net ntrel at xxxxx
Fri Jul 20 16:33:19 UTC 2007


Revision: 1728
          http://geany.svn.sourceforge.net/geany/?rev=1728&view=rev
Author:   ntrel
Date:     2007-07-20 09:33:16 -0700 (Fri, 20 Jul 2007)

Log Message:
-----------
Apply patch to add symbol list icons from Jean-Fran?\195?\167ois Wauthy
(thanks). Also thanks to KDevelop for the icons.
Add list of projects to THANKS.

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/Makefile.am
    trunk/THANKS
    trunk/configure.in
    trunk/src/symbols.c
    trunk/src/treeviews.c
    trunk/src/treeviews.h

Added Paths:
-----------
    trunk/icons/
    trunk/icons/16x16/
    trunk/icons/16x16/Makefile.am
    trunk/icons/16x16/classviewer-class.png
    trunk/icons/16x16/classviewer-macro.png
    trunk/icons/16x16/classviewer-member.png
    trunk/icons/16x16/classviewer-method.png
    trunk/icons/16x16/classviewer-namespace.png
    trunk/icons/16x16/classviewer-other.png
    trunk/icons/16x16/classviewer-struct.png
    trunk/icons/16x16/classviewer-var.png
    trunk/icons/Makefile.am

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2007-07-20 12:06:51 UTC (rev 1727)
+++ trunk/ChangeLog	2007-07-20 16:33:16 UTC (rev 1728)
@@ -5,6 +5,17 @@
    Rename ui_close_buttons_toggle() ui_document_buttons_update().
    Move app->sensitive_buttons to ui_utils.c for easier maintenance,
    rename to document_buttons.
+ * configure.in, src/treeviews.c, src/treeviews.h,
+   src/symbols.c, THANKS, Makefile.am, icons, icons/16x16,
+   icons/16x16/classviewer-member.png, icons/16x16/classviewer-var.png,
+   icons/16x16/classviewer-namespace.png,
+   icons/16x16/classviewer-method.png, icons/16x16/Makefile.am,
+   icons/16x16/classviewer-macro.png, icons/16x16/classviewer-other.png,
+   icons/16x16/classviewer-struct.png,
+   icons/16x16/classviewer-class.png, icons/Makefile.am:
+   Apply patch to add symbol list icons from Jean-François Wauthy
+   (thanks). Also thanks to KDevelop for the icons.
+   Add list of projects to THANKS.
 
 
 2007-07-19  Nick Treleaven  <nick.treleaven at btinternet.com>

Modified: trunk/Makefile.am
===================================================================
--- trunk/Makefile.am	2007-07-20 12:06:51 UTC (rev 1727)
+++ trunk/Makefile.am	2007-07-20 16:33:16 UTC (rev 1728)
@@ -1,6 +1,6 @@
 ## Process this file with automake to produce Makefile.in
 
-SUBDIRS = tagmanager scintilla src plugins po doc
+SUBDIRS = tagmanager scintilla src plugins icons po doc
 
 WIN32_BUILD_FILES = \
 	geany_private.rc \

Modified: trunk/THANKS
===================================================================
--- trunk/THANKS	2007-07-20 12:06:51 UTC (rev 1727)
+++ trunk/THANKS	2007-07-20 16:33:16 UTC (rev 1728)
@@ -1,10 +1,11 @@
 What's this file about?
 -----------------------
 This file lists all external people that have contributed to this project.
+If any contributors are missing, please email the developers - see the AUTHORS file.
 
 
 Testers and contributors:
---------------------------
+-------------------------
 These people have contributed to Geany by testing the software,
 reporting problems, sending patches and making useful suggestions.
 Frank Lanitz <frank(at)frank(dot)uvena(dot)de> - heavy testing
@@ -33,9 +34,10 @@
 François Cami <francois.cami(at)free(dot)fr>, Guillaume Duviol - tab replacement patch
 Alexander Rodin <rodin(dot)alexander(at)gmail(dot)com> - class builder patch
 Shiv <shivakumar(dot)gn(at)gmail(dot)com> - Sun Studio compiler compatibility patch
+Jean-François Wauthy <pollux(at)xfce(dot)org> - Symbol list icons patch
 
 Translators:
-----------------------------------
+------------
 These people have translated Geany to foreign languages.
 Yura Semashko <yurand2(at)gmail(dot)com> - be_BY
 Dilyan Rusev <dilyanrusev(at)gmail(dot)com> - bg
@@ -57,3 +59,12 @@
 Clytie Siddall <clytie(at)riverland(dot)net(dot)au> - vi_VN
 Dormouse Young <dormouse.young(at)gmail(dot)com> - zh_CN
 KoViCH <kovich.ian(at)gmail(dot)com> - zh_TW
+
+Projects:
+---------
+GTK/GLib
+Scintilla
+Tagmanager
+CTags
+Anjuta (tagmanager)
+KDevelop (symbol list icons)

Modified: trunk/configure.in
===================================================================
--- trunk/configure.in	2007-07-20 12:06:51 UTC (rev 1727)
+++ trunk/configure.in	2007-07-20 16:33:16 UTC (rev 1728)
@@ -178,6 +178,8 @@
 
 AC_OUTPUT([
 Makefile
+icons/Makefile
+icons/16x16/Makefile
 tagmanager/Makefile
 tagmanager/include/Makefile
 scintilla/Makefile


Property changes on: trunk/icons
___________________________________________________________________
Name: svn:ignore
   + Makefile
Makefile.in



Property changes on: trunk/icons/16x16
___________________________________________________________________
Name: svn:ignore
   + Makefile
Makefile.in


Added: trunk/icons/16x16/Makefile.am
===================================================================
--- trunk/icons/16x16/Makefile.am	                        (rev 0)
+++ trunk/icons/16x16/Makefile.am	2007-07-20 16:33:16 UTC (rev 1728)
@@ -0,0 +1,13 @@
+iconsdir = $(datadir)/icons/hicolor/16x16/apps
+icons_DATA =  	                                    			\
+	classviewer-class.png						\
+	classviewer-macro.png						\
+	classviewer-member.png						\
+	classviewer-method.png						\
+	classviewer-namespace.png					\
+	classviewer-other.png						\
+	classviewer-struct.png						\
+	classviewer-var.png						
+		
+EXTRA_DIST = 								\
+	$(icons_DATA)


Property changes on: trunk/icons/16x16/Makefile.am
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Added: trunk/icons/16x16/classviewer-class.png
===================================================================
(Binary files differ)


Property changes on: trunk/icons/16x16/classviewer-class.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/icons/16x16/classviewer-macro.png
===================================================================
(Binary files differ)


Property changes on: trunk/icons/16x16/classviewer-macro.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/icons/16x16/classviewer-member.png
===================================================================
(Binary files differ)


Property changes on: trunk/icons/16x16/classviewer-member.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/icons/16x16/classviewer-method.png
===================================================================
(Binary files differ)


Property changes on: trunk/icons/16x16/classviewer-method.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/icons/16x16/classviewer-namespace.png
===================================================================
(Binary files differ)


Property changes on: trunk/icons/16x16/classviewer-namespace.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/icons/16x16/classviewer-other.png
===================================================================
(Binary files differ)


Property changes on: trunk/icons/16x16/classviewer-other.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/icons/16x16/classviewer-struct.png
===================================================================
(Binary files differ)


Property changes on: trunk/icons/16x16/classviewer-struct.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/icons/16x16/classviewer-var.png
===================================================================
(Binary files differ)


Property changes on: trunk/icons/16x16/classviewer-var.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/icons/Makefile.am
===================================================================
--- trunk/icons/Makefile.am	                        (rev 0)
+++ trunk/icons/Makefile.am	2007-07-20 16:33:16 UTC (rev 1728)
@@ -0,0 +1,16 @@
+SUBDIRS = 								\
+	16x16
+
+gtk_update_icon_cache = gtk-update-icon-cache -f -t $(datadir)/icons/hicolor
+
+install-data-hook:
+	@-if test -z "$(DESTDIR)"; then					\
+		echo "Updating Gtk icon cache.";			\
+		$(gtk_update_icon_cache);				\
+	else								\
+		echo "*** Icon cache not updated. Remember to run:";	\
+		echo "***";						\
+		echo "***   $(gtk_update_icon_cache)";			\
+		echo "***";						\
+	fi
+


Property changes on: trunk/icons/Makefile.am
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Modified: trunk/src/symbols.c
===================================================================
--- trunk/src/symbols.c	2007-07-20 12:06:51 UTC (rev 1727)
+++ trunk/src/symbols.c	2007-07-20 16:33:16 UTC (rev 1728)
@@ -41,8 +41,8 @@
 #include "document.h"
 #include "support.h"
 #include "msgwindow.h"
+#include "treeviews.h"
 
-
 const guint TM_GLOBAL_TYPE_MASK =
 	tm_tag_class_t | tm_tag_enum_t | tm_tag_interface_t |
 	tm_tag_struct_t | tm_tag_typedef_t | tm_tag_union_t;
@@ -50,7 +50,6 @@
 
 static gchar **html_entities = NULL;
 
-
 typedef struct
 {
 	gboolean	tags_loaded;
@@ -425,10 +424,27 @@
     for (; iter = va_arg(args, GtkTreeIter*), iter != NULL;)
     {
 		gchar *title = va_arg(args, gchar*);
+		gchar *icon_name = va_arg(args, gchar *);
+		GdkPixbuf *icon = NULL;
 
+		if (icon_name) {
+  			GtkIconTheme *icon_theme;
+  			gint x, y;
+
+			gtk_icon_size_lookup(GTK_ICON_SIZE_MENU, &x, &y);
+  			icon_theme = gtk_icon_theme_get_default();
+			icon = gtk_icon_theme_load_icon (icon_theme, icon_name, x, 0, NULL);
+		}
+
     	g_assert(title != NULL);
 		gtk_tree_store_append(tree_store, iter, NULL);
-		gtk_tree_store_set(tree_store, iter, 0, title, -1);
+
+		if (G_IS_OBJECT (icon)) {
+			gtk_tree_store_set(tree_store, iter, SYMBOLS_COLUMN_ICON, icon,
+			                   SYMBOLS_COLUMN_NAME, title, -1);
+			g_object_unref (icon);
+		} else
+			gtk_tree_store_set(tree_store, iter, SYMBOLS_COLUMN_NAME, title, -1);
 	}
 	va_end(args);
 }
@@ -446,69 +462,73 @@
 		case GEANY_FILETYPES_DIFF:
 		{
 			tag_list_add_groups(tag_store,
-				&(tv_iters.tag_function), _("Files"), NULL);
+				&(tv_iters.tag_function), _("Files"), NULL, NULL);
 			break;
 		}
 		case GEANY_FILETYPES_DOCBOOK:
 		{
 			tag_list_add_groups(tag_store,
-				&(tv_iters.tag_function), _("Chapter"),
-				&(tv_iters.tag_class), _("Section"),
-				&(tv_iters.tag_member), _("Sect1"),
-				&(tv_iters.tag_macro), _("Sect2"),
-				&(tv_iters.tag_variable), _("Sect3"),
-				&(tv_iters.tag_struct), _("Appendix"),
-				&(tv_iters.tag_other), _("Other"), NULL);
-			//	&(tv_iters.tag_namespace), _("Other"), NULL);
+				&(tv_iters.tag_function), _("Chapter"), NULL,
+				&(tv_iters.tag_class), _("Section"), NULL,
+				&(tv_iters.tag_member), _("Sect1"), NULL,
+				&(tv_iters.tag_macro), _("Sect2"), NULL,
+				&(tv_iters.tag_variable), _("Sect3"), NULL,
+				&(tv_iters.tag_struct), _("Appendix"), NULL,
+				&(tv_iters.tag_other), _("Other"), NULL,
+				NULL);
+			//	&(tv_iters.tag_namespace), _("Other"), NULL, NULL);
 			break;
 		}
 		case GEANY_FILETYPES_HASKELL:
 			tag_list_add_groups(tag_store,
-				&tv_iters.tag_namespace, _("Module"),
-				&tv_iters.tag_struct, _("Types"),
-				&tv_iters.tag_macro, _("Type constructors"),
-				&tv_iters.tag_function, _("Functions"),
+				&tv_iters.tag_namespace, _("Module"), NULL,
+				&tv_iters.tag_struct, _("Types"), NULL,
+				&tv_iters.tag_macro, _("Type constructors"), NULL,
+				&tv_iters.tag_function, _("Functions"), "classviewer-method",
 				NULL);
 			break;
 		case GEANY_FILETYPES_CONF:
 			tag_list_add_groups(tag_store,
-				&tv_iters.tag_namespace, _("Sections"),
-				&tv_iters.tag_macro, _("Keys"),
+				&tv_iters.tag_namespace, _("Sections"), NULL,
+				&tv_iters.tag_macro, _("Keys"), NULL,
 				NULL);
 			break;
 		case GEANY_FILETYPES_LATEX:
 		{
 			tag_list_add_groups(tag_store,
-				&(tv_iters.tag_function), _("Command"),
-				&(tv_iters.tag_class), _("Environment"),
-				&(tv_iters.tag_member), _("Section"),
-				&(tv_iters.tag_macro), _("Subsection"),
-				&(tv_iters.tag_variable), _("Subsubsection"),
-				&(tv_iters.tag_struct), _("Label"),
-				&(tv_iters.tag_namespace), _("Chapter"),
-				&(tv_iters.tag_other), _("Other"), NULL);
+				&(tv_iters.tag_function), _("Command"), NULL,
+				&(tv_iters.tag_class), _("Environment"), NULL,
+				&(tv_iters.tag_member), _("Section"), NULL,
+				&(tv_iters.tag_macro), _("Subsection"), NULL,
+				&(tv_iters.tag_variable), _("Subsubsection"), NULL,
+				&(tv_iters.tag_struct), _("Label"), NULL,
+				&(tv_iters.tag_namespace), _("Chapter"), NULL,
+				&(tv_iters.tag_other), _("Other"), NULL,
+				NULL);
 			break;
 		}
 		case GEANY_FILETYPES_PERL:
 		{
 			tag_list_add_groups(tag_store,
-				&(tv_iters.tag_class), _("Package"),
-				&(tv_iters.tag_function), _("Functions"),
-				&(tv_iters.tag_member), _("My"),
-				&(tv_iters.tag_macro), _("Local"),
-				&(tv_iters.tag_variable), _("Our"), NULL);
-				//&(tv_iters.tag_struct), _("Label"),
-				//&(tv_iters.tag_namespace), _("Begin"),
-				//&(tv_iters.tag_other), _("Other"), NULL);
+				&(tv_iters.tag_class), _("Package"), NULL,
+				&(tv_iters.tag_function), _("Functions"), "classviewer-method",
+				&(tv_iters.tag_member), _("My"), NULL,
+				&(tv_iters.tag_macro), _("Local"), NULL,
+				&(tv_iters.tag_variable), _("Our"), NULL,
+				NULL);
+				//&(tv_iters.tag_struct), _("Label"), NULL,
+				//&(tv_iters.tag_namespace), _("Begin"), NULL,
+				//&(tv_iters.tag_other), _("Other"), NULL, NULL);
 			break;
 		}
 		case GEANY_FILETYPES_PHP:
 		{
 			tag_list_add_groups(tag_store,
-				&(tv_iters.tag_class), _("Classes"),
-				&(tv_iters.tag_function), _("Functions"),
-				&(tv_iters.tag_macro), _("Constants"),
-				&(tv_iters.tag_variable), _("Variables"), NULL);
+				&(tv_iters.tag_class), _("Classes"), "classviewer-class",
+				&(tv_iters.tag_function), _("Functions"), "classviewer-method",
+				&(tv_iters.tag_macro), _("Constants"), NULL,
+				&(tv_iters.tag_variable), _("Variables"), "classviewer-var",
+				NULL);
 				//&(tv_iters.tag_struct), _("Label"),
 				//&(tv_iters.tag_namespace), _("Begin"),
 				//&(tv_iters.tag_other), _("Other"), NULL);
@@ -517,12 +537,13 @@
 		case GEANY_FILETYPES_RUBY:
 		{
 			tag_list_add_groups(tag_store,
-				&(tv_iters.tag_class), _("Classes"),
-				&(tv_iters.tag_member), _("Singletons"),
-				&(tv_iters.tag_macro), _("Mixins"),
-				&(tv_iters.tag_function), _("Methods"),
-				&(tv_iters.tag_struct), _("Members"),
-				&(tv_iters.tag_variable), _("Variables"), NULL);
+				&(tv_iters.tag_class), _("Classes"), "classviewer-class",
+				&(tv_iters.tag_member), _("Singletons"), NULL,
+				&(tv_iters.tag_macro), _("Mixins"), NULL,
+				&(tv_iters.tag_function), _("Methods"), "classviewer-method",
+				&(tv_iters.tag_struct), _("Members"), "classviewer-member",
+				&(tv_iters.tag_variable), _("Variables"), "classviewer-var",
+				NULL);
 				//&(tv_iters.tag_namespace), _("Begin"),
 				//&(tv_iters.tag_other), _("Other"), NULL);
 			break;
@@ -530,9 +551,10 @@
 		case GEANY_FILETYPES_PYTHON:
 		{
 			tag_list_add_groups(tag_store,
-				&(tv_iters.tag_class), _("Classes"),
-				&(tv_iters.tag_member), _("Methods"),
-				&(tv_iters.tag_function), _("Functions"), NULL);
+				&(tv_iters.tag_class), _("Classes"), "classviewer-class",
+				&(tv_iters.tag_member), _("Methods"), "classviewer-member",
+				&(tv_iters.tag_function), _("Functions"), "classviewer-method",
+				NULL);
 				//&(tv_iters.tag_macro), _("Mixin"),
 				//&(tv_iters.tag_variable), _("Variables"),
 				//&(tv_iters.tag_struct), _("Members"),
@@ -543,11 +565,12 @@
 		case GEANY_FILETYPES_VHDL:
 		{
 			tag_list_add_groups(tag_store,
-				&(tv_iters.tag_function), _("Functions"),
+				&(tv_iters.tag_function), _("Functions"), "classviewer-method",
 				//&(tv_iters.tag_class), _("Constants"),
 				//&(tv_iters.tag_member), _("Members"),
 				//&(tv_iters.tag_macro), _("Macros"),
-				&(tv_iters.tag_variable), _("Variables"), NULL);
+				&(tv_iters.tag_variable), _("Variables"), "classviewer-var",
+				NULL);
 				//&(tv_iters.tag_namespace), _("Namespaces"),
 				//&(tv_iters.tag_struct), _("Signals"),
 				//&(tv_iters.tag_other), _("Other"), NULL);
@@ -556,39 +579,42 @@
 		case GEANY_FILETYPES_JAVA:
 		{
 			tag_list_add_groups(tag_store,
-				&(tv_iters.tag_namespace), _("Package"),
-				&(tv_iters.tag_struct), _("Interfaces"),
-				&(tv_iters.tag_class), _("Classes"),
-				&(tv_iters.tag_function), _("Methods"),
-				&(tv_iters.tag_member), _("Members"),
+				&(tv_iters.tag_namespace), _("Package"), NULL,
+				&(tv_iters.tag_struct), _("Interfaces"), NULL,
+				&(tv_iters.tag_class), _("Classes"), "classviewer-class",
+				&(tv_iters.tag_function), _("Methods"), "classviewer-method",
+				&(tv_iters.tag_member), _("Members"), "classviewer-member",
 			//	&(tv_iters.tag_macro), _("Macros"),
 			//	&(tv_iters.tag_variable), _("Variables"),
-				&(tv_iters.tag_other), _("Other"), NULL);
+				&(tv_iters.tag_other), _("Other"), "classviewer-other",
+				NULL);
 			break;
 		}
 		case GEANY_FILETYPES_D:
 		default:
 		{
-			gchar *namespace_name = _("Namespaces");
-
 			if (ft_id == GEANY_FILETYPES_D)
-				namespace_name = _("Module");	// one file can only belong to one module
+				tag_list_add_groups(tag_store,
+					&(tv_iters.tag_namespace), _("Module"), NULL, NULL);
+			else
+				tag_list_add_groups(tag_store,
+					&(tv_iters.tag_namespace), _("Namespaces"), "classviewer-namespace", NULL);
 
 			tag_list_add_groups(tag_store,
-				&(tv_iters.tag_namespace), namespace_name,
-				&(tv_iters.tag_class), _("Classes"),
-				&(tv_iters.tag_function), _("Functions"),
-				&(tv_iters.tag_member), _("Members"),
-				&(tv_iters.tag_struct), _("Structs / Typedefs"), NULL);
+				&(tv_iters.tag_class), _("Classes"), "classviewer-class",
+				&(tv_iters.tag_function), _("Functions"), "classviewer-method",
+				&(tv_iters.tag_member), _("Members"), "classviewer-member",
+				&(tv_iters.tag_struct), _("Structs / Typedefs"), "classviewer-struct",
+				NULL);
 
 			if (ft_id != GEANY_FILETYPES_D)
 			{
 				tag_list_add_groups(tag_store,
-					&(tv_iters.tag_macro), _("Macros"), NULL);
+					&(tv_iters.tag_macro), _("Macros"), "classviewer-macro", NULL);
 			}
 			tag_list_add_groups(tag_store,
-				&(tv_iters.tag_variable), _("Variables"),
-				&(tv_iters.tag_other), _("Other"), NULL);
+				&(tv_iters.tag_variable), _("Variables"), "classviewer-var",
+				&(tv_iters.tag_other), _("Other"), "classviewer-other", NULL);
 		}
 	}
 }
@@ -617,6 +643,8 @@
 	{
 		gchar buf[100];
 		const GeanySymbol *symbol = (GeanySymbol*)tmp->data;
+		GtkTreeIter *parent = NULL;
+		GdkPixbuf *icon = NULL;
 
 		g_snprintf(buf, sizeof(buf), "%s [%d]", symbol->str, symbol->line);
 
@@ -627,31 +655,27 @@
 			case tm_tag_function_t:
 			{
 				if (tv_iters.tag_function.stamp == -1) break;
-				gtk_tree_store_append(doc_list[idx].tag_store, &iter, &(tv_iters.tag_function));
-				gtk_tree_store_set(doc_list[idx].tag_store, &iter, 0, buf, -1);
+				parent = &(tv_iters.tag_function);
 				break;
 			}
 			case tm_tag_macro_t:
 			case tm_tag_macro_with_arg_t:
 			{
 				if (tv_iters.tag_macro.stamp == -1) break;
-				gtk_tree_store_append(doc_list[idx].tag_store, &iter, &(tv_iters.tag_macro));
-				gtk_tree_store_set(doc_list[idx].tag_store, &iter, 0, buf, -1);
+				parent = &(tv_iters.tag_macro);
 				break;
 			}
 			case tm_tag_class_t:
 			{
 				if (tv_iters.tag_class.stamp == -1) break;
-				gtk_tree_store_append(doc_list[idx].tag_store, &iter, &(tv_iters.tag_class));
-				gtk_tree_store_set(doc_list[idx].tag_store, &iter, 0, buf, -1);
+				parent = &(tv_iters.tag_class);
 				break;
 			}
 			case tm_tag_member_t:
 			case tm_tag_field_t:
 			{
 				if (tv_iters.tag_member.stamp == -1) break;
-				gtk_tree_store_append(doc_list[idx].tag_store, &iter, &(tv_iters.tag_member));
-				gtk_tree_store_set(doc_list[idx].tag_store, &iter, 0, buf, -1);
+				parent = &(tv_iters.tag_member);
 				break;
 			}
 			case tm_tag_typedef_t:
@@ -661,32 +685,40 @@
 			case tm_tag_interface_t:
 			{
 				if (tv_iters.tag_struct.stamp == -1) break;
-				gtk_tree_store_append(doc_list[idx].tag_store, &iter, &(tv_iters.tag_struct));
-				gtk_tree_store_set(doc_list[idx].tag_store, &iter, 0, buf, -1);
+				parent = &(tv_iters.tag_struct);
 				break;
 			}
 			case tm_tag_variable_t:
 			{
 				if (tv_iters.tag_variable.stamp == -1) break;
-				gtk_tree_store_append(doc_list[idx].tag_store, &iter, &(tv_iters.tag_variable));
-				gtk_tree_store_set(doc_list[idx].tag_store, &iter, 0, buf, -1);
+				parent = &(tv_iters.tag_variable);
 				break;
 			}
 			case tm_tag_namespace_t:
 			case tm_tag_package_t:
 			{
 				if (tv_iters.tag_namespace.stamp == -1) break;
-				gtk_tree_store_append(doc_list[idx].tag_store, &iter, &(tv_iters.tag_namespace));
-				gtk_tree_store_set(doc_list[idx].tag_store, &iter, 0, buf, -1);
+				parent = &(tv_iters.tag_namespace);
 				break;
 			}
 			default:
 			{
 				if (tv_iters.tag_other.stamp == -1) break;
-				gtk_tree_store_append(doc_list[idx].tag_store, &iter, &(tv_iters.tag_other));
-				gtk_tree_store_set(doc_list[idx].tag_store, &iter, 0, buf, -1);
+				parent = &(tv_iters.tag_other);
 			}
 		}
+
+		if (parent) {
+			gtk_tree_model_get(GTK_TREE_MODEL(doc_list[idx].tag_store), parent,
+		 	                   SYMBOLS_COLUMN_ICON, &icon, -1);
+			gtk_tree_store_append(doc_list[idx].tag_store, &iter, parent);
+			gtk_tree_store_set(doc_list[idx].tag_store, &iter,
+		 	                  SYMBOLS_COLUMN_ICON, icon,
+                              SYMBOLS_COLUMN_NAME, buf, -1);
+
+			if (G_LIKELY(G_IS_OBJECT(icon)))
+				g_object_unref(icon);
+		}
 	}
 	gtk_tree_view_set_model(GTK_TREE_VIEW(doc_list[idx].tag_tree), model); // Re-attach model to view
 	g_object_unref(model);

Modified: trunk/src/treeviews.c
===================================================================
--- trunk/src/treeviews.c	2007-07-20 12:06:51 UTC (rev 1727)
+++ trunk/src/treeviews.c	2007-07-20 16:33:16 UTC (rev 1728)
@@ -69,13 +69,24 @@
 /* the prepare_* functions are document-related, but I think they fit better here than in document.c */
 static void prepare_taglist(GtkWidget *tree, GtkTreeStore *store)
 {
-	GtkCellRenderer *renderer;
+	GtkCellRenderer *text_renderer, *icon_renderer;
 	GtkTreeViewColumn *column;
 	GtkTreeSelection *select;
 	PangoFontDescription *pfd;
 
-	renderer = gtk_cell_renderer_text_new();
-	column = gtk_tree_view_column_new_with_attributes(_("Symbols"), renderer, "text", 0, NULL);
+	text_renderer = gtk_cell_renderer_text_new();
+	icon_renderer = gtk_cell_renderer_pixbuf_new();
+    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, "pixbuf", SYMBOLS_COLUMN_ICON, NULL);
+  	g_object_set(icon_renderer, "xalign", 0.0, NULL);
+
+  	gtk_tree_view_column_pack_start(column, text_renderer, TRUE);
+  	gtk_tree_view_column_set_attributes(column, text_renderer, "text", SYMBOLS_COLUMN_NAME, NULL);
+  	g_object_set(text_renderer, "yalign", 0.5, NULL);
+  	gtk_tree_view_column_set_title(column, _("Symbols"));
+
 	gtk_tree_view_append_column(GTK_TREE_VIEW(tree), column);
 	gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(tree), FALSE);
 
@@ -144,7 +155,7 @@
 	{	// updating the tag list in the left tag window
 		if (doc_list[idx].tag_tree == NULL)
 		{
-			doc_list[idx].tag_store = gtk_tree_store_new(1, G_TYPE_STRING);
+			doc_list[idx].tag_store = gtk_tree_store_new(SYMBOLS_N_COLUMNS, GDK_TYPE_PIXBUF, G_TYPE_STRING);
 			doc_list[idx].tag_tree = gtk_tree_view_new();
 			prepare_taglist(doc_list[idx].tag_tree, doc_list[idx].tag_store);
 			gtk_widget_show(doc_list[idx].tag_tree);
@@ -476,7 +487,7 @@
 
 	if (gtk_tree_selection_get_selected(selection, &model, &iter))
 	{
-		gtk_tree_model_get(model, &iter, 0, &string, -1);
+		gtk_tree_model_get(model, &iter, SYMBOLS_COLUMN_NAME, &string, -1);
 		if (NZV(string))
 		{
 			gint idx = document_get_cur_idx();

Modified: trunk/src/treeviews.h
===================================================================
--- trunk/src/treeviews.h	2007-07-20 12:06:51 UTC (rev 1727)
+++ trunk/src/treeviews.h	2007-07-20 16:33:16 UTC (rev 1728)
@@ -35,6 +35,12 @@
 	GtkWidget		*popup_openfiles;
 } tv;
 
+enum
+{
+	SYMBOLS_COLUMN_ICON,
+	SYMBOLS_COLUMN_NAME,
+	SYMBOLS_N_COLUMNS,
+};
 
 void treeviews_update_tag_list(gint idx, gboolean update);
 


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