Author: akv
Date: 2011-01-02 03:30:50 +0100 (Sun, 02 Jan 2011)
New Revision: 3775

Modified:
   trunk/librawstudio/rs-lens-db-editor.c
Log:
Sorting lens editor by lens model (if selected), then by camera model and last 
by identifier (min/max focal and aperture).

Modified: trunk/librawstudio/rs-lens-db-editor.c
===================================================================
--- trunk/librawstudio/rs-lens-db-editor.c      2011-01-02 02:26:57 UTC (rev 
3774)
+++ trunk/librawstudio/rs-lens-db-editor.c      2011-01-02 02:30:50 UTC (rev 
3775)
@@ -508,6 +508,46 @@
        rs_lens_db_editor();
 }
 
+gint
+rs_lens_db_editor_sort(GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, 
gpointer user_data)
+{
+       gchar *a_lensfun_model;
+       gchar *a_camera_model;
+       gchar *a_identifier;
+
+       gtk_tree_model_get(model, a, 
+                               RS_LENS_DB_EDITOR_IDENTIFIER, &a_identifier,
+                               RS_LENS_DB_EDITOR_LENS_MODEL, &a_lensfun_model,
+                               RS_LENS_DB_EDITOR_CAMERA_MODEL, &a_camera_model,
+                               -1);
+
+       gchar *b_lensfun_model;
+       gchar *b_camera_model;
+       gchar *b_identifier;
+
+       gtk_tree_model_get(model, b, 
+                               RS_LENS_DB_EDITOR_IDENTIFIER, &b_identifier,
+                               RS_LENS_DB_EDITOR_LENS_MODEL, &b_lensfun_model,
+                               RS_LENS_DB_EDITOR_CAMERA_MODEL, &b_camera_model,
+                               -1);
+
+       gint ret = 0;
+
+       ret = g_strcmp0(a_lensfun_model, b_lensfun_model);
+       if (ret != 0)
+               return ret;
+
+       ret = g_strcmp0(a_camera_model, b_camera_model);
+       if (ret != 0)
+               return ret;
+
+       ret = g_strcmp0(a_identifier, b_identifier);
+       if (ret != 0)
+               return ret;
+
+       return ret;
+}
+
 void
 rs_lens_db_editor() 
 {
@@ -572,7 +612,8 @@
                                                                  
"activatable", RS_LENS_DB_EDITOR_ENABLED_ACTIVATABLE,
                                                                                
   NULL);
 
-       gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(tree_model), 
RS_LENS_DB_EDITOR_LENS_MODEL, GTK_SORT_DESCENDING);
+       gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(tree_model), 
RS_LENS_DB_EDITOR_CAMERA_MODEL, GTK_SORT_ASCENDING);
+       gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(tree_model), 
RS_LENS_DB_EDITOR_CAMERA_MODEL, rs_lens_db_editor_sort, NULL, NULL);
 
        g_signal_connect(G_OBJECT(view), "row-activated",
                         G_CALLBACK(row_clicked), NULL);


_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit

Reply via email to