]> Pileus Git - ~andy/gtk/blob - tests/testassistant.c
Use gtk_box_new() instead gtk_[v|h]box_new()
[~andy/gtk] / tests / testassistant.c
1 /* 
2  * GTK - The GIMP Toolkit
3  * Copyright (C) 1999  Red Hat, Inc.
4  * Copyright (C) 2002  Anders Carlsson <andersca@gnu.org>
5  * Copyright (C) 2003  Matthias Clasen <mclasen@redhat.com>
6  * Copyright (C) 2005  Carlos Garnacho Parro <carlosg@gnome.org>
7  *
8  * All rights reserved.
9  *
10  * This library is free software; you can redistribute it and/or
11  * modify it under the terms of the GNU Lesser General Public
12  * License as published by the Free Software Foundation; either
13  * version 2 of the License, or (at your option) any later version.
14  *
15  * This library is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
18  * Lesser General Public License for more details.
19  *
20  * You should have received a copy of the GNU Lesser General Public
21  * License along with this library; if not, write to the
22  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
23  * Boston, MA 02111-1307, USA.
24  */
25
26 #include <gtk/gtk.h>
27
28 static GtkWidget*
29 get_test_page (const gchar *text)
30 {
31   return gtk_label_new (text);
32 }
33
34 typedef struct {
35   GtkAssistant *assistant;
36   GtkWidget    *page;
37 } PageData;
38
39 static void
40 complete_cb (GtkWidget *check, 
41              gpointer   data)
42 {
43   PageData *pdata = data;
44   gboolean complete;
45
46   complete = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (check));
47
48   gtk_assistant_set_page_complete (pdata->assistant,
49                                    pdata->page,
50                                    complete);
51 }
52              
53 static GtkWidget *
54 add_completion_test_page (GtkWidget   *assistant,
55                           const gchar *text, 
56                           gboolean     visible,
57                           gboolean     complete)
58 {
59   GtkWidget *page;
60   GtkWidget *check;
61   PageData *pdata;
62
63   page = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0, FALSE);
64   check = gtk_check_button_new_with_label ("Complete");
65
66   gtk_container_add (GTK_CONTAINER (page), gtk_label_new (text));
67   gtk_container_add (GTK_CONTAINER (page), check);
68   
69   gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check), complete);
70
71   pdata = g_new (PageData, 1);
72   pdata->assistant = GTK_ASSISTANT (assistant);
73   pdata->page = page;
74   g_signal_connect (G_OBJECT (check), "toggled", 
75                     G_CALLBACK (complete_cb), pdata);
76
77
78   if (visible)
79     gtk_widget_show_all (page);
80
81   gtk_assistant_append_page (GTK_ASSISTANT (assistant), page);
82   gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), page, text);
83   gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), page, complete);
84
85   return page;
86 }
87
88 static void
89 cancel_callback (GtkWidget *widget)
90 {
91   g_print ("cancel\n");
92
93   gtk_widget_hide (widget);
94 }
95
96 static void
97 close_callback (GtkWidget *widget)
98 {
99   g_print ("close\n");
100
101   gtk_widget_hide (widget);
102 }
103
104 static void
105 apply_callback (GtkWidget *widget)
106 {
107   g_print ("apply\n");
108 }
109
110 static gboolean
111 progress_timeout (GtkWidget *assistant)
112 {
113   GtkWidget *page, *progress;
114   gint current_page;
115   gdouble value;
116
117   current_page = gtk_assistant_get_current_page (GTK_ASSISTANT (assistant));
118   page = gtk_assistant_get_nth_page (GTK_ASSISTANT (assistant), current_page);
119   progress = gtk_bin_get_child (GTK_BIN (page));
120
121   value  = gtk_progress_bar_get_fraction (GTK_PROGRESS_BAR (progress));
122   value += 0.1;
123   gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progress), value);
124
125   if (value >= 1.0)
126     {
127       gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), page, TRUE);
128       return FALSE;
129     }
130
131   return TRUE;
132 }
133
134 static void
135 prepare_callback (GtkWidget *widget, GtkWidget *page)
136 {
137   if (GTK_IS_LABEL (page))
138     g_print ("prepare: %s\n", gtk_label_get_text (GTK_LABEL (page)));
139   else if (gtk_assistant_get_page_type (GTK_ASSISTANT (widget), page) == GTK_ASSISTANT_PAGE_PROGRESS)
140     {
141       GtkWidget *progress;
142
143       progress = gtk_bin_get_child (GTK_BIN (page));
144       gtk_assistant_set_page_complete (GTK_ASSISTANT (widget), page, FALSE);
145       gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progress), 0.0);
146       gdk_threads_add_timeout (300, (GSourceFunc) progress_timeout, widget);
147     }
148   else
149     g_print ("prepare: %d\n", gtk_assistant_get_current_page (GTK_ASSISTANT (widget)));
150 }
151
152 static void
153 create_simple_assistant (GtkWidget *widget)
154 {
155   static GtkWidget *assistant = NULL;
156
157   if (!assistant)
158     {
159       GtkWidget *page;
160
161       assistant = gtk_assistant_new ();
162       gtk_window_set_default_size (GTK_WINDOW (assistant), 400, 300);
163
164       g_signal_connect (G_OBJECT (assistant), "cancel",
165                         G_CALLBACK (cancel_callback), NULL);
166       g_signal_connect (G_OBJECT (assistant), "close",
167                         G_CALLBACK (close_callback), NULL);
168       g_signal_connect (G_OBJECT (assistant), "apply",
169                         G_CALLBACK (apply_callback), NULL);
170       g_signal_connect (G_OBJECT (assistant), "prepare",
171                         G_CALLBACK (prepare_callback), NULL);
172
173       page = get_test_page ("Page 1");
174       gtk_widget_show (page);
175       gtk_assistant_append_page (GTK_ASSISTANT (assistant), page);
176       gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), page, "Page 1");
177       gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), page, TRUE);
178
179       page = get_test_page ("Page 2");
180       gtk_widget_show (page);
181       gtk_assistant_append_page (GTK_ASSISTANT (assistant), page);
182       gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), page, "Page 2");
183       gtk_assistant_set_page_type  (GTK_ASSISTANT (assistant), page, GTK_ASSISTANT_PAGE_CONFIRM);
184       gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), page, TRUE);
185     }
186
187   if (!gtk_widget_get_visible (assistant))
188     gtk_widget_show (assistant);
189   else
190     {
191       gtk_widget_destroy (assistant);
192       assistant = NULL;
193     }
194 }
195
196 static void
197 visible_cb (GtkWidget *check, 
198             gpointer   data)
199 {
200   GtkWidget *page = data;
201   gboolean visible;
202
203   visible = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (check));
204
205   g_object_set (G_OBJECT (page), "visible", visible, NULL);
206 }
207
208 static void
209 create_generous_assistant (GtkWidget *widget)
210 {
211   static GtkWidget *assistant = NULL;
212
213   if (!assistant)
214     {
215       GtkWidget *page, *next, *check;
216       PageData  *pdata;
217
218       assistant = gtk_assistant_new ();
219       gtk_window_set_default_size (GTK_WINDOW (assistant), 400, 300);
220
221       g_signal_connect (G_OBJECT (assistant), "cancel",
222                         G_CALLBACK (cancel_callback), NULL);
223       g_signal_connect (G_OBJECT (assistant), "close",
224                         G_CALLBACK (close_callback), NULL);
225       g_signal_connect (G_OBJECT (assistant), "apply",
226                         G_CALLBACK (apply_callback), NULL);
227       g_signal_connect (G_OBJECT (assistant), "prepare",
228                         G_CALLBACK (prepare_callback), NULL);
229
230       page = get_test_page ("Introduction");
231       gtk_widget_show (page);
232       gtk_assistant_append_page (GTK_ASSISTANT (assistant), page);
233       gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), page, "Introduction");
234       gtk_assistant_set_page_type  (GTK_ASSISTANT (assistant), page, GTK_ASSISTANT_PAGE_INTRO);
235       gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), page, TRUE);
236
237       page = add_completion_test_page (assistant, "Content", TRUE, FALSE);
238       next = add_completion_test_page (assistant, "More Content", TRUE, TRUE);
239
240       check = gtk_check_button_new_with_label ("Next page visible");
241       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check), TRUE);
242       g_signal_connect (G_OBJECT (check), "toggled", 
243                         G_CALLBACK (visible_cb), next);
244       gtk_widget_show (check);
245       gtk_container_add (GTK_CONTAINER (page), check);
246       
247       add_completion_test_page (assistant, "Even More Content", TRUE, TRUE);
248
249       page = get_test_page ("Confirmation");
250       gtk_widget_show (page);
251       gtk_assistant_append_page (GTK_ASSISTANT (assistant), page);
252       gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), page, "Confirmation");
253       gtk_assistant_set_page_type  (GTK_ASSISTANT (assistant), page, GTK_ASSISTANT_PAGE_CONFIRM);
254       gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), page, TRUE);
255
256       page = gtk_alignment_new (0.5, 0.5, 0.9, 0.0);
257       gtk_container_add (GTK_CONTAINER (page), gtk_progress_bar_new ());
258       gtk_widget_show_all (page);
259       gtk_assistant_append_page (GTK_ASSISTANT (assistant), page);
260       gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), page, "Progress");
261       gtk_assistant_set_page_type  (GTK_ASSISTANT (assistant), page, GTK_ASSISTANT_PAGE_PROGRESS);
262
263       page = gtk_check_button_new_with_label ("Summary complete");
264       gtk_widget_show (page);
265       gtk_assistant_append_page (GTK_ASSISTANT (assistant), page);
266       gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), page, "Summary");
267       gtk_assistant_set_page_type  (GTK_ASSISTANT (assistant), page, GTK_ASSISTANT_PAGE_SUMMARY);
268
269       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (page),
270                                     gtk_assistant_get_page_complete (GTK_ASSISTANT (assistant),
271                                                                      page));
272
273       pdata = g_new (PageData, 1);
274       pdata->assistant = GTK_ASSISTANT (assistant);
275       pdata->page = page;
276       g_signal_connect (page, "toggled",
277                       G_CALLBACK (complete_cb), pdata);
278     }
279
280   if (!gtk_widget_get_visible (assistant))
281     gtk_widget_show (assistant);
282   else
283     {
284       gtk_widget_destroy (assistant);
285       assistant = NULL;
286     }
287 }
288
289 static gchar selected_branch = 'A';
290
291 static void
292 select_branch (GtkWidget *widget, gchar branch)
293 {
294   selected_branch = branch;
295 }
296
297 static gint
298 nonlinear_assistant_forward_page (gint current_page, gpointer data)
299 {
300   switch (current_page)
301     {
302     case 0:
303       if (selected_branch == 'A')
304         return 1;
305       else
306         return 2;
307     case 1:
308     case 2:
309       return 3;
310     default:
311       return -1;
312     }
313 }
314
315 static void
316 create_nonlinear_assistant (GtkWidget *widget)
317 {
318   static GtkWidget *assistant = NULL;
319
320   if (!assistant)
321     {
322       GtkWidget *page, *button;
323
324       assistant = gtk_assistant_new ();
325       gtk_window_set_default_size (GTK_WINDOW (assistant), 400, 300);
326
327       g_signal_connect (G_OBJECT (assistant), "cancel",
328                         G_CALLBACK (cancel_callback), NULL);
329       g_signal_connect (G_OBJECT (assistant), "close",
330                         G_CALLBACK (close_callback), NULL);
331       g_signal_connect (G_OBJECT (assistant), "apply",
332                         G_CALLBACK (apply_callback), NULL);
333       g_signal_connect (G_OBJECT (assistant), "prepare",
334                         G_CALLBACK (prepare_callback), NULL);
335
336       gtk_assistant_set_forward_page_func (GTK_ASSISTANT (assistant),
337                                            nonlinear_assistant_forward_page,
338                                            NULL, NULL);
339
340       page = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE, 6);
341
342       button = gtk_radio_button_new_with_label (NULL, "branch A");
343       gtk_box_pack_start (GTK_BOX (page), button, FALSE, FALSE, 0);
344       g_signal_connect (G_OBJECT (button), "toggled", G_CALLBACK (select_branch), GINT_TO_POINTER ('A'));
345       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), TRUE);
346       
347       button = gtk_radio_button_new_with_label (gtk_radio_button_get_group (GTK_RADIO_BUTTON (button)),
348                                                 "branch B");
349       gtk_box_pack_start (GTK_BOX (page), button, FALSE, FALSE, 0);
350       g_signal_connect (G_OBJECT (button), "toggled", G_CALLBACK (select_branch), GINT_TO_POINTER ('B'));
351
352       gtk_widget_show_all (page);
353       gtk_assistant_append_page (GTK_ASSISTANT (assistant), page);
354       gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), page, "Page 1");
355       gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), page, TRUE);
356       
357       page = get_test_page ("Page 2A");
358       gtk_widget_show (page);
359       gtk_assistant_append_page (GTK_ASSISTANT (assistant), page);
360       gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), page, "Page 2A");
361       gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), page, TRUE);
362
363       page = get_test_page ("Page 2B");
364       gtk_widget_show (page);
365       gtk_assistant_append_page (GTK_ASSISTANT (assistant), page);
366       gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), page, "Page 2B");
367       gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), page, TRUE);
368
369       page = get_test_page ("Confirmation");
370       gtk_widget_show (page);
371       gtk_assistant_append_page (GTK_ASSISTANT (assistant), page);
372       gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), page, "Confirmation");
373       gtk_assistant_set_page_type  (GTK_ASSISTANT (assistant), page, GTK_ASSISTANT_PAGE_CONFIRM);
374       gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), page, TRUE);
375     }
376
377   if (!gtk_widget_get_visible (assistant))
378     gtk_widget_show (assistant);
379   else
380     {
381       gtk_widget_destroy (assistant);
382       assistant = NULL;
383     }
384 }
385
386 static gint
387 looping_assistant_forward_page (gint current_page, gpointer data)
388 {
389   switch (current_page)
390     {
391     case 0:
392       return 1;
393     case 1:
394       return 2;
395     case 2:
396       return 3;
397     case 3:
398       {
399         GtkAssistant *assistant;
400         GtkWidget *page;
401
402         assistant = (GtkAssistant*) data;
403         page = gtk_assistant_get_nth_page (assistant, current_page);
404
405         if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (page)))
406           return 0;
407         else
408           return 4;
409       }
410     case 4:
411     default:
412       return -1;
413     }
414 }
415
416 static void
417 create_looping_assistant (GtkWidget *widget)
418 {
419   static GtkWidget *assistant = NULL;
420
421   if (!assistant)
422     {
423       GtkWidget *page;
424
425       assistant = gtk_assistant_new ();
426       gtk_window_set_default_size (GTK_WINDOW (assistant), 400, 300);
427
428       g_signal_connect (G_OBJECT (assistant), "cancel",
429                         G_CALLBACK (cancel_callback), NULL);
430       g_signal_connect (G_OBJECT (assistant), "close",
431                         G_CALLBACK (close_callback), NULL);
432       g_signal_connect (G_OBJECT (assistant), "apply",
433                         G_CALLBACK (apply_callback), NULL);
434       g_signal_connect (G_OBJECT (assistant), "prepare",
435                         G_CALLBACK (prepare_callback), NULL);
436
437       gtk_assistant_set_forward_page_func (GTK_ASSISTANT (assistant),
438                                            looping_assistant_forward_page,
439                                            assistant, NULL);
440
441       page = get_test_page ("Introduction");
442       gtk_widget_show (page);
443       gtk_assistant_append_page (GTK_ASSISTANT (assistant), page);
444       gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), page, "Introduction");
445       gtk_assistant_set_page_type  (GTK_ASSISTANT (assistant), page, GTK_ASSISTANT_PAGE_INTRO);
446       gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), page, TRUE);
447
448       page = get_test_page ("Content");
449       gtk_widget_show (page);
450       gtk_assistant_append_page (GTK_ASSISTANT (assistant), page);
451       gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), page, "Content");
452       gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), page, TRUE);
453
454       page = get_test_page ("More content");
455       gtk_widget_show (page);
456       gtk_assistant_append_page (GTK_ASSISTANT (assistant), page);
457       gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), page, "More content");
458       gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), page, TRUE);
459
460       page = gtk_check_button_new_with_label ("Loop?");
461       gtk_widget_show (page);
462       gtk_assistant_append_page (GTK_ASSISTANT (assistant), page);
463       gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), page, "Loop?");
464       gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), page, TRUE);
465       
466       page = get_test_page ("Confirmation");
467       gtk_widget_show (page);
468       gtk_assistant_append_page (GTK_ASSISTANT (assistant), page);
469       gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), page, "Confirmation");
470       gtk_assistant_set_page_type  (GTK_ASSISTANT (assistant), page, GTK_ASSISTANT_PAGE_CONFIRM);
471       gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), page, TRUE);
472     }
473
474   if (!gtk_widget_get_visible (assistant))
475     gtk_widget_show (assistant);
476   else
477     {
478       gtk_widget_destroy (assistant);
479       assistant = NULL;
480     }
481 }
482
483 static void
484 create_full_featured_assistant (GtkWidget *widget)
485 {
486   static GtkWidget *assistant = NULL;
487
488   if (!assistant)
489     {
490       GtkWidget *page, *button;
491          GdkPixbuf *pixbuf;
492
493       assistant = gtk_assistant_new ();
494       gtk_window_set_default_size (GTK_WINDOW (assistant), 400, 300);
495
496          button = gtk_button_new_from_stock (GTK_STOCK_STOP);
497          gtk_widget_show (button);
498          gtk_assistant_add_action_widget (GTK_ASSISTANT (assistant), button);
499
500       g_signal_connect (G_OBJECT (assistant), "cancel",
501                         G_CALLBACK (cancel_callback), NULL);
502       g_signal_connect (G_OBJECT (assistant), "close",
503                         G_CALLBACK (close_callback), NULL);
504       g_signal_connect (G_OBJECT (assistant), "apply",
505                         G_CALLBACK (apply_callback), NULL);
506       g_signal_connect (G_OBJECT (assistant), "prepare",
507                         G_CALLBACK (prepare_callback), NULL);
508
509       page = get_test_page ("Page 1");
510       gtk_widget_show (page);
511       gtk_assistant_append_page (GTK_ASSISTANT (assistant), page);
512       gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), page, "Page 1");
513       gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), page, TRUE);
514
515          /* set a side image */
516          pixbuf = gtk_widget_render_icon (page, GTK_STOCK_DIALOG_WARNING, GTK_ICON_SIZE_DIALOG, NULL);
517          gtk_assistant_set_page_side_image (GTK_ASSISTANT (assistant), page, pixbuf);
518
519          /* set a header image */
520          pixbuf = gtk_widget_render_icon (page, GTK_STOCK_DIALOG_INFO, GTK_ICON_SIZE_DIALOG, NULL);
521          gtk_assistant_set_page_header_image (GTK_ASSISTANT (assistant), page, pixbuf);
522
523       page = get_test_page ("Invisible page");
524       gtk_assistant_append_page (GTK_ASSISTANT (assistant), page);
525
526       page = get_test_page ("Page 3");
527       gtk_widget_show (page);
528       gtk_assistant_append_page (GTK_ASSISTANT (assistant), page);
529       gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), page, "Page 3");
530       gtk_assistant_set_page_type  (GTK_ASSISTANT (assistant), page, GTK_ASSISTANT_PAGE_CONFIRM);
531       gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), page, TRUE);
532
533          /* set a header image */
534          pixbuf = gtk_widget_render_icon (page, GTK_STOCK_DIALOG_INFO, GTK_ICON_SIZE_DIALOG, NULL);
535          gtk_assistant_set_page_header_image (GTK_ASSISTANT (assistant), page, pixbuf);
536     }
537
538   if (!gtk_widget_get_visible (assistant))
539     gtk_widget_show (assistant);
540   else
541     {
542       gtk_widget_destroy (assistant);
543       assistant = NULL;
544     }
545 }
546
547 struct {
548   gchar *text;
549   void  (*func) (GtkWidget *widget);
550 } buttons[] =
551   {
552     { "simple assistant",        create_simple_assistant },
553     { "generous assistant",      create_generous_assistant },
554     { "nonlinear assistant",     create_nonlinear_assistant },
555     { "looping assistant",       create_looping_assistant },
556     { "full featured assistant", create_full_featured_assistant },
557   };
558
559 int
560 main (int argc, gchar *argv[])
561 {
562   GtkWidget *window, *box, *button;
563   gint i;
564
565   gtk_init (&argc, &argv);
566
567   if (g_getenv ("RTL"))
568     gtk_widget_set_default_direction (GTK_TEXT_DIR_RTL);
569
570   window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
571
572   g_signal_connect (G_OBJECT (window), "destroy",
573                     G_CALLBACK (gtk_main_quit), NULL);
574   g_signal_connect (G_OBJECT (window), "delete-event",
575                     G_CALLBACK (gtk_false), NULL);
576
577   box = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE, 6);
578   gtk_container_add (GTK_CONTAINER (window), box);
579
580   for (i = 0; i < G_N_ELEMENTS (buttons); i++)
581     {
582       button = gtk_button_new_with_label (buttons[i].text);
583
584       if (buttons[i].func)
585         g_signal_connect (G_OBJECT (button), "clicked",
586                           G_CALLBACK (buttons[i].func), NULL);
587
588       gtk_box_pack_start (GTK_BOX (box), button, TRUE, TRUE, 0);
589     }
590
591   gtk_widget_show_all (window);
592   gtk_main ();
593
594   return 0;
595 }