#include enum { COL_FIRST_NAME = 0, COL_LAST_NAME, NUM_COLS } ; static GtkTreeModel * create_and_fill_model (void) { GtkTreeStore *treestore; GtkTreeIter toplevel, child; treestore = gtk_tree_store_new(NUM_COLS, G_TYPE_STRING, G_TYPE_STRING); /* Append a top level row and leave it empty */ gtk_tree_store_append(treestore, &toplevel, NULL); /* Append a second top level row, and fill it with some data */ gtk_tree_store_append(treestore, &toplevel, NULL); gtk_tree_store_set(treestore, &toplevel, COL_FIRST_NAME, "Joe", COL_LAST_NAME, "Average", -1); /* Append a child to the second top level row, and fill in some data */ gtk_tree_store_append(treestore, &child, &toplevel); gtk_tree_store_set(treestore, &child, COL_FIRST_NAME, "Jane", COL_LAST_NAME, "Average", -1); return GTK_TREE_MODEL(treestore); } static GtkWidget * create_view_and_model (void) { GtkTreeViewColumn *col; GtkCellRenderer *renderer; GtkWidget *view; GtkTreeModel *model; view = gtk_tree_view_new(); /* --- Column #1 --- */ col = gtk_tree_view_column_new(); gtk_tree_view_column_set_title(col, "First Name"); /* pack tree view column into tree view */ gtk_tree_view_append_column(GTK_TREE_VIEW(view), col); renderer = gtk_cell_renderer_text_new(); /* pack cell renderer into tree view column */ gtk_tree_view_column_pack_start(col, renderer, TRUE); /* set 'text' property of the cell renderer */ g_object_set(renderer, "text", "Boooo!", NULL); /* --- Column #2 --- */ col = gtk_tree_view_column_new(); gtk_tree_view_column_set_title(col, "Last Name"); /* pack tree view column into tree view */ gtk_tree_view_append_column(GTK_TREE_VIEW(view), col); renderer = gtk_cell_renderer_text_new(); /* pack cell renderer into tree view column */ gtk_tree_view_column_pack_start(col, renderer, TRUE); /* set 'cell-background' property of the cell renderer */ g_object_set(renderer, "cell-background", "Orange", "cell-background-set", TRUE, NULL); model = create_and_fill_model(); gtk_tree_view_set_model(GTK_TREE_VIEW(view), model); g_object_unref(model); /* destroy model automatically with view */ gtk_tree_selection_set_mode(gtk_tree_view_get_selection(GTK_TREE_VIEW(view)), GTK_SELECTION_NONE); return view; } int main (int argc, char **argv) { GtkWidget *window; GtkWidget *view; gtk_init(&argc, &argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); g_signal_connect(window, "delete_event", gtk_main_quit, NULL); /* dirty */ view = create_view_and_model(); gtk_container_add(GTK_CONTAINER(window), view); gtk_widget_show_all(window); gtk_main(); return 0; }