From 908e5a91206dee80dd956700a3127b2a02b3fed0 Mon Sep 17 00:00:00 2001 From: Maksym Veremeyenko Date: Sun, 19 Jun 2011 14:42:42 +0300 Subject: [PATCH] render text and image in a cell (use G_TYPE_OBJECT for specifying GDK_TYPE_PIXBUF) --- src/ui.c | 25 +++++++++++++++++++++---- 1 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/ui.c b/src/ui.c index 5d8b116..17539d4 100644 --- a/src/ui.c +++ b/src/ui.c @@ -41,7 +41,7 @@ typedef struct column_desc GType type; } column_desc_t; -const static column_desc_t playlist_columns[] = +static const column_desc_t playlist_columns[] = { { "REM", @@ -49,7 +49,7 @@ const static column_desc_t playlist_columns[] = }, { "B", - G_TYPE_STRING + G_TYPE_OBJECT }, { "CH", @@ -130,16 +130,33 @@ static GtkWidget* create_treeview(GtkWidget* top, char* name, const column_desc_ gtk_widget_show (treeview); for(i = 0, count = 0; columns[i].title; i++, count++) - list_store_types[i] = columns[i].type; + list_store_types[i] = (columns[i].type == G_TYPE_OBJECT)?GDK_TYPE_PIXBUF:columns[i].type; 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) + { + renderer = gtk_cell_renderer_pixbuf_new(); + prop = "pixbuf"; + } + else + renderer = NULL; + + if(!renderer) continue; + renderer = gtk_cell_renderer_toggle_new(); column = gtk_tree_view_column_new_with_attributes( - columns[i].title, renderer, "text", i, NULL); + columns[i].title, renderer, prop, i, NULL); gtk_tree_view_append_column(GTK_TREE_VIEW( treeview ), column); }; -- 1.7.4.4