7 selection_changed (GtkTreeSelection *selection,
10 if (gtk_tree_selection_get_selected (selection,
12 gtk_widget_set_sensitive (button, TRUE);
14 gtk_widget_set_sensitive (button, FALSE);
18 node_set (GtkTreeIter *iter)
23 str = g_strdup_printf ("FOO: %d", i++);
24 gtk_tree_store_iter_set (GTK_TREE_STORE (model), iter, 0, str, -1);
30 iter_remove (GtkWidget *button, GtkTreeView *tree_view)
33 if (gtk_tree_selection_get_selected (gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view)),
36 gtk_tree_store_iter_remove (GTK_TREE_STORE (model),
42 iter_insert (GtkWidget *button, GtkTreeView *tree_view)
48 entry = gtk_object_get_user_data (GTK_OBJECT (button));
49 if (gtk_tree_selection_get_selected (gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view)),
52 gtk_tree_store_iter_insert (GTK_TREE_STORE (model),
55 atoi (gtk_entry_get_text (GTK_ENTRY (entry))));
59 gtk_tree_store_iter_insert (GTK_TREE_STORE (model),
62 atoi (gtk_entry_get_text (GTK_ENTRY (entry))));
69 iter_insert_before (GtkWidget *button, GtkTreeView *tree_view)
74 if (gtk_tree_selection_get_selected (gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view)),
77 gtk_tree_store_iter_insert_before (GTK_TREE_STORE (model),
84 gtk_tree_store_iter_insert_before (GTK_TREE_STORE (model),
94 iter_insert_after (GtkWidget *button, GtkTreeView *tree_view)
99 if (gtk_tree_selection_get_selected (gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view)),
102 gtk_tree_store_iter_insert_after (GTK_TREE_STORE (model),
109 gtk_tree_store_iter_insert_after (GTK_TREE_STORE (model),
119 iter_prepend (GtkWidget *button, GtkTreeView *tree_view)
122 GtkTreeIter selected;
124 if (gtk_tree_selection_get_selected (gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view)),
127 gtk_tree_store_iter_prepend (GTK_TREE_STORE (model),
133 gtk_tree_store_iter_prepend (GTK_TREE_STORE (model),
142 iter_append (GtkWidget *button, GtkTreeView *tree_view)
145 GtkTreeIter selected;
147 if (gtk_tree_selection_get_selected (gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view)),
150 gtk_tree_store_iter_append (GTK_TREE_STORE (model),
156 gtk_tree_store_iter_append (GTK_TREE_STORE (model),
169 GtkWidget *hbox, *entry;
171 GtkWidget *scrolled_window;
172 GtkWidget *tree_view;
174 GtkCellRenderer *cell;
175 GtkObject *selection;
177 /* Make the Widgets/Objects */
178 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
179 vbox = gtk_vbox_new (FALSE, 8);
180 gtk_container_set_border_width (GTK_CONTAINER (vbox), 8);
181 gtk_window_set_default_size (GTK_WINDOW (window), 300, 350);
182 scrolled_window = gtk_scrolled_window_new (NULL, NULL);
183 tree_view = gtk_tree_view_new_with_model (GTK_TREE_MODEL (model));
184 selection = GTK_OBJECT (gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view)));
185 gtk_tree_selection_set_type (GTK_TREE_SELECTION (selection), GTK_TREE_SELECTION_SINGLE);
187 /* Put them together */
188 gtk_container_add (GTK_CONTAINER (scrolled_window), tree_view);
189 gtk_box_pack_start (GTK_BOX (vbox), scrolled_window, TRUE, TRUE, 0);
190 gtk_container_add (GTK_CONTAINER (window), vbox);
191 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
192 GTK_POLICY_AUTOMATIC,
193 GTK_POLICY_AUTOMATIC);
194 gtk_signal_connect (GTK_OBJECT (window), "destroy", gtk_main_quit, NULL);
197 button = gtk_button_new_with_label ("gtk_tree_store_iter_remove");
198 gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
199 gtk_signal_connect (GTK_OBJECT (selection),
203 gtk_signal_connect (GTK_OBJECT (button), "clicked", iter_remove, tree_view);
204 gtk_widget_set_sensitive (button, FALSE);
206 button = gtk_button_new_with_label ("gtk_tree_store_iter_insert");
207 hbox = gtk_hbox_new (FALSE, 8);
208 entry = gtk_entry_new ();
209 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
210 gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
211 gtk_box_pack_start (GTK_BOX (hbox), entry, FALSE, FALSE, 0);
212 gtk_object_set_user_data (GTK_OBJECT (button), entry);
213 gtk_signal_connect (GTK_OBJECT (button), "clicked", iter_insert, tree_view);
216 button = gtk_button_new_with_label ("gtk_tree_store_iter_insert_before");
217 gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
218 gtk_signal_connect (GTK_OBJECT (button), "clicked", iter_insert_before, tree_view);
219 gtk_signal_connect (GTK_OBJECT (selection),
223 gtk_widget_set_sensitive (button, FALSE);
225 button = gtk_button_new_with_label ("gtk_tree_store_iter_insert_after");
226 gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
227 gtk_signal_connect (GTK_OBJECT (button), "clicked", iter_insert_after, tree_view);
228 gtk_signal_connect (GTK_OBJECT (selection),
232 gtk_widget_set_sensitive (button, FALSE);
234 button = gtk_button_new_with_label ("gtk_tree_store_iter_prepend");
235 gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
236 gtk_signal_connect (GTK_OBJECT (button), "clicked", iter_prepend, tree_view);
238 button = gtk_button_new_with_label ("gtk_tree_store_iter_append");
239 gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
240 gtk_signal_connect (GTK_OBJECT (button), "clicked", iter_append, tree_view);
242 /* The selected column */
243 cell = gtk_cell_renderer_text_new ();
244 column = gtk_tree_view_column_new_with_attributes ("nodes", cell, "text", 0, NULL);
245 gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), GTK_TREE_VIEW_COLUMN (column));
248 iter_prepend (NULL, GTK_TREE_VIEW (tree_view));
249 iter_prepend (NULL, GTK_TREE_VIEW (tree_view));
250 iter_prepend (NULL, GTK_TREE_VIEW (tree_view));
253 gtk_widget_show_all (window);
257 main (int argc, char *argv[])
259 gtk_init (&argc, &argv);
261 model = gtk_tree_store_new_with_values (2, G_TYPE_STRING, G_TYPE_STRING);