From dce631b24af826ebba1401ba3f62c2dc62ead05e Mon Sep 17 00:00:00 2001 From: Perry Werneck Date: Mon, 23 Dec 2019 09:39:48 -0300 Subject: [PATCH] Sorting available actions. --- src/objects/actions/view.c | 22 +++++++++++++++++++++- src/objects/toolbar/settings.c | 3 ++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/objects/actions/view.c b/src/objects/actions/view.c index 35bc199..2877ad1 100644 --- a/src/objects/actions/view.c +++ b/src/objects/actions/view.c @@ -51,9 +51,27 @@ static void list_element_free(struct ListElement *element); + static gint view_sort(GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer G_GNUC_UNUSED(user_data)) { + + gint rc = 0; + GValue value[] = { G_VALUE_INIT, G_VALUE_INIT }; + + gtk_tree_model_get_value(model, a, COLUMN_LABEL, &value[0]); + gtk_tree_model_get_value(model, b, COLUMN_LABEL, &value[1]); + + rc = g_ascii_strcasecmp(g_value_get_string(&value[0]),g_value_get_string(&value[1])); + + g_value_unset(&value[0]); + g_value_unset(&value[1]); + + return rc; + + } + GtkWidget * pw3270_action_view_new() { - GtkWidget * view = GTK_WIDGET(gtk_tree_view_new_with_model(GTK_TREE_MODEL(gtk_list_store_new(3,G_TYPE_OBJECT,G_TYPE_STRING,G_TYPE_STRING)))); + GtkTreeModel * model = GTK_TREE_MODEL(gtk_list_store_new(3,G_TYPE_OBJECT,G_TYPE_STRING,G_TYPE_STRING)); + GtkWidget * view = GTK_WIDGET(gtk_tree_view_new_with_model(model)); gtk_widget_set_hexpand(view,TRUE); gtk_widget_set_vexpand(view,TRUE); @@ -82,6 +100,8 @@ NULL ); + gtk_tree_sortable_set_default_sort_func(GTK_TREE_SORTABLE(model),view_sort,NULL,NULL); + return view; } diff --git a/src/objects/toolbar/settings.c b/src/objects/toolbar/settings.c index 7c8e2a1..25c3593 100644 --- a/src/objects/toolbar/settings.c +++ b/src/objects/toolbar/settings.c @@ -121,6 +121,7 @@ } gtk_tree_view_set_reorderable(GTK_TREE_VIEW(page->views[0]),TRUE); + gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(gtk_tree_view_get_model(GTK_TREE_VIEW(page->views[1]))), GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID, GTK_SORT_ASCENDING); // Create buttons static const gchar * icon_names[G_N_ELEMENTS(page->buttons)] = { @@ -128,7 +129,7 @@ "go-previous" }; - GtkWidget * box = gtk_vbutton_box_new(); + GtkWidget * box = gtk_button_box_new(GTK_ORIENTATION_VERTICAL); gtk_widget_set_hexpand(box,FALSE); gtk_widget_set_vexpand(box,FALSE); -- libgit2 0.21.2