/* program to test the get_preferred_height warning */ #include GtkWidget *w_main, *main_treeview; char *list1[][2] = { {"l1_1a", "l1_1b"}, {"l1_2a", "l1_2b"}, {"l1_3a", "l1_3b"}, {"l1_4a", "l1_4b"}, {NULL, NULL} }; char *list2[][2] = { {"l2_1a", "l2_1b"}, {"l2_2a", "l2_2b"}, {"l2_3a", "l2_3b"}, {"l2_4a", "l2_4b"}, {"l2_5a", "l2_5b"}, {NULL, NULL} }; void kill_wmain (GtkWidget *win, GdkEventAny *event) { gtk_main_quit(); } void populate_list (char *ttl, char *list[][2]) { GtkTreeModel *model_main = gtk_tree_view_get_model ( GTK_TREE_VIEW(main_treeview)); GtkTreeIter topitr; char **row; gtk_tree_store_append (GTK_TREE_STORE(model_main), &topitr, NULL); gtk_tree_store_set (GTK_TREE_STORE(model_main), &topitr, 0, ttl, -1); while (*(row = *(list++))) { int c; GtkTreeIter childitr; gtk_tree_store_append(GTK_TREE_STORE(model_main), &childitr, &topitr); gtk_tree_store_set (GTK_TREE_STORE(model_main), &childitr, 0, row[0], 1, row[1], -1); } } GtkWidget * new_treestore (GtkWidget *parent, char *wtype) { GtkTreeStore *model; GtkWidget *treeview; char *titles[] = {"Col1", "Col2"}; GtkWidget *wscrolledwindow = gtk_scrolled_window_new (NULL, NULL); int x; gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(wscrolledwindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_box_pack_start (GTK_BOX(parent), wscrolledwindow, FALSE, TRUE, 5); // Just use 'tree' for wtype model = gtk_tree_store_new (2, G_TYPE_STRING, G_TYPE_STRING); treeview = gtk_tree_view_new (); gtk_tree_view_set_model (GTK_TREE_VIEW(treeview), GTK_TREE_MODEL(model)); gtk_widget_set_hexpand (treeview, TRUE); gtk_widget_set_vexpand (treeview, TRUE); for (x = 0; x < 2; x++) { gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW(treeview), x, titles[x], gtk_cell_renderer_text_new(), "text", x, NULL); } gtk_container_add (GTK_CONTAINER(wscrolledwindow), treeview); return treeview; } int main (int argc, char **argv) { GtkWidget *vbox; GtkTreeIter *iter = NULL; gtk_init (&argc, &argv); w_main = gtk_window_new (GTK_WINDOW_TOPLEVEL); printf ("\nw_main: %x\n",w_main); g_signal_connect (w_main, "delete-event", G_CALLBACK(kill_wmain), NULL); gtk_window_set_default_size (GTK_WINDOW(w_main), 300, 200); vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5); main_treeview = new_treestore (vbox, "tree"); printf ("main_treeview: %x\n",main_treeview); gtk_tree_selection_set_mode (gtk_tree_view_get_selection ( GTK_TREE_VIEW(main_treeview)), GTK_SELECTION_SINGLE); populate_list ("List 1", list1); populate_list ("List 2", list2); gtk_container_add (GTK_CONTAINER(w_main), vbox); gtk_widget_show_all (w_main); gtk_main (); return 0; }