1/* testcombo.c
2 * Copyright (C) 2003 Kristian Rietveld
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Library General Public
6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Library General Public License for more details.
13 *
14 * You should have received a copy of the GNU Library General Public
15 * License along with this library. If not, see <http://www.gnu.org/licenses/>.
16 */
17#include <gtk/gtk.h>
18
19#include <string.h>
20#include <stdio.h>
21
22/**
23 * oh yes, this test app surely has a lot of ugly code
24 */
25
26/* blaat */
27static GtkTreeModel *
28create_tree_blaat (void)
29{
30 GtkWidget *cellview;
31 GtkTreeIter iter, iter2;
32 GtkTreeStore *store;
33
34 cellview = gtk_cell_view_new ();
35
36 store = gtk_tree_store_new (n_columns: 3, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN);
37
38 gtk_tree_store_append (tree_store: store, iter: &iter, NULL);
39 gtk_tree_store_set (tree_store: store, iter: &iter,
40 0, "dialog-warning",
41 1, "dialog-warning",
42 2, FALSE,
43 -1);
44
45 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
46 gtk_tree_store_set (tree_store: store, iter: &iter2,
47 0, "process-stop",
48 1, "process-stop",
49 2, FALSE,
50 -1);
51
52 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
53 gtk_tree_store_set (tree_store: store, iter: &iter2,
54 0, "document-new",
55 1, "document-new",
56 2, FALSE,
57 -1);
58
59 gtk_tree_store_append (tree_store: store, iter: &iter, NULL);
60 gtk_tree_store_set (tree_store: store, iter: &iter,
61 0, "edit-clear",
62 1, "edit-clear",
63 2, FALSE,
64 -1);
65
66#if 0
67 gtk_tree_store_append (store, &iter, NULL);
68 gtk_tree_store_set (store, &iter,
69 0, NULL,
70 1, "separator",
71 2, TRUE,
72 -1);
73#endif
74
75 gtk_tree_store_append (tree_store: store, iter: &iter, NULL);
76 gtk_tree_store_set (tree_store: store, iter: &iter,
77 0, "document-open",
78 1, "document-open",
79 2, FALSE,
80 -1);
81
82 g_object_unref (g_object_ref_sink (cellview));
83
84 return GTK_TREE_MODEL (store);
85}
86
87static GtkTreeModel *
88create_empty_list_blaat (void)
89{
90 GtkWidget *cellview;
91 GtkTreeIter iter;
92 GtkListStore *store;
93
94 cellview = gtk_cell_view_new ();
95
96 store = gtk_list_store_new (n_columns: 2, G_TYPE_STRING, G_TYPE_STRING);
97
98 gtk_list_store_append (list_store: store, iter: &iter);
99 gtk_list_store_set (list_store: store, iter: &iter,
100 0, "dialog-warning",
101 1, "dialog-warning",
102 -1);
103
104 g_object_unref (g_object_ref_sink (cellview));
105
106 return GTK_TREE_MODEL (store);
107}
108
109static void
110populate_list_blaat (gpointer data)
111{
112 GtkComboBox *combo_box = GTK_COMBO_BOX (data);
113 GtkListStore *store;
114 GtkWidget *cellview;
115 GtkTreeIter iter;
116
117 store = GTK_LIST_STORE (gtk_combo_box_get_model (combo_box));
118
119 gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), iter: &iter);
120
121 if (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), iter: &iter))
122 return;
123
124 cellview = gtk_cell_view_new ();
125
126 gtk_list_store_append (list_store: store, iter: &iter);
127 gtk_list_store_set (list_store: store, iter: &iter,
128 0, "process-stop",
129 1, "process-stop",
130 -1);
131
132 gtk_list_store_append (list_store: store, iter: &iter);
133 gtk_list_store_set (list_store: store, iter: &iter,
134 0, "document-new",
135 1, "document-new",
136 -1);
137
138 gtk_list_store_append (list_store: store, iter: &iter);
139 gtk_list_store_set (list_store: store, iter: &iter,
140 0, "edit-clear",
141 1, "edit-clear",
142 -1);
143
144 gtk_list_store_append (list_store: store, iter: &iter);
145 gtk_list_store_set (list_store: store, iter: &iter,
146 0, NULL,
147 1, "separator",
148 -1);
149
150 gtk_list_store_append (list_store: store, iter: &iter);
151 gtk_list_store_set (list_store: store, iter: &iter,
152 0, "document-open",
153 1, "document-open",
154 -1);
155
156 g_object_unref (g_object_ref_sink (cellview));
157}
158
159static GtkTreeModel *
160create_list_blaat (void)
161{
162 GtkWidget *cellview;
163 GtkTreeIter iter;
164 GtkListStore *store;
165
166 cellview = gtk_cell_view_new ();
167
168 store = gtk_list_store_new (n_columns: 2, G_TYPE_STRING, G_TYPE_STRING);
169
170 gtk_list_store_append (list_store: store, iter: &iter);
171 gtk_list_store_set (list_store: store, iter: &iter,
172 0, "dialog-warning",
173 1, "dialog-warning",
174 -1);
175
176 gtk_list_store_append (list_store: store, iter: &iter);
177 gtk_list_store_set (list_store: store, iter: &iter,
178 0, "process-stop",
179 1, "process-stop",
180 -1);
181
182 gtk_list_store_append (list_store: store, iter: &iter);
183 gtk_list_store_set (list_store: store, iter: &iter,
184 0, "document-new",
185 1, "document-new",
186 -1);
187
188 gtk_list_store_append (list_store: store, iter: &iter);
189 gtk_list_store_set (list_store: store, iter: &iter,
190 0, "edit-clear",
191 1, "edit-clear",
192 -1);
193
194 gtk_list_store_append (list_store: store, iter: &iter);
195 gtk_list_store_set (list_store: store, iter: &iter,
196 0, NULL,
197 1, "separator",
198 -1);
199
200 gtk_list_store_append (list_store: store, iter: &iter);
201 gtk_list_store_set (list_store: store, iter: &iter,
202 0, "document-open",
203 1, "document-open",
204 -1);
205
206 g_object_unref (g_object_ref_sink (cellview));
207
208 return GTK_TREE_MODEL (store);
209}
210
211
212static GtkTreeModel *
213create_list_long (void)
214{
215 GtkTreeIter iter;
216 GtkListStore *store;
217
218 store = gtk_list_store_new (n_columns: 1, G_TYPE_STRING);
219
220 gtk_list_store_append (list_store: store, iter: &iter);
221 gtk_list_store_set (list_store: store, iter: &iter,
222 0, "here is some long long text that grows out of the combo's allocation",
223 -1);
224
225
226 gtk_list_store_append (list_store: store, iter: &iter);
227 gtk_list_store_set (list_store: store, iter: &iter,
228 0, "with at least a few of these rows",
229 -1);
230
231 gtk_list_store_append (list_store: store, iter: &iter);
232 gtk_list_store_set (list_store: store, iter: &iter,
233 0, "so that we can get some ellipsized text here",
234 -1);
235
236 gtk_list_store_append (list_store: store, iter: &iter);
237 gtk_list_store_set (list_store: store, iter: &iter,
238 0, "and see the combo box menu being allocated without any constraints",
239 -1);
240
241 return GTK_TREE_MODEL (store);
242}
243
244static GtkTreeModel *
245create_food_list (void)
246{
247 GtkTreeIter iter;
248 GtkListStore *store;
249
250 store = gtk_list_store_new (n_columns: 2, G_TYPE_STRING, G_TYPE_STRING);
251 gtk_list_store_append (list_store: store, iter: &iter);
252 gtk_list_store_set (list_store: store, iter: &iter,
253 0, "Pepperoni",
254 1, "Pizza",
255 -1);
256
257 gtk_list_store_append (list_store: store, iter: &iter);
258 gtk_list_store_set (list_store: store, iter: &iter,
259 0, "Cheese",
260 1, "Burger",
261 -1);
262
263 gtk_list_store_append (list_store: store, iter: &iter);
264 gtk_list_store_set (list_store: store, iter: &iter,
265 0, "Pineapple",
266 1, "Milkshake",
267 -1);
268
269 gtk_list_store_append (list_store: store, iter: &iter);
270 gtk_list_store_set (list_store: store, iter: &iter,
271 0, "Orange",
272 1, "Soda",
273 -1);
274
275 gtk_list_store_append (list_store: store, iter: &iter);
276 gtk_list_store_set (list_store: store, iter: &iter,
277 0, "Club",
278 1, "Sandwich",
279 -1);
280
281 return GTK_TREE_MODEL (store);
282}
283
284
285/* blaat */
286static GtkTreeModel *
287create_phylogenetic_tree (void)
288{
289 GtkTreeIter iter, iter2, iter3;
290 GtkTreeStore *store;
291
292 store = gtk_tree_store_new (n_columns: 1,G_TYPE_STRING);
293
294 gtk_tree_store_append (tree_store: store, iter: &iter, NULL);
295 gtk_tree_store_set (tree_store: store, iter: &iter,
296 0, "Eubacteria",
297 -1);
298
299 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
300 gtk_tree_store_set (tree_store: store, iter: &iter2,
301 0, "Aquifecales",
302 -1);
303
304 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
305 gtk_tree_store_set (tree_store: store, iter: &iter2,
306 0, "Thermotogales",
307 -1);
308
309 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
310 gtk_tree_store_set (tree_store: store, iter: &iter2,
311 0, "Thermodesulfobacterium",
312 -1);
313
314 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
315 gtk_tree_store_set (tree_store: store, iter: &iter2,
316 0, "Thermus-Deinococcus group",
317 -1);
318
319 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
320 gtk_tree_store_set (tree_store: store, iter: &iter2,
321 0, "Chloroflecales",
322 -1);
323
324 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
325 gtk_tree_store_set (tree_store: store, iter: &iter2,
326 0, "Cyanobacteria",
327 -1);
328
329 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
330 gtk_tree_store_set (tree_store: store, iter: &iter2,
331 0, "Firmicutes",
332 -1);
333
334 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
335 gtk_tree_store_set (tree_store: store, iter: &iter2,
336 0, "Leptospirillium Group",
337 -1);
338
339 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
340 gtk_tree_store_set (tree_store: store, iter: &iter2,
341 0, "Synergistes",
342 -1);
343 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
344 gtk_tree_store_set (tree_store: store, iter: &iter2,
345 0, "Chlorobium-Flavobacteria group",
346 -1);
347 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
348 gtk_tree_store_set (tree_store: store, iter: &iter2,
349 0, "Chlamydia-Verrucomicrobia group",
350 -1);
351
352 gtk_tree_store_append (tree_store: store, iter: &iter3, parent: &iter2);
353 gtk_tree_store_set (tree_store: store, iter: &iter3,
354 0, "Verrucomicrobia",
355 -1);
356 gtk_tree_store_append (tree_store: store, iter: &iter3, parent: &iter2);
357 gtk_tree_store_set (tree_store: store, iter: &iter3,
358 0, "Chlamydia",
359 -1);
360
361 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
362 gtk_tree_store_set (tree_store: store, iter: &iter2,
363 0, "Flexistipes",
364 -1);
365
366
367 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
368 gtk_tree_store_set (tree_store: store, iter: &iter2,
369 0, "Fibrobacter group",
370 -1);
371
372
373 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
374 gtk_tree_store_set (tree_store: store, iter: &iter2,
375 0, "spirocheteus",
376 -1);
377
378
379 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
380 gtk_tree_store_set (tree_store: store, iter: &iter2,
381 0, "Proteobacteria",
382 -1);
383
384
385 gtk_tree_store_append (tree_store: store, iter: &iter3, parent: &iter2);
386 gtk_tree_store_set (tree_store: store, iter: &iter3,
387 0, "alpha",
388 -1);
389
390
391 gtk_tree_store_append (tree_store: store, iter: &iter3, parent: &iter2);
392 gtk_tree_store_set (tree_store: store, iter: &iter3,
393 0, "beta",
394 -1);
395
396
397 gtk_tree_store_append (tree_store: store, iter: &iter3, parent: &iter2);
398 gtk_tree_store_set (tree_store: store, iter: &iter3,
399 0, "delta ",
400 -1);
401
402
403 gtk_tree_store_append (tree_store: store, iter: &iter3, parent: &iter2);
404 gtk_tree_store_set (tree_store: store, iter: &iter3,
405 0, "epsilon",
406 -1);
407
408
409 gtk_tree_store_append (tree_store: store, iter: &iter3, parent: &iter2);
410 gtk_tree_store_set (tree_store: store, iter: &iter3,
411 0, "gamma ",
412 -1);
413
414
415 gtk_tree_store_append (tree_store: store, iter: &iter, NULL);
416 gtk_tree_store_set (tree_store: store, iter: &iter,
417 0, "Eukaryotes",
418 -1);
419
420
421 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
422 gtk_tree_store_set (tree_store: store, iter: &iter2,
423 0, "Metazoa",
424 -1);
425
426
427 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
428 gtk_tree_store_set (tree_store: store, iter: &iter2,
429 0, "Bilateria",
430 -1);
431
432
433 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
434 gtk_tree_store_set (tree_store: store, iter: &iter2,
435 0, "Myxozoa",
436 -1);
437
438
439 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
440 gtk_tree_store_set (tree_store: store, iter: &iter2,
441 0, "Cnidaria",
442 -1);
443
444
445 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
446 gtk_tree_store_set (tree_store: store, iter: &iter2,
447 0, "Ctenophora",
448 -1);
449
450
451 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
452 gtk_tree_store_set (tree_store: store, iter: &iter2,
453 0, "Placozoa",
454 -1);
455
456
457 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
458 gtk_tree_store_set (tree_store: store, iter: &iter2,
459 0, "Porifera",
460 -1);
461
462
463 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
464 gtk_tree_store_set (tree_store: store, iter: &iter2,
465 0, "choanoflagellates",
466 -1);
467
468
469 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
470 gtk_tree_store_set (tree_store: store, iter: &iter2,
471 0, "Fungi",
472 -1);
473
474
475 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
476 gtk_tree_store_set (tree_store: store, iter: &iter2,
477 0, "Microsporidia",
478 -1);
479
480
481 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
482 gtk_tree_store_set (tree_store: store, iter: &iter2,
483 0, "Aleveolates",
484 -1);
485
486
487 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
488 gtk_tree_store_set (tree_store: store, iter: &iter2,
489 0, "Stramenopiles",
490 -1);
491
492
493 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
494 gtk_tree_store_set (tree_store: store, iter: &iter2,
495 0, "Rhodophyta",
496 -1);
497
498
499 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
500 gtk_tree_store_set (tree_store: store, iter: &iter2,
501 0, "Viridaeplantae",
502 -1);
503
504
505 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
506 gtk_tree_store_set (tree_store: store, iter: &iter2,
507 0, "crytomonads et al",
508 -1);
509
510
511 gtk_tree_store_append (tree_store: store, iter: &iter, NULL);
512 gtk_tree_store_set (tree_store: store, iter: &iter,
513 0, "Archaea ",
514 -1);
515
516
517 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
518 gtk_tree_store_set (tree_store: store, iter: &iter2,
519 0, "Korarchaeota",
520 -1);
521
522
523 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
524 gtk_tree_store_set (tree_store: store, iter: &iter2,
525 0, "Crenarchaeota",
526 -1);
527
528
529 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
530 gtk_tree_store_set (tree_store: store, iter: &iter2,
531 0, "Buryarchaeota",
532 -1);
533
534 return GTK_TREE_MODEL (store);
535}
536
537
538/* blaat */
539static GtkTreeModel *
540create_capital_tree (void)
541{
542 GtkTreeIter iter, iter2;
543 GtkTreeStore *store;
544
545 store = gtk_tree_store_new (n_columns: 1, G_TYPE_STRING);
546
547 gtk_tree_store_append (tree_store: store, iter: &iter, NULL);
548 gtk_tree_store_set (tree_store: store, iter: &iter, 0, "A - B", -1);
549
550 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
551 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Albany", -1);
552
553 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
554 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Annapolis", -1);
555
556 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
557 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Atlanta", -1);
558
559 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
560 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Augusta", -1);
561
562 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
563 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Austin", -1);
564
565 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
566 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Baton Rouge", -1);
567
568 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
569 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Bismarck", -1);
570
571 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
572 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Boise", -1);
573
574 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
575 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Boston", -1);
576
577 gtk_tree_store_append (tree_store: store, iter: &iter, NULL);
578 gtk_tree_store_set (tree_store: store, iter: &iter, 0, "C - D", -1);
579
580 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
581 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Carson City", -1);
582
583 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
584 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Charleston", -1);
585
586 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
587 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Cheyenne", -1);
588
589 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
590 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Columbia", -1);
591
592 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
593 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Columbus", -1);
594
595 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
596 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Concord", -1);
597
598 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
599 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Denver", -1);
600
601 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
602 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Des Moines", -1);
603
604 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
605 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Dover", -1);
606
607
608 gtk_tree_store_append (tree_store: store, iter: &iter, NULL);
609 gtk_tree_store_set (tree_store: store, iter: &iter, 0, "E - J", -1);
610
611 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
612 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Frankfort", -1);
613
614 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
615 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Harrisburg", -1);
616
617 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
618 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Hartford", -1);
619
620 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
621 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Helena", -1);
622
623 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
624 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Honolulu", -1);
625
626 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
627 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Indianapolis", -1);
628
629 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
630 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Jackson", -1);
631
632 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
633 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Jefferson City", -1);
634
635 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
636 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Juneau", -1);
637
638
639 gtk_tree_store_append (tree_store: store, iter: &iter, NULL);
640 gtk_tree_store_set (tree_store: store, iter: &iter, 0, "K - O", -1);
641
642 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
643 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Lansing", -1);
644
645 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
646 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Lincoln", -1);
647
648 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
649 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Little Rock", -1);
650
651 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
652 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Madison", -1);
653
654 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
655 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Montgomery", -1);
656
657 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
658 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Montpelier", -1);
659
660 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
661 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Nashville", -1);
662
663 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
664 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Oklahoma City", -1);
665
666 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
667 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Olympia", -1);
668
669
670 gtk_tree_store_append (tree_store: store, iter: &iter, NULL);
671 gtk_tree_store_set (tree_store: store, iter: &iter, 0, "P - S", -1);
672
673 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
674 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Phoenix", -1);
675
676 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
677 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Pierre", -1);
678
679 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
680 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Providence", -1);
681
682 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
683 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Raleigh", -1);
684
685 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
686 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Richmond", -1);
687
688 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
689 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Sacramento", -1);
690
691 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
692 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Salem", -1);
693
694 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
695 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Salt Lake City", -1);
696
697 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
698 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Santa Fe", -1);
699
700 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
701 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Springfield", -1);
702
703 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
704 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "St. Paul", -1);
705
706
707 gtk_tree_store_append (tree_store: store, iter: &iter, NULL);
708 gtk_tree_store_set (tree_store: store, iter: &iter, 0, "T - Z", -1);
709
710 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
711 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Tallahassee", -1);
712
713 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
714 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Topeka", -1);
715
716 gtk_tree_store_append (tree_store: store, iter: &iter2, parent: &iter);
717 gtk_tree_store_set (tree_store: store, iter: &iter2, 0, "Trenton", -1);
718
719 return GTK_TREE_MODEL (store);
720}
721
722static void
723capital_sensitive (GtkCellLayout *cell_layout,
724 GtkCellRenderer *cell,
725 GtkTreeModel *tree_model,
726 GtkTreeIter *iter,
727 gpointer data)
728{
729 gboolean sensitive;
730
731 sensitive = !gtk_tree_model_iter_has_child (tree_model, iter);
732
733 g_object_set (object: cell, first_property_name: "sensitive", sensitive, NULL);
734}
735
736static gboolean
737capital_animation (gpointer data)
738{
739 static int insert_count = 0;
740 GtkTreeModel *model = GTK_TREE_MODEL (data);
741 GtkTreePath *path;
742 GtkTreeIter iter, parent;
743
744 switch (insert_count % 8)
745 {
746 case 0:
747 gtk_tree_store_insert (GTK_TREE_STORE (model), iter: &iter, NULL, position: 0);
748 gtk_tree_store_set (GTK_TREE_STORE (model),
749 iter: &iter,
750 0, "Europe", -1);
751 break;
752
753 case 1:
754 path = gtk_tree_path_new_from_indices (first_index: 0, -1);
755 gtk_tree_model_get_iter (tree_model: model, iter: &parent, path);
756 gtk_tree_path_free (path);
757 gtk_tree_store_insert (GTK_TREE_STORE (model), iter: &iter, parent: &parent, position: 0);
758 gtk_tree_store_set (GTK_TREE_STORE (model),
759 iter: &iter,
760 0, "Berlin", -1);
761 break;
762
763 case 2:
764 path = gtk_tree_path_new_from_indices (first_index: 0, -1);
765 gtk_tree_model_get_iter (tree_model: model, iter: &parent, path);
766 gtk_tree_path_free (path);
767 gtk_tree_store_insert (GTK_TREE_STORE (model), iter: &iter, parent: &parent, position: 1);
768 gtk_tree_store_set (GTK_TREE_STORE (model),
769 iter: &iter,
770 0, "London", -1);
771 break;
772
773 case 3:
774 path = gtk_tree_path_new_from_indices (first_index: 0, -1);
775 gtk_tree_model_get_iter (tree_model: model, iter: &parent, path);
776 gtk_tree_path_free (path);
777 gtk_tree_store_insert (GTK_TREE_STORE (model), iter: &iter, parent: &parent, position: 2);
778 gtk_tree_store_set (GTK_TREE_STORE (model),
779 iter: &iter,
780 0, "Paris", -1);
781 break;
782
783 case 4:
784 path = gtk_tree_path_new_from_indices (first_index: 0, 2, -1);
785 gtk_tree_model_get_iter (tree_model: model, iter: &iter, path);
786 gtk_tree_path_free (path);
787 gtk_tree_store_remove (GTK_TREE_STORE (model), iter: &iter);
788 break;
789
790 case 5:
791 path = gtk_tree_path_new_from_indices (first_index: 0, 1, -1);
792 gtk_tree_model_get_iter (tree_model: model, iter: &iter, path);
793 gtk_tree_path_free (path);
794 gtk_tree_store_remove (GTK_TREE_STORE (model), iter: &iter);
795 break;
796
797 case 6:
798 path = gtk_tree_path_new_from_indices (first_index: 0, 0, -1);
799 gtk_tree_model_get_iter (tree_model: model, iter: &iter, path);
800 gtk_tree_path_free (path);
801 gtk_tree_store_remove (GTK_TREE_STORE (model), iter: &iter);
802 break;
803
804 case 7:
805 path = gtk_tree_path_new_from_indices (first_index: 0, -1);
806 gtk_tree_model_get_iter (tree_model: model, iter: &iter, path);
807 gtk_tree_path_free (path);
808 gtk_tree_store_remove (GTK_TREE_STORE (model), iter: &iter);
809 break;
810
811 default: ;
812
813 }
814 insert_count++;
815
816 return TRUE;
817}
818
819static void
820setup_combo_entry (GtkComboBoxText *combo)
821{
822 gtk_combo_box_text_append_text (combo_box: combo,
823 text: "dum de dum");
824 gtk_combo_box_text_append_text (combo_box: combo,
825 text: "la la la");
826 gtk_combo_box_text_append_text (combo_box: combo,
827 text: "la la la dum de dum la la la la la la boom de da la la");
828 gtk_combo_box_text_append_text (combo_box: combo,
829 text: "bloop");
830 gtk_combo_box_text_append_text (combo_box: combo,
831 text: "bleep");
832 gtk_combo_box_text_append_text (combo_box: combo,
833 text: "klaas");
834 gtk_combo_box_text_append_text (combo_box: combo,
835 text: "klaas0");
836 gtk_combo_box_text_append_text (combo_box: combo,
837 text: "klaas1");
838 gtk_combo_box_text_append_text (combo_box: combo,
839 text: "klaas2");
840 gtk_combo_box_text_append_text (combo_box: combo,
841 text: "klaas3");
842 gtk_combo_box_text_append_text (combo_box: combo,
843 text: "klaas4");
844 gtk_combo_box_text_append_text (combo_box: combo,
845 text: "klaas5");
846 gtk_combo_box_text_append_text (combo_box: combo,
847 text: "klaas6");
848 gtk_combo_box_text_append_text (combo_box: combo,
849 text: "klaas7");
850 gtk_combo_box_text_append_text (combo_box: combo,
851 text: "klaas8");
852 gtk_combo_box_text_append_text (combo_box: combo,
853 text: "klaas9");
854 gtk_combo_box_text_append_text (combo_box: combo,
855 text: "klaasa");
856 gtk_combo_box_text_append_text (combo_box: combo,
857 text: "klaasb");
858 gtk_combo_box_text_append_text (combo_box: combo,
859 text: "klaasc");
860 gtk_combo_box_text_append_text (combo_box: combo,
861 text: "klaasd");
862 gtk_combo_box_text_append_text (combo_box: combo,
863 text: "klaase");
864 gtk_combo_box_text_append_text (combo_box: combo,
865 text: "klaasf");
866 gtk_combo_box_text_append_text (combo_box: combo,
867 text: "klaas10");
868 gtk_combo_box_text_append_text (combo_box: combo,
869 text: "klaas11");
870 gtk_combo_box_text_append_text (combo_box: combo,
871 text: "klaas12");
872}
873
874static void
875set_sensitive (GtkCellLayout *cell_layout,
876 GtkCellRenderer *cell,
877 GtkTreeModel *tree_model,
878 GtkTreeIter *iter,
879 gpointer data)
880{
881 GtkTreePath *path;
882 int *indices;
883 gboolean sensitive;
884
885 path = gtk_tree_model_get_path (tree_model, iter);
886 indices = gtk_tree_path_get_indices (path);
887 sensitive = indices[0] != 1;
888 gtk_tree_path_free (path);
889
890 g_object_set (object: cell, first_property_name: "sensitive", sensitive, NULL);
891}
892
893static gboolean
894is_separator (GtkTreeModel *model,
895 GtkTreeIter *iter,
896 gpointer data)
897{
898 GtkTreePath *path;
899 gboolean result;
900
901 path = gtk_tree_model_get_path (tree_model: model, iter);
902 result = gtk_tree_path_get_indices (path)[0] == 4;
903 gtk_tree_path_free (path);
904
905 return result;
906
907}
908
909static void
910displayed_row_changed (GtkComboBox *combo,
911 GtkCellView *cell)
912{
913 int row;
914 GtkTreePath *path;
915
916 row = gtk_combo_box_get_active (combo_box: combo);
917 path = gtk_tree_path_new_from_indices (first_index: row, -1);
918 gtk_cell_view_set_displayed_row (cell_view: cell, path);
919 gtk_tree_path_free (path);
920}
921
922static void
923quit_cb (GtkWidget *widget,
924 gpointer data)
925{
926 gboolean *done = data;
927
928 *done = TRUE;
929
930 g_main_context_wakeup (NULL);
931}
932
933int
934main (int argc, char **argv)
935{
936 GtkWidget *window, *cellview, *mainbox;
937 GtkWidget *combobox, *comboboxtext;
938 GtkWidget *tmp, *boom;
939 GtkCellRenderer *renderer;
940 GtkTreeModel *model;
941 GtkTreePath *path;
942 GtkTreeIter iter;
943 GtkCellArea *area;
944 char *text;
945 int i;
946 gboolean done = FALSE;
947
948 gtk_init ();
949
950 if (g_getenv (variable: "RTL"))
951 gtk_widget_set_default_direction (dir: GTK_TEXT_DIR_RTL);
952
953 window = gtk_window_new ();
954 g_signal_connect (window, "destroy", G_CALLBACK (quit_cb), &done);
955
956 mainbox = gtk_box_new (orientation: GTK_ORIENTATION_VERTICAL, spacing: 2);
957 gtk_window_set_child (GTK_WINDOW (window), child: mainbox);
958
959 /* GtkCellView */
960 tmp = gtk_frame_new (label: "GtkCellView");
961 gtk_box_append (GTK_BOX (mainbox), child: tmp);
962
963 boom = gtk_box_new (orientation: GTK_ORIENTATION_VERTICAL, spacing: 0);
964 gtk_frame_set_child (GTK_FRAME (tmp), child: boom);
965
966 cellview = gtk_cell_view_new ();
967 renderer = gtk_cell_renderer_pixbuf_new ();
968 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (cellview),
969 cell: renderer,
970 FALSE);
971 g_object_set (object: renderer, first_property_name: "icon-name", "dialog-warning", NULL);
972
973 renderer = gtk_cell_renderer_text_new ();
974 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (cellview),
975 cell: renderer,
976 TRUE);
977 g_object_set (object: renderer, first_property_name: "text", "la la la", NULL);
978 gtk_box_append (GTK_BOX (boom), child: cellview);
979
980 /* GtkComboBox list */
981 tmp = gtk_frame_new (label: "GtkComboBox (list)");
982 gtk_box_append (GTK_BOX (mainbox), child: tmp);
983
984 boom = gtk_box_new (orientation: GTK_ORIENTATION_VERTICAL, spacing: 0);
985 gtk_frame_set_child (GTK_FRAME (tmp), child: boom);
986
987 model = create_list_blaat ();
988 combobox = gtk_combo_box_new_with_model (model);
989 g_object_unref (object: model);
990 gtk_box_append (GTK_BOX (boom), child: combobox);
991
992 renderer = gtk_cell_renderer_pixbuf_new ();
993 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
994 cell: renderer,
995 FALSE);
996 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), cell: renderer,
997 "icon-name", 0,
998 NULL);
999 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
1000 cell: renderer,
1001 func: set_sensitive,
1002 NULL, NULL);
1003
1004 renderer = gtk_cell_renderer_text_new ();
1005 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
1006 cell: renderer,
1007 TRUE);
1008 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), cell: renderer,
1009 "text", 1,
1010 NULL);
1011 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
1012 cell: renderer,
1013 func: set_sensitive,
1014 NULL, NULL);
1015 gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (combobox),
1016 func: is_separator, NULL, NULL);
1017
1018 gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), index_: 0);
1019
1020 /* GtkComboBox dynamic list */
1021 tmp = gtk_frame_new (label: "GtkComboBox (dynamic list)");
1022 gtk_box_append (GTK_BOX (mainbox), child: tmp);
1023
1024 boom = gtk_box_new (orientation: GTK_ORIENTATION_VERTICAL, spacing: 0);
1025 gtk_frame_set_child (GTK_FRAME (tmp), child: boom);
1026
1027 model = create_empty_list_blaat ();
1028 combobox = gtk_combo_box_new_with_model (model);
1029 g_signal_connect (combobox, "notify::popup-shown",
1030 G_CALLBACK (populate_list_blaat), combobox);
1031
1032 g_object_unref (object: model);
1033 gtk_box_append (GTK_BOX (boom), child: combobox);
1034
1035 renderer = gtk_cell_renderer_pixbuf_new ();
1036 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
1037 cell: renderer,
1038 FALSE);
1039 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), cell: renderer,
1040 "icon-name", 0,
1041 NULL);
1042 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
1043 cell: renderer,
1044 func: set_sensitive,
1045 NULL, NULL);
1046
1047 renderer = gtk_cell_renderer_text_new ();
1048 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
1049 cell: renderer,
1050 TRUE);
1051 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), cell: renderer,
1052 "text", 1,
1053 NULL);
1054 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
1055 cell: renderer,
1056 func: set_sensitive,
1057 NULL, NULL);
1058 gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (combobox),
1059 func: is_separator, NULL, NULL);
1060
1061 gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), index_: 0);
1062
1063 /* GtkComboBox custom entry */
1064 tmp = gtk_frame_new (label: "GtkComboBox (custom)");
1065 gtk_box_append (GTK_BOX (mainbox), child: tmp);
1066
1067 boom = gtk_box_new (orientation: GTK_ORIENTATION_VERTICAL, spacing: 0);
1068 gtk_frame_set_child (GTK_FRAME (tmp), child: boom);
1069
1070 model = create_list_blaat ();
1071 combobox = gtk_combo_box_new_with_model (model);
1072 g_object_unref (object: model);
1073 gtk_box_append (GTK_BOX (boom), child: combobox);
1074
1075 renderer = gtk_cell_renderer_pixbuf_new ();
1076 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
1077 cell: renderer,
1078 FALSE);
1079 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), cell: renderer,
1080 "icon-name", 0,
1081 NULL);
1082 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
1083 cell: renderer,
1084 func: set_sensitive,
1085 NULL, NULL);
1086
1087 renderer = gtk_cell_renderer_text_new ();
1088 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
1089 cell: renderer,
1090 TRUE);
1091 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), cell: renderer,
1092 "text", 1,
1093 NULL);
1094 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
1095 cell: renderer,
1096 func: set_sensitive,
1097 NULL, NULL);
1098 gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (combobox),
1099 func: is_separator, NULL, NULL);
1100
1101 gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), index_: 0);
1102
1103 tmp = gtk_cell_view_new ();
1104 gtk_widget_show (widget: tmp);
1105 gtk_cell_view_set_model (GTK_CELL_VIEW (tmp), model);
1106
1107 renderer = gtk_cell_renderer_text_new ();
1108 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (tmp), cell: renderer, TRUE);
1109 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (tmp), cell: renderer,
1110 "text", 1,
1111 NULL);
1112 displayed_row_changed (GTK_COMBO_BOX (combobox), GTK_CELL_VIEW (tmp));
1113 g_signal_connect (combobox, "changed", G_CALLBACK (displayed_row_changed), tmp);
1114
1115 gtk_combo_box_set_child (GTK_COMBO_BOX (combobox), child: tmp);
1116
1117 /* GtkComboBox tree */
1118 tmp = gtk_frame_new (label: "GtkComboBox (tree)");
1119 gtk_box_append (GTK_BOX (mainbox), child: tmp);
1120
1121 boom = gtk_box_new (orientation: GTK_ORIENTATION_VERTICAL, spacing: 0);
1122 gtk_frame_set_child (GTK_FRAME (tmp), child: boom);
1123
1124 model = create_tree_blaat ();
1125 combobox = gtk_combo_box_new_with_model (model);
1126 g_object_unref (object: model);
1127 gtk_box_append (GTK_BOX (boom), child: combobox);
1128
1129 renderer = gtk_cell_renderer_pixbuf_new ();
1130 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
1131 cell: renderer,
1132 FALSE);
1133 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), cell: renderer,
1134 "icon-name", 0,
1135 NULL);
1136 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
1137 cell: renderer,
1138 func: set_sensitive,
1139 NULL, NULL);
1140
1141 renderer = gtk_cell_renderer_text_new ();
1142 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
1143 cell: renderer,
1144 TRUE);
1145 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), cell: renderer,
1146 "text", 1,
1147 NULL);
1148 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
1149 cell: renderer,
1150 func: set_sensitive,
1151 NULL, NULL);
1152 gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (combobox),
1153 func: is_separator, NULL, NULL);
1154
1155 gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), index_: 0);
1156#if 0
1157 g_timeout_add (1000, (GSourceFunc) animation_timer, model);
1158#endif
1159
1160 /* GtkComboBox (grid mode) */
1161 tmp = gtk_frame_new (label: "GtkComboBox (grid mode)");
1162 gtk_box_append (GTK_BOX (mainbox), child: tmp);
1163
1164 boom = gtk_box_new (orientation: GTK_ORIENTATION_VERTICAL, spacing: 0);
1165 gtk_frame_set_child (GTK_FRAME (tmp), child: boom);
1166
1167
1168 /* GtkComboBoxEntry */
1169 tmp = gtk_frame_new (label: "GtkComboBox with entry");
1170 gtk_box_append (GTK_BOX (mainbox), child: tmp);
1171
1172 boom = gtk_box_new (orientation: GTK_ORIENTATION_VERTICAL, spacing: 0);
1173 gtk_frame_set_child (GTK_FRAME (tmp), child: boom);
1174
1175 comboboxtext = gtk_combo_box_text_new_with_entry ();
1176 setup_combo_entry (GTK_COMBO_BOX_TEXT (comboboxtext));
1177 gtk_box_append (GTK_BOX (boom), child: comboboxtext);
1178
1179
1180 /* Phylogenetic tree */
1181 tmp = gtk_frame_new (label: "What are you ?");
1182 gtk_box_append (GTK_BOX (mainbox), child: tmp);
1183
1184 boom = gtk_box_new (orientation: GTK_ORIENTATION_VERTICAL, spacing: 0);
1185 gtk_frame_set_child (GTK_FRAME (tmp), child: boom);
1186
1187 model = create_phylogenetic_tree ();
1188 combobox = gtk_combo_box_new_with_model (model);
1189 g_object_unref (object: model);
1190 gtk_box_append (GTK_BOX (boom), child: combobox);
1191
1192 renderer = gtk_cell_renderer_text_new ();
1193 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
1194 cell: renderer,
1195 TRUE);
1196 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), cell: renderer,
1197 "text", 0,
1198 NULL);
1199
1200 gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), index_: 0);
1201
1202 /* Capitals */
1203 tmp = gtk_frame_new (label: "Where are you ?");
1204 gtk_box_append (GTK_BOX (mainbox), child: tmp);
1205
1206 boom = gtk_box_new (orientation: GTK_ORIENTATION_VERTICAL, spacing: 0);
1207 gtk_frame_set_child (GTK_FRAME (tmp), child: boom);
1208
1209 model = create_capital_tree ();
1210 combobox = gtk_combo_box_new_with_model (model);
1211 g_object_unref (object: model);
1212 gtk_box_append (GTK_BOX (boom), child: combobox);
1213 renderer = gtk_cell_renderer_text_new ();
1214 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
1215 cell: renderer,
1216 TRUE);
1217 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), cell: renderer,
1218 "text", 0,
1219 NULL);
1220 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
1221 cell: renderer,
1222 func: capital_sensitive,
1223 NULL, NULL);
1224 path = gtk_tree_path_new_from_indices (first_index: 0, 8, -1);
1225 gtk_tree_model_get_iter (tree_model: model, iter: &iter, path);
1226 gtk_tree_path_free (path);
1227 gtk_combo_box_set_active_iter (GTK_COMBO_BOX (combobox), iter: &iter);
1228
1229#if 1
1230 g_timeout_add (interval: 1000, function: (GSourceFunc) capital_animation, data: model);
1231#endif
1232
1233 /* Aligned Food */
1234 tmp = gtk_frame_new (label: "Hungry ?");
1235 gtk_box_append (GTK_BOX (mainbox), child: tmp);
1236
1237 boom = gtk_box_new (orientation: GTK_ORIENTATION_VERTICAL, spacing: 0);
1238 gtk_frame_set_child (GTK_FRAME (tmp), child: boom);
1239
1240 model = create_food_list ();
1241 combobox = gtk_combo_box_new_with_model (model);
1242 g_object_unref (object: model);
1243 gtk_box_append (GTK_BOX (boom), child: combobox);
1244
1245 area = gtk_cell_layout_get_area (GTK_CELL_LAYOUT (combobox));
1246
1247 renderer = gtk_cell_renderer_text_new ();
1248 gtk_cell_area_add_with_properties (area, renderer,
1249 first_prop_name: "align", TRUE,
1250 "expand", TRUE,
1251 NULL);
1252 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), cell: renderer,
1253 "text", 0,
1254 NULL);
1255
1256 renderer = gtk_cell_renderer_text_new ();
1257 gtk_cell_area_add_with_properties (area, renderer,
1258 first_prop_name: "align", TRUE,
1259 "expand", TRUE,
1260 NULL);
1261 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), cell: renderer,
1262 "text", 1,
1263 NULL);
1264
1265 gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), index_: 0);
1266
1267 /* Ellipsizing growing combos */
1268 tmp = gtk_frame_new (label: "Unconstrained Menu");
1269 gtk_box_append (GTK_BOX (mainbox), child: tmp);
1270
1271 boom = gtk_box_new (orientation: GTK_ORIENTATION_VERTICAL, spacing: 0);
1272 gtk_frame_set_child (GTK_FRAME (tmp), child: boom);
1273
1274 model = create_list_long ();
1275 combobox = gtk_combo_box_new_with_model (model);
1276 g_object_unref (object: model);
1277 gtk_box_append (GTK_BOX (boom), child: combobox);
1278 renderer = gtk_cell_renderer_text_new ();
1279 g_object_set (G_OBJECT (renderer), first_property_name: "ellipsize", PANGO_ELLIPSIZE_END, NULL);
1280
1281 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox), cell: renderer, TRUE);
1282 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), cell: renderer,
1283 "text", 0, NULL);
1284 gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), index_: 0);
1285 gtk_combo_box_set_popup_fixed_width (GTK_COMBO_BOX (combobox), FALSE);
1286
1287 tmp = gtk_frame_new (label: "Looong");
1288 gtk_box_append (GTK_BOX (mainbox), child: tmp);
1289 combobox = gtk_combo_box_text_new ();
1290 for (i = 0; i < 200; i++)
1291 {
1292 text = g_strdup_printf (format: "Item %d", i);
1293 gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combobox), text);
1294 g_free (mem: text);
1295 }
1296 gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), index_: 53);
1297 gtk_frame_set_child (GTK_FRAME (tmp), child: combobox);
1298
1299 gtk_widget_show (widget: window);
1300
1301 while (!done)
1302 g_main_context_iteration (NULL, TRUE);
1303
1304 return 0;
1305}
1306
1307/* vim:expandtab
1308 */
1309

source code of gtk/tests/testcombo.c