[gtk+/treeview-refactor-staging: 12/13] Adding testverticalcells.c.
- From: Tristan Van Berkom <tvb src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/treeview-refactor-staging: 12/13] Adding testverticalcells.c.
- Date: Sat, 4 Dec 2010 08:00:49 +0000 (UTC)
commit 9d8829adc5840f8ce106d20115124e30524faedf
Author: Tristan Van Berkom <tristan van berkom gmail com>
Date: Sat Dec 4 14:27:18 2010 +0900
Adding testverticalcells.c.
This test displays a GtkTreeViewColumn rendering a vertically
oriented GtkCellArea along side a horizontally oriented column
in the same treeview.
tests/Makefile.am | 3 +
tests/testverticalcells.c | 375 +++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 378 insertions(+), 0 deletions(-)
---
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 2832853..0c7c6b3 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -87,6 +87,7 @@ noinst_PROGRAMS = $(TEST_PROGS) \
testtreecolumns \
testtreecolumnsizing \
testtreesort \
+ testverticalcells \
treestoretest \
testxinerama \
testwindows \
@@ -179,6 +180,7 @@ testtreeflow_DEPENDENCIES = $(DEPS)
testtreecolumns_DEPENDENCIES = $(DEPS)
testtreecolumnsizing_DEPENDENCIES = $(DEPS)
testtreesort_DEPENDENCIES = $(DEPS)
+testverticalcells_DEPENDENCIES = $(DEPS)
treestoretest_DEPENDENCIES = $(TEST_DEPS)
testxinerama_DEPENDENCIES = $(TEST_DEPS)
testmerge_DEPENDENCIES = $(TEST_DEPS)
@@ -256,6 +258,7 @@ testtreeflow_LDADD = $(LDADDS)
testtreecolumns_LDADD = $(LDADDS)
testtreecolumnsizing_LDADD = $(LDADDS)
testtreesort_LDADD = $(LDADDS)
+testverticalcells_LDADD = $(LDADDS)
#testtext_LDADD = $(LDADDS)
treestoretest_LDADD = $(LDADDS)
testxinerama_LDADD = $(LDADDS)
diff --git a/tests/testverticalcells.c b/tests/testverticalcells.c
new file mode 100644
index 0000000..81a586a
--- /dev/null
+++ b/tests/testverticalcells.c
@@ -0,0 +1,375 @@
+/* testverticalcells.c
+ *
+ * Copyright (C) 2010 Openismus GmbH
+ *
+ * Authors:
+ * Tristan Van Berkom <tristanvb openismus com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include "config.h"
+#include <gtk/gtk.h>
+
+typedef struct _TreeEntry TreeEntry;
+
+struct _TreeEntry {
+ const gchar *icon;
+ const gchar *info;
+ const gchar *description;
+ const gchar *fine_print;
+ const gchar *fine_print_color;
+ gint progress;
+ TreeEntry *entries;
+};
+
+enum {
+ ICON_COLUMN,
+ INFO_COLUMN,
+ DESCRIPTION_COLUMN,
+ FINE_PRINT_COLUMN,
+ FINE_PRINT_COLOR_COLUMN,
+ PROGRESS_COLUMN,
+ NUM_COLUMNS
+};
+
+
+static TreeEntry info_entries[] =
+ {
+ {
+ "gtk-execute",
+ "Will you\n"
+ "run this ?",
+ "Currently executing that thing... you might want to abort",
+ "and every day he went fishing for pigs in the sky",
+ "green",
+ 83,
+ NULL
+ },
+ {
+ "gtk-dialog-authentication",
+ "This is the\n"
+ "realest of the real",
+ "We are about to authenticate the actual realness, this could take some time",
+ "one day he caught a giant ogre who barked and barked and barked",
+ "purple",
+ 4,
+ NULL
+ },
+ { 0, },
+ };
+
+static TreeEntry directory_entries[] =
+ {
+ {
+ "gtk-edit",
+ "We can edit\n"
+ "things in here",
+ "Time to edit your directory, almost finished now",
+ "she thought the best remedy for daydreams was going to be sleep",
+ "dark sea green",
+ 99,
+ NULL
+ },
+ {
+ "gtk-file",
+ "You have a\n"
+ "file here",
+ "Who would of thought there would be a file in the directory ?",
+ "after taking loads of sleeping pills he could still hear the pigs barking",
+ "green yellow",
+ 33,
+ NULL
+ },
+ {
+ "gtk-dialog-question",
+ "Any questions ?",
+ "This file would like to ask you a question",
+ "so he decided that the fine print underneath the progress bar probably made no sense at all",
+ "lavender",
+ 73,
+ NULL
+ },
+ { 0, },
+ };
+
+static TreeEntry other_entries[] =
+ {
+ {
+ "gtk-zoom-fit",
+ "Thats the\n"
+ "perfect fit",
+ "Now fitting foo into bar using frobnicator",
+ "using his nifty wide angle lense, he was able to catch a 'dark salmon', it was no flying pig "
+ "however it was definitely a keeper",
+ "dark salmon",
+ 59,
+ NULL
+ },
+ {
+ "gtk-underline",
+ "Under the\n"
+ "line",
+ "Now underlining that this demo would look alot niftier with some real content",
+ "it was indeed strange to catch a red salmon while fishing for pigs in the deep sky blue.",
+ "deep sky blue",
+ 99,
+ NULL
+ },
+ };
+
+static TreeEntry add_entries[] =
+ {
+ {
+ "gtk-about",
+ "its about\n"
+ "to start",
+ "This is what it's all about",
+ "so he went ahead and added the 'gtk-about' icon to his story, thinking 'mint cream' would be the "
+ "right color for something like that",
+ "dark violet",
+ 1,
+ NULL
+ },
+ {
+ "gtk-zoom-in",
+ "Watch it\n"
+ "Zoom !",
+ "Now zooming into something",
+ "while fishing for pigs in the sky, maybe he would have caught something faster if only he had zoomed in",
+ "orchid",
+ 6,
+ NULL
+ },
+ {
+ "gtk-zoom-out",
+ "Zoom Zoom\n"
+ "Zoom !",
+ "Now zooming out of something else",
+ "the daydream had a much prettier picture over all once he had zoomed out for the wide angle, "
+ "jill agreed",
+ "dark magenta",
+ 46,
+ other_entries
+ },
+ { 0, },
+ };
+
+
+static TreeEntry main_entries[] =
+ {
+ {
+ "gtk-info",
+ "This is all\n"
+ "the info",
+ "We are currently informing you",
+ "once upon a time in a land far far away there was a guy named buba",
+ "red",
+ 64,
+ info_entries
+ },
+ {
+ "gtk-dialog-warning",
+ "This is a\n"
+ "warning",
+ "We would like to warn you that your laptop might explode after we're done",
+ "so he decided that he must be stark raving mad",
+ "orange",
+ 43,
+ NULL
+ },
+ {
+ "gtk-dialog-error",
+ "An error will\n"
+ "occur",
+ "Once we're done here, dont worry... an error will surely occur.",
+ "and went to a see a yellow physiotherapist who's name was jill",
+ "yellow",
+ 98,
+ NULL
+ },
+ {
+ "gtk-directory",
+ "The directory",
+ "Currently scanning your directories.",
+ "jill didnt know what to make of the barking pigs either so she fed him sleeping pills",
+ "brown",
+ 20,
+ directory_entries
+ },
+ {
+ "gtk-delete",
+ "Now deleting\n"
+ "the whole thing",
+ "Time to delete the sucker",
+ "and he decided to just delete the whole conversation since it didnt make sense to him",
+ "dark orange",
+ 26,
+ NULL
+ },
+ {
+ "gtk-add",
+ "Anything\n"
+ "to add ?",
+ "Now adding stuff... please be patient",
+ "but on second thought, maybe he had something to add so that things could make a little less sense.",
+ "maroon",
+ 72,
+ add_entries
+ },
+ {
+ "gtk-redo",
+ "Time to\n"
+ "do it again",
+ "For the hell of it, lets add the content to the treeview over and over again !",
+ "buba likes telling his story, so maybe he's going to tell it 20 times more.",
+ "deep pink",
+ 100,
+ NULL
+ },
+ { 0, },
+ };
+
+
+static void
+populate_model (GtkTreeStore *model,
+ GtkTreeIter *parent,
+ TreeEntry *entries)
+{
+ GtkTreeIter iter;
+ gint i;
+
+ for (i = 0; entries[i].info != NULL; i++)
+ {
+ gtk_tree_store_append (model, &iter, parent);
+ gtk_tree_store_set (model, &iter,
+ ICON_COLUMN, entries[i].icon,
+ INFO_COLUMN, entries[i].info,
+ DESCRIPTION_COLUMN, entries[i].description,
+ FINE_PRINT_COLUMN, entries[i].fine_print,
+ FINE_PRINT_COLOR_COLUMN, entries[i].fine_print_color,
+ PROGRESS_COLUMN, entries[i].progress,
+ -1);
+
+ if (entries[i].entries)
+ populate_model (model, &iter, entries[i].entries);
+ }
+}
+
+static GtkTreeModel *
+create_model (void)
+{
+ GtkTreeStore *model;
+ gint i;
+
+ model = gtk_tree_store_new (NUM_COLUMNS,
+ G_TYPE_STRING,
+ G_TYPE_STRING,
+ G_TYPE_STRING,
+ G_TYPE_STRING,
+ G_TYPE_STRING,
+ G_TYPE_INT);
+
+ for (i = 0; i < 20; i++)
+ populate_model (model, NULL, main_entries);
+
+ return GTK_TREE_MODEL (model);
+}
+
+gint
+main (gint argc, gchar **argv)
+{
+ GtkWidget *window;
+ GtkWidget *scrolled_window;
+ GtkWidget *tree_view;
+ GtkTreeModel *tree_model;
+ GtkCellRenderer *renderer;
+ GtkTreeViewColumn *column;
+ GtkCellArea *area;
+
+ gtk_init (&argc, &argv);
+
+ window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ gtk_window_set_title (GTK_WINDOW (window), "Vertical cells in GtkTreeViewColumn example");
+ g_signal_connect (window, "destroy", gtk_main_quit, NULL);
+
+ scrolled_window = gtk_scrolled_window_new (NULL, NULL);
+ gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window), GTK_SHADOW_ETCHED_IN);
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
+ GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+ gtk_container_add (GTK_CONTAINER (window), scrolled_window);
+
+ tree_model = create_model ();
+ tree_view = gtk_tree_view_new_with_model (tree_model);
+ gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (tree_view), FALSE);
+
+ /* First column */
+ column = gtk_tree_view_column_new ();
+
+ renderer = gtk_cell_renderer_pixbuf_new ();
+ g_object_set (renderer, "stock-size", GTK_ICON_SIZE_DIALOG, NULL);
+ gtk_tree_view_column_pack_start (column, renderer, TRUE);
+ gtk_tree_view_column_set_attributes (column, renderer,
+ "stock-id", ICON_COLUMN, NULL);
+
+ renderer = gtk_cell_renderer_text_new ();
+ g_object_set (renderer, "scale", 1.2F, "weight", PANGO_WEIGHT_BOLD, NULL);
+ gtk_tree_view_column_pack_start (column, renderer, TRUE);
+ gtk_tree_view_column_set_attributes (column, renderer,
+ "text", INFO_COLUMN,
+ NULL);
+ gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
+
+ /* Second (vertical) column */
+ column = gtk_tree_view_column_new ();
+ area = gtk_cell_layout_get_area (GTK_CELL_LAYOUT (column));
+ gtk_orientable_set_orientation (GTK_ORIENTABLE (area), GTK_ORIENTATION_VERTICAL);
+
+ renderer = gtk_cell_renderer_text_new ();
+ g_object_set (renderer, "ellipsize", PANGO_ELLIPSIZE_END, NULL);
+ gtk_tree_view_column_pack_start (column, renderer, TRUE);
+ gtk_tree_view_column_set_attributes (column, renderer,
+ "text", DESCRIPTION_COLUMN,
+ NULL);
+
+ renderer = gtk_cell_renderer_progress_new ();
+ gtk_tree_view_column_pack_start (column, renderer, TRUE);
+ gtk_tree_view_column_set_attributes (column, renderer,
+ "value", PROGRESS_COLUMN,
+ NULL);
+
+ renderer = gtk_cell_renderer_text_new ();
+ g_object_set (renderer, "scale", 0.6F, "ellipsize", PANGO_ELLIPSIZE_END, NULL);
+ gtk_tree_view_column_pack_start (column, renderer, TRUE);
+ gtk_tree_view_column_set_attributes (column, renderer,
+ "text", FINE_PRINT_COLUMN,
+ "foreground", FINE_PRINT_COLOR_COLUMN,
+ NULL);
+
+ gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
+
+ gtk_tree_view_expand_all (GTK_TREE_VIEW (tree_view));
+
+ gtk_container_add (GTK_CONTAINER (scrolled_window), tree_view);
+
+ gtk_window_set_default_size (GTK_WINDOW (window),
+ 800, 400);
+
+ gtk_widget_show_all (window);
+ gtk_main ();
+
+ return 0;
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]