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.