Index: configure.in
===================================================================
--- configure.in	(revision 1505)
+++ configure.in	(working copy)
@@ -18,7 +18,7 @@ AC_PROG_CC
 
 GTK_REQUIRED=2.15.1
 
-PKG_CHECK_MODULES([ZENITY],[gtk+-2.0 >= $GTK_REQUIRED libglade-2.0 glib-2.0])
+PKG_CHECK_MODULES([ZENITY],[gtk+-2.0 >= $GTK_REQUIRED glib-2.0])
 AC_SUBST([ZENITY_CFLAGS])
 AC_SUBST([ZENITY_LIBS])
 
Index: src/tree.c
===================================================================
--- src/tree.c	(revision 1505)
+++ src/tree.c	(working copy)
@@ -25,7 +25,6 @@
 
 #include "config.h"
 
-#include <glade/glade.h>
 #include <string.h>
 #include <stdlib.h>
 #include "zenity.h"
@@ -34,7 +33,7 @@
 #define MAX_ELEMENTS_BEFORE_SCROLLING 5
 #define PRINT_HIDE_COLUMN_SEPARATOR ","
 
-static GladeXML *glade_dialog;
+static GtkBuilder *builder;
 static GSList *selected;
 static gchar *separator;
 static gboolean print_all_columns = FALSE;
@@ -168,7 +167,8 @@ zenity_tree_handle_stdin (GIOChannel  *c
         GtkRequisition rectangle;
 
         gtk_widget_size_request (GTK_WIDGET (tree_view), &rectangle);
-        scrolled_window = glade_xml_get_widget (glade_dialog, "zenity_tree_window");
+        scrolled_window = GTK_WIDGET (gtk_builder_get_object (builder,
+							 "zenity_tree_window"));
         gtk_widget_set_size_request (scrolled_window, -1, rectangle.height);
         gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
                                         GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
@@ -245,7 +245,8 @@ zenity_tree_fill_entries (GtkTreeView  *
       GtkRequisition rectangle;
 
       gtk_widget_size_request (GTK_WIDGET (tree_view), &rectangle);
-      scrolled_window = glade_xml_get_widget (glade_dialog, "zenity_tree_window");
+      scrolled_window = GTK_WIDGET (gtk_builder_get_object (builder,
+      							 "zenity_tree_window"));
       gtk_widget_set_size_request (scrolled_window, -1, rectangle.height);
       gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
                                       GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
@@ -281,8 +282,8 @@ void
 zenity_tree (ZenityData *data, ZenityTreeData *tree_data)
 {
   GtkWidget *dialog;
-  GtkWidget *tree_view;
-  GtkWidget *text;
+  GObject *tree_view;
+  GObject *text;
   GtkTreeViewColumn *column;
   GtkListStore *model;
   GType *column_types;
@@ -290,9 +291,9 @@ zenity_tree (ZenityData *data, ZenityTre
   gboolean first_column = FALSE;
   gint i, column_index, n_columns;
 
-  glade_dialog = zenity_util_load_glade_file ("zenity_tree_dialog");
+  builder = zenity_util_load_ui_file ("zenity_tree_dialog", NULL);
 
-  if (glade_dialog == NULL) {
+  if (builder == NULL) {
     data->exit_code = zenity_util_return_exit_code (ZENITY_ERROR);
     return;
   }
@@ -328,9 +329,9 @@ zenity_tree (ZenityData *data, ZenityTre
     return;
   }
 
-  glade_xml_signal_autoconnect (glade_dialog);
+  gtk_builder_connect_signals (builder, NULL);
 
-  dialog = glade_xml_get_widget (glade_dialog, "zenity_tree_dialog");
+  dialog = GTK_WIDGET (gtk_builder_get_object (builder, "zenity_tree_dialog"));
 
   g_signal_connect (G_OBJECT (dialog), "response",
                     G_CALLBACK (zenity_tree_dialog_response), data);
@@ -338,7 +339,7 @@ zenity_tree (ZenityData *data, ZenityTre
   if (data->dialog_title)
     gtk_window_set_title (GTK_WINDOW (dialog), data->dialog_title);
 
-  text = glade_xml_get_widget (glade_dialog, "zenity_tree_text");
+  text = gtk_builder_get_object (builder, "zenity_tree_text");
                                                                                 
   if (tree_data->dialog_text)
     gtk_label_set_markup (GTK_LABEL (text), g_strcompress (tree_data->dialog_text));
@@ -348,10 +349,10 @@ zenity_tree (ZenityData *data, ZenityTre
   if (data->width > -1 || data->height > -1)
     gtk_window_set_default_size (GTK_WINDOW (dialog), data->width, data->height);
 
-  tree_view = glade_xml_get_widget (glade_dialog, "zenity_tree_view");
+  tree_view = gtk_builder_get_object (builder, "zenity_tree_view");
 
   if (!(tree_data->radiobox || tree_data->checkbox)) 
-    g_signal_connect (G_OBJECT (tree_view), "row-activated", 
+    g_signal_connect (tree_view, "row-activated", 
                       G_CALLBACK (zenity_tree_row_activated), data);
  
   /* Create an empty list store */
@@ -500,8 +501,7 @@ zenity_tree (ZenityData *data, ZenityTre
 
   gtk_main ();
 
-  if (glade_dialog)
-    g_object_unref (glade_dialog);
+  g_object_unref (builder);
 }
 
 static void 
@@ -591,13 +591,13 @@ static void
 zenity_tree_dialog_response (GtkWidget *widget, int response, gpointer data)
 {
   ZenityData *zen_data = data;
-  GtkWidget *tree_view;
+  GObject *tree_view;
   GtkTreeSelection *selection; 
   GtkTreeModel *model;
 
   switch (response) {
     case GTK_RESPONSE_OK:
-      tree_view = glade_xml_get_widget (glade_dialog, "zenity_tree_view");
+      tree_view = gtk_builder_get_object (builder, "zenity_tree_view");
       model = gtk_tree_view_get_model (GTK_TREE_VIEW (tree_view));
 
       if (gtk_tree_model_get_column_type (model, 0) == G_TYPE_BOOLEAN)
Index: src/entry.c
===================================================================
--- src/entry.c	(revision 1505)
+++ src/entry.c	(working copy)
@@ -23,7 +23,6 @@
 
 #include "config.h"
 
-#include <glade/glade.h>
 #include "zenity.h"
 #include "util.h"
 
@@ -46,23 +45,23 @@ zenity_entry_fill_entries (GSList **entr
 void 
 zenity_entry (ZenityData *data, ZenityEntryData *entry_data)
 {
-  GladeXML *glade_dialog = NULL;
+  GtkBuilder *builder = NULL;
   GtkWidget *dialog;
-  GtkWidget *text;
+  GObject *text;
   GSList *entries = NULL; 
   GSList *tmp;
-  GtkWidget *vbox;
+  GObject *vbox;
   
-  glade_dialog = zenity_util_load_glade_file ("zenity_entry_dialog");
+  builder = zenity_util_load_ui_file ("zenity_entry_dialog", NULL);
 
-  if (glade_dialog == NULL) {
+  if (builder == NULL) {
     data->exit_code = zenity_util_return_exit_code (ZENITY_ERROR);
     return;
   }
 	
-  glade_xml_signal_autoconnect (glade_dialog);
+  gtk_builder_connect_signals (builder, NULL);
 	
-  dialog = glade_xml_get_widget (glade_dialog, "zenity_entry_dialog");
+  dialog = GTK_WIDGET (gtk_builder_get_object (builder, "zenity_entry_dialog"));
 	
   g_signal_connect (G_OBJECT (dialog), "response",
                     G_CALLBACK (zenity_entry_dialog_response), data);
@@ -75,12 +74,12 @@ zenity_entry (ZenityData *data, ZenityEn
   if (data->width > -1 || data->height > -1)
     gtk_window_set_default_size (GTK_WINDOW (dialog), data->width, data->height);
 
-  text = glade_xml_get_widget (glade_dialog, "zenity_entry_text");
+  text = gtk_builder_get_object (builder, "zenity_entry_text");
 
   if (entry_data->dialog_text)
     gtk_label_set_text_with_mnemonic (GTK_LABEL (text), entry_data->dialog_text);
   
-  vbox = glade_xml_get_widget (glade_dialog, "vbox4");
+  vbox = gtk_builder_get_object (builder, "vbox4");
   
   zenity_entry_fill_entries(&entries, entry_data->data);
   
@@ -113,11 +112,10 @@ zenity_entry (ZenityData *data, ZenityEn
 
   gtk_box_pack_end (GTK_BOX (vbox), entry, FALSE, FALSE, 0);
 
-  if (glade_dialog)
-    g_object_unref (glade_dialog);
-
   gtk_label_set_mnemonic_widget (GTK_LABEL (text), entry);
 
+  g_object_unref (builder);
+
   zenity_util_show_dialog (dialog);
 
   if(data->timeout_delay > 0) {
Index: src/progress.c
===================================================================
--- src/progress.c	(revision 1505)
+++ src/progress.c	(working copy)
@@ -29,11 +29,10 @@
 #include <sys/types.h>
 #include <unistd.h>
 #include <signal.h>
-#include <glade/glade.h>
 #include "zenity.h"
 #include "util.h"
 
-static GladeXML *glade_dialog;
+static GtkBuilder *builder;
 static ZenityData *zen_data;
 static GIOChannel *channel;
 
@@ -57,14 +56,14 @@ zenity_progress_handle_stdin (GIOChannel
                               gpointer      data)
 {
   static ZenityProgressData *progress_data;
-  static GtkWidget *progress_bar;
-  static GtkWidget *progress_label;
+  static GObject *progress_bar;
+  static GObject *progress_label;
   static gint pulsate_timeout = -1;
   float percentage = 0.0;
   
   progress_data = (ZenityProgressData *) data;
-  progress_bar = glade_xml_get_widget (glade_dialog, "zenity_progress_bar");
-  progress_label = glade_xml_get_widget (glade_dialog, "zenity_progress_text");
+  progress_bar = gtk_builder_get_object (builder, "zenity_progress_bar");
+  progress_label = gtk_builder_get_object (builder, "zenity_progress_text");
 
   if ((condition == G_IO_IN) || (condition == G_IO_IN + G_IO_HUP)) {
     GString *string;
@@ -114,8 +113,8 @@ zenity_progress_handle_stdin (GIOChannel
         /* Now try to convert the thing to a number */
         percentage = atoi (string->str);
         if (percentage >= 100) {
-	  GtkWidget *button;
-	  button = glade_xml_get_widget( glade_dialog,"zenity_progress_ok_button");
+	  GObject *button;
+	  button = gtk_builder_get_object(builder, "zenity_progress_ok_button");
           gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progress_bar), 1.0);
 	  gtk_widget_set_sensitive(GTK_WIDGET (button), TRUE);
 	  gtk_widget_grab_focus(GTK_WIDGET (button));
@@ -136,11 +135,13 @@ zenity_progress_handle_stdin (GIOChannel
     /* We assume that we are done, so stop the pulsating and de-sensitize the buttons */
     GtkWidget *button;
 
-    button = glade_xml_get_widget (glade_dialog, "zenity_progress_ok_button");
+    button = GTK_WIDGET (gtk_builder_get_object (builder,
+    						 "zenity_progress_ok_button"));
     gtk_widget_set_sensitive (button, TRUE);
     gtk_widget_grab_focus (button);
 
-    button = glade_xml_get_widget (glade_dialog, "zenity_progress_cancel_button");
+    button = GTK_WIDGET (gtk_builder_get_object (builder,
+    					      "zenity_progress_cancel_button"));
     gtk_widget_set_sensitive (button, FALSE);
 		
     gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progress_bar), 1.0);
@@ -150,8 +151,7 @@ zenity_progress_handle_stdin (GIOChannel
       pulsate_timeout = -1;
     }
 
-    if (glade_dialog)
-      g_object_unref (glade_dialog);
+    g_object_unref (builder);
 
     if (progress_data->autoclose) {
       zen_data->exit_code = zenity_util_return_exit_code (ZENITY_OK);
@@ -177,20 +177,21 @@ void
 zenity_progress (ZenityData *data, ZenityProgressData *progress_data)
 {
   GtkWidget *dialog;
-  GtkWidget *text;
-  GtkWidget *progress_bar;
+  GObject *text;
+  GObject *progress_bar;
 
   zen_data = data;
-  glade_dialog = zenity_util_load_glade_file ("zenity_progress_dialog");
+  builder = zenity_util_load_ui_file ("zenity_progress_dialog", NULL);
 
-  if (glade_dialog == NULL) {
+  if (builder == NULL) {
     data->exit_code = zenity_util_return_exit_code (ZENITY_ERROR);
     return;
   }
 	
-  glade_xml_signal_autoconnect (glade_dialog);
+  gtk_builder_connect_signals (builder, NULL);
 	
-  dialog = glade_xml_get_widget (glade_dialog, "zenity_progress_dialog");
+  dialog = GTK_WIDGET (gtk_builder_get_object (builder,
+  					       "zenity_progress_dialog"));
 
   g_signal_connect (G_OBJECT (dialog), "response",
                     G_CALLBACK (zenity_progress_dialog_response), data);
@@ -203,12 +204,12 @@ zenity_progress (ZenityData *data, Zenit
   if (data->width > -1 || data->height > -1)
     gtk_window_set_default_size (GTK_WINDOW (dialog), data->width, data->height);
 
-  text = glade_xml_get_widget (glade_dialog, "zenity_progress_text");
+  text = gtk_builder_get_object (builder, "zenity_progress_text");
 
   if (progress_data->dialog_text)
     gtk_label_set_markup (GTK_LABEL (text), g_strcompress (progress_data->dialog_text));
 
-  progress_bar = glade_xml_get_widget (glade_dialog, "zenity_progress_bar");
+  progress_bar = gtk_builder_get_object (builder, "zenity_progress_bar");
 
   if (progress_data->percentage > -1)
     gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progress_bar), 
Index: src/calendar.c
===================================================================
--- src/calendar.c	(revision 1505)
+++ src/calendar.c	(working copy)
@@ -23,7 +23,6 @@
 
 #include "config.h"
 
-#include <glade/glade.h>
 #include <time.h>
 #include "zenity.h"
 #include "util.h"
@@ -38,22 +37,23 @@ static void zenity_calendar_double_click
 void 
 zenity_calendar (ZenityData *data, ZenityCalendarData *cal_data)
 {
-  GladeXML *glade_dialog = NULL;
+  GtkBuilder *builder;
   GtkWidget *dialog;
-  GtkWidget *text;
+  GObject *text;
 
   zen_cal_data = cal_data;
 
-  glade_dialog = zenity_util_load_glade_file ("zenity_calendar_dialog");
+  builder = zenity_util_load_ui_file ("zenity_calendar_dialog", NULL);
 
-  if (glade_dialog == NULL) {
+  if (builder == NULL) {
     data->exit_code = zenity_util_return_exit_code (ZENITY_ERROR);
     return;
   }
 	
-  glade_xml_signal_autoconnect (glade_dialog);
+  gtk_builder_connect_signals (builder, NULL);
 
-  dialog = glade_xml_get_widget (glade_dialog, "zenity_calendar_dialog");
+  dialog = GTK_WIDGET (gtk_builder_get_object (builder,
+  					       "zenity_calendar_dialog"));
 
   g_signal_connect (G_OBJECT (dialog), "response",
                     G_CALLBACK (zenity_calendar_dialog_response), data);
@@ -66,16 +66,13 @@ zenity_calendar (ZenityData *data, Zenit
   if (data->width > -1 || data->height > -1)
     gtk_window_set_default_size (GTK_WINDOW (dialog), data->width, data->height);
 
-  text = glade_xml_get_widget (glade_dialog, "zenity_calendar_text");
+  text = gtk_builder_get_object (builder, "zenity_calendar_text");
 
   if (cal_data->dialog_text)
     gtk_label_set_markup (GTK_LABEL (text), g_strcompress (cal_data->dialog_text));
 
-  calendar = glade_xml_get_widget (glade_dialog, "zenity_calendar");
+  calendar = GTK_WIDGET (gtk_builder_get_object (builder, "zenity_calendar"));
 	
-  if (glade_dialog)
-    g_object_unref (glade_dialog);
-
   if (cal_data->month > 0 || cal_data->year > 0)
     gtk_calendar_select_month (GTK_CALENDAR (calendar), cal_data->month - 1, cal_data->year);
   if (cal_data->day > 0)
@@ -91,6 +88,8 @@ zenity_calendar (ZenityData *data, Zenit
     g_timeout_add (data->timeout_delay * 1000, (GSourceFunc) zenity_util_timeout_handle, NULL);
   }
 
+  g_object_unref (builder);
+
   gtk_main ();
 }
 
Index: src/zenity.ui
===================================================================
--- src/zenity.ui	(revision 0)
+++ src/zenity.ui	(revision 0)
@@ -0,0 +1,927 @@
+<?xml version="1.0"?>
+<interface>
+  <requires lib="gtk+" version="2.16"/>
+  <!-- interface-naming-policy toplevel-contextual -->
+  <object class="GtkDialog" id="zenity_calendar_dialog">
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes">Calendar selection</property>
+    <property name="window_position">center</property>
+    <property name="type_hint">dialog</property>
+    <property name="focus_on_map">False</property>
+    <property name="has_separator">False</property>
+    <signal name="destroy" handler="gtk_main_quit"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox1">
+        <property name="visible">True</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkVBox" id="vbox1">
+            <property name="visible">True</property>
+            <property name="border_width">5</property>
+            <property name="spacing">6</property>
+            <child>
+              <object class="GtkVBox" id="vbox2">
+                <property name="visible">True</property>
+                <property name="spacing">6</property>
+                <child>
+                  <object class="GtkLabel" id="zenity_calendar_text">
+                    <property name="visible">True</property>
+                    <property name="xalign">0</property>
+                    <property name="label" translatable="yes">Select a date from below.</property>
+                    <property name="use_markup">True</property>
+                    <property name="wrap">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="zenity_calendar_label">
+                <property name="visible">True</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes">C_alendar:</property>
+                <property name="use_underline">True</property>
+                <property name="mnemonic_widget">zenity_calendar</property>
+                <accessibility>
+                  <relation type="label-for" target="zenity_calendar"/>
+                </accessibility>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkCalendar" id="zenity_calendar">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area1">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="zenity_calendar_cancel_button">
+                <property name="label">gtk-cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="zenity_calendar_ok_button">
+                <property name="label">gtk-ok</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="has_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-6">zenity_calendar_cancel_button</action-widget>
+      <action-widget response="-5">zenity_calendar_ok_button</action-widget>
+    </action-widgets>
+  </object>
+  <object class="GtkDialog" id="zenity_warning_dialog">
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes">Warning</property>
+    <property name="window_position">center</property>
+    <property name="type_hint">dialog</property>
+    <property name="focus_on_map">False</property>
+    <property name="has_separator">False</property>
+    <signal name="destroy" handler="gtk_main_quit"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox2">
+        <property name="visible">True</property>
+        <property name="spacing">14</property>
+        <child>
+          <object class="GtkHBox" id="hbox1">
+            <property name="visible">True</property>
+            <property name="border_width">5</property>
+            <property name="spacing">12</property>
+            <child>
+              <object class="GtkImage" id="image1">
+                <property name="visible">True</property>
+                <property name="xalign">0</property>
+                <property name="yalign">0</property>
+                <property name="stock">gtk-dialog-warning</property>
+                <property name="icon-size">6</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="zenity_warning_text">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="yalign">0</property>
+                <property name="label" translatable="yes">Are you sure you want to proceed?</property>
+                <property name="use_markup">True</property>
+                <property name="wrap">True</property>
+                <property name="selectable">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area2">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="zenity_warning_ok_button">
+                <property name="label">gtk-ok</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="has_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-5">zenity_warning_ok_button</action-widget>
+    </action-widgets>
+  </object>
+  <object class="GtkDialog" id="zenity_question_dialog">
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes">Question</property>
+    <property name="window_position">center</property>
+    <property name="type_hint">dialog</property>
+    <property name="focus_on_map">False</property>
+    <property name="has_separator">False</property>
+    <signal name="destroy" handler="gtk_main_quit"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox3">
+        <property name="visible">True</property>
+        <property name="spacing">14</property>
+        <child>
+          <object class="GtkHBox" id="hbox2">
+            <property name="visible">True</property>
+            <property name="border_width">5</property>
+            <property name="spacing">12</property>
+            <child>
+              <object class="GtkImage" id="image2">
+                <property name="visible">True</property>
+                <property name="xalign">0</property>
+                <property name="yalign">0</property>
+                <property name="stock">gtk-dialog-question</property>
+                <property name="icon-size">6</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="zenity_question_text">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="yalign">0</property>
+                <property name="label" translatable="yes">Are you sure you want to proceed?</property>
+                <property name="use_markup">True</property>
+                <property name="wrap">True</property>
+                <property name="selectable">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="zenity_question_button_box">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="GtkDialog" id="zenity_entry_dialog">
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes">Add a new entry</property>
+    <property name="window_position">center</property>
+    <property name="type_hint">dialog</property>
+    <property name="focus_on_map">False</property>
+    <property name="has_separator">False</property>
+    <signal name="destroy" handler="gtk_main_quit"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox4">
+        <property name="visible">True</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkVBox" id="vbox3">
+            <property name="visible">True</property>
+            <property name="border_width">6</property>
+            <child>
+              <object class="GtkVBox" id="vbox4">
+                <property name="visible">True</property>
+                <property name="spacing">6</property>
+                <child>
+                  <object class="GtkLabel" id="zenity_entry_text">
+                    <property name="visible">True</property>
+                    <property name="xalign">0</property>
+                    <property name="label" translatable="yes">_Enter new text:</property>
+                    <property name="use_markup">True</property>
+                    <property name="use_underline">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area4">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="zenity_entry_cancel_button">
+                <property name="label">gtk-cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="zenity_entry_ok_button">
+                <property name="label">gtk-ok</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-6">zenity_entry_cancel_button</action-widget>
+      <action-widget response="-5">zenity_entry_ok_button</action-widget>
+    </action-widgets>
+  </object>
+  <object class="GtkDialog" id="zenity_text_dialog">
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes">Text View</property>
+    <property name="window_position">center</property>
+    <property name="default_width">300</property>
+    <property name="default_height">200</property>
+    <property name="type_hint">dialog</property>
+    <property name="focus_on_map">False</property>
+    <property name="has_separator">False</property>
+    <signal name="destroy" handler="gtk_main_quit"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox5">
+        <property name="visible">True</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkVBox" id="vbox5">
+            <property name="visible">True</property>
+            <property name="border_width">5</property>
+            <child>
+              <object class="GtkScrolledWindow" id="scrolledwindow1">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="hscrollbar_policy">automatic</property>
+                <property name="vscrollbar_policy">automatic</property>
+                <property name="shadow_type">etched-in</property>
+                <child>
+                  <object class="GtkTextView" id="zenity_text_view">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="pixels_above_lines">2</property>
+                    <property name="pixels_below_lines">2</property>
+                    <property name="editable">False</property>
+                    <property name="wrap_mode">word</property>
+                    <property name="left_margin">2</property>
+                    <property name="right_margin">2</property>
+                    <property name="buffer">textbuffer1</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="position">0</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area5">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="zenity_text_close_button">
+                <property name="label">gtk-close</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-7">zenity_text_close_button</action-widget>
+    </action-widgets>
+  </object>
+  <object class="GtkDialog" id="zenity_progress_dialog">
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes">Progress</property>
+    <property name="window_position">center</property>
+    <property name="type_hint">dialog</property>
+    <property name="focus_on_map">False</property>
+    <property name="has_separator">False</property>
+    <signal name="destroy" handler="gtk_main_quit"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox6">
+        <property name="visible">True</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkVBox" id="vbox7">
+            <property name="visible">True</property>
+            <property name="border_width">5</property>
+            <property name="spacing">6</property>
+            <child>
+              <object class="GtkLabel" id="zenity_progress_text">
+                <property name="visible">True</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes">Running...</property>
+                <property name="use_markup">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkProgressBar" id="zenity_progress_bar">
+                <property name="visible">True</property>
+                <property name="pulse_step">0.10000000149</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area6">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="zenity_progress_cancel_button">
+                <property name="label">gtk-cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="zenity_progress_ok_button">
+                <property name="label">gtk-ok</property>
+                <property name="visible">True</property>
+                <property name="sensitive">False</property>
+                <property name="can_focus">True</property>
+                <property name="has_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-6">zenity_progress_cancel_button</action-widget>
+      <action-widget response="-5">zenity_progress_ok_button</action-widget>
+    </action-widgets>
+  </object>
+  <object class="GtkDialog" id="zenity_error_dialog">
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes">Error</property>
+    <property name="window_position">center</property>
+    <property name="type_hint">dialog</property>
+    <property name="focus_on_map">False</property>
+    <property name="has_separator">False</property>
+    <signal name="destroy" handler="gtk_main_quit"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox7">
+        <property name="visible">True</property>
+        <property name="spacing">14</property>
+        <child>
+          <object class="GtkVBox" id="vbox8">
+            <property name="visible">True</property>
+            <property name="border_width">6</property>
+            <child>
+              <object class="GtkHBox" id="hbox3">
+                <property name="visible">True</property>
+                <property name="border_width">5</property>
+                <property name="spacing">12</property>
+                <child>
+                  <object class="GtkImage" id="image3">
+                    <property name="visible">True</property>
+                    <property name="yalign">0</property>
+                    <property name="stock">gtk-dialog-error</property>
+                    <property name="icon-size">6</property>
+                  </object>
+                  <packing>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkLabel" id="zenity_error_text">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="yalign">0</property>
+                    <property name="label" translatable="yes">An error has occurred.</property>
+                    <property name="use_markup">True</property>
+                    <property name="wrap">True</property>
+                    <property name="selectable">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">0</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area7">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="zenity_error_ok_button">
+                <property name="label">gtk-ok</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-5">zenity_error_ok_button</action-widget>
+    </action-widgets>
+  </object>
+  <object class="GtkDialog" id="zenity_tree_dialog">
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes">Select items from the list</property>
+    <property name="window_position">center</property>
+    <property name="default_width">300</property>
+    <property name="default_height">196</property>
+    <property name="type_hint">dialog</property>
+    <property name="focus_on_map">False</property>
+    <property name="has_separator">False</property>
+    <signal name="destroy" handler="gtk_main_quit"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox8">
+        <property name="visible">True</property>
+        <child>
+          <object class="GtkVBox" id="vbox10">
+            <property name="visible">True</property>
+            <property name="border_width">5</property>
+            <property name="spacing">6</property>
+            <child>
+              <object class="GtkLabel" id="zenity_tree_text">
+                <property name="visible">True</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes">Select items from the list below.</property>
+                <property name="use_markup">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkScrolledWindow" id="zenity_tree_window">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="hscrollbar_policy">automatic</property>
+                <property name="vscrollbar_policy">automatic</property>
+                <property name="shadow_type">in</property>
+                <child>
+                  <object class="GtkTreeView" id="zenity_tree_view">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="has_focus">True</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area8">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="zenity_tree_cancel_button">
+                <property name="label">gtk-cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="zenity_tree_ok_button">
+                <property name="label">gtk-ok</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-6">zenity_tree_cancel_button</action-widget>
+      <action-widget response="-5">zenity_tree_ok_button</action-widget>
+    </action-widgets>
+  </object>
+  <object class="GtkDialog" id="zenity_info_dialog">
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes">Information</property>
+    <property name="window_position">center</property>
+    <property name="type_hint">dialog</property>
+    <property name="focus_on_map">False</property>
+    <property name="has_separator">False</property>
+    <signal name="destroy" handler="gtk_main_quit"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox7">
+        <property name="visible">True</property>
+        <property name="spacing">14</property>
+        <child>
+          <object class="GtkHBox" id="hbox3">
+            <property name="visible">True</property>
+            <property name="border_width">5</property>
+            <property name="spacing">12</property>
+            <child>
+              <object class="GtkImage" id="image3">
+                <property name="visible">True</property>
+                <property name="yalign">0</property>
+                <property name="stock">gtk-dialog-info</property>
+                <property name="icon-size">6</property>
+              </object>
+              <packing>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="zenity_info_text">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="yalign">0</property>
+                <property name="label" translatable="yes">All updates are complete.</property>
+                <property name="use_markup">True</property>
+                <property name="wrap">True</property>
+                <property name="selectable">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area7">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="zenity_info_ok_button">
+                <property name="label">gtk-ok</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-5">zenity_info_ok_button</action-widget>
+    </action-widgets>
+  </object>
+  <object class="GtkDialog" id="zenity_scale_dialog">
+    <property name="visible">True</property>
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes">Adjust the scale value</property>
+    <property name="default_width">300</property>
+    <property name="default_height">100</property>
+    <property name="type_hint">dialog</property>
+    <property name="focus_on_map">False</property>
+    <property name="has_separator">False</property>
+    <signal name="destroy" handler="gtk_main_quit"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox11">
+        <property name="visible">True</property>
+        <child>
+          <object class="GtkVBox" id="vbox13">
+            <property name="visible">True</property>
+            <property name="border_width">5</property>
+            <property name="spacing">6</property>
+            <child>
+              <object class="GtkLabel" id="zenity_scale_text">
+                <property name="visible">True</property>
+                <property name="xalign">0</property>
+                <property name="ypad">4</property>
+                <property name="label" translatable="yes">Adjust the scale value</property>
+                <property name="use_markup">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkHScale" id="zenity_scale_hscale">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="update_policy">discontinuous</property>
+                <property name="adjustment">adjustment1</property>
+                <property name="digits">0</property>
+                <property name="value_pos">right</property>
+              </object>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area11">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="cancelbutton1">
+                <property name="label">gtk-cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="okbutton1">
+                <property name="label">gtk-ok</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-6">cancelbutton1</action-widget>
+      <action-widget response="-5">okbutton1</action-widget>
+    </action-widgets>
+  </object>
+  <object class="GtkAdjustment" id="adjustment1">
+    <property name="upper">100</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">1</property>
+  </object>
+  <object class="GtkTextBuffer" id="textbuffer1"/>
+</interface>
Index: src/util.c
===================================================================
--- src/util.c	(revision 1505)
+++ src/util.c	(working copy)
@@ -34,6 +34,7 @@
 #include <errno.h>
 #include <string.h>
 #include <stdlib.h>
+#include <stdarg.h>
 #include "config.h"
 #include "util.h"
 #include "zenity.h"
@@ -48,27 +49,62 @@
 #define ZENITY_ERROR_DEFAULT	-1
 #define ZENITY_EXTRA_DEFAULT	127
 
-GladeXML*
-zenity_util_load_glade_file (const gchar *widget_root) 
+GtkBuilder*
+zenity_util_load_ui_file (const gchar *root_widget, ...)
 {
-  GladeXML *xml = NULL;
+  va_list args;
+  gchar *arg = NULL;
+  GPtrArray *ptrarray;
+  GtkBuilder *builder = gtk_builder_new ();
+  GError *error = NULL;
+  gchar  **objects;
+  guint result = 0;
 
-  if (g_file_test (ZENITY_GLADE_FILE_RELATIVEPATH, G_FILE_TEST_EXISTS)) {
-    /* Try current dir, for debugging */
-    xml = glade_xml_new (ZENITY_GLADE_FILE_RELATIVEPATH, widget_root, GETTEXT_PACKAGE);
+  gtk_builder_set_translation_domain (builder, GETTEXT_PACKAGE);
+
+  /* We have at least the root_widget and a NULL */
+  ptrarray = g_ptr_array_sized_new (2);
+
+  g_ptr_array_add (ptrarray, g_strdup (root_widget));
+
+  va_start (args, root_widget);
+
+  arg = va_arg (args, gchar*);
+
+  while (arg) {
+  	g_ptr_array_add (ptrarray, g_strdup (arg));
+	arg = va_arg (args, gchar*);
   }
- 
-  if (xml == NULL)
-    xml = glade_xml_new (ZENITY_GLADE_FILE_FULLPATH, widget_root, GETTEXT_PACKAGE);
+  va_end (args);
+
+  /* Enforce terminating NULL */
+  g_ptr_array_add (ptrarray, NULL);
+  objects = (gchar**) g_ptr_array_free (ptrarray, FALSE);
 
-  if (xml == NULL) {
-    g_warning ("Could not load glade file : %s", ZENITY_GLADE_FILE_FULLPATH);
+  if (g_file_test (ZENITY_UI_FILE_RELATIVEPATH, G_FILE_TEST_EXISTS)) {
+    /* Try current dir, for debugging */
+    result = gtk_builder_add_objects_from_file (builder,
+    						ZENITY_UI_FILE_RELATIVEPATH,
+						objects, NULL);
+  }
+
+  if (result == 0)
+    result = gtk_builder_add_objects_from_file (builder,
+    						ZENITY_UI_FILE_FULLPATH,
+						objects, &error);
+
+  g_strfreev (objects);
+
+  if (result == 0) {
+    g_warning ("Could not load ui file %s: %s", ZENITY_UI_FILE_FULLPATH,
+    						error->message);
+    g_error_free (error);
+    g_object_unref (builder);
     return NULL;
   }
 
-  return xml;
+  return builder;
 }
-
 gchar*
 zenity_util_strip_newline (gchar *string)
 {
Index: src/util.h
===================================================================
--- src/util.h	(revision 1505)
+++ src/util.h	(working copy)
@@ -2,16 +2,16 @@
 #define UTIL_H
 
 #include <gtk/gtk.h>
-#include <glade/glade.h>
 #include "zenity.h"
 
 G_BEGIN_DECLS
 
-#define ZENITY_GLADE_FILE_FULLPATH              ZENITY_DATADIR "/zenity.glade"
-#define ZENITY_GLADE_FILE_RELATIVEPATH          "./zenity.glade"
+#define ZENITY_UI_FILE_FULLPATH              ZENITY_DATADIR "/zenity.ui"
+#define ZENITY_UI_FILE_RELATIVEPATH          "./zenity.ui"
+
 #define ZENITY_IMAGE_FULLPATH(filename)         (ZENITY_DATADIR "/" filename)
 
-GladeXML*       zenity_util_load_glade_file               (const gchar    *widget_root);
+GtkBuilder*     zenity_util_load_ui_file                  (const gchar    *widget_root, ...) G_GNUC_NULL_TERMINATED;
 gchar *         zenity_util_strip_newline                 (gchar          *string);
 gboolean        zenity_util_fill_file_buffer              (GtkTextBuffer  *buffer, 
                                                            const gchar    *filename);
Index: src/text.c
===================================================================
--- src/text.c	(revision 1505)
+++ src/text.c	(working copy)
@@ -23,7 +23,6 @@
 
 #include "config.h"
 
-#include <glade/glade.h>
 #include "zenity.h"
 #include "util.h"
 
@@ -102,22 +101,23 @@ zenity_text_fill_entries_from_stdin (Gtk
 void
 zenity_text (ZenityData *data, ZenityTextData *text_data)
 {
-  GladeXML *glade_dialog = NULL;
+  GtkBuilder *builder;
   GtkWidget *dialog;
-  GtkWidget *text_view;
+  GObject *text_view;
   GtkTextBuffer *text_buffer;
 
   zen_text_data = text_data;
-  glade_dialog = zenity_util_load_glade_file ("zenity_text_dialog");
+  builder = zenity_util_load_ui_file ("zenity_text_dialog",
+  				      "textbuffer1", NULL);
 	
-  if (glade_dialog == NULL) {
+  if (builder == NULL) {
     data->exit_code = zenity_util_return_exit_code (ZENITY_ERROR);
     return;
   }
 	
-  glade_xml_signal_autoconnect (glade_dialog);
+  gtk_builder_connect_signals (builder, NULL);
 	  
-  dialog = glade_xml_get_widget (glade_dialog, "zenity_text_dialog");
+  dialog = GTK_WIDGET (gtk_builder_get_object (builder, "zenity_text_dialog"));
 	
   g_signal_connect (G_OBJECT (dialog), "response",
                     G_CALLBACK (zenity_text_dialog_response), data);
@@ -130,7 +130,7 @@ zenity_text (ZenityData *data, ZenityTex
   gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_CLOSE);
 
   text_buffer = gtk_text_buffer_new (NULL);
-  text_view = glade_xml_get_widget (glade_dialog, "zenity_text_view");
+  text_view = gtk_builder_get_object (builder, "zenity_text_view");
   gtk_text_view_set_buffer (GTK_TEXT_VIEW (text_view), text_buffer);
   gtk_text_view_set_editable (GTK_TEXT_VIEW(text_view), text_data->editable);
 
@@ -149,8 +149,7 @@ zenity_text (ZenityData *data, ZenityTex
 
   zenity_util_show_dialog (dialog);
 
-  if (glade_dialog)
-    g_object_unref (glade_dialog);
+  g_object_unref (builder);
 
   if(data->timeout_delay > 0) {
     g_timeout_add (data->timeout_delay * 1000, (GSourceFunc) zenity_util_timeout_handle, NULL);
Index: src/fileselection.c
===================================================================
--- src/fileselection.c	(revision 1505)
+++ src/fileselection.c	(working copy)
@@ -23,7 +23,6 @@
 
 #include "config.h"
 
-#include <glade/glade.h>
 #include <string.h>
 #include "zenity.h"
 #include "util.h"
Index: src/msg.c
===================================================================
--- src/msg.c	(revision 1505)
+++ src/msg.c	(working copy)
@@ -23,7 +23,6 @@
 
 #include "config.h"
 
-#include <glade/glade.h>
 #include "zenity.h"
 #include "util.h"
 
@@ -55,56 +54,53 @@ zenity_msg_construct_question_dialog (Gt
 void 
 zenity_msg (ZenityData *data, ZenityMsgData *msg_data)
 {
-  GladeXML *glade_dialog;
+  GtkBuilder *builder;
   GtkWidget *dialog;
-  GtkWidget *text;
+  GObject *text;
 
   switch (msg_data->mode) {
     case ZENITY_MSG_WARNING:
-      glade_dialog = zenity_util_load_glade_file ("zenity_warning_dialog");
-      dialog = glade_xml_get_widget (glade_dialog, "zenity_warning_dialog");
-      text = glade_xml_get_widget (glade_dialog, "zenity_warning_text");
+      builder = zenity_util_load_ui_file ("zenity_warning_dialog", NULL);
+      dialog = GTK_WIDGET (gtk_builder_get_object (builder, "zenity_warning_dialog"));
+      text = gtk_builder_get_object (builder, "zenity_warning_text");
       break;
 
     case ZENITY_MSG_QUESTION:
-      glade_dialog = zenity_util_load_glade_file ("zenity_question_dialog");
-      dialog = glade_xml_get_widget (glade_dialog, "zenity_question_dialog");
-      text = glade_xml_get_widget (glade_dialog, "zenity_question_text");
+      builder = zenity_util_load_ui_file ("zenity_question_dialog", NULL);
+      dialog = GTK_WIDGET (gtk_builder_get_object (builder, "zenity_question_dialog"));
+      text = gtk_builder_get_object (builder, "zenity_question_text");
       break;
 
     case ZENITY_MSG_ERROR:
-      glade_dialog = zenity_util_load_glade_file ("zenity_error_dialog");
-      dialog = glade_xml_get_widget (glade_dialog, "zenity_error_dialog");
-      text = glade_xml_get_widget (glade_dialog, "zenity_error_text");
+      builder = zenity_util_load_ui_file ("zenity_error_dialog", NULL);
+      dialog = GTK_WIDGET (gtk_builder_get_object (builder, "zenity_error_dialog"));
+      text = gtk_builder_get_object (builder, "zenity_error_text");
       break;
 
     case ZENITY_MSG_INFO:
-      glade_dialog = zenity_util_load_glade_file ("zenity_info_dialog");
-      dialog= glade_xml_get_widget (glade_dialog, "zenity_info_dialog");
-      text = glade_xml_get_widget (glade_dialog, "zenity_info_text");
+      builder = zenity_util_load_ui_file ("zenity_info_dialog", NULL);
+      dialog = GTK_WIDGET (gtk_builder_get_object (builder, "zenity_info_dialog"));
+      text = gtk_builder_get_object (builder, "zenity_info_text");
       break;
 		
     default:
-      glade_dialog = NULL;
+      builder = NULL;
       dialog = NULL;
       text = NULL;
       g_assert_not_reached ();
       break;	
   }
 
-  g_signal_connect (G_OBJECT (dialog), "response",
-                    G_CALLBACK (zenity_msg_dialog_response), data);
-	
-  if (glade_dialog == NULL) {
+  if (builder == NULL) {
     data->exit_code = zenity_util_return_exit_code (ZENITY_ERROR);
     return;
   }
-	
-  glade_xml_signal_autoconnect (glade_dialog);
-        
-  if (glade_dialog)
-    g_object_unref (glade_dialog);
 
+  g_signal_connect (G_OBJECT (dialog), "response",
+                    G_CALLBACK (zenity_msg_dialog_response), data);
+
+  gtk_builder_connect_signals (builder, NULL);
+        
   if (data->dialog_title)
     gtk_window_set_title (GTK_WINDOW (dialog), data->dialog_title);
 
@@ -145,6 +141,8 @@ zenity_msg (ZenityData *data, ZenityMsgD
     g_timeout_add (data->timeout_delay * 1000, (GSourceFunc) zenity_util_timeout_handle, NULL);
   }
 
+  g_object_unref (builder);
+
   gtk_main ();
 }
 
Index: src/notification.c
===================================================================
--- src/notification.c	(revision 1505)
+++ src/notification.c	(working copy)
@@ -25,7 +25,6 @@
 #include <config.h>
 
 #include <gtk/gtk.h>
-#include <glade/glade.h>
 #include <time.h>
 #include <string.h>
 
Index: src/scale.c
===================================================================
--- src/scale.c	(revision 1505)
+++ src/scale.c	(working copy)
@@ -23,7 +23,6 @@
 
 #include "config.h"
 
-#include <glade/glade.h>
 #include "zenity.h"
 #include "util.h"
 
@@ -35,23 +34,24 @@ static void zenity_scale_dialog_response
 void 
 zenity_scale (ZenityData *data, ZenityScaleData *scale_data)
 {
-  GladeXML *glade_dialog;
+  GtkBuilder *builder;
   GtkWidget *dialog;
-  GtkWidget *text;
+  GObject *text;
 
-  glade_dialog = zenity_util_load_glade_file ("zenity_scale_dialog");
-  dialog = glade_xml_get_widget (glade_dialog, "zenity_scale_dialog");
-  scale = glade_xml_get_widget (glade_dialog, "zenity_scale_hscale");
-  text = glade_xml_get_widget (glade_dialog, "zenity_scale_text");
+  builder = zenity_util_load_ui_file ("zenity_scale_dialog", "adjustment1", NULL);
 
-  g_signal_connect (G_OBJECT (dialog), "response",
-                    G_CALLBACK (zenity_scale_dialog_response), data);
-	
-  if (glade_dialog == NULL) {
+  if (builder == NULL) {
     data->exit_code = zenity_util_return_exit_code (ZENITY_ERROR);
     return;
   }
 
+  dialog = GTK_WIDGET (gtk_builder_get_object (builder, "zenity_scale_dialog"));
+  scale = GTK_WIDGET (gtk_builder_get_object (builder, "zenity_scale_hscale"));
+  text = gtk_builder_get_object (builder, "zenity_scale_text");
+
+  g_signal_connect (G_OBJECT (dialog), "response",
+                    G_CALLBACK (zenity_scale_dialog_response), data);
+	
   if (scale_data->min_value >= scale_data->max_value) {
     g_printerr (_("Maximum value must be greater than minimum value.\n")); 
     data->exit_code = zenity_util_return_exit_code (ZENITY_ERROR);
@@ -65,11 +65,8 @@ zenity_scale (ZenityData *data, ZenitySc
     return;
   }
 
-  glade_xml_signal_autoconnect (glade_dialog);
+  gtk_builder_connect_signals (builder, NULL);
         
-  if (glade_dialog)
-    g_object_unref (glade_dialog);
-
   if (data->dialog_title)
     gtk_window_set_title (GTK_WINDOW (dialog), data->dialog_title);
 
@@ -98,6 +95,8 @@ zenity_scale (ZenityData *data, ZenitySc
     g_timeout_add (data->timeout_delay * 1000, (GSourceFunc) zenity_util_timeout_handle, NULL);
   }
 
+  g_object_unref (builder);
+
   gtk_main ();
 }
 
Index: src/Makefile.am
===================================================================
--- src/Makefile.am	(revision 1505)
+++ src/Makefile.am	(working copy)
@@ -40,15 +40,15 @@ zenity_LDADD = \
 	$(LIBNOTIFY_LIBS)	\
 	$(X_LIBS)
 
-gladedir = $(datadir)/zenity
+uidir = $(datadir)/zenity
 
-glade_DATA = \
-	zenity.glade
+ui_DATA = \
+	zenity.ui
 
 DISTCLEANFILES= \
 	gdialog
 
 EXTRA_DIST = \
-	$(glade_DATA) \
+	$(ui_DATA) \
 	gdialog \
 	gdialog.in
Index: po/POTFILES.in
===================================================================
--- po/POTFILES.in	(revision 1505)
+++ po/POTFILES.in	(working copy)
@@ -4,5 +4,5 @@ src/notification.c
 src/scale.c
 src/tree.c
 src/util.c
-src/zenity.glade
+[type: gettext/glade]src/zenity.ui
 src/option.c
Index: po/POTFILES.skip
===================================================================
--- po/POTFILES.skip	(revision 1505)
+++ po/POTFILES.skip	(working copy)
@@ -6,4 +6,5 @@ src/progress.c
 src/text.c
 src/util.h
 src/util.c
+src/zenity.glade
 src/zenity.h
