> > Hello, > > > > I need help understanding how one would create a treeview so that the > > first column is an icon and the second column is text. The icon and > > text represent the type of machine the user can choose (linux > > workstation, linux server, hp). I want to have a different icon for > > each machine; however, I notice that whatever icon is called last in the > > code that I have written, is the icon that is shown for ALL the rows. > > > > Please help! What am I doing wrong? > > I forgot to attach the code! > > Here it is: > > > void build_server_list (GtkWidget *treeview) > { > GtkListStore *liststore; > GtkTreeIter iter; > GtkCellRenderer *text_renderer; > GtkCellRenderer *icon_renderer; > gint i = 0; > gint count = 0; > > > icon_renderer = gtk_cell_renderer_pixbuf_new(); > gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW(treeview), > 0, > " ", > icon_renderer, > NULL); > > text_renderer = gtk_cell_renderer_text_new(); > gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW(treeview), > 1, > " ", > text_renderer, > NULL); > > liststore = gtk_list_store_new(2, GDK_TYPE_PIXBUF, G_TYPE_STRING); > > /* workstations */ > count = g_strv_length(workstations); > g_object_set(icon_renderer, "stock-id", "gtk-close", NULL); > for (i=0; i<count; i++) { > gtk_list_store_append(liststore, &iter); > gtk_list_store_set(liststore, &iter, > 0, icon_renderer, > 1, workstations[i], -1); > } > > /* linux servers */ > count = g_strv_length(servers_linux); > g_object_set(icon_renderer, "stock-id", "gtk-save", NULL); > for (i=0; i<count; i++) { > gtk_list_store_append(liststore, &iter); > gtk_list_store_set(liststore, &iter, > 0, icon_renderer, > 1, servers_linux[i], -1); > } > > > /* hp servers */ > count = g_strv_length(servers_hp); > g_object_set(icon_renderer, "stock-id", "gtk-open", NULL); > for (i=0; i<count; i++) { > gtk_list_store_append(liststore, &iter); > gtk_list_store_set(liststore, &iter, > 0, icon_renderer, > 1, servers_hp[i], -1); > } > > gtk_tree_view_set_model(GTK_TREE_VIEW(treeview), > GTK_TREE_MODEL(liststore)); > } >
Thanks to all who replied with comments. Here is the working function: void build_server_list (GtkWidget *treeview) { GtkListStore *liststore; GtkTreeIter iter; GtkCellRenderer *text_renderer = gtk_cell_renderer_text_new(); GtkCellRenderer *pixbuf_renderer = gtk_cell_renderer_pixbuf_new(); GdkPixbuf *ws_pixbuf, *sv_pixbuf, *hp_pixbuf; GtkTreeViewColumn *pixbuf_column, *text_column; gint i = 0; gint count = 0; /* CREATE THE LISTSTORE MODEL */ liststore = gtk_list_store_new(2, GDK_TYPE_PIXBUF, G_TYPE_STRING); /* ATTACHED THE LISTSTORE MODEL TO THE TREEVIEW */ gtk_tree_view_set_model(GTK_TREE_VIEW(treeview), GTK_TREE_MODEL(liststore)); /* DESCRIBE EACH COLUMN */ pixbuf_column = gtk_tree_view_column_new_with_attributes ( "Icon", pixbuf_renderer, "pixbuf", 0, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW(treeview), pixbuf_column); text_column = gtk_tree_view_column_new_with_attributes ( "Machine", text_renderer, "text", 1, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW(treeview), text_column); /* GET SOME STOCK ICONS */ /* getting a 'pixbuf' icon is the key here */ ws_pixbuf = gtk_widget_render_icon(treeview, GTK_STOCK_ABOUT, GTK_ICON_SIZE_SMALL_TOOLBAR, NULL); sv_pixbuf = gtk_widget_render_icon(treeview, GTK_STOCK_HARDDISK, GTK_ICON_SIZE_SMALL_TOOLBAR, NULL); hp_pixbuf = gtk_widget_render_icon(treeview, GTK_STOCK_NETWORK, GTK_ICON_SIZE_SMALL_TOOLBAR, NULL); /* FILL LISTSTORE MODEL WITH DATA */ /* workstations */ count = g_strv_length(workstations); for (i=0; i<count; i++) { gtk_list_store_append(liststore, &iter); gtk_list_store_set(liststore, &iter, 0, ws_pixbuf, 1, workstations[i], -1); } /* linux servers */ count = g_strv_length(servers_linux); for (i=0; i<count; i++) { gtk_list_store_append(liststore, &iter); gtk_list_store_set(liststore, &iter, 0, sv_pixbuf, 1, servers_linux[i], -1); } /* hp servers */ count = g_strv_length(servers_hp); for (i=0; i<count; i++) { gtk_list_store_append(liststore, &iter); gtk_list_store_set(liststore, &iter, 0, hp_pixbuf, 1, servers_hp[i], -1); } } _______________________________________________ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list