forked from AuroraMiddleware/gtk
Adding testverticalcells.c.
This test displays a GtkTreeViewColumn rendering a vertically oriented GtkCellArea along side a horizontally oriented column in the same treeview.
This commit is contained in:
parent
78979b2954
commit
847581b67c
@ -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)
|
||||
@ -257,6 +259,7 @@ testtreeflow_LDADD = $(LDADDS)
|
||||
testtreecolumns_LDADD = $(LDADDS)
|
||||
testtreecolumnsizing_LDADD = $(LDADDS)
|
||||
testtreesort_LDADD = $(LDADDS)
|
||||
testverticalcells_LDADD = $(LDADDS)
|
||||
treestoretest_LDADD = $(LDADDS)
|
||||
testxinerama_LDADD = $(LDADDS)
|
||||
testmerge_LDADD = $(LDADDS)
|
||||
|
375
tests/testverticalcells.c
Normal file
375
tests/testverticalcells.c
Normal file
@ -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;
|
||||
}
|
Loading…
Reference in New Issue
Block a user