Re: Proper way to show unique icon in treeview <--with code



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));
}





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