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 */ |
27 | static GtkTreeModel * |
28 | create_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 | |
87 | static GtkTreeModel * |
88 | create_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 | |
109 | static void |
110 | populate_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 | |
159 | static GtkTreeModel * |
160 | create_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 | |
212 | static GtkTreeModel * |
213 | create_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 | |
244 | static GtkTreeModel * |
245 | create_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 */ |
286 | static GtkTreeModel * |
287 | create_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 */ |
539 | static GtkTreeModel * |
540 | create_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 | |
722 | static void |
723 | capital_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 | |
736 | static gboolean |
737 | capital_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 | |
819 | static void |
820 | setup_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 | |
874 | static void |
875 | set_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 | |
893 | static gboolean |
894 | is_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 | |
909 | static void |
910 | displayed_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 | |
922 | static void |
923 | quit_cb (GtkWidget *widget, |
924 | gpointer data) |
925 | { |
926 | gboolean *done = data; |
927 | |
928 | *done = TRUE; |
929 | |
930 | g_main_context_wakeup (NULL); |
931 | } |
932 | |
933 | int |
934 | main (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 | |