3
* Copyright © 2011 Canonical Ltd
5
* This library is free software; you can redistribute it and/or
6
* modify it under the terms of the GNU Lesser General Public
7
* License as published by the Free Software Foundation; either
8
* version 2.1 of the License, or (at your option) any later version.
10
* This library is distributed in the hope that it will be useful,
11
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
* Lesser General Public License for more details.
15
* You should have received a copy of the GNU Lesser General Public
16
* License along with this library; if not, write to the
17
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18
* Boston, MA 02110-1301 USA
20
* Authored by Andrea Cimitan <andrea.cimitan@canonical.com>
24
* This test only creates an overlay scrollbar, subclass of GtkWindow,
25
* to test g_object creation.
30
static char text0[] = "Ubuntu is gonna rock!\n\
31
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!\n\
32
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!\n\
33
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!\n\
34
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!\n\
35
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!\n\
36
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!\n\
37
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!\n\
38
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!\n\
39
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!\n\
40
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!";
42
static char text1[] = "Ubuntu is gonna rock!\n\
43
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!\n\
44
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!\n\
45
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!\n\
46
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!\n\
47
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!\n\
48
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!\n\
49
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!\n\
50
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!\n\
51
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!\n\
52
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!\n\
53
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!\n\
54
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!\n\
55
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!\n\
56
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!\n\
57
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!\n\
58
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!\n\
59
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!\n\
60
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!\n\
61
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!\n\
62
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!\n\
63
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!\n\
64
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!\n\
65
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!\n\
66
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!\n\
67
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!\n\
68
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!\n\
69
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!\n\
70
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!\n\
71
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!\n\
72
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!\n\
73
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!\n\
74
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!\n\
75
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!\n\
76
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!\n\
77
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!\n\
78
Ubuntu is gonna rock!\nUbuntu is gonna rock!\nUbuntu is gonna rock!";
83
const gchar *description;
97
{ FALSE, "Ubuntu really rocks." },
98
{ TRUE, "Ubuntu will rock soon!" },
99
{ FALSE, "Nokia and Microsoft are gonna rock." },
100
{ TRUE, "Cimi needs a vacation!" },
101
{ FALSE, "I prefer rain to sunshine." },
102
{ TRUE, "I wonna flight with Mark's jet." },
103
{ FALSE, "Gtk+ 2.0 and X11 rocks." },
104
{ FALSE, "Nokia won't kill Qt with this move." },
105
{ TRUE, "Can't wait for the sun to ride my bike." },
106
{ TRUE, "UDS in Florida was awesome!" },
107
{ FALSE, "I'm not bored at all of writing there." },
108
{ TRUE, "A developer should be tanned." },
109
{ FALSE, "Firefox is faster than Chromium." },
110
{ TRUE, "Please Cimi, stop writing!" },
113
static GtkTreeModel* model_create (void);
115
static void renderer_check_toggled_cb (GtkCellRendererToggle *cell,
119
static void tree_view_add_columns (GtkTreeView *treeview);
121
static void window_destroy_cb (GtkWidget *widget,
126
* create GtkTreeModel
136
/* create list store */
137
store = gtk_list_store_new (NUM_COLUMNS,
142
/* add data to the list store */
143
length = (gint) G_N_ELEMENTS (data);
144
for (i = 0; i < length; i++)
146
gtk_list_store_append (store, &iter);
147
gtk_list_store_set (store, &iter,
148
COLUMN_CHECK, data[i].check,
149
COLUMN_DESCRIPTION, data[i].description,
150
COLUMN_ACTIVE, FALSE,
154
return GTK_TREE_MODEL (store);
158
* renderer_check_toggled_cb:
159
* callback for "toggled" signal
162
renderer_check_toggled_cb (GtkCellRendererToggle *cell,
166
GtkTreeModel *model = (GtkTreeModel*)user_data;
168
GtkTreePath *path = gtk_tree_path_new_from_string (path_str);
171
/* get toggled iter */
172
gtk_tree_model_get_iter (model, &iter, path);
173
gtk_tree_model_get (model, &iter, COLUMN_CHECK, &check, -1);
175
/* do something with the value */
179
gtk_list_store_set (GTK_LIST_STORE (model), &iter, COLUMN_CHECK, check, -1);
182
gtk_tree_path_free (path);
186
* tree_view_add_columns:
187
* add columns to the GtkTreeView
190
tree_view_add_columns (GtkTreeView *treeview)
192
GtkCellRenderer *renderer;
193
GtkTreeViewColumn *column;
194
GtkTreeModel *model = gtk_tree_view_get_model (treeview);
196
/* column for fixed toggles */
197
renderer = gtk_cell_renderer_toggle_new ();
198
g_signal_connect (renderer, "toggled",
199
G_CALLBACK (renderer_check_toggled_cb), model);
201
column = gtk_tree_view_column_new_with_attributes ("True?",
203
"active", COLUMN_CHECK,
206
/* set this column to a fixed sizing (of 50 pixels) */
207
gtk_tree_view_column_set_sizing (GTK_TREE_VIEW_COLUMN (column),
208
GTK_TREE_VIEW_COLUMN_FIXED);
209
gtk_tree_view_column_set_fixed_width (GTK_TREE_VIEW_COLUMN (column), 50);
210
gtk_tree_view_append_column (treeview, column);
212
/* column for description */
213
renderer = gtk_cell_renderer_text_new ();
214
column = gtk_tree_view_column_new_with_attributes ("Description",
219
gtk_tree_view_column_set_sort_column_id (column, COLUMN_DESCRIPTION);
220
gtk_tree_view_append_column (treeview, column);
225
* destroy callback for window
228
window_destroy_cb (GtkWidget *widget,
242
GtkWidget *scrolled_window_text0, *scrolled_window_text1, *scrolled_window_tree_view;
245
GtkWidget *text_view0, *text_view1;
246
GtkWidget *tree_view;
248
GtkTextBuffer *text_buffer0, *text_buffer1;
250
/* GtkWidget *vscrollbar0, *vscrollbar1, *vscrollbar2;*/
251
/* GtkWidget *overlay_scrollbar0, *overlay_scrollbar1, *overlay_scrollbar2; */
253
gtk_init (&argc, &argv);
256
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
257
gtk_window_set_default_size (GTK_WINDOW (window), 400, 500);
258
gtk_window_set_title (GTK_WINDOW (window), "Vertical \"Overlay Scrollbar\" test");
261
vbox = gtk_vbox_new (TRUE, 2);
264
hbox = gtk_hbox_new (TRUE, 2);
266
/* scrolled_window_text0 */
267
scrolled_window_text0 = gtk_scrolled_window_new (NULL, NULL);
270
text_view0 = gtk_text_view_new ();
271
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_window_text0), text_view0);
272
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window_text0), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
275
text_buffer0 = gtk_text_view_get_buffer(GTK_TEXT_VIEW (text_view0));
276
gtk_text_buffer_set_text (text_buffer0, text0, -1);
278
/* overlar_scrollbar0 */
279
/* vscrollbar0 = gtk_scrolled_window_get_vscrollbar (GTK_SCROLLED_WINDOW (scrolled_window_text0));*/
280
/* overlay_scrollbar0 = overlay_scrollbar_new (GTK_ORIENTATION_VERTICAL,*/
281
/* gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (scrolled_window_text0)));*/
282
/* gtk_widget_set_parent (overlay_scrollbar0, scrolled_window_text0);*/
284
/* scrolled_window_text1 */
285
scrolled_window_text1 = gtk_scrolled_window_new (NULL, NULL);
288
text_view1 = gtk_text_view_new ();
289
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_window_text1), text_view1);
290
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window_text1), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
293
text_buffer1 = gtk_text_view_get_buffer(GTK_TEXT_VIEW (text_view1));
294
gtk_text_buffer_set_text (text_buffer1, text1, -1);
296
/* overlar_scrollbar1 */
297
/* vscrollbar1 = gtk_scrolled_window_get_vscrollbar (GTK_SCROLLED_WINDOW (scrolled_window_text1));*/
298
/* overlay_scrollbar1 = overlay_scrollbar_new (GTK_ORIENTATION_VERTICAL,*/
299
/* gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (scrolled_window_text1)));*/
300
/* gtk_widget_set_parent (overlay_scrollbar1, scrolled_window_text1);*/
303
model = model_create ();
306
tree_view = gtk_tree_view_new_with_model (model);
307
gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (tree_view), TRUE);
308
gtk_tree_view_set_search_column (GTK_TREE_VIEW (tree_view),
310
tree_view_add_columns (GTK_TREE_VIEW (tree_view));
312
g_object_unref (model);
314
/* scrolled_window_tree_view */
315
scrolled_window_tree_view = gtk_scrolled_window_new (NULL, NULL);
316
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window_tree_view),
317
GTK_SHADOW_ETCHED_IN);
318
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window_tree_view),
320
GTK_POLICY_AUTOMATIC);
321
gtk_container_add (GTK_CONTAINER (scrolled_window_tree_view), tree_view);
323
/* overlar_scrollbar2 */
324
/* vscrollbar2 = gtk_scrolled_window_get_vscrollbar (GTK_SCROLLED_WINDOW (scrolled_window_tree_view));*/
325
/* overlay_scrollbar2 = overlay_scrollbar_new (GTK_ORIENTATION_VERTICAL,*/
326
/* gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (scrolled_window_tree_view)));*/
327
/* gtk_widget_set_parent (overlay_scrollbar2, scrolled_window_tree_view);*/
330
gtk_container_set_border_width (GTK_CONTAINER (window), 2);
331
gtk_container_add (GTK_CONTAINER (hbox), scrolled_window_text0);
332
gtk_container_add (GTK_CONTAINER (hbox), scrolled_window_text1);
333
gtk_container_add (GTK_CONTAINER (vbox), hbox);
334
gtk_container_add (GTK_CONTAINER (vbox), scrolled_window_tree_view);
335
gtk_container_add (GTK_CONTAINER (window), vbox);
338
g_signal_connect (G_OBJECT (window), "destroy",
339
G_CALLBACK (window_destroy_cb), NULL);
341
gtk_widget_show_all (window);