allow multiple selection for grids
[omnplay] / src / ui.c
index 24768e8..be485ae 100644 (file)
--- a/src/ui.c
+++ b/src/ui.c
@@ -121,6 +121,7 @@ static GtkWidget* create_treeview(GtkWidget* top, char* name, const column_desc_
     int i, count;
 
     GtkWidget *treeview;
+    GtkTreeSelection  *selection;
     GtkCellRenderer *renderer;
     GtkTreeViewColumn *column;
     GtkListStore *list_store;
@@ -129,35 +130,37 @@ static GtkWidget* create_treeview(GtkWidget* top, char* name, const column_desc_
     treeview = gtk_tree_view_new ();
     gtk_widget_show (treeview);
 
+    selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
+    gtk_tree_selection_set_mode(selection, GTK_SELECTION_MULTIPLE);
+
     for(i = 0, count = 0; columns[i].title; i++, count++)
         list_store_types[i] = (columns[i].type == G_TYPE_OBJECT)?GDK_TYPE_PIXBUF:columns[i].type;
+    list_store_types[count] = G_TYPE_INT;
+
+    list_store = gtk_list_store_newv(count + 1, list_store_types);
 
-    list_store = gtk_list_store_newv(count, list_store_types);
     gtk_tree_view_set_model( GTK_TREE_VIEW( treeview ), GTK_TREE_MODEL( list_store ) );
 
     for(i = 0; columns[i].title; i++)
     {
         char* prop;
 
-        if(list_store_types[i] == G_TYPE_STRING)
-        {
-            renderer = gtk_cell_renderer_text_new();
-            prop = "text";
-        }
-        else if(list_store_types[i] == G_TYPE_OBJECT)
+        if(columns[i].type == G_TYPE_OBJECT)
         {
             renderer = gtk_cell_renderer_pixbuf_new();
+            gtk_cell_renderer_set_padding(renderer, 0, 0);
             prop = "pixbuf";
         }
-        else if(list_store_types[i] == G_TYPE_BOOLEAN)
+        else if(columns[i].type == G_TYPE_BOOLEAN)
         {
             renderer = gtk_cell_renderer_toggle_new();
             prop = "active";
         }
         else
-            renderer = NULL;
-
-        if(!renderer) continue;
+        {
+            renderer = gtk_cell_renderer_text_new();
+            prop = "text";
+        }
 
         column = gtk_tree_view_column_new_with_attributes(
             columns[i].title, renderer, prop, i, NULL);