[gthumb] display sort types ordered by name



commit 01035b591edec6e94ee82209878c06ab1e43f8c0
Author: Paolo Bacchilega <paobac src gnome org>
Date:   Sun Jul 4 17:02:34 2010 +0200

    display sort types ordered by name

 extensions/rename_series/dlg-rename-series.c |    5 ++++-
 extensions/webalbums/dlg-web-exporter.c      |    6 +++++-
 gthumb/dlg-sort-order.c                      |    6 +++++-
 gthumb/gth-filter-editor-dialog.c            |    6 +++++-
 gthumb/gth-main.c                            |   10 +++++++++-
 5 files changed, 28 insertions(+), 5 deletions(-)
---
diff --git a/extensions/rename_series/dlg-rename-series.c b/extensions/rename_series/dlg-rename-series.c
index 88a291b..f50ad09 100644
--- a/extensions/rename_series/dlg-rename-series.c
+++ b/extensions/rename_series/dlg-rename-series.c
@@ -435,6 +435,7 @@ dlg_rename_series (GthBrowser *browser,
 	GtkCellRenderer   *renderer;
 	GtkTreeViewColumn *column;
 	int                i;
+	GList             *sort_types;
 	GList             *scan;
 	int                change_case;
 	int                start_at;
@@ -515,7 +516,8 @@ dlg_rename_series (GthBrowser *browser,
 	sort_by = eel_gconf_get_string (PREF_RENAME_SERIES_SORT_BY, DEFAULT_SORT_BY);
 	found = FALSE;
 
-	for (i = 0, scan = gth_main_get_all_sort_types (); scan; scan = scan->next, i++) {
+	sort_types = gth_main_get_all_sort_types ();
+	for (i = 0, scan = sort_types; scan; scan = scan->next, i++) {
 		GthFileDataSort *sort_type = scan->data;
 		GtkTreeIter      iter;
 
@@ -530,6 +532,7 @@ dlg_rename_series (GthBrowser *browser,
 			found = TRUE;
 		}
 	}
+	g_list_free (sort_types);
 	g_free (sort_by);
 
 	if (!found)
diff --git a/extensions/webalbums/dlg-web-exporter.c b/extensions/webalbums/dlg-web-exporter.c
index 7f74310..dac625e 100644
--- a/extensions/webalbums/dlg-web-exporter.c
+++ b/extensions/webalbums/dlg-web-exporter.c
@@ -355,6 +355,7 @@ dlg_web_exporter (GthBrowser *browser,
 	int         i;
 	int         active_index;
 	char       *default_sort_type;
+	GList      *sort_types;
 	GList      *scan;
 	char       *caption;
 	char       *s_value;
@@ -416,7 +417,8 @@ dlg_web_exporter (GthBrowser *browser,
 
 	default_sort_type = eel_gconf_get_string (PREF_WEBALBUMS_SORT_TYPE, "file::mtime");
 	active_index = 0;
-	for (i = 0, scan = gth_main_get_all_sort_types (); scan; scan = scan->next, i++) {
+	sort_types = gth_main_get_all_sort_types ();
+	for (i = 0, scan = sort_types; scan; scan = scan->next, i++) {
 		GthFileDataSort *sort_type = scan->data;
 		GtkTreeIter      iter;
 
@@ -429,6 +431,8 @@ dlg_web_exporter (GthBrowser *browser,
 				    SORT_TYPE_COLUMN_NAME, sort_type->display_name,
 				    -1);
 	}
+	g_list_free (sort_types);
+
 	gtk_combo_box_set_active (GTK_COMBO_BOX (GET_WIDGET ("sort_combobox")), active_index);
 	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (GET_WIDGET ("reverse_order_checkbutton")), eel_gconf_get_boolean (PREF_WEBALBUMS_SORT_INVERSE, FALSE));
 
diff --git a/gthumb/dlg-sort-order.c b/gthumb/dlg-sort-order.c
index a08636e..09182f3 100644
--- a/gthumb/dlg-sort-order.c
+++ b/gthumb/dlg-sort-order.c
@@ -82,6 +82,7 @@ dlg_sort_order (GthBrowser *browser)
 	GtkListStore    *selection_model;
 	GtkCellRenderer *renderer;
 	GthFileData     *file_data;
+	GList           *sort_types;
 	GList           *scan;
 	GthFileDataSort *current_sort_type;
 	gboolean         sort_inverse;
@@ -125,7 +126,8 @@ dlg_sort_order (GthBrowser *browser)
 	else
 		gth_browser_get_sort_order (data->browser, &current_sort_type, &sort_inverse);
 
-	for (i = 0, i_active = 0, scan = gth_main_get_all_sort_types (); scan; scan = scan->next, i++) {
+	sort_types = gth_main_get_all_sort_types ();
+	for (i = 0, i_active = 0, scan = sort_types; scan; scan = scan->next, i++) {
 		GthFileDataSort *sort_type = scan->data;
 		GtkTreeIter      iter;
 		
@@ -138,6 +140,8 @@ dlg_sort_order (GthBrowser *browser)
 				    SELECTION_COLUMN_NAME, sort_type->display_name,
 				    -1);
 	}
+	g_list_free (sort_types);
+
 	gtk_combo_box_set_active (GTK_COMBO_BOX (data->sort_by_combobox), i_active);
 	gtk_widget_show (data->sort_by_combobox);
 	gtk_container_add (GTK_CONTAINER (GET_WIDGET ("sort_by_hbox")), data->sort_by_combobox);
diff --git a/gthumb/gth-filter-editor-dialog.c b/gthumb/gth-filter-editor-dialog.c
index cb19635..1e3024b 100644
--- a/gthumb/gth-filter-editor-dialog.c
+++ b/gthumb/gth-filter-editor-dialog.c
@@ -167,6 +167,7 @@ gth_filter_editor_dialog_construct (GthFilterEditorDialog *self,
 			            GtkWindow             *parent)
 {
 	GtkWidget       *content;
+	GList           *sort_types;
 	GList           *scan;
 	GtkListStore    *selection_model;
 	GtkCellRenderer *renderer;
@@ -230,7 +231,8 @@ gth_filter_editor_dialog_construct (GthFilterEditorDialog *self,
 					"text", SELECTION_COLUMN_NAME,
 					NULL);
 
-	for (scan = gth_main_get_all_sort_types (); scan; scan = scan->next) {
+	sort_types = gth_main_get_all_sort_types ();
+	for (scan = sort_types; scan; scan = scan->next) {
 		GthFileDataSort *sort_type = scan->data;
 		GtkTreeIter      iter;
 
@@ -240,6 +242,8 @@ gth_filter_editor_dialog_construct (GthFilterEditorDialog *self,
 				    SELECTION_COLUMN_NAME, sort_type->display_name,
 				    -1);
 	}
+	g_list_free (sort_types);
+
 	gtk_combo_box_set_active (GTK_COMBO_BOX (self->priv->selection_combobox), 0);
 	gtk_widget_show (self->priv->selection_combobox);
 	gtk_container_add (GTK_CONTAINER (GET_WIDGET ("selection_combobox_box")),
diff --git a/gthumb/gth-main.c b/gthumb/gth-main.c
index 59bbeb1..c1d75d7 100644
--- a/gthumb/gth-main.c
+++ b/gthumb/gth-main.c
@@ -638,13 +638,21 @@ collect_sort_types (gpointer key,
 }
 
 
+static gboolean
+campare_sort_types (GthFileDataSort *type1,
+		    GthFileDataSort *type2)
+{
+	return g_utf8_collate (type1->display_name, type2->display_name);
+}
+
+
 GList *
 gth_main_get_all_sort_types (void)
 {
 	GList *sort_types = NULL;
 
 	g_hash_table_foreach (Main->priv->sort_types, collect_sort_types, &sort_types);
-	return g_list_reverse (sort_types);
+	return g_list_sort (sort_types, (GCompareFunc) campare_sort_types);
 }
 
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]