summaryrefslogtreecommitdiff
path: root/tests/testgrouping.c
diff options
context:
space:
mode:
authorKristian Rietveld <kristian@src.gnome.org>2006-04-26 12:39:25 +0000
committerKristian Rietveld <kristian@src.gnome.org>2006-04-26 12:39:25 +0000
commitebe22cb38af2af3bfa3c26a5e1e76e3033cbf1d2 (patch)
treeb36ba444ead16190e69cc4ecfc845de51870ee9e /tests/testgrouping.c
parent70bf0da6ada4fa2df3259b9a54aed5bcdf751629 (diff)
downloadgtk+-ebe22cb38af2af3bfa3c26a5e1e76e3033cbf1d2.tar.gz
(broken pipe)
Diffstat (limited to 'tests/testgrouping.c')
-rw-r--r--tests/testgrouping.c155
1 files changed, 155 insertions, 0 deletions
diff --git a/tests/testgrouping.c b/tests/testgrouping.c
new file mode 100644
index 0000000000..4b412d01ef
--- /dev/null
+++ b/tests/testgrouping.c
@@ -0,0 +1,155 @@
+#include <gtk/gtk.h>
+
+
+static GtkTreeModel *
+create_model (void)
+{
+ GtkTreeStore *store;
+ GtkTreeIter iter;
+ GtkTreeIter parent;
+
+ store = gtk_tree_store_new (1, G_TYPE_STRING);
+
+ gtk_tree_store_insert_with_values (store, &parent, NULL, 0,
+ 0, "Applications", -1);
+
+ gtk_tree_store_insert_with_values (store, &iter, &parent, 0,
+ 0, "File Manager", -1);
+ gtk_tree_store_insert_with_values (store, &iter, &parent, 0,
+ 0, "Gossip", -1);
+ gtk_tree_store_insert_with_values (store, &iter, &parent, 0,
+ 0, "System Settings", -1);
+ gtk_tree_store_insert_with_values (store, &iter, &parent, 0,
+ 0, "The GIMP", -1);
+ gtk_tree_store_insert_with_values (store, &iter, &parent, 0,
+ 0, "Terminal", -1);
+ gtk_tree_store_insert_with_values (store, &iter, &parent, 0,
+ 0, "Word Processor", -1);
+
+
+ gtk_tree_store_insert_with_values (store, &parent, NULL, 1,
+ 0, "Documents", -1);
+
+ gtk_tree_store_insert_with_values (store, &iter, &parent, 0,
+ 0, "blaat.txt", -1);
+ gtk_tree_store_insert_with_values (store, &iter, &parent, 0,
+ 0, "sliff.txt", -1);
+ gtk_tree_store_insert_with_values (store, &iter, &parent, 0,
+ 0, "test.txt", -1);
+ gtk_tree_store_insert_with_values (store, &iter, &parent, 0,
+ 0, "blaat.txt", -1);
+ gtk_tree_store_insert_with_values (store, &iter, &parent, 0,
+ 0, "brrrr.txt", -1);
+ gtk_tree_store_insert_with_values (store, &iter, &parent, 0,
+ 0, "hohoho.txt", -1);
+
+
+ gtk_tree_store_insert_with_values (store, &parent, NULL, 2,
+ 0, "Images", -1);
+
+ gtk_tree_store_insert_with_values (store, &iter, &parent, 0,
+ 0, "image1.png", -1);
+ gtk_tree_store_insert_with_values (store, &iter, &parent, 0,
+ 0, "image2.png", -1);
+ gtk_tree_store_insert_with_values (store, &iter, &parent, 0,
+ 0, "image3.jpg", -1);
+
+ return GTK_TREE_MODEL (store);
+}
+
+static void
+set_color_func (GtkTreeViewColumn *column,
+ GtkCellRenderer *cell,
+ GtkTreeModel *model,
+ GtkTreeIter *iter,
+ gpointer data)
+{
+ if (gtk_tree_model_iter_has_child (model, iter))
+ g_object_set (cell, "cell-background", "Grey", NULL);
+ else
+ g_object_set (cell, "cell-background", NULL, NULL);
+}
+
+static void
+tree_view_row_activated (GtkTreeView *tree_view,
+ GtkTreePath *path,
+ GtkTreeViewColumn *column)
+{
+ if (gtk_tree_path_get_depth (path) > 1)
+ return;
+
+ if (gtk_tree_view_row_expanded (GTK_TREE_VIEW (tree_view), path))
+ gtk_tree_view_collapse_row (GTK_TREE_VIEW (tree_view), path);
+ else
+ gtk_tree_view_expand_row (GTK_TREE_VIEW (tree_view), path, FALSE);
+}
+
+static gboolean
+tree_view_select_func (GtkTreeSelection *selection,
+ GtkTreeModel *model,
+ GtkTreePath *path,
+ gboolean path_currently_selected,
+ gpointer data)
+{
+ if (gtk_tree_path_get_depth (path) > 1)
+ return TRUE;
+
+ return FALSE;
+}
+
+int
+main (int argc, char **argv)
+{
+ GtkWidget *window, *sw, *tv;
+ GtkTreeModel *model;
+ GtkCellRenderer *renderer;
+ GtkTreeViewColumn *column;
+
+ gtk_init (&argc, &argv);
+
+ model = create_model ();
+
+ window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ g_signal_connect (window, "delete_event",
+ G_CALLBACK (gtk_main_quit), NULL);
+ gtk_window_set_default_size (GTK_WINDOW (window), 320, 480);
+
+ sw = gtk_scrolled_window_new (NULL, NULL);
+ gtk_container_add (GTK_CONTAINER (window), sw);
+
+ tv = gtk_tree_view_new_with_model (model);
+ gtk_container_add (GTK_CONTAINER (sw), tv);
+
+ g_signal_connect (tv, "row-activated",
+ G_CALLBACK (tree_view_row_activated), tv);
+ g_object_set (tv,
+ "show-expanders", FALSE,
+ "level-indentation", 10,
+ NULL);
+
+ gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (tv), FALSE);
+ gtk_tree_view_expand_all (GTK_TREE_VIEW (tv));
+
+ gtk_tree_selection_set_select_function (gtk_tree_view_get_selection (GTK_TREE_VIEW (tv)),
+ tree_view_select_func,
+ NULL,
+ NULL);
+
+ renderer = gtk_cell_renderer_text_new ();
+ column = gtk_tree_view_column_new_with_attributes ("(none)",
+ renderer,
+ "text", 0,
+ NULL);
+ gtk_tree_view_column_set_cell_data_func (column,
+ renderer,
+ set_color_func,
+ NULL,
+ NULL);
+ gtk_tree_view_insert_column (GTK_TREE_VIEW (tv), column, 0);
+
+ gtk_widget_show_all (window);
+
+ gtk_main ();
+
+ return 0;
+}