[gtk+/treeview-refactor-staging: 15/16] Adding testverticalcells.c.



commit a97425b6b8e79c4f6359d1a14774fb3c1a7f2127
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]