4 typedef struct _ListSort ListSort;
13 static ListSort data[] =
15 { "Apples", "Transmorgrify long word to demonstrate weirdness", "Exculpatory", "Gesundheit"},
16 { "Oranges", "Wicker", "Adamantine", "Convivial" },
17 { "Bovine Spongiform Encephilopathy", "Sleazebucket", "Mountaineer", "Pander" },
18 { "Foot and Mouth", "Lampshade", "Skim Milk\nFull Milk", "Viewless" },
19 { "Blood,\nsweat,\ntears", "The Man", "Horses", "Muckety-Muck" },
20 { "Rare Steak", "Siam", "Watchdog", "Xantippe" },
21 { "SIGINT", "Rabbit Breath", "Alligator", "Bloodstained" },
22 { "Google", "Chrysanthemums", "Hobnob", "Leapfrog"},
23 { "Technology fibre optic", "Turtle", "Academe", "Lonely" },
24 { "Freon", "Harpes", "Quidditch", "Reagan" },
25 { "Transposition", "Fruit Basket", "Monkey Wort", "Glogg" },
26 { "Fern", "Glasnost and Perestroika", "Latitude", "Bomberman!!!" },
41 main (int argc, char *argv[])
45 GtkWidget *scrolled_window;
48 GtkCellRenderer *renderer;
49 GtkTreeViewColumn *column;
53 gtk_init (&argc, &argv);
55 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
56 gtk_window_set_title (GTK_WINDOW (window), "Words, words, words");
57 gtk_signal_connect (GTK_OBJECT (window), "destroy", gtk_main_quit, NULL);
58 vbox = gtk_vbox_new (FALSE, 8);
59 gtk_container_set_border_width (GTK_CONTAINER (vbox), 8);
60 gtk_box_pack_start (GTK_BOX (vbox), gtk_label_new ("My list of cool words"), FALSE, FALSE, 0);
61 gtk_container_add (GTK_CONTAINER (window), vbox);
63 scrolled_window = gtk_scrolled_window_new (NULL, NULL);
64 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window), GTK_SHADOW_ETCHED_IN);
65 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
66 gtk_box_pack_start (GTK_BOX (vbox), scrolled_window, TRUE, TRUE, 0);
68 model = GTK_TREE_MODEL (gtk_tree_store_new (NUM_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING));
69 // gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (model), 0, GTK_TREE_SORT_ASCENDING);
70 g_print ("start model\n");
71 tree_view = gtk_tree_view_new_with_model (model);
72 gtk_tree_selection_set_mode (gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view)),
73 GTK_SELECTION_MULTIPLE);
74 for (j = 0; j < 2; j++)
75 for (i = 0; data[i].word_1 != NULL; i++)
77 gtk_tree_store_prepend (GTK_TREE_STORE (model), &iter, NULL);
78 gtk_tree_store_set (GTK_TREE_STORE (model), &iter,
79 WORD_COLUMN_1, data[i].word_1,
80 WORD_COLUMN_2, data[i].word_2,
81 WORD_COLUMN_3, data[i].word_3,
82 WORD_COLUMN_4, data[i].word_4,
85 g_print ("done with model\n");
87 g_object_unref (G_OBJECT (model));
88 gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (tree_view), TRUE);
90 renderer = gtk_cell_renderer_text_new ();
91 column = gtk_tree_view_column_new_with_attributes ("First Word", renderer,
92 "text", WORD_COLUMN_1,
94 gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
95 gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_1);
97 renderer = gtk_cell_renderer_text_new ();
98 column = gtk_tree_view_column_new_with_attributes ("Second Word", renderer,
99 "text", WORD_COLUMN_2,
101 gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_2);
102 gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
104 renderer = gtk_cell_renderer_text_new ();
105 column = gtk_tree_view_column_new_with_attributes ("Third Word", renderer,
106 "text", WORD_COLUMN_3,
108 gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_3);
109 gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
111 renderer = gtk_cell_renderer_text_new ();
112 column = gtk_tree_view_column_new_with_attributes ("Fourth Word", renderer,
113 "text", WORD_COLUMN_4,
115 gtk_tree_view_column_set_sort_column_id (column, WORD_COLUMN_4);
117 gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
119 gtk_container_add (GTK_CONTAINER (scrolled_window), tree_view);
120 gtk_window_set_default_size (GTK_WINDOW (window), 400, 400);
121 gtk_widget_show_all (window);