]> Pileus Git - ~andy/gtk/blob - demos/gtk-demo/builder.c
Use AM_CPPFLAGS instead the obsolete INCLUDES
[~andy/gtk] / demos / gtk-demo / builder.c
1 /* Builder
2  *
3  * Demonstrates an interface loaded from a XML description.
4  */
5
6 #include <gtk/gtk.h>
7 #include "demo-common.h"
8
9 static GtkBuilder *builder;
10
11 G_MODULE_EXPORT void
12 quit_activate (GtkAction *action)
13 {
14   GtkWidget *window;
15
16   window = GTK_WIDGET (gtk_builder_get_object (builder, "window1"));
17   gtk_widget_destroy (window);
18 }
19
20 G_MODULE_EXPORT void
21 about_activate (GtkAction *action)
22 {
23   GtkWidget *about_dlg;
24
25   about_dlg = GTK_WIDGET (gtk_builder_get_object (builder, "aboutdialog1"));
26   gtk_dialog_run (GTK_DIALOG (about_dlg));
27   gtk_widget_hide (about_dlg);
28 }
29
30 GtkWidget *
31 do_builder (GtkWidget *do_widget)
32 {
33   static GtkWidget *window = NULL;
34   GError *err = NULL;
35   gchar *filename;
36   
37   if (!window)
38     {
39       builder = gtk_builder_new ();
40       filename = demo_find_file ("demo.ui", NULL);
41       gtk_builder_add_from_file (builder, filename, &err);
42       g_free (filename);
43       if (err)
44         {
45           g_error ("ERROR: %s\n", err->message);
46           return NULL;
47         }
48       gtk_builder_connect_signals (builder, NULL);
49       window = GTK_WIDGET (gtk_builder_get_object (builder, "window1"));
50       gtk_window_set_screen (GTK_WINDOW (window),
51                              gtk_widget_get_screen (do_widget));
52       g_signal_connect (window, "destroy",
53                         G_CALLBACK (gtk_widget_destroyed), &window);
54     }
55
56   if (!gtk_widget_get_visible (window))
57     {
58       gtk_widget_show_all (window);
59     }
60   else
61     {    
62       gtk_widget_destroy (window);
63       window = NULL;
64     }
65
66
67   return window;
68 }