SF.net SVN: geany: [1802] trunk
eht16 at users.sourceforge.net
eht16 at xxxxx
Wed Aug 15 17:58:58 UTC 2007
Revision: 1802
http://geany.svn.sourceforge.net/geany/?rev=1802&view=rev
Author: eht16
Date: 2007-08-15 10:58:58 -0700 (Wed, 15 Aug 2007)
Log Message:
-----------
Add menu items for different sorting of the symbol list to the symbol list popup menu.
Modified Paths:
--------------
trunk/ChangeLog
trunk/src/symbols.c
trunk/src/symbols.h
trunk/src/treeviews.c
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2007-08-15 16:00:43 UTC (rev 1801)
+++ trunk/ChangeLog 2007-08-15 17:58:58 UTC (rev 1802)
@@ -1,3 +1,10 @@
+2007-08-15 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
+
+ * src/symbols.c, src/symbols.h, src/treeviews.c:
+ Add menu items for different sorting of the symbol list to the symbol
+ list popup menu.
+
+
2007-08-15 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
* src/plugindata.h, src/plugins.c:
Modified: trunk/src/symbols.c
===================================================================
--- trunk/src/symbols.c 2007-08-15 16:00:43 UTC (rev 1801)
+++ trunk/src/symbols.c 2007-08-15 17:58:58 UTC (rev 1802)
@@ -320,8 +320,7 @@
}
-static const GList *
-get_tag_list(gint idx, guint tag_types)
+static const GList *get_tag_list(gint idx, guint tag_types, gboolean sort_by_name)
{
static GList *tag_names = NULL;
@@ -385,7 +384,9 @@
if (! doc_is_utf8) g_free(utf8_name);
}
}
- tag_names = g_list_sort(tag_names, (GCompareFunc) compare_symbol);
+ if (sort_by_name)
+ tag_names = g_list_sort(tag_names, (GCompareFunc) compare_symbol);
+
return tag_names;
}
else
@@ -688,7 +689,7 @@
}
-gboolean symbols_recreate_tag_list(gint idx)
+gboolean symbols_recreate_tag_list(gint idx, gboolean sort_by_name)
{
GList *tmp;
const GList *tags;
@@ -697,8 +698,9 @@
g_return_val_if_fail(DOC_IDX_VALID(idx), FALSE);
- tags = get_tag_list(idx, tm_tag_max_t);
- if (doc_list[idx].tm_file == NULL || tags == NULL) return FALSE;
+ tags = get_tag_list(idx, tm_tag_max_t, sort_by_name);
+ if (doc_list[idx].tm_file == NULL || tags == NULL)
+ return FALSE;
gtk_tree_store_clear(doc_list[idx].tag_store);
// unref the store to speed up the filling(from TreeView Tutorial)
Modified: trunk/src/symbols.h
===================================================================
--- trunk/src/symbols.h 2007-08-15 16:00:43 UTC (rev 1801)
+++ trunk/src/symbols.h 2007-08-15 17:58:58 UTC (rev 1802)
@@ -44,9 +44,9 @@
void symbols_finalize();
-gboolean symbols_recreate_tag_list(gint idx);
+gboolean symbols_recreate_tag_list(gint idx, gboolean sort_by_name);
-int symbols_generate_global_tags(int argc, char **argv);
+gint symbols_generate_global_tags(gint argc, gchar **argv);
void symbols_show_load_tags_dialog();
Modified: trunk/src/treeviews.c
===================================================================
--- trunk/src/treeviews.c 2007-08-15 16:00:43 UTC (rev 1801)
+++ trunk/src/treeviews.c 2007-08-15 17:58:58 UTC (rev 1802)
@@ -52,6 +52,8 @@
OPENFILES_ACTION_RELOAD,
OPENFILES_ACTION_HIDE,
OPENFILES_ACTION_HIDE_ALL,
+ SYMBOL_ACTION_SORT_BY_NAME,
+ SYMBOL_ACTION_SORT_BY_APPEARANCE,
SYMBOL_ACTION_HIDE,
SYMBOL_ACTION_HIDE_ALL
};
@@ -164,7 +166,7 @@
g_object_ref((gpointer)doc_list[idx].tag_tree); // to hold it after removing
}
- doc_list[idx].has_tags = symbols_recreate_tag_list(idx);
+ doc_list[idx].has_tags = symbols_recreate_tag_list(idx, TRUE); // sort by name by default
}
if (doc_list[idx].has_tags)
@@ -291,6 +293,24 @@
tv.popup_taglist = gtk_menu_new();
+ item = gtk_menu_item_new_with_label(_("Sort by name"));
+ gtk_widget_show(item);
+ gtk_container_add(GTK_CONTAINER(tv.popup_taglist), item);
+ g_signal_connect((gpointer) item, "activate",
+ G_CALLBACK(on_taglist_tree_popup_clicked),
+ GINT_TO_POINTER(SYMBOL_ACTION_SORT_BY_NAME));
+
+ item = gtk_menu_item_new_with_label(_("Sort by appearance"));
+ gtk_widget_show(item);
+ gtk_container_add(GTK_CONTAINER(tv.popup_taglist), item);
+ g_signal_connect((gpointer) item, "activate",
+ G_CALLBACK(on_taglist_tree_popup_clicked),
+ GINT_TO_POINTER(SYMBOL_ACTION_SORT_BY_APPEARANCE));
+
+ item = gtk_separator_menu_item_new();
+ gtk_widget_show(item);
+ gtk_container_add(GTK_CONTAINER(tv.popup_taglist), item);
+
item = gtk_image_menu_item_new_with_label(_("Hide"));
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item),
gtk_image_new_from_stock("gtk-close", GTK_ICON_SIZE_MENU));
@@ -465,6 +485,20 @@
{
switch (GPOINTER_TO_INT(user_data))
{
+ case SYMBOL_ACTION_SORT_BY_NAME:
+ {
+ gint idx = document_get_cur_idx();
+ if (DOC_IDX_VALID(idx))
+ doc_list[idx].has_tags = symbols_recreate_tag_list(idx, TRUE);
+ break;
+ }
+ case SYMBOL_ACTION_SORT_BY_APPEARANCE:
+ {
+ gint idx = document_get_cur_idx();
+ if (DOC_IDX_VALID(idx))
+ doc_list[idx].has_tags = symbols_recreate_tag_list(idx, FALSE);
+ break;
+ }
case SYMBOL_ACTION_HIDE:
{
app->sidebar_symbol_visible = FALSE;
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