1 /* GTK - The GIMP Toolkit
2 * testcellrenderertext.c: Tests for the various properties of GtkCellRendererText
3 * Copyright (C) 2005, Novell, Inc.
6 * Federico Mena-Quintero <federico@novell.com>
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2 of the License, or (at your option) any later version.
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with this library; if not, write to the
20 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
21 * Boston, MA 02111-1307, USA.
26 #define COL_BACKGROUND 14
27 #define COL_LINE_NUM 15
28 #define NUM_COLS 16 /* change this when adding columns */
31 char *description; /* 0 */
35 double xalign; /* 4 */
36 double yalign; /* 5 */
37 gboolean sensitive; /* 6 */
40 int width_chars; /* 9 */
41 int wrap_width; /* 10 */
42 PangoWrapMode wrap_mode; /* 11 */
43 gboolean single_paragraph_mode; /* 12 */
44 PangoEllipsizeMode ellipsize; /* 13 */
45 /* COL_BACKGROUND */ /* 14 */
46 /* COL_LINE_NUM */ /* 15 */
49 #define WO PANGO_WRAP_WORD
50 #define CH PANGO_WRAP_CHAR
51 #define WC PANGO_WRAP_WORD_CHAR
53 #define NO PANGO_ELLIPSIZE_NONE
54 #define ST PANGO_ELLIPSIZE_START
55 #define MI PANGO_ELLIPSIZE_MIDDLE
56 #define EN PANGO_ELLIPSIZE_END
59 #define TESTL "LEFT JUSTIFIED This is really truly verily some very long text\n\330\247\331\204\330\263\331\204\330\247\331\205 \330\271\331\204\331\212\331\203\331\205 \330\247\331\204\330\263\331\204\330\247\331\205 \330\271\331\204\331\212\331\203\331\205 \330\247\331\204\330\263\331\204\330\247\331\205 \330\271\331\204\331\212\331\203\331\205"
61 #define TESTC "CENTERED This is really truly verily some very long text\n\330\247\331\204\330\263\331\204\330\247\331\205 \330\271\331\204\331\212\331\203\331\205 \330\247\331\204\330\263\331\204\330\247\331\205 \330\271\331\204\331\212\331\203\331\205 \330\247\331\204\330\263\331\204\330\247\331\205 \330\271\331\204\331\212\331\203\331\205"
63 #define TESTR "RIGHT JUSTIFIED This is really truly verily some very long text\n\330\247\331\204\330\263\331\204\330\247\331\205 \330\271\331\204\331\212\331\203\331\205 \330\247\331\204\330\263\331\204\330\247\331\205 \330\271\331\204\331\212\331\203\331\205 \330\247\331\204\330\263\331\204\330\247\331\205 \330\271\331\204\331\212\331\203\331\205"
65 static const struct cell_params cell_params[] = {
66 { "xp yp xa ya se wi he wc ww wm sp el", "", 0, 0, 0.0, 0.5, TRUE, -1, -1, -1, -1, CH, FALSE, NO }, /* 0 */
70 { "0 0 0 0 T -1 -1 -1 -1 CH F NO", TESTL, 0, 0, 0.0, 0.0, TRUE, -1, -1, -1, -1, CH, FALSE, NO }, /* 1 */
71 { "0 0 .5 0 T -1 -1 -1 -1 CH F NO", TESTC, 0, 0, 0.5, 0.0, TRUE, -1, -1, -1, -1, CH, FALSE, NO }, /* 2 */
72 { "0 0 1 0 T -1 -1 -1 -1 CH F NO", TESTR, 0, 0, 1.0, 0.0, TRUE, -1, -1, -1, -1, CH, FALSE, NO }, /* 3 */
73 { "0 0 0 .5 T -1 -1 -1 -1 CH F NO", TESTL, 0, 0, 0.0, 0.5, TRUE, -1, -1, -1, -1, CH, FALSE, NO }, /* 4 */
74 { "0 0 .5 .5 T -1 -1 -1 -1 CH F NO", TESTC, 0, 0, 0.5, 0.5, TRUE, -1, -1, -1, -1, CH, FALSE, NO }, /* 5 */
75 { "0 0 1 .5 T -1 -1 -1 -1 CH F NO", TESTR, 0, 0, 1.0, 0.5, TRUE, -1, -1, -1, -1, CH, FALSE, NO }, /* 6 */
76 { "0 0 0 1 T -1 -1 -1 -1 CH F NO", TESTL, 0, 0, 0.0, 1.0, TRUE, -1, -1, -1, -1, CH, FALSE, NO }, /* 7 */
77 { "0 0 .5 1 T -1 -1 -1 -1 CH F NO", TESTC, 0, 0, 0.5, 1.0, TRUE, -1, -1, -1, -1, CH, FALSE, NO }, /* 8 */
78 { "0 0 1 1 T -1 -1 -1 -1 CH F NO", TESTR, 0, 0, 1.0, 1.0, TRUE, -1, -1, -1, -1, CH, FALSE, NO }, /* 9 */
82 { "10 10 0 0 T -1 -1 -1 -1 CH F NO", TESTL, 10, 10, 0.0, 0.0, TRUE, -1, -1, -1, -1, CH, FALSE, NO }, /* 10 */
83 { "10 10 .5 0 T -1 -1 -1 -1 CH F NO", TESTC, 10, 10, 0.5, 0.0, TRUE, -1, -1, -1, -1, CH, FALSE, NO }, /* 11 */
84 { "10 10 1 0 T -1 -1 -1 -1 CH F NO", TESTR, 10, 10, 1.0, 0.0, TRUE, -1, -1, -1, -1, CH, FALSE, NO }, /* 12 */
85 { "10 10 0 .5 T -1 -1 -1 -1 CH F NO", TESTL, 10, 10, 0.0, 0.5, TRUE, -1, -1, -1, -1, CH, FALSE, NO }, /* 13 */
86 { "10 10 .5 .5 T -1 -1 -1 -1 CH F NO", TESTC, 10, 10, 0.5, 0.5, TRUE, -1, -1, -1, -1, CH, FALSE, NO }, /* 14 */
87 { "10 10 1 .5 T -1 -1 -1 -1 CH F NO", TESTR, 10, 10, 1.0, 0.5, TRUE, -1, -1, -1, -1, CH, FALSE, NO }, /* 15 */
88 { "10 10 0 1 T -1 -1 -1 -1 CH F NO", TESTL, 10, 10, 0.0, 1.0, TRUE, -1, -1, -1, -1, CH, FALSE, NO }, /* 16 */
89 { "10 10 .5 1 T -1 -1 -1 -1 CH F NO", TESTC, 10, 10, 0.5, 1.0, TRUE, -1, -1, -1, -1, CH, FALSE, NO }, /* 17 */
90 { "10 10 1 1 T -1 -1 -1 -1 CH F NO", TESTR, 10, 10, 1.0, 1.0, TRUE, -1, -1, -1, -1, CH, FALSE, NO }, /* 18 */
96 create_list_store (void)
98 GtkListStore *list_store;
101 list_store = gtk_list_store_new (NUM_COLS,
102 G_TYPE_STRING, /* 0 */
103 G_TYPE_STRING, /* 1 */
106 G_TYPE_DOUBLE, /* 4 */
107 G_TYPE_DOUBLE, /* 5 */
108 G_TYPE_BOOLEAN, /* 6 */
113 PANGO_TYPE_WRAP_MODE, /* 11 */
114 G_TYPE_BOOLEAN, /* 12 */
115 PANGO_TYPE_ELLIPSIZE_MODE, /* 13 */
116 G_TYPE_STRING, /* 14 */
117 G_TYPE_STRING); /* 15 */
119 for (i = 0; i < G_N_ELEMENTS (cell_params); i++)
121 const struct cell_params *p;
127 snprintf (buf, sizeof (buf), "%d", i);
129 gtk_list_store_append (list_store, &iter);
130 gtk_list_store_set (list_store, &iter,
143 12, p->single_paragraph_mode,
145 14, (i % 2 == 0) ? "gray50" : "gray80",
154 create_tree (gboolean rtl)
158 GtkListStore *list_store;
159 GtkTreeViewColumn *column;
160 GtkCellRenderer *renderer;
163 sw = gtk_scrolled_window_new (NULL, NULL);
164 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw), GTK_SHADOW_IN);
165 gtk_widget_set_direction (sw, rtl ? GTK_TEXT_DIR_RTL : GTK_TEXT_DIR_LTR);
167 list_store = create_list_store ();
169 treeview = gtk_tree_view_new_with_model (GTK_TREE_MODEL (list_store));
170 gtk_widget_set_direction (treeview, rtl ? GTK_TEXT_DIR_RTL : GTK_TEXT_DIR_LTR);
171 gtk_container_add (GTK_CONTAINER (sw), treeview);
175 renderer = gtk_cell_renderer_text_new ();
176 column = gtk_tree_view_column_new_with_attributes ("#",
178 "text", COL_LINE_NUM,
180 gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
184 renderer = gtk_cell_renderer_text_new ();
185 g_object_set (renderer,
188 column = gtk_tree_view_column_new_with_attributes ("Description",
192 gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
196 renderer = gtk_cell_renderer_text_new ();
197 column = gtk_tree_view_column_new_with_attributes ("Test",
210 "single_paragraph_mode", 12,
212 "cell_background", 14,
214 gtk_tree_view_column_set_resizable (column, TRUE);
215 gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
219 pixbuf = gdk_pixbuf_new_from_file ("apple-red.png", NULL);
221 renderer = gtk_cell_renderer_pixbuf_new ();
222 g_object_set (renderer,
227 column = gtk_tree_view_column_new_with_attributes ("Empty",
230 gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
236 main (int argc, char **argv)
243 gtk_init (&argc, &argv);
245 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
246 g_signal_connect (window, "destroy",
247 G_CALLBACK (gtk_main_quit), NULL);
248 gtk_container_set_border_width (GTK_CONTAINER (window), 12);
250 vbox = gtk_vbox_new (FALSE, 12);
251 gtk_container_add (GTK_CONTAINER (window), vbox);
255 label = gtk_label_new ("Left to right");
256 gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
258 tree = create_tree (FALSE);
259 gtk_box_pack_start (GTK_BOX (vbox), tree, TRUE, TRUE, 0);
263 label = gtk_label_new ("Right to left");
264 gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
266 tree = create_tree (TRUE);
267 gtk_box_pack_start (GTK_BOX (vbox), tree, TRUE, TRUE, 0);
269 gtk_widget_show_all (window);