[evolution/gtk-builder: 5/5] Initial cut at libglade to GtkBuilder conversion.



commit 04c4726fbf89d05c9924c67c562e7c7dc302a2b3
Author: Matthew Barnes <mbarnes redhat com>
Date:   Thu Sep 24 21:58:22 2009 -0400

    Initial cut at libglade to GtkBuilder conversion.
    
    Does not deal with custom widgets in former glade files.
    
    Also, may need to double check data value being passed to autoconnected
    signal handlers.

 .../gui/contact-editor/e-contact-editor-fullname.c |   35 +-
 .../gui/contact-editor/e-contact-editor-fullname.h |    2 +-
 addressbook/gui/contact-editor/e-contact-editor.c  |  270 ++++++++--------
 addressbook/gui/contact-editor/e-contact-editor.h  |    2 +-
 addressbook/gui/contact-editor/test-editor.c       |    2 -
 .../contact-list-editor/e-contact-list-editor.c    |   16 +-
 addressbook/gui/merging/eab-contact-merging.c      |   29 +-
 addressbook/printing/test-print.c                  |    2 -
 calendar/gui/alarm-notify/alarm-notify-dialog.c    |   50 ++--
 calendar/gui/alarm-notify/notify-main.c            |    2 -
 calendar/gui/dialogs/alarm-dialog.c                |   78 ++---
 calendar/gui/dialogs/alarm-list-dialog.c           |   41 +--
 calendar/gui/dialogs/cal-prefs-dialog.c            |   99 +++---
 calendar/gui/dialogs/cal-prefs-dialog.h            |    2 +-
 calendar/gui/dialogs/e-delegate-dialog.c           |   27 +-
 calendar/gui/dialogs/event-page.c                  |   39 +--
 calendar/gui/dialogs/memo-page.c                   |   35 +--
 calendar/gui/dialogs/recurrence-page.c             |   35 +--
 calendar/gui/dialogs/schedule-page.c               |   27 +-
 calendar/gui/dialogs/task-details-page.c           |   33 +--
 calendar/gui/dialogs/task-page.c                   |   85 ++---
 calendar/gui/goto.c                                |   19 +-
 doc/reference/shell/tmpl/e-util.sgml               |   10 -
 doc/reference/shell/tmpl/eshell-unused.sgml        |    9 +
 e-util/e-util.c                                    |   29 ++
 e-util/e-util.h                                    |    7 +
 filter/e-filter-datespec.c                         |   26 +-
 filter/e-rule-editor.c                             |   32 +-
 filter/e-rule-editor.h                             |    3 +-
 mail/em-account-editor.c                           |  345 +++++++++-----------
 mail/em-filter-editor.c                            |   21 +-
 mail/em-filter-editor.h                            |    2 +-
 mail/em-format-html-display.c                      |   17 +-
 mail/em-subscribe-editor.c                         |   28 +-
 mail/em-vfolder-editor.c                           |   18 +-
 mail/em-vfolder-rule.c                             |   30 +-
 mail/message-tag-followup.c                        |   29 +-
 modules/addressbook/addressbook-config.c           |  125 +++-----
 modules/mail/em-composer-prefs.c                   |   49 ++--
 modules/mail/em-composer-prefs.h                   |    2 +-
 modules/mail/em-mailer-prefs.c                     |  100 +++---
 modules/mail/em-mailer-prefs.h                     |    2 +-
 modules/mail/em-network-prefs.c                    |   61 ++--
 modules/mail/em-network-prefs.h                    |    2 +-
 plugins/attachment-reminder/Makefile.am            |    5 +-
 plugins/attachment-reminder/attachment-reminder.c  |   24 +-
 plugins/email-custom-header/email-custom-header.c  |   47 +--
 plugins/groupwise-features/junk-settings.c         |   34 +--
 plugins/groupwise-features/junk-settings.h         |    6 +-
 plugins/groupwise-features/proxy-login.c           |   27 +-
 plugins/groupwise-features/proxy.c                 |   77 ++---
 plugins/groupwise-features/share-folder.c          |   61 ++--
 plugins/groupwise-features/share-folder.h          |    7 +-
 plugins/imap-features/imap-headers.c               |   31 +-
 plugins/publish-calendar/publish-calendar.c        |   25 +-
 plugins/publish-calendar/url-editor-dialog.c       |   23 +-
 plugins/publish-calendar/url-editor-dialog.h       |    2 +-
 plugins/templates/templates.c                      |   23 +-
 shell/main.c                                       |    1 -
 smime/gui/ca-trust-dialog.c                        |   25 +-
 smime/gui/cert-trust-dialog.c                      |   23 +-
 smime/gui/certificate-manager.c                    |   47 ++--
 smime/gui/certificate-viewer.c                     |   45 ++--
 smime/gui/e-cert-selector.c                        |   19 +-
 widgets/e-timezone-dialog/e-timezone-dialog.c      |   39 +--
 widgets/menus/gal-define-views-dialog.c            |   32 +-
 widgets/menus/gal-define-views-dialog.h            |    2 +-
 widgets/menus/gal-view-instance-save-as-dialog.c   |   29 +-
 widgets/menus/gal-view-instance-save-as-dialog.h   |    2 +-
 widgets/menus/gal-view-new-dialog.c                |   26 +-
 widgets/menus/gal-view-new-dialog.h                |    2 +-
 widgets/misc/Makefile.am                           |    2 +
 widgets/misc/e-send-options.c                      |   90 +++---
 widgets/table/e-table-config.c                     |  122 +++----
 widgets/table/e-table-field-chooser.c              |   25 +-
 widgets/table/e-table-field-chooser.h              |    2 +-
 76 files changed, 1227 insertions(+), 1575 deletions(-)
---
diff --git a/addressbook/gui/contact-editor/e-contact-editor-fullname.c b/addressbook/gui/contact-editor/e-contact-editor-fullname.c
index b68293b..abea916 100644
--- a/addressbook/gui/contact-editor/e-contact-editor-fullname.c
+++ b/addressbook/gui/contact-editor/e-contact-editor-fullname.c
@@ -21,10 +21,13 @@
  */
 
 #include <config.h>
-#include "e-contact-editor-fullname.h"
-#include <e-util/e-util-private.h>
 #include <glib/gi18n.h>
 
+#include "e-util/e-util.h"
+#include "e-util/e-util-private.h"
+
+#include "e-contact-editor-fullname.h"
+
 static void e_contact_editor_fullname_init		(EContactEditorFullname		 *card);
 static void e_contact_editor_fullname_class_init	(EContactEditorFullnameClass	 *klass);
 static void e_contact_editor_fullname_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
@@ -97,9 +100,8 @@ e_contact_editor_fullname_class_init (EContactEditorFullnameClass *klass)
 static void
 e_contact_editor_fullname_init (EContactEditorFullname *e_contact_editor_fullname)
 {
-	GladeXML *gui;
+	GtkBuilder *builder;
 	GtkWidget *widget;
-	gchar *gladefile;
 
 	gtk_widget_realize (GTK_WIDGET (e_contact_editor_fullname));
 	gtk_dialog_set_has_separator (GTK_DIALOG (e_contact_editor_fullname),
@@ -116,19 +118,16 @@ e_contact_editor_fullname_init (EContactEditorFullname *e_contact_editor_fullnam
 
 	e_contact_editor_fullname->name = NULL;
 
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      "fullname.glade",
-				      NULL);
-	gui = glade_xml_new (gladefile, NULL, NULL);
-	g_free (gladefile);
+	builder = gtk_builder_new ();
+	e_load_ui_builder_definition (builder, "fullname.ui");
 
-	e_contact_editor_fullname->gui = gui;
+	e_contact_editor_fullname->builder = builder;
 
-	widget = glade_xml_get_widget(gui, "dialog-checkfullname");
+	widget = e_builder_get_widget(builder, "dialog-checkfullname");
 	gtk_window_set_title (GTK_WINDOW (e_contact_editor_fullname),
 			      GTK_WINDOW (widget)->title);
 
-	widget = glade_xml_get_widget(gui, "table-checkfullname");
+	widget = e_builder_get_widget(builder, "table-checkfullname");
 	g_object_ref(widget);
 	gtk_container_remove(GTK_CONTAINER(widget->parent), widget);
 	gtk_box_pack_start (GTK_BOX (GTK_DIALOG (e_contact_editor_fullname)->vbox), widget, TRUE, TRUE, 0);
@@ -143,9 +142,9 @@ e_contact_editor_fullname_dispose (GObject *object)
 {
 	EContactEditorFullname *e_contact_editor_fullname = E_CONTACT_EDITOR_FULLNAME(object);
 
-	if (e_contact_editor_fullname->gui) {
-		g_object_unref(e_contact_editor_fullname->gui);
-		e_contact_editor_fullname->gui = NULL;
+	if (e_contact_editor_fullname->builder) {
+		g_object_unref(e_contact_editor_fullname->builder);
+		e_contact_editor_fullname->builder = NULL;
 	}
 
 	if (e_contact_editor_fullname->name) {
@@ -205,7 +204,7 @@ e_contact_editor_fullname_set_property (GObject *object, guint prop_id,
 		};
 		e_contact_editor_fullname->editable = g_value_get_boolean (value) ? TRUE : FALSE;
 		for (i = 0; widget_names[i] != NULL; i ++) {
-			GtkWidget *w = glade_xml_get_widget(e_contact_editor_fullname->gui, widget_names[i]);
+			GtkWidget *w = e_builder_get_widget(e_contact_editor_fullname->builder, widget_names[i]);
 			if (GTK_IS_ENTRY (w)) {
 				gtk_editable_set_editable (GTK_EDITABLE (w),
 							   e_contact_editor_fullname->editable);
@@ -254,7 +253,7 @@ fill_in_field (EContactEditorFullname *editor,
                const gchar *field,
                const gchar *string)
 {
-	GtkWidget *widget = glade_xml_get_widget (editor->gui, field);
+	GtkWidget *widget = e_builder_get_widget (editor->builder, field);
 	GtkEntry *entry = NULL;
 
 	if (GTK_IS_ENTRY (widget))
@@ -287,7 +286,7 @@ static gchar *
 extract_field (EContactEditorFullname *editor,
                const gchar *field)
 {
-	GtkWidget *widget = glade_xml_get_widget(editor->gui, field);
+	GtkWidget *widget = e_builder_get_widget(editor->builder, field);
 	GtkEntry *entry = NULL;
 
 	if (GTK_IS_ENTRY (widget))
diff --git a/addressbook/gui/contact-editor/e-contact-editor-fullname.h b/addressbook/gui/contact-editor/e-contact-editor-fullname.h
index 79e773e..db45b08 100644
--- a/addressbook/gui/contact-editor/e-contact-editor-fullname.h
+++ b/addressbook/gui/contact-editor/e-contact-editor-fullname.h
@@ -52,7 +52,7 @@ struct _EContactEditorFullname
 
 	/* item specific fields */
 	EContactName *name;
-	GladeXML *gui;
+	GtkBuilder *builder;
 
 	/* Whether the dialog will accept modifications */
 	guint editable : 1;
diff --git a/addressbook/gui/contact-editor/e-contact-editor.c b/addressbook/gui/contact-editor/e-contact-editor.c
index e416a41..a32f178 100644
--- a/addressbook/gui/contact-editor/e-contact-editor.c
+++ b/addressbook/gui/contact-editor/e-contact-editor.c
@@ -497,8 +497,8 @@ name_to_style (const EContactName *name, const gchar *company, gint style)
 static gint
 file_as_get_style (EContactEditor *editor)
 {
-	GtkEntry *file_as = GTK_ENTRY (gtk_bin_get_child (GTK_BIN (glade_xml_get_widget(editor->gui, "combo-file-as"))));
-	GtkEntry *company_w = GTK_ENTRY (glade_xml_get_widget (editor->gui, "entry-company"));
+	GtkEntry *file_as = GTK_ENTRY (gtk_bin_get_child (GTK_BIN (e_builder_get_widget(editor->builder, "combo-file-as"))));
+	GtkEntry *company_w = GTK_ENTRY (e_builder_get_widget (editor->builder, "entry-company"));
 	gchar *filestring;
 	gchar *trystring;
 	EContactName *name = editor->name;
@@ -530,8 +530,8 @@ file_as_set_style (EContactEditor *editor, gint style)
 	gchar *string;
 	gint i;
 	GList *strings = NULL;
-	GtkComboBox *combo_file_as = GTK_COMBO_BOX (glade_xml_get_widget (editor->gui, "combo-file-as"));
-	GtkEntry *company_w = GTK_ENTRY (glade_xml_get_widget (editor->gui, "entry-company"));
+	GtkComboBox *combo_file_as = GTK_COMBO_BOX (e_builder_get_widget (editor->builder, "combo-file-as"));
+	GtkEntry *company_w = GTK_ENTRY (e_builder_get_widget (editor->builder, "entry-company"));
 	const gchar *company;
 
 	if (!(combo_file_as && GTK_IS_COMBO_BOX_ENTRY (combo_file_as)))
@@ -634,8 +634,8 @@ fill_in_source_field (EContactEditor *editor)
 	if (!editor->target_book)
 		return;
 
-	source_menu = glade_xml_get_widget (
-		editor->gui, "source-combo-box-source");
+	source_menu = e_builder_get_widget (
+		editor->builder, "source-combo-box-source");
 
 	e_source_combo_box_set_active (
 		E_SOURCE_COMBO_BOX (source_menu),
@@ -647,9 +647,9 @@ sensitize_ok (EContactEditor *ce)
 {
 	GtkWidget *widget;
 	gboolean   allow_save;
-	GtkWidget *entry_fullname = glade_xml_get_widget (ce->gui, "entry-fullname" );
-	GtkWidget *entry_file_as = gtk_bin_get_child (GTK_BIN (glade_xml_get_widget (ce->gui, "combo-file-as")));
-	GtkWidget *company_name = glade_xml_get_widget (ce->gui, "entry-company");
+	GtkWidget *entry_fullname = e_builder_get_widget (ce->builder, "entry-fullname" );
+	GtkWidget *entry_file_as = gtk_bin_get_child (GTK_BIN (e_builder_get_widget (ce->builder, "combo-file-as")));
+	GtkWidget *company_name = e_builder_get_widget (ce->builder, "entry-company");
 	const gchar *name_entry_string = gtk_entry_get_text (GTK_ENTRY (entry_fullname));
 	const gchar *file_as_entry_string = gtk_entry_get_text (GTK_ENTRY (entry_file_as));
 	const gchar *company_name_string = gtk_entry_get_text (GTK_ENTRY (company_name));
@@ -663,7 +663,7 @@ sensitize_ok (EContactEditor *ce)
 		else
 			allow_save = FALSE;
 	}
-	widget = glade_xml_get_widget (ce->gui, "button-ok");
+	widget = e_builder_get_widget (ce->builder, "button-ok");
 	gtk_widget_set_sensitive (widget, allow_save);
 }
 
@@ -724,11 +724,11 @@ init_email_record_location (EContactEditor *editor, gint record)
 	gint       i;
 
 	widget_name = g_strdup_printf ("entry-email-%d", record);
-	email_entry = glade_xml_get_widget (editor->gui, widget_name);
+	email_entry = e_builder_get_widget (editor->builder, widget_name);
 	g_free (widget_name);
 
 	widget_name = g_strdup_printf ("combobox-email-%d", record);
-	location_combo_box = GTK_COMBO_BOX (glade_xml_get_widget (editor->gui, widget_name));
+	location_combo_box = GTK_COMBO_BOX (e_builder_get_widget (editor->builder, widget_name));
 	g_free (widget_name);
 
 	gtk_list_store_clear (GTK_LIST_STORE (gtk_combo_box_get_model (location_combo_box)));
@@ -760,11 +760,11 @@ fill_in_email_record (EContactEditor *editor, gint record, const gchar *address,
 	gchar     *widget_name;
 
 	widget_name = g_strdup_printf ("combobox-email-%d", record);
-	location_combo_box = glade_xml_get_widget (editor->gui, widget_name);
+	location_combo_box = e_builder_get_widget (editor->builder, widget_name);
 	g_free (widget_name);
 
 	widget_name = g_strdup_printf ("entry-email-%d", record);
-	email_entry = glade_xml_get_widget (editor->gui, widget_name);
+	email_entry = e_builder_get_widget (editor->builder, widget_name);
 	g_free (widget_name);
 
 	set_combo_box_active (editor, GTK_COMBO_BOX (location_combo_box),
@@ -780,11 +780,11 @@ extract_email_record (EContactEditor *editor, gint record, gchar **address, gint
 	gchar     *widget_name;
 
 	widget_name = g_strdup_printf ("combobox-email-%d", record);
-	location_combo_box = glade_xml_get_widget (editor->gui, widget_name);
+	location_combo_box = e_builder_get_widget (editor->builder, widget_name);
 	g_free (widget_name);
 
 	widget_name = g_strdup_printf ("entry-email-%d", record);
-	email_entry = glade_xml_get_widget (editor->gui, widget_name);
+	email_entry = e_builder_get_widget (editor->builder, widget_name);
 	g_free (widget_name);
 
 	*address  = g_strdup (gtk_entry_get_text (GTK_ENTRY (email_entry)));
@@ -923,7 +923,7 @@ alloc_ui_slot (EContactEditor *editor, const gchar *widget_base, gint preferred_
 
 	if (preferred_slot >= 1) {
 		widget_name = g_strdup_printf ("%s-%d", widget_base, preferred_slot);
-		widget = glade_xml_get_widget (editor->gui, widget_name);
+		widget = e_builder_get_widget (editor->builder, widget_name);
 		entry_contents = gtk_entry_get_text (GTK_ENTRY (widget));
 		g_free (widget_name);
 
@@ -935,7 +935,7 @@ alloc_ui_slot (EContactEditor *editor, const gchar *widget_base, gint preferred_
 
 	for (i = 1; i <= num_slots; i++) {
 		widget_name = g_strdup_printf ("%s-%d", widget_base, i);
-		widget = glade_xml_get_widget (editor->gui, widget_name);
+		widget = e_builder_get_widget (editor->builder, widget_name);
 		entry_contents = gtk_entry_get_text (GTK_ENTRY (widget));
 		g_free (widget_name);
 
@@ -1051,11 +1051,11 @@ sensitize_email_record (EContactEditor *editor, gint record, gboolean enabled)
 	gchar     *widget_name;
 
 	widget_name = g_strdup_printf ("combobox-email-%d", record);
-	location_combo_box = glade_xml_get_widget (editor->gui, widget_name);
+	location_combo_box = e_builder_get_widget (editor->builder, widget_name);
 	g_free (widget_name);
 
 	widget_name = g_strdup_printf ("entry-email-%d", record);
-	email_entry = glade_xml_get_widget (editor->gui, widget_name);
+	email_entry = e_builder_get_widget (editor->builder, widget_name);
 	g_free (widget_name);
 
 	gtk_widget_set_sensitive (location_combo_box, enabled);
@@ -1149,8 +1149,8 @@ expand_phone (EContactEditor *editor, gboolean expanded)
 	GtkWidget *phone_ext_table;
 	GtkWidget *phone_ext_arrow;
 
-	phone_ext_table = glade_xml_get_widget (editor->gui, "table-phone-extended");
-	phone_ext_arrow = glade_xml_get_widget (editor->gui, "arrow-phone-expand");
+	phone_ext_table = e_builder_get_widget (editor->builder, "table-phone-extended");
+	phone_ext_arrow = e_builder_get_widget (editor->builder, "arrow-phone-expand");
 
 	if (expanded) {
 		gtk_arrow_set (GTK_ARROW (phone_ext_arrow), GTK_ARROW_DOWN, GTK_SHADOW_NONE);
@@ -1169,11 +1169,11 @@ fill_in_phone_record (EContactEditor *editor, gint record, const gchar *phone, g
 	gchar     *widget_name;
 
 	widget_name = g_strdup_printf ("combobox-phone-%d", record);
-	phone_type_combo_box = glade_xml_get_widget (editor->gui, widget_name);
+	phone_type_combo_box = e_builder_get_widget (editor->builder, widget_name);
 	g_free (widget_name);
 
 	widget_name = g_strdup_printf ("entry-phone-%d", record);
-	phone_entry = glade_xml_get_widget (editor->gui, widget_name);
+	phone_entry = e_builder_get_widget (editor->builder, widget_name);
 	g_free (widget_name);
 
 	set_combo_box_active (editor, GTK_COMBO_BOX (phone_type_combo_box),
@@ -1193,11 +1193,11 @@ extract_phone_record (EContactEditor *editor, gint record, gchar **phone, gint *
 	gchar     *widget_name;
 
 	widget_name = g_strdup_printf ("combobox-phone-%d", record);
-	phone_type_combo_box = glade_xml_get_widget (editor->gui, widget_name);
+	phone_type_combo_box = e_builder_get_widget (editor->builder, widget_name);
 	g_free (widget_name);
 
 	widget_name = g_strdup_printf ("entry-phone-%d", record);
-	phone_entry = glade_xml_get_widget (editor->gui, widget_name);
+	phone_entry = e_builder_get_widget (editor->builder, widget_name);
 	g_free (widget_name);
 
 	*phone      = g_strdup (gtk_entry_get_text (GTK_ENTRY (phone_entry)));
@@ -1309,11 +1309,11 @@ init_phone_record_type (EContactEditor *editor, gint record)
 	GtkListStore *store;
 
 	widget_name = g_strdup_printf ("entry-phone-%d", record);
-	phone_entry = glade_xml_get_widget (editor->gui, widget_name);
+	phone_entry = e_builder_get_widget (editor->builder, widget_name);
 	g_free (widget_name);
 
 	widget_name = g_strdup_printf ("combobox-phone-%d", record);
-	phone_type_combo_box = glade_xml_get_widget (editor->gui, widget_name);
+	phone_type_combo_box = e_builder_get_widget (editor->builder, widget_name);
 	g_free (widget_name);
 
 	init_item_sensitiveable_combo_box (GTK_COMBO_BOX (phone_type_combo_box));
@@ -1381,11 +1381,11 @@ sensitize_phone_record (EContactEditor *editor, gint record, gboolean enabled)
 	gchar     *widget_name;
 
 	widget_name = g_strdup_printf ("combobox-phone-%d", record);
-	phone_type_combo_box = glade_xml_get_widget (editor->gui, widget_name);
+	phone_type_combo_box = e_builder_get_widget (editor->builder, widget_name);
 	g_free (widget_name);
 
 	widget_name = g_strdup_printf ("entry-phone-%d", record);
-	phone_entry = glade_xml_get_widget (editor->gui, widget_name);
+	phone_entry = e_builder_get_widget (editor->builder, widget_name);
 	g_free (widget_name);
 
 	gtk_widget_set_sensitive (phone_type_combo_box, enabled);
@@ -1420,7 +1420,7 @@ init_im_record_location (EContactEditor *editor, gint record)
 	gchar *widget_name;
 
 	widget_name = g_strdup_printf ("combobox-im-location-%d", record);
-	location_combo_box = glade_xml_get_widget (editor->gui, widget_name);
+	location_combo_box = e_builder_get_widget (editor->builder, widget_name);
 	g_free (widget_name);
 
 	init_item_sensitiveable_combo_box (GTK_COMBO_BOX (location_combo_box));
@@ -1451,11 +1451,11 @@ init_im_record_service (EContactEditor *editor, gint record)
 	gint       i;
 
 	widget_name = g_strdup_printf ("entry-im-name-%d", record);
-	name_entry = glade_xml_get_widget (editor->gui, widget_name);
+	name_entry = e_builder_get_widget (editor->builder, widget_name);
 	g_free (widget_name);
 
 	widget_name = g_strdup_printf ("combobox-im-service-%d", record);
-	service_combo_box = glade_xml_get_widget (editor->gui, widget_name);
+	service_combo_box = e_builder_get_widget (editor->builder, widget_name);
 	g_free (widget_name);
 
 	init_item_sensitiveable_combo_box (GTK_COMBO_BOX (service_combo_box));
@@ -1500,17 +1500,17 @@ fill_in_im_record (EContactEditor *editor, gint record, gint service, const gcha
 	gchar     *widget_name;
 
 	widget_name = g_strdup_printf ("combobox-im-service-%d", record);
-	service_combo_box = glade_xml_get_widget (editor->gui, widget_name);
+	service_combo_box = e_builder_get_widget (editor->builder, widget_name);
 	g_free (widget_name);
 
 #ifdef ENABLE_IM_LOCATION
 	widget_name = g_strdup_printf ("combobox-im-location-%d", record);
-	location_combo_box = glade_xml_get_widget (editor->gui, widget_name);
+	location_combo_box = e_builder_get_widget (editor->builder, widget_name);
 	g_free (widget_name);
 #endif
 
 	widget_name = g_strdup_printf ("entry-im-name-%d", record);
-	name_entry = glade_xml_get_widget (editor->gui, widget_name);
+	name_entry = e_builder_get_widget (editor->builder, widget_name);
 	g_free (widget_name);
 
 #ifdef ENABLE_IM_LOCATION
@@ -1570,17 +1570,17 @@ extract_im_record (EContactEditor *editor, gint record, gint *service, gchar **n
 	gchar     *widget_name;
 
 	widget_name = g_strdup_printf ("combobox-im-service-%d", record);
-	service_combo_box = glade_xml_get_widget (editor->gui, widget_name);
+	service_combo_box = e_builder_get_widget (editor->builder, widget_name);
 	g_free (widget_name);
 
 #ifdef ENABLE_IM_LOCATION
 	widget_name = g_strdup_printf ("combobox-im-location-%d", record);
-	location_combo_box = glade_xml_get_widget (editor->gui, widget_name);
+	location_combo_box = e_builder_get_widget (editor->builder, widget_name);
 	g_free (widget_name);
 #endif
 
 	widget_name = g_strdup_printf ("entry-im-name-%d", record);
-	name_entry = glade_xml_get_widget (editor->gui, widget_name);
+	name_entry = e_builder_get_widget (editor->builder, widget_name);
 	g_free (widget_name);
 
 	*name  = g_strdup (gtk_entry_get_text (GTK_ENTRY (name_entry)));
@@ -1693,17 +1693,17 @@ sensitize_im_record (EContactEditor *editor, gint record, gboolean enabled)
 	gchar     *widget_name;
 
 	widget_name = g_strdup_printf ("combobox-im-service-%d", record);
-	service_combo_box = glade_xml_get_widget (editor->gui, widget_name);
+	service_combo_box = e_builder_get_widget (editor->builder, widget_name);
 	g_free (widget_name);
 
 #ifdef ENABLE_IM_LOCATION
 	widget_name = g_strdup_printf ("combobox-im-location-%d", record);
-	location_combo_box = glade_xml_get_widget (editor->gui, widget_name);
+	location_combo_box = e_builder_get_widget (editor->builder, widget_name);
 	g_free (widget_name);
 #endif
 
 	widget_name = g_strdup_printf ("entry-im-name-%d", record);
-	name_entry = glade_xml_get_widget (editor->gui, widget_name);
+	name_entry = e_builder_get_widget (editor->builder, widget_name);
 	g_free (widget_name);
 
 	gtk_widget_set_sensitive (service_combo_box, enabled);
@@ -1746,7 +1746,7 @@ init_address_textview (EContactEditor *editor, gint record)
 	GtkTextBuffer *text_buffer;
 
 	textview_name = g_strdup_printf ("textview-%s-address", address_name [record]);
-	textview = glade_xml_get_widget (editor->gui, textview_name);
+	textview = e_builder_get_widget (editor->builder, textview_name);
 	g_free (textview_name);
 
 	text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (textview));
@@ -1760,7 +1760,7 @@ init_address_field (EContactEditor *editor, gint record, const gchar *widget_fie
 	GtkWidget *entry;
 
 	entry_name = g_strdup_printf ("entry-%s-%s", address_name [record], widget_field_name);
-	entry = glade_xml_get_widget (editor->gui, entry_name);
+	entry = e_builder_get_widget (editor->builder, entry_name);
 	g_free (entry_name);
 
 	g_signal_connect (entry, "changed", G_CALLBACK (object_changed), editor);
@@ -1796,7 +1796,7 @@ fill_in_address_textview (EContactEditor *editor, gint record, EContactAddress *
 	GtkTextIter    iter_end, iter_start;
 
 	textview_name = g_strdup_printf ("textview-%s-address", address_name [record]);
-	textview = glade_xml_get_widget (editor->gui, textview_name);
+	textview = e_builder_get_widget (editor->builder, textview_name);
 	g_free (textview_name);
 
 	text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (textview));
@@ -1821,7 +1821,7 @@ fill_in_address_label_textview (EContactEditor *editor, gint record, const gchar
 	GtkTextBuffer *text_buffer;
 
 	textview_name = g_strdup_printf ("textview-%s-address", address_name [record]);
-	textview = glade_xml_get_widget (editor->gui, textview_name);
+	textview = e_builder_get_widget (editor->builder, textview_name);
 	g_free (textview_name);
 
 	text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (textview));
@@ -1836,7 +1836,7 @@ fill_in_address_field (EContactEditor *editor, gint record, const gchar *widget_
 	GtkWidget *entry;
 
 	entry_name = g_strdup_printf ("entry-%s-%s", address_name [record], widget_field_name);
-	entry = glade_xml_get_widget (editor->gui, entry_name);
+	entry = e_builder_get_widget (editor->builder, entry_name);
 	g_free (entry_name);
 
 	set_entry_text (editor, GTK_ENTRY (entry), string);
@@ -1892,7 +1892,7 @@ extract_address_textview (EContactEditor *editor, gint record, EContactAddress *
 	GtkTextIter    iter_1, iter_2;
 
 	textview_name = g_strdup_printf ("textview-%s-address", address_name [record]);
-	textview = glade_xml_get_widget (editor->gui, textview_name);
+	textview = e_builder_get_widget (editor->builder, textview_name);
 	g_free (textview_name);
 
 	text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (textview));
@@ -1931,7 +1931,7 @@ extract_address_field (EContactEditor *editor, gint record, const gchar *widget_
 	GtkWidget *entry;
 
 	entry_name = g_strdup_printf ("entry-%s-%s", address_name [record], widget_field_name);
-	entry = glade_xml_get_widget (editor->gui, entry_name);
+	entry = e_builder_get_widget (editor->builder, entry_name);
 	g_free (entry_name);
 
 	return g_strdup (gtk_entry_get_text (GTK_ENTRY (entry)));
@@ -2022,11 +2022,11 @@ sensitize_address_textview (EContactEditor *editor, gint record, gboolean enable
 	GtkWidget     *label;
 
 	widget_name = g_strdup_printf ("textview-%s-address", address_name [record]);
-	textview = glade_xml_get_widget (editor->gui, widget_name);
+	textview = e_builder_get_widget (editor->builder, widget_name);
 	g_free (widget_name);
 
 	widget_name = g_strdup_printf ("label-%s-address", address_name [record]);
-	label = glade_xml_get_widget (editor->gui, widget_name);
+	label = e_builder_get_widget (editor->builder, widget_name);
 	g_free (widget_name);
 
 	gtk_text_view_set_editable (GTK_TEXT_VIEW (textview), enabled);
@@ -2042,11 +2042,11 @@ sensitize_address_field (EContactEditor *editor, gint record, const gchar *widge
 	GtkWidget *label;
 
 	widget_name = g_strdup_printf ("entry-%s-%s", address_name [record], widget_field_name);
-	entry = glade_xml_get_widget (editor->gui, widget_name);
+	entry = e_builder_get_widget (editor->builder, widget_name);
 	g_free (widget_name);
 
 	widget_name = g_strdup_printf ("label-%s-%s", address_name [record], widget_field_name);
-	label = glade_xml_get_widget (editor->gui, widget_name);
+	label = e_builder_get_widget (editor->builder, widget_name);
 	g_free (widget_name);
 
 	gtk_editable_set_editable (GTK_EDITABLE (entry), enabled);
@@ -2426,7 +2426,7 @@ init_simple (EContactEditor *editor)
 	gint       i;
 
 	for (i = 0; i < G_N_ELEMENTS (simple_field_map); i++) {
-		widget = glade_xml_get_widget (editor->gui, simple_field_map [i].widget_name);
+		widget = e_builder_get_widget (editor->builder, simple_field_map [i].widget_name);
 		if (!widget)
 			continue;
 
@@ -2437,11 +2437,11 @@ init_simple (EContactEditor *editor)
 
 	/* Update file_as */
 
-	widget = glade_xml_get_widget (editor->gui, "entry-fullname");
+	widget = e_builder_get_widget (editor->builder, "entry-fullname");
 	g_signal_connect (widget, "changed", G_CALLBACK (name_entry_changed), editor);
-	widget = glade_xml_get_widget (editor->gui, "combo-file-as");
+	widget = e_builder_get_widget (editor->builder, "combo-file-as");
 	g_signal_connect (widget, "changed", G_CALLBACK (file_as_combo_changed), editor);
-	widget = glade_xml_get_widget (editor->gui, "entry-company");
+	widget = e_builder_get_widget (editor->builder, "entry-company");
 	g_signal_connect (widget, "changed", G_CALLBACK (company_entry_changed), editor);
 }
 
@@ -2459,7 +2459,7 @@ fill_in_simple (EContactEditor *editor)
 		    !simple_field_map [i].process_data)
 			continue;
 
-		widget = glade_xml_get_widget (editor->gui, simple_field_map [i].widget_name);
+		widget = e_builder_get_widget (editor->builder, simple_field_map [i].widget_name);
 		if (!widget)
 			continue;
 
@@ -2509,7 +2509,7 @@ extract_simple (EContactEditor *editor)
 		    !simple_field_map [i].process_data)
 			continue;
 
-		widget = glade_xml_get_widget (editor->gui, simple_field_map [i].widget_name);
+		widget = e_builder_get_widget (editor->builder, simple_field_map [i].widget_name);
 		if (!widget)
 			continue;
 
@@ -2530,7 +2530,7 @@ sensitize_simple (EContactEditor *editor)
 		GtkWidget *widget;
 		gboolean   enabled = TRUE;
 
-		widget = glade_xml_get_widget (editor->gui, simple_field_map [i].widget_name);
+		widget = e_builder_get_widget (editor->builder, simple_field_map [i].widget_name);
 		if (!widget)
 			continue;
 
@@ -2599,8 +2599,8 @@ new_target_cb (EBook *new_book, EBookStatus status, EContactEditor *editor)
 
 		eab_load_error_dialog (NULL, e_book_get_source (new_book), status);
 
-		source_combo_box = glade_xml_get_widget (
-			editor->gui, "source-combo-box-source");
+		source_combo_box = e_builder_get_widget (
+			editor->builder, "source-combo-box-source");
 		e_source_combo_box_set_active (
 			E_SOURCE_COMBO_BOX (source_combo_box),
 			e_book_get_source (editor->target_book));
@@ -2667,7 +2667,7 @@ full_name_response (GtkDialog *dialog, gint response, EContactEditor *editor)
 
 		style = file_as_get_style(editor);
 
-		fname_widget = glade_xml_get_widget(editor->gui, "entry-fullname");
+		fname_widget = e_builder_get_widget(editor->builder, "entry-fullname");
 		if (fname_widget && GTK_IS_ENTRY (fname_widget)) {
 			gchar *full_name = e_contact_name_to_string(name);
 			const gchar *old_full_name = gtk_entry_get_text (GTK_ENTRY(fname_widget));
@@ -2729,7 +2729,7 @@ static void
 categories_response (GtkDialog *dialog, gint response, EContactEditor *editor)
 {
 	const gchar *categories;
-	GtkWidget *entry = glade_xml_get_widget(editor->gui, "entry-categories");
+	GtkWidget *entry = e_builder_get_widget(editor->builder, "entry-categories");
 
 	if (response == GTK_RESPONSE_OK) {
 		categories = e_categories_dialog_get_categories (E_CATEGORIES_DIALOG (dialog));
@@ -2757,7 +2757,7 @@ categories_clicked (GtkWidget *button, EContactEditor *editor)
 {
 	gchar *categories = NULL;
 	GtkDialog *dialog;
-	GtkWidget *entry = glade_xml_get_widget(editor->gui, "entry-categories");
+	GtkWidget *entry = e_builder_get_widget(editor->builder, "entry-categories");
 
 	if (entry && GTK_IS_ENTRY(entry))
 		categories = g_strdup (gtk_entry_get_text(GTK_ENTRY(entry)));
@@ -2798,7 +2798,7 @@ image_selected (EContactEditor *editor)
 	if (!file_name)
 		return;
 
-	image_chooser = glade_xml_get_widget (editor->gui, "image-chooser");
+	image_chooser = e_builder_get_widget (editor->builder, "image-chooser");
 
 	g_signal_handlers_block_by_func (image_chooser, image_chooser_changed, editor);
 	e_image_chooser_set_from_file (E_IMAGE_CHOOSER (image_chooser), file_name);
@@ -2815,7 +2815,7 @@ image_cleared (EContactEditor *editor)
 	GtkWidget *image_chooser;
 	gchar     *file_name;
 
-	image_chooser = glade_xml_get_widget (editor->gui, "image-chooser");
+	image_chooser = e_builder_get_widget (editor->builder, "image-chooser");
 
 	file_name = e_icon_factory_get_icon_filename ("stock_person", GTK_ICON_SIZE_DIALOG);
 
@@ -3059,9 +3059,9 @@ save_contact (EContactEditor *ce, gboolean should_close)
 			return;
 	}
 
-	entry_fullname = glade_xml_get_widget (ce->gui, "entry-fullname" );
-	entry_file_as = gtk_bin_get_child (GTK_BIN (glade_xml_get_widget (ce->gui, "combo-file-as")));
-	company_name = glade_xml_get_widget (ce->gui, "entry-company");
+	entry_fullname = e_builder_get_widget (ce->builder, "entry-fullname" );
+	entry_file_as = gtk_bin_get_child (GTK_BIN (e_builder_get_widget (ce->builder, "combo-file-as")));
+	company_name = e_builder_get_widget (ce->builder, "entry-company");
 	name_entry_string = gtk_entry_get_text (GTK_ENTRY (entry_fullname));
 	file_as_entry_string = gtk_entry_get_text (GTK_ENTRY (entry_file_as));
 	company_name_string = gtk_entry_get_text (GTK_ENTRY (company_name));
@@ -3154,14 +3154,14 @@ e_contact_editor_is_valid (EABEditor *editor)
 	EIterator *iter;
 	GString *errmsg = g_string_new (_("The contact data is invalid:\n\n"));
 
-	widget = glade_xml_get_widget (ce->gui, "dateedit-birthday");
+	widget = e_builder_get_widget (ce->builder, "dateedit-birthday");
 	if (!(e_date_edit_date_is_valid (E_DATE_EDIT (widget)))) {
 		g_string_append_printf (errmsg, _("'%s' has an invalid format"),
 					e_contact_pretty_name (E_CONTACT_BIRTH_DATE));
 		validation_error = TRUE;
 	}
 
-	widget = glade_xml_get_widget (ce->gui, "dateedit-anniversary");
+	widget = e_builder_get_widget (ce->builder, "dateedit-anniversary");
 	if (!(e_date_edit_date_is_valid (E_DATE_EDIT (widget)))) {
 		g_string_append_printf (errmsg, _("%s'%s' has an invalid format"),
 					validation_error ? ",\n" : "",
@@ -3281,79 +3281,79 @@ show_help_cb (GtkWidget *widget, gpointer data)
 }
 
 static GList *
-add_to_tab_order(GList *list, GladeXML *gui, const gchar *name)
+add_to_tab_order(GList *list, GtkBuilder *builder, const gchar *name)
 {
-	GtkWidget *widget = glade_xml_get_widget(gui, name);
+	GtkWidget *widget = e_builder_get_widget(builder, name);
 	return g_list_prepend(list, widget);
 }
 
 static void
-setup_tab_order(GladeXML *gui)
+setup_tab_order(GtkBuilder *builder)
 {
 	GtkWidget *container;
 	GList *list = NULL;
 /*
-	container = glade_xml_get_widget(gui, "table-contact-editor-general");
+	container = e_builder_get_widget(builder, "table-contact-editor-general");
 
 	if (container) {
-		list = add_to_tab_order(list, gui, "entry-fullname");
-		list = add_to_tab_order(list, gui, "entry-jobtitle");
-		list = add_to_tab_order(list, gui, "entry-company");
-		list = add_to_tab_order(list, gui, "combo-file-as");
-		list = add_to_tab_order(list, gui, "entry-phone-1");
-		list = add_to_tab_order(list, gui, "entry-phone-2");
-		list = add_to_tab_order(list, gui, "entry-phone-3");
-		list = add_to_tab_order(list, gui, "entry-phone-4");
-
-		list = add_to_tab_order(list, gui, "entry-email1");
-		list = add_to_tab_order(list, gui, "alignment-htmlmail");
-		list = add_to_tab_order(list, gui, "entry-web");
-		list = add_to_tab_order(list, gui, "entry-homepage");
-		list = add_to_tab_order(list, gui, "button-fulladdr");
-		list = add_to_tab_order(list, gui, "text-address");
+		list = add_to_tab_order(list, builder, "entry-fullname");
+		list = add_to_tab_order(list, builder, "entry-jobtitle");
+		list = add_to_tab_order(list, builder, "entry-company");
+		list = add_to_tab_order(list, builder, "combo-file-as");
+		list = add_to_tab_order(list, builder, "entry-phone-1");
+		list = add_to_tab_order(list, builder, "entry-phone-2");
+		list = add_to_tab_order(list, builder, "entry-phone-3");
+		list = add_to_tab_order(list, builder, "entry-phone-4");
+
+		list = add_to_tab_order(list, builder, "entry-email1");
+		list = add_to_tab_order(list, builder, "alignment-htmlmail");
+		list = add_to_tab_order(list, builder, "entry-web");
+		list = add_to_tab_order(list, builder, "entry-homepage");
+		list = add_to_tab_order(list, builder, "button-fulladdr");
+		list = add_to_tab_order(list, builder, "text-address");
 		list = g_list_reverse(list);
 		e_container_change_tab_order(GTK_CONTAINER(container), list);
 		g_list_free(list);
 	}
 */
 
-	container = glade_xml_get_widget (gui, "table-home-address");
+	container = e_builder_get_widget (builder, "table-home-address");
 	gtk_container_get_focus_chain (GTK_CONTAINER (container), &list);
 
-	list = add_to_tab_order (list, gui, "scrolledwindow-home-address");
-	list = add_to_tab_order (list, gui, "entry-home-city");
-	list = add_to_tab_order (list, gui, "entry-home-zip");
-	list = add_to_tab_order (list, gui, "entry-home-state");
-	list = add_to_tab_order (list, gui, "entry-home-pobox");
-	list = add_to_tab_order (list, gui, "entry-home-country");
+	list = add_to_tab_order (list, builder, "scrolledwindow-home-address");
+	list = add_to_tab_order (list, builder, "entry-home-city");
+	list = add_to_tab_order (list, builder, "entry-home-zip");
+	list = add_to_tab_order (list, builder, "entry-home-state");
+	list = add_to_tab_order (list, builder, "entry-home-pobox");
+	list = add_to_tab_order (list, builder, "entry-home-country");
 	list = g_list_reverse (list);
 
 	gtk_container_set_focus_chain (GTK_CONTAINER (container), list);
 	g_list_free (list);
 
-	container = glade_xml_get_widget (gui, "table-work-address");
+	container = e_builder_get_widget (builder, "table-work-address");
 	gtk_container_get_focus_chain (GTK_CONTAINER (container), &list);
 
-	list = add_to_tab_order (list, gui, "scrolledwindow-work-address");
-	list = add_to_tab_order (list, gui, "entry-work-city");
-	list = add_to_tab_order (list, gui, "entry-work-zip");
-	list = add_to_tab_order (list, gui, "entry-work-state");
-	list = add_to_tab_order (list, gui, "entry-work-pobox");
-	list = add_to_tab_order (list, gui, "entry-work-country");
+	list = add_to_tab_order (list, builder, "scrolledwindow-work-address");
+	list = add_to_tab_order (list, builder, "entry-work-city");
+	list = add_to_tab_order (list, builder, "entry-work-zip");
+	list = add_to_tab_order (list, builder, "entry-work-state");
+	list = add_to_tab_order (list, builder, "entry-work-pobox");
+	list = add_to_tab_order (list, builder, "entry-work-country");
 	list = g_list_reverse (list);
 
 	gtk_container_set_focus_chain (GTK_CONTAINER (container), list);
 	g_list_free (list);
 
-	container = glade_xml_get_widget (gui, "table-other-address");
+	container = e_builder_get_widget (builder, "table-other-address");
 	gtk_container_get_focus_chain (GTK_CONTAINER (container), &list);
 
-	list = add_to_tab_order (list, gui, "scrolledwindow-other-address");
-	list = add_to_tab_order (list, gui, "entry-other-city");
-	list = add_to_tab_order (list, gui, "entry-other-zip");
-	list = add_to_tab_order (list, gui, "entry-other-state");
-	list = add_to_tab_order (list, gui, "entry-other-pobox");
-	list = add_to_tab_order (list, gui, "entry-other-country");
+	list = add_to_tab_order (list, builder, "scrolledwindow-other-address");
+	list = add_to_tab_order (list, builder, "entry-other-city");
+	list = add_to_tab_order (list, builder, "entry-other-zip");
+	list = add_to_tab_order (list, builder, "entry-other-state");
+	list = add_to_tab_order (list, builder, "entry-other-pobox");
+	list = add_to_tab_order (list, builder, "entry-other-country");
 	list = g_list_reverse (list);
 
 	gtk_container_set_focus_chain (GTK_CONTAINER (container), list);
@@ -3365,18 +3365,17 @@ expand_phone_toggle (EContactEditor *ce)
 {
 	GtkWidget *phone_ext_table;
 
-	phone_ext_table = glade_xml_get_widget (ce->gui, "table-phone-extended");
+	phone_ext_table = e_builder_get_widget (ce->builder, "table-phone-extended");
 	expand_phone (ce, GTK_WIDGET_VISIBLE (phone_ext_table) ? FALSE : TRUE);
 }
 
 static void
 e_contact_editor_init (EContactEditor *e_contact_editor)
 {
-	GladeXML *gui;
+	GtkBuilder *builder;
 	EShell *shell;
 	GtkWidget *widget, *label;
 	GtkEntryCompletion *completion;
-	gchar *gladefile;
 
 	e_contact_editor->name = e_contact_name_new();
 
@@ -3392,17 +3391,14 @@ e_contact_editor_init (EContactEditor *e_contact_editor)
 	e_contact_editor->load_source_id = 0;
 	e_contact_editor->load_book = NULL;
 
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      "contact-editor.glade",
-				      NULL);
-	gui = glade_xml_new (gladefile, NULL, NULL);
-	g_free (gladefile);
+	builder = gtk_builder_new ();
+	e_load_ui_builder_definition (builder, "contact-editor.ui");
 
-	e_contact_editor->gui = gui;
+	e_contact_editor->builder = builder;
 
-	setup_tab_order(gui);
+	setup_tab_order(builder);
 
-	e_contact_editor->app = glade_xml_get_widget (gui, "contact editor");
+	e_contact_editor->app = e_builder_get_widget (builder, "contact editor");
 	widget = e_contact_editor->app;
 
 	gtk_widget_ensure_style (widget);
@@ -3412,31 +3408,31 @@ e_contact_editor_init (EContactEditor *e_contact_editor)
 
 	init_all (e_contact_editor);
 
-	widget = glade_xml_get_widget (e_contact_editor->gui, "button-image");
+	widget = e_builder_get_widget (e_contact_editor->builder, "button-image");
 	g_signal_connect (widget, "clicked", G_CALLBACK (image_clicked), e_contact_editor);
 
-	widget = glade_xml_get_widget(e_contact_editor->gui, "button-fullname");
+	widget = e_builder_get_widget(e_contact_editor->builder, "button-fullname");
 	g_signal_connect (widget, "clicked", G_CALLBACK (full_name_clicked), e_contact_editor);
-	widget = glade_xml_get_widget(e_contact_editor->gui, "button-categories");
+	widget = e_builder_get_widget(e_contact_editor->builder, "button-categories");
 	g_signal_connect (widget, "clicked", G_CALLBACK (categories_clicked), e_contact_editor);
-	widget = glade_xml_get_widget (e_contact_editor->gui, "source-combo-box-source");
+	widget = e_builder_get_widget (e_contact_editor->builder, "source-combo-box-source");
 	g_signal_connect (widget, "changed", G_CALLBACK (source_changed), e_contact_editor);
-	label = glade_xml_get_widget (e_contact_editor->gui, "where-label");
+	label = e_builder_get_widget (e_contact_editor->builder, "where-label");
 	gtk_label_set_mnemonic_widget (GTK_LABEL (label), widget);
-	widget = glade_xml_get_widget (e_contact_editor->gui, "button-ok");
+	widget = e_builder_get_widget (e_contact_editor->builder, "button-ok");
 	g_signal_connect (widget, "clicked", G_CALLBACK (file_save_and_close_cb), e_contact_editor);
-	widget = glade_xml_get_widget (e_contact_editor->gui, "button-cancel");
+	widget = e_builder_get_widget (e_contact_editor->builder, "button-cancel");
 	g_signal_connect (widget, "clicked", G_CALLBACK (file_cancel_cb), e_contact_editor);
-	widget = glade_xml_get_widget (e_contact_editor->gui, "button-help");
+	widget = e_builder_get_widget (e_contact_editor->builder, "button-help");
 	g_signal_connect (widget, "clicked", G_CALLBACK (show_help_cb), e_contact_editor);
-	widget = glade_xml_get_widget (e_contact_editor->gui, "button-phone-expand");
+	widget = e_builder_get_widget (e_contact_editor->builder, "button-phone-expand");
 	g_signal_connect_swapped (widget, "clicked", G_CALLBACK (expand_phone_toggle), e_contact_editor);
 
-	widget = glade_xml_get_widget (e_contact_editor->gui, "entry-fullname");
+	widget = e_builder_get_widget (e_contact_editor->builder, "entry-fullname");
 	if (widget)
 		gtk_widget_grab_focus (widget);
 
-	widget = glade_xml_get_widget (e_contact_editor->gui, "entry-categories");
+	widget = e_builder_get_widget (e_contact_editor->builder, "entry-categories");
 	completion = e_category_completion_new ();
 	gtk_entry_set_completion (GTK_ENTRY (widget), completion);
 	g_object_unref (completion);
@@ -3496,9 +3492,9 @@ e_contact_editor_dispose (GObject *object)
 		e_contact_editor->name = NULL;
 	}
 
-	if (e_contact_editor->gui) {
-		g_object_unref(e_contact_editor->gui);
-		e_contact_editor->gui = NULL;
+	if (e_contact_editor->builder) {
+		g_object_unref(e_contact_editor->builder);
+		e_contact_editor->builder = NULL;
 	}
 
 	cancel_load (e_contact_editor);
diff --git a/addressbook/gui/contact-editor/e-contact-editor.h b/addressbook/gui/contact-editor/e-contact-editor.h
index acc0a6d..5079f1a 100644
--- a/addressbook/gui/contact-editor/e-contact-editor.h
+++ b/addressbook/gui/contact-editor/e-contact-editor.h
@@ -59,7 +59,7 @@ struct _EContactEditor
 	EBook *target_book;
 	EContact *contact;
 
-	GladeXML *gui;
+	GtkBuilder *builder;
 	GtkWidget *app;
 
 	GtkWidget *file_selector;
diff --git a/addressbook/gui/contact-editor/test-editor.c b/addressbook/gui/contact-editor/test-editor.c
index db7352b..2850f38 100644
--- a/addressbook/gui/contact-editor/test-editor.c
+++ b/addressbook/gui/contact-editor/test-editor.c
@@ -83,8 +83,6 @@ gint main( gint argc, gchar *argv[] )
 
 	gtk_init (&argc, &argv);
 
-	glade_init ();
-
 	cardstr = NULL;
 	if (argc == 2)
 		cardstr = read_file (argv [1]);
diff --git a/addressbook/gui/contact-list-editor/e-contact-list-editor.c b/addressbook/gui/contact-list-editor/e-contact-list-editor.c
index 05f2169..63e9915 100644
--- a/addressbook/gui/contact-list-editor/e-contact-list-editor.c
+++ b/addressbook/gui/contact-list-editor/e-contact-list-editor.c
@@ -35,6 +35,7 @@
 
 #include <libedataserverui/e-source-combo-box.h>
 
+#include "e-util/e-util.h"
 #include "addressbook/gui/widgets/eab-gui-util.h"
 #include "addressbook/util/addressbook.h"
 #include "addressbook/util/eab-book-util.h"
@@ -49,8 +50,8 @@
 	((obj), E_TYPE_CONTACT_LIST_EDITOR, EContactListEditorPrivate))
 
 #define CONTACT_LIST_EDITOR_WIDGET(editor, name) \
-	(glade_xml_get_widget \
-	(E_CONTACT_LIST_EDITOR_GET_PRIVATE (editor)->xml, name))
+	(e_builder_get_widget \
+	(E_CONTACT_LIST_EDITOR_GET_PRIVATE (editor)->builder, name))
 
 /* More macros, less typos. */
 #define CONTACT_LIST_EDITOR_WIDGET_ADD_BUTTON(editor) \
@@ -97,7 +98,7 @@ struct _EContactListEditorPrivate {
 	EBook *book;
 	EContact *contact;
 
-	GladeXML *xml;
+	GtkBuilder *builder;
 	GtkTreeModel *model;
 	ENameSelector *name_selector;
 
@@ -1294,18 +1295,15 @@ contact_list_editor_init (EContactListEditor *editor)
 	GtkTreeViewColumn *column;
 	GtkCellRenderer *renderer;
 	GtkTreeView *view;
-	gchar *filename;
 
 	priv = E_CONTACT_LIST_EDITOR_GET_PRIVATE (editor);
 
 	priv->editable = TRUE;
 	priv->allows_contact_lists = TRUE;
 
-	filename = g_build_filename (
-		EVOLUTION_UIDIR, "contact-list-editor.glade", NULL);
-	priv->xml = glade_xml_new (filename, NULL, NULL);
-	glade_xml_signal_autoconnect (priv->xml);
-	g_free (filename);
+	priv->builder = gtk_builder_new ();
+	e_load_ui_builder_definition (priv->builder, "contact-list-editor.ui");
+	gtk_builder_connect_signals (priv->builder, NULL);
 
 	/* Embed a pointer to the EContactListEditor in the top-level
 	 * widget.  Signal handlers can then access the pointer from any
diff --git a/addressbook/gui/merging/eab-contact-merging.c b/addressbook/gui/merging/eab-contact-merging.c
index cb2bc3f..77d9009 100644
--- a/addressbook/gui/merging/eab-contact-merging.c
+++ b/addressbook/gui/merging/eab-contact-merging.c
@@ -30,6 +30,7 @@
 #include <gtk/gtk.h>
 #include <string.h>
 #include "addressbook/gui/widgets/eab-contact-display.h"
+#include "e-util/e-util.h"
 #include "e-util/e-util-private.h"
 #include <glib/gi18n.h>
 
@@ -454,7 +455,6 @@ static void
 match_query_callback (EContact *contact, EContact *match, EABContactMatchType type, gpointer closure)
 {
 	EContactMergingLookup *lookup = closure;
-	gchar *gladefile;
 	gint flag;
 	gboolean same_uids;
 
@@ -476,49 +476,46 @@ match_query_callback (EContact *contact, EContact *match, EABContactMatchType ty
 	if ((gint) type <= (gint) EAB_CONTACT_MATCH_VAGUE || same_uids) {
 		doit (lookup, same_uids);
 	} else {
-		GladeXML *ui;
+		GtkBuilder *builder;
 
 		GtkWidget *widget, *merge_button;
 
+		/* XXX I think we're leaking the GtkBuilder. */
+		builder = gtk_builder_new ();
+
 		lookup->match = g_object_ref (match);
 		if (lookup->op == E_CONTACT_MERGING_ADD) {
 			/* Compares all the values of contacts and return true, if they match */
 			flag = check_if_same (contact, match);
-			gladefile = g_build_filename (EVOLUTION_UIDIR,
-						      "eab-contact-duplicate-detected.glade",
-						      NULL);
-			ui = glade_xml_new (gladefile, NULL, NULL);
-			merge_button = glade_xml_get_widget (ui, "button5");
+			e_load_ui_builder_definition (
+				builder, "eab-contact-duplicate-detected.ui");
+			merge_button = e_builder_get_widget (builder, "button5");
 			/* Merge Button not sensitive when all values are same */
 			if (flag)
 				gtk_widget_set_sensitive (GTK_WIDGET (merge_button), FALSE);
-			g_free (gladefile);
 		} else if (lookup->op == E_CONTACT_MERGING_COMMIT) {
-			gladefile = g_build_filename (EVOLUTION_UIDIR,
-						      "eab-contact-commit-duplicate-detected.glade",
-						      NULL);
-			ui = glade_xml_new (gladefile, NULL, NULL);
-			g_free (gladefile);
+			e_load_ui_builder_definition (
+				builder, "eab-contact-commit-duplicate-detected.ui");
 		} else {
 			doit (lookup, FALSE);
 			return;
 		}
 
-		widget = glade_xml_get_widget (ui, "custom-old-contact");
+		widget = e_builder_get_widget (builder, "custom-old-contact");
 		eab_contact_display_set_mode (
 			EAB_CONTACT_DISPLAY (widget),
 			EAB_CONTACT_DISPLAY_RENDER_COMPACT);
 		eab_contact_display_set_contact (
 			EAB_CONTACT_DISPLAY (widget), match);
 
-		widget = glade_xml_get_widget (ui, "custom-new-contact");
+		widget = e_builder_get_widget (builder, "custom-new-contact");
 		eab_contact_display_set_mode (
 			EAB_CONTACT_DISPLAY (widget),
 			EAB_CONTACT_DISPLAY_RENDER_COMPACT);
 		eab_contact_display_set_contact (
 			EAB_CONTACT_DISPLAY (widget), contact);
 
-		widget = glade_xml_get_widget (ui, "dialog-duplicate-contact");
+		widget = e_builder_get_widget (builder, "dialog-duplicate-contact");
 
 		gtk_widget_ensure_style (widget);
 		gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (widget)->vbox), 0);
diff --git a/addressbook/printing/test-print.c b/addressbook/printing/test-print.c
index c7237fc..bd2f222 100644
--- a/addressbook/printing/test-print.c
+++ b/addressbook/printing/test-print.c
@@ -33,8 +33,6 @@ main (gint argc, gchar *argv[])
 
 	gtk_init (&argc, &argv);
 
-	glade_init ();
-
 	shown_fields = g_list_append (shown_fields, (gpointer) "First field");
 	shown_fields = g_list_append (shown_fields, (gpointer) "Second field");
 	shown_fields = g_list_append (shown_fields, (gpointer) "Third field");
diff --git a/calendar/gui/alarm-notify/alarm-notify-dialog.c b/calendar/gui/alarm-notify/alarm-notify-dialog.c
index 76dfede..90d56d3 100644
--- a/calendar/gui/alarm-notify/alarm-notify-dialog.c
+++ b/calendar/gui/alarm-notify/alarm-notify-dialog.c
@@ -31,6 +31,8 @@
 #include "alarm-notify-dialog.h"
 #include "config-data.h"
 #include "util.h"
+
+#include "e-util/e-util.h"
 #include "e-util/e-util-private.h"
 #include "misc/e-buffer-tagger.h"
 
@@ -56,7 +58,7 @@ typedef struct {
 } AlarmFuncInfo;
 
 typedef struct {
-	GladeXML *xml;
+	GtkBuilder *builder;
 
 	GtkWidget *dialog;
 	GtkWidget *snooze_time_min;
@@ -218,7 +220,7 @@ dialog_destroyed_cb (GtkWidget *dialog, gpointer user_data)
 {
 	AlarmNotify *an = user_data;
 
-	g_object_unref (an->xml);
+	g_object_unref (an->builder);
 	g_free (an);
 }
 
@@ -251,37 +253,27 @@ notified_alarms_dialog_new (void)
 
 			G_TYPE_POINTER /* FuncInfo*/));
 
-	gchar *gladefile;
-
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      "alarm-notify.glade",
-				      NULL);
-	an->xml = glade_xml_new (gladefile, NULL, NULL);
-	g_free (gladefile);
-	if (!an->xml) {
-		g_message ("alarm_notify_dialog(): Could not load the Glade XML file!");
-		g_free (an);
-		return NULL;
-	}
-
-	an->dialog = glade_xml_get_widget (an->xml, "alarm-notify");
-	an->snooze_time_min = glade_xml_get_widget (an->xml, "snooze-time-min");
-	an->minutes_label = glade_xml_get_widget (an->xml, "minutes-label");
-	an->snooze_time_hrs = glade_xml_get_widget (an->xml, "snooze-time-hrs");
-	an->hrs_label = glade_xml_get_widget (an->xml, "hrs-label");
-	an->description = glade_xml_get_widget (an->xml, "description-label");
-	an->location = glade_xml_get_widget (an->xml, "location-label");
-	an->treeview = glade_xml_get_widget (an->xml, "appointments-treeview");
-	an->scrolledwindow = glade_xml_get_widget (an->xml, "treeview-scrolledwindow");
-	snooze_btn = glade_xml_get_widget (an->xml, "snooze-button");
+	an->builder = gtk_builder_new ();
+	e_load_ui_builder_definition (an->builder, "alarm-notify.ui");
+
+	an->dialog = e_builder_get_widget (an->builder, "alarm-notify");
+	an->snooze_time_min = e_builder_get_widget (an->builder, "snooze-time-min");
+	an->minutes_label = e_builder_get_widget (an->builder, "minutes-label");
+	an->snooze_time_hrs = e_builder_get_widget (an->builder, "snooze-time-hrs");
+	an->hrs_label = e_builder_get_widget (an->builder, "hrs-label");
+	an->description = e_builder_get_widget (an->builder, "description-label");
+	an->location = e_builder_get_widget (an->builder, "location-label");
+	an->treeview = e_builder_get_widget (an->builder, "appointments-treeview");
+	an->scrolledwindow = e_builder_get_widget (an->builder, "treeview-scrolledwindow");
+	snooze_btn = e_builder_get_widget (an->builder, "snooze-button");
 	an->snooze_btn = snooze_btn;
-	an->dismiss_btn = glade_xml_get_widget (an->xml, "dismiss-button");
-	edit_btn = glade_xml_get_widget (an->xml, "edit-button");
+	an->dismiss_btn = e_builder_get_widget (an->builder, "dismiss-button");
+	edit_btn = e_builder_get_widget (an->builder, "edit-button");
 
 	if (!(an->dialog && an->scrolledwindow && an->treeview && an->snooze_time_min && an->snooze_time_hrs
 	      && an->description && an->location && edit_btn && snooze_btn && an->dismiss_btn)) {
 		g_message ("alarm_notify_dialog(): Could not find all widgets in Glade file!");
-		g_object_unref (an->xml);
+		g_object_unref (an->builder);
 		g_free (an);
 		return NULL;
 	}
@@ -308,7 +300,7 @@ notified_alarms_dialog_new (void)
 	gtk_widget_realize (an->dialog);
 	gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (an->dialog)->vbox), 0);
 	gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (an->dialog)->action_area), 12);
-	image = glade_xml_get_widget (an->xml, "alarm-image");
+	image = e_builder_get_widget (an->builder, "alarm-image");
 	gtk_image_set_from_icon_name (
 		GTK_IMAGE (image), "stock_alarm", GTK_ICON_SIZE_DIALOG);
 
diff --git a/calendar/gui/alarm-notify/notify-main.c b/calendar/gui/alarm-notify/notify-main.c
index 9f07951..e001409 100644
--- a/calendar/gui/alarm-notify/notify-main.c
+++ b/calendar/gui/alarm-notify/notify-main.c
@@ -61,8 +61,6 @@ main (gint argc, gchar **argv)
 	if (unique_app_is_running (app))
 		goto exit;
 
-	glade_init ();
-
 	e_icon_factory_init ();
 
 	alarm_notify_service = alarm_notify_new ();
diff --git a/calendar/gui/dialogs/alarm-dialog.c b/calendar/gui/dialogs/alarm-dialog.c
index 960aa11..c07af85 100644
--- a/calendar/gui/dialogs/alarm-dialog.c
+++ b/calendar/gui/dialogs/alarm-dialog.c
@@ -35,6 +35,7 @@
 #include "e-util/e-dialog-widgets.h"
 #include <libecal/e-cal-util.h>
 #include <libecal/e-cal-time-util.h>
+#include "e-util/e-util.h"
 #include "e-util/e-dialog-widgets.h"
 #include "e-util/e-util-private.h"
 #include <libebook/e-destination.h>
@@ -47,8 +48,7 @@
 
 
 typedef struct {
-	/* Glade XML data */
-	GladeXML *xml;
+	GtkBuilder *builder;
 
 	/* The alarm  */
 	ECalComponentAlarm *alarm;
@@ -776,45 +776,41 @@ dialog_to_alarm (Dialog *dialog)
 static gboolean
 get_widgets (Dialog *dialog)
 {
-#define GW(name) glade_xml_get_widget (dialog->xml, name)
-
-	dialog->toplevel = GW ("alarm-dialog");
+	dialog->toplevel = e_builder_get_widget (dialog->builder, "alarm-dialog");
 	if (!dialog->toplevel)
 		return FALSE;
 
-	dialog->action_combo = GW ("action-combobox");
-	dialog->interval_value = GW ("interval-value");
-	dialog->value_units_combo = GW ("value-units-combobox");
-	dialog->relative_combo = GW ("relative-combobox");
-	dialog->time_combo = GW ("time-combobox");
-
-	dialog->repeat_toggle = GW ("repeat-toggle");
-	dialog->repeat_group = GW ("repeat-group");
-	dialog->repeat_quantity = GW ("repeat-quantity");
-	dialog->repeat_value = GW ("repeat-value");
-	dialog->repeat_unit_combo = GW ("repeat-unit-combobox");
+	dialog->action_combo = e_builder_get_widget (dialog->builder, "action-combobox");
+	dialog->interval_value = e_builder_get_widget (dialog->builder, "interval-value");
+	dialog->value_units_combo = e_builder_get_widget (dialog->builder, "value-units-combobox");
+	dialog->relative_combo = e_builder_get_widget (dialog->builder, "relative-combobox");
+	dialog->time_combo = e_builder_get_widget (dialog->builder, "time-combobox");
 
-	dialog->option_notebook = GW ("option-notebook");
+	dialog->repeat_toggle = e_builder_get_widget (dialog->builder, "repeat-toggle");
+	dialog->repeat_group = e_builder_get_widget (dialog->builder, "repeat-group");
+	dialog->repeat_quantity = e_builder_get_widget (dialog->builder, "repeat-quantity");
+	dialog->repeat_value = e_builder_get_widget (dialog->builder, "repeat-value");
+	dialog->repeat_unit_combo = e_builder_get_widget (dialog->builder, "repeat-unit-combobox");
 
-	dialog->dalarm_group = GW ("dalarm-group");
-	dialog->dalarm_message = GW ("dalarm-message");
-	dialog->dalarm_description = GW ("dalarm-description");
+	dialog->option_notebook = e_builder_get_widget (dialog->builder, "option-notebook");
 
-	dialog->aalarm_group = GW ("aalarm-group");
-	dialog->aalarm_sound = GW ("aalarm-sound");
-	dialog->aalarm_file_chooser = GW ("aalarm-file-chooser");
+	dialog->dalarm_group = e_builder_get_widget (dialog->builder, "dalarm-group");
+	dialog->dalarm_message = e_builder_get_widget (dialog->builder, "dalarm-message");
+	dialog->dalarm_description = e_builder_get_widget (dialog->builder, "dalarm-description");
 
-	dialog->malarm_group = GW ("malarm-group");
-	dialog->malarm_address_group = GW ("malarm-address-group");
-	dialog->malarm_addressbook = GW ("malarm-addressbook");
-	dialog->malarm_message = GW ("malarm-message");
-	dialog->malarm_description = GW ("malarm-description");
+	dialog->aalarm_group = e_builder_get_widget (dialog->builder, "aalarm-group");
+	dialog->aalarm_sound = e_builder_get_widget (dialog->builder, "aalarm-sound");
+	dialog->aalarm_file_chooser = e_builder_get_widget (dialog->builder, "aalarm-file-chooser");
 
-	dialog->palarm_group = GW ("palarm-group");
-	dialog->palarm_program = GW ("palarm-program");
-	dialog->palarm_args = GW ("palarm-args");
+	dialog->malarm_group = e_builder_get_widget (dialog->builder, "malarm-group");
+	dialog->malarm_address_group = e_builder_get_widget (dialog->builder, "malarm-address-group");
+	dialog->malarm_addressbook = e_builder_get_widget (dialog->builder, "malarm-addressbook");
+	dialog->malarm_message = e_builder_get_widget (dialog->builder, "malarm-message");
+	dialog->malarm_description = e_builder_get_widget (dialog->builder, "malarm-description");
 
-#undef GW
+	dialog->palarm_group = e_builder_get_widget (dialog->builder, "palarm-group");
+	dialog->palarm_program = e_builder_get_widget (dialog->builder, "palarm-program");
+	dialog->palarm_args = e_builder_get_widget (dialog->builder, "palarm-args");
 
 	if (dialog->action_combo) {
 		const gchar *actions[] = {
@@ -1214,30 +1210,22 @@ alarm_dialog_run (GtkWidget *parent, ECal *ecal, ECalComponentAlarm *alarm)
 {
 	Dialog dialog;
 	gint response_id;
-	gchar *gladefile;
 
 	g_return_val_if_fail (alarm != NULL, FALSE);
 
 	dialog.alarm = alarm;
 	dialog.ecal = ecal;
 
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      "alarm-dialog.glade",
-				      NULL);
-	dialog.xml = glade_xml_new (gladefile, NULL, NULL);
-	g_free (gladefile);
-	if (!dialog.xml) {
-		g_message (G_STRLOC ": Could not load the Glade XML file!");
-		return FALSE;
-	}
+	dialog.builder = gtk_builder_new ();
+	e_load_ui_builder_definition (dialog.builder, "alarm-dialog.ui");
 
 	if (!get_widgets (&dialog)) {
-		g_object_unref(dialog.xml);
+		g_object_unref(dialog.builder);
 		return FALSE;
 	}
 
 	if (!setup_select_names (&dialog)) {
-		g_object_unref (dialog.xml);
+		g_object_unref (dialog.builder);
 		return FALSE;
 	}
 
@@ -1261,7 +1249,7 @@ alarm_dialog_run (GtkWidget *parent, ECal *ecal, ECalComponentAlarm *alarm)
 		dialog_to_alarm (&dialog);
 
 	gtk_widget_destroy (dialog.toplevel);
-	g_object_unref (dialog.xml);
+	g_object_unref (dialog.builder);
 
 	return response_id == GTK_RESPONSE_OK ? TRUE : FALSE;
 }
diff --git a/calendar/gui/dialogs/alarm-list-dialog.c b/calendar/gui/dialogs/alarm-list-dialog.c
index 1c33575..c350b47 100644
--- a/calendar/gui/dialogs/alarm-list-dialog.c
+++ b/calendar/gui/dialogs/alarm-list-dialog.c
@@ -34,9 +34,9 @@
 #include <gtk/gtk.h>
 #include <glib/gi18n.h>
 #include <libedataserver/e-time-utils.h>
-#include "e-util/e-dialog-widgets.h"
 #include <libecal/e-cal-util.h>
 #include <libecal/e-cal-time-util.h>
+#include "e-util/e-util.h"
 #include "e-util/e-dialog-widgets.h"
 #include "e-util/e-util-private.h"
 #include "alarm-dialog.h"
@@ -45,8 +45,7 @@
 
 
 typedef struct {
-	/* Glade XML data */
-	GladeXML *xml;
+	GtkBuilder *builder;
 
 	/* The client */
 	ECal *ecal;
@@ -69,7 +68,7 @@ typedef struct {
 static gboolean
 get_widgets (Dialog *dialog)
 {
-#define GW(name) glade_xml_get_widget (dialog->xml, name)
+#define GW(name) e_builder_get_widget (dialog->builder, name)
 
 	dialog->toplevel = GW ("alarm-list-dialog");
 	if (!dialog->toplevel)
@@ -263,24 +262,15 @@ alarm_list_dialog_run (GtkWidget *parent, ECal *ecal, EAlarmList *list_store)
 {
 	Dialog dialog;
 	gint response_id;
-	gchar *gladefile;
 
 	dialog.ecal = ecal;
 	dialog.list_store = list_store;
 
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      "alarm-list-dialog.glade",
-				      NULL);
-	dialog.xml = glade_xml_new (gladefile, NULL, NULL);
-	g_free (gladefile);
-
-	if (!dialog.xml) {
-		g_message (G_STRLOC ": Could not load the Glade XML file!");
-		return FALSE;
-	}
+	dialog.builder = gtk_builder_new ();
+	e_load_ui_builder_definition (dialog.builder, "alarm-list-dialog.ui");
 
 	if (!get_widgets (&dialog)) {
-		g_object_unref(dialog.xml);
+		g_object_unref(dialog.builder);
 		return FALSE;
 	}
 
@@ -302,7 +292,7 @@ alarm_list_dialog_run (GtkWidget *parent, ECal *ecal, EAlarmList *list_store)
 	gtk_widget_hide (dialog.toplevel);
 
 	gtk_widget_destroy (dialog.toplevel);
-	g_object_unref (dialog.xml);
+	g_object_unref (dialog.builder);
 
 	return response_id == GTK_RESPONSE_OK ? TRUE : FALSE;
 }
@@ -311,25 +301,16 @@ GtkWidget *
 alarm_list_dialog_peek (ECal *ecal, EAlarmList *list_store)
 {
 	Dialog *dialog;
-	gchar *gladefile;
 
 	dialog = (Dialog *)g_new (Dialog, 1);
 	dialog->ecal = ecal;
 	dialog->list_store = list_store;
 
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      "alarm-list-dialog.glade",
-				      NULL);
-	dialog->xml = glade_xml_new (gladefile, NULL, NULL);
-	g_free (gladefile);
-
-	if (!dialog->xml) {
-		g_message (G_STRLOC ": Could not load the Glade XML file!");
-		return NULL;
-	}
+	dialog->builder = gtk_builder_new ();
+	e_load_ui_builder_definition (dialog->builder, "alarm-list-dialog.ui");
 
 	if (!get_widgets (dialog)) {
-		g_object_unref(dialog->xml);
+		g_object_unref(dialog->builder);
 		return NULL;
 	}
 
@@ -337,7 +318,7 @@ alarm_list_dialog_peek (ECal *ecal, EAlarmList *list_store)
 
 	sensitize_buttons (dialog);
 
-	g_object_unref (dialog->xml);
+	g_object_unref (dialog->builder);
 
 	/* Free the other stuff when the parent really gets destroyed. */
 	g_object_set_data_full (G_OBJECT (dialog->box), "toplevel", dialog->toplevel, (GDestroyNotify) gtk_widget_destroy);
diff --git a/calendar/gui/dialogs/cal-prefs-dialog.c b/calendar/gui/dialogs/cal-prefs-dialog.c
index ed7587d..2a0f70d 100644
--- a/calendar/gui/dialogs/cal-prefs-dialog.c
+++ b/calendar/gui/dialogs/cal-prefs-dialog.c
@@ -31,10 +31,11 @@
 #include "../calendar-config.h"
 #include "cal-prefs-dialog.h"
 #include <widgets/misc/e-dateedit.h>
-#include <e-util/e-binding.h>
-#include <e-util/e-datetime-format.h>
-#include <e-util/e-dialog-widgets.h>
-#include <e-util/e-util-private.h>
+#include "e-util/e-util.h"
+#include "e-util/e-binding.h"
+#include "e-util/e-datetime-format.h"
+#include "e-util/e-dialog-widgets.h"
+#include "e-util/e-util-private.h"
 #include <glib/gi18n.h>
 #include <string.h>
 
@@ -61,7 +62,7 @@ calendar_prefs_dialog_finalize (GObject *obj)
 {
 	CalendarPrefsDialog *prefs = (CalendarPrefsDialog *) obj;
 
-	g_object_unref (prefs->gui);
+	g_object_unref (prefs->builder);
 
 	if (prefs->gconf) {
 		g_object_unref (prefs->gconf);
@@ -92,7 +93,7 @@ eccp_widget_glade (EConfig *ec, EConfigItem *item, GtkWidget *parent, GtkWidget
 {
 	CalendarPrefsDialog *prefs = data;
 
-	return glade_xml_get_widget (prefs->gui, item->label);
+	return e_builder_get_widget (prefs->builder, item->label);
 }
 
 static void
@@ -587,7 +588,6 @@ static void
 calendar_prefs_dialog_construct (CalendarPrefsDialog *prefs,
                                  EShell *shell)
 {
-	GladeXML *gui;
 	ECalConfig *ec;
 	ECalConfigTargetPrefs *target;
 	EShellSettings *shell_settings;
@@ -597,19 +597,14 @@ calendar_prefs_dialog_construct (CalendarPrefsDialog *prefs,
 	GtkWidget *widget;
 	GtkWidget *table;
 	GSList *l;
-	gchar *gladefile;
 
 	shell_settings = e_shell_get_shell_settings (shell);
 
 	locale_supports_12_hour_format =
 		calendar_config_locale_supports_12_hour_format ();
 
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      "cal-prefs-dialog.glade",
-				      NULL);
-	gui = glade_xml_new (gladefile, "toplevel-notebook", NULL);
-	g_free (gladefile);
-	prefs->gui = gui;
+	prefs->builder = gtk_builder_new ();
+	e_load_ui_builder_definition (prefs->builder, "cal-prefs-dialog.ui");
 
 	prefs->gconf = gconf_client_get_default ();
 
@@ -627,7 +622,7 @@ calendar_prefs_dialog_construct (CalendarPrefsDialog *prefs,
 		l = g_slist_prepend (l, &eccp_items[i]);
 	e_config_add_items ((EConfig *) ec, l, NULL, NULL, eccp_free, prefs);
 
-	widget = glade_xml_get_widget (gui, "use-system-tz-check");
+	widget = e_builder_get_widget (prefs->builder, "use-system-tz-check");
 	e_mutual_binding_new (
 		shell_settings, "cal-use-system-timezone",
 		widget, "active");
@@ -635,7 +630,7 @@ calendar_prefs_dialog_construct (CalendarPrefsDialog *prefs,
 		shell_settings, "notify::cal-use-system-timezone",
 		G_CALLBACK (update_system_tz_widgets), prefs);
 
-	widget = glade_xml_get_widget (gui, "timezone");
+	widget = e_builder_get_widget (prefs->builder, "timezone");
 	e_mutual_binding_new (
 		shell_settings, "cal-timezone",
 		widget, "timezone");
@@ -644,113 +639,113 @@ calendar_prefs_dialog_construct (CalendarPrefsDialog *prefs,
 		widget, "sensitive");
 
 	/* General tab */
-	prefs->system_tz_label = glade_xml_get_widget (gui, "system-tz-label");
-	prefs->day_second_zone = glade_xml_get_widget (gui, "day_second_zone");
+	prefs->system_tz_label = e_builder_get_widget (prefs->builder, "system-tz-label");
+	prefs->day_second_zone = e_builder_get_widget (prefs->builder, "day_second_zone");
 
-	widget = glade_xml_get_widget (gui, "sun_button");
+	widget = e_builder_get_widget (prefs->builder, "sun_button");
 	e_mutual_binding_new (
 		shell_settings, "cal-working-days-sunday",
 		widget, "active");
 
-	widget = glade_xml_get_widget (gui, "mon_button");
+	widget = e_builder_get_widget (prefs->builder, "mon_button");
 	e_mutual_binding_new (
 		shell_settings, "cal-working-days-monday",
 		widget, "active");
 
-	widget = glade_xml_get_widget (gui, "tue_button");
+	widget = e_builder_get_widget (prefs->builder, "tue_button");
 	e_mutual_binding_new (
 		shell_settings, "cal-working-days-tuesday",
 		widget, "active");
 
-	widget = glade_xml_get_widget (gui, "wed_button");
+	widget = e_builder_get_widget (prefs->builder, "wed_button");
 	e_mutual_binding_new (
 		shell_settings, "cal-working-days-wednesday",
 		widget, "active");
 
-	widget = glade_xml_get_widget (gui, "thu_button");
+	widget = e_builder_get_widget (prefs->builder, "thu_button");
 	e_mutual_binding_new (
 		shell_settings, "cal-working-days-thursday",
 		widget, "active");
 
-	widget = glade_xml_get_widget (gui, "fri_button");
+	widget = e_builder_get_widget (prefs->builder, "fri_button");
 	e_mutual_binding_new (
 		shell_settings, "cal-working-days-friday",
 		widget, "active");
 
-	widget = glade_xml_get_widget (gui, "sat_button");
+	widget = e_builder_get_widget (prefs->builder, "sat_button");
 	e_mutual_binding_new (
 		shell_settings, "cal-working-days-saturday",
 		widget, "active");
 
-	widget = glade_xml_get_widget (gui, "week_start_day");
+	widget = e_builder_get_widget (prefs->builder, "week_start_day");
 	e_mutual_binding_new (
 		shell_settings, "cal-week-start-day",
 		widget, "active");
 
-	widget = glade_xml_get_widget (gui, "start_of_day");
+	widget = e_builder_get_widget (prefs->builder, "start_of_day");
 	prefs->start_of_day = widget;  /* XXX delete this */
 	if (locale_supports_12_hour_format)
 		e_binding_new (
 			shell_settings, "cal-use-24-hour-format",
 			widget, "use-24-hour-format");
 
-	widget = glade_xml_get_widget (gui, "end_of_day");
+	widget = e_builder_get_widget (prefs->builder, "end_of_day");
 	prefs->end_of_day = widget;  /* XXX delete this */
 	if (locale_supports_12_hour_format)
 		e_binding_new (
 			shell_settings, "cal-use-24-hour-format",
 			widget, "use-24-hour-format");
 
-	widget = glade_xml_get_widget (gui, "use_12_hour");
+	widget = e_builder_get_widget (prefs->builder, "use_12_hour");
 	gtk_widget_set_sensitive (widget, locale_supports_12_hour_format);
 	e_mutual_binding_new_with_negation (
 		shell_settings, "cal-use-24-hour-format",
 		widget, "active");
 
-	widget = glade_xml_get_widget (gui, "use_24_hour");
+	widget = e_builder_get_widget (prefs->builder, "use_24_hour");
 	gtk_widget_set_sensitive (widget, locale_supports_12_hour_format);
 	e_mutual_binding_new (
 		shell_settings, "cal-use-24-hour-format",
 		widget, "active");
 
-	widget = glade_xml_get_widget (gui, "confirm_delete");
+	widget = e_builder_get_widget (prefs->builder, "confirm_delete");
 	e_mutual_binding_new (
 		shell_settings, "cal-confirm-delete",
 		widget, "active");
 
-	prefs->default_reminder = glade_xml_get_widget (gui, "default_reminder");
-	prefs->default_reminder_interval = glade_xml_get_widget (gui, "default_reminder_interval");
-	prefs->default_reminder_units = glade_xml_get_widget (gui, "default_reminder_units");
-	prefs->ba_reminder = glade_xml_get_widget (gui, "ba_reminder");
-	prefs->ba_reminder_interval = glade_xml_get_widget (gui, "ba_reminder_interval");
-	prefs->ba_reminder_units = glade_xml_get_widget (gui, "ba_reminder_units");
+	prefs->default_reminder = e_builder_get_widget (prefs->builder, "default_reminder");
+	prefs->default_reminder_interval = e_builder_get_widget (prefs->builder, "default_reminder_interval");
+	prefs->default_reminder_units = e_builder_get_widget (prefs->builder, "default_reminder_units");
+	prefs->ba_reminder = e_builder_get_widget (prefs->builder, "ba_reminder");
+	prefs->ba_reminder_interval = e_builder_get_widget (prefs->builder, "ba_reminder_interval");
+	prefs->ba_reminder_units = e_builder_get_widget (prefs->builder, "ba_reminder_units");
 
 	/* Display tab */
-	prefs->time_divisions = glade_xml_get_widget (gui, "time_divisions");
+	prefs->time_divisions = e_builder_get_widget (prefs->builder, "time_divisions");
 
-	widget = glade_xml_get_widget (gui, "show_end_times");
+	widget = e_builder_get_widget (prefs->builder, "show_end_times");
 	e_mutual_binding_new (
 		shell_settings, "cal-show-event-end-times",
 		widget, "active");
 
-	widget = glade_xml_get_widget (gui, "compress_weekend");
+	widget = e_builder_get_widget (prefs->builder, "compress_weekend");
 	e_mutual_binding_new (
 		shell_settings, "cal-compress-weekend",
 		widget, "active");
 
-	widget = glade_xml_get_widget (gui, "dnav_show_week_no");
+	widget = e_builder_get_widget (prefs->builder, "dnav_show_week_no");
 	e_mutual_binding_new (
 		shell_settings, "cal-show-week-numbers",
 		widget, "active");
 
-	widget = glade_xml_get_widget (gui, "dview_show_week_no");
+	widget = e_builder_get_widget (prefs->builder, "dview_show_week_no");
 	e_mutual_binding_new (
 		shell_settings, "cal-day-view-show-week-numbers",
 		widget, "active");
 
-	prefs->month_scroll_by_week = glade_xml_get_widget (gui, "month_scroll_by_week");
+	prefs->month_scroll_by_week = e_builder_get_widget (prefs->builder, "month_scroll_by_week");
 
-	widget = glade_xml_get_widget (gui, "tasks_due_today_color");
+	widget = e_builder_get_widget (prefs->builder, "tasks_due_today_color");
 	e_mutual_binding_new_full (
 		shell_settings, "cal-tasks-color-due-today",
 		widget, "color",
@@ -758,7 +753,7 @@ calendar_prefs_dialog_construct (CalendarPrefsDialog *prefs,
 		e_binding_transform_color_to_string,
 		(GDestroyNotify) NULL, NULL);
 
-	widget = glade_xml_get_widget (gui, "tasks_overdue_color");
+	widget = e_builder_get_widget (prefs->builder, "tasks_overdue_color");
 	e_mutual_binding_new_full (
 		shell_settings, "cal-tasks-color-overdue",
 		widget, "color",
@@ -766,16 +761,16 @@ calendar_prefs_dialog_construct (CalendarPrefsDialog *prefs,
 		e_binding_transform_color_to_string,
 		(GDestroyNotify) NULL, NULL);
 
-	prefs->tasks_hide_completed = glade_xml_get_widget (gui, "tasks_hide_completed");
-	prefs->tasks_hide_completed_interval = glade_xml_get_widget (gui, "tasks_hide_completed_interval");
-	prefs->tasks_hide_completed_units = glade_xml_get_widget (gui, "tasks_hide_completed_units");
+	prefs->tasks_hide_completed = e_builder_get_widget (prefs->builder, "tasks_hide_completed");
+	prefs->tasks_hide_completed_interval = e_builder_get_widget (prefs->builder, "tasks_hide_completed_interval");
+	prefs->tasks_hide_completed_units = e_builder_get_widget (prefs->builder, "tasks_hide_completed_units");
 
 	/* Alarms tab */
-	prefs->notify_with_tray = glade_xml_get_widget (gui, "notify_with_tray");
-	prefs->scrolled_window = glade_xml_get_widget (gui, "calendar-source-scrolled-window");
+	prefs->notify_with_tray = e_builder_get_widget (prefs->builder, "notify_with_tray");
+	prefs->scrolled_window = e_builder_get_widget (prefs->builder, "calendar-source-scrolled-window");
 
 	/* Free/Busy tab */
-	widget = glade_xml_get_widget (gui, "template_url");
+	widget = e_builder_get_widget (prefs->builder, "template_url");
 	e_mutual_binding_new (
 		shell_settings, "cal-free-busy-template",
 		widget, "text");
@@ -785,7 +780,7 @@ calendar_prefs_dialog_construct (CalendarPrefsDialog *prefs,
 	gtk_container_add (GTK_CONTAINER (prefs), toplevel);
 
 	/* date/time format */
-	table = glade_xml_get_widget (gui, "datetime_format_table");
+	table = e_builder_get_widget (prefs->builder, "datetime_format_table");
 	e_datetime_format_add_setup_widget (table, 0, "calendar", "table",  DTFormatKindDateTime, _("Time and date:"));
 	e_datetime_format_add_setup_widget (table, 1, "calendar", "table",  DTFormatKindDate, _("Date only:"));
 
diff --git a/calendar/gui/dialogs/cal-prefs-dialog.h b/calendar/gui/dialogs/cal-prefs-dialog.h
index 08917d2..14011d8 100644
--- a/calendar/gui/dialogs/cal-prefs-dialog.h
+++ b/calendar/gui/dialogs/cal-prefs-dialog.h
@@ -56,7 +56,7 @@ typedef struct _CalendarPrefsDialogClass CalendarPrefsDialogClass;
 struct _CalendarPrefsDialog {
 	GtkVBox parent;
 
-	GladeXML *gui;
+	GtkBuilder *builder;
 
 	GConfClient *gconf;
 
diff --git a/calendar/gui/dialogs/e-delegate-dialog.c b/calendar/gui/dialogs/e-delegate-dialog.c
index 49268b8..551229c 100644
--- a/calendar/gui/dialogs/e-delegate-dialog.c
+++ b/calendar/gui/dialogs/e-delegate-dialog.c
@@ -30,6 +30,7 @@
 #include <libical/ical.h>
 #include <libebook/e-destination.h>
 #include <libedataserverui/e-name-selector.h>
+#include "e-util/e-util.h"
 #include "e-util/e-util-private.h"
 #include "e-delegate-dialog.h"
 
@@ -37,10 +38,9 @@ struct _EDelegateDialogPrivate {
 	gchar *name;
 	gchar *address;
 
-	/* Glade XML data */
-	GladeXML *xml;
+	GtkBuilder *builder;
 
-	/* Widgets from the Glade file */
+	/* Widgets from the UI file */
 	GtkWidget *app;
 	GtkWidget *hbox;
 	GtkWidget *addressbook;
@@ -120,7 +120,6 @@ e_delegate_dialog_construct (EDelegateDialog *edd, const gchar *name, const gcha
 	EDestination *dest;
 	ENameSelectorModel *name_selector_model;
 	ENameSelectorDialog *name_selector_dialog;
-	gchar *gladefile;
 
 	g_return_val_if_fail (edd != NULL, NULL);
 	g_return_val_if_fail (E_IS_DELEGATE_DIALOG (edd), NULL);
@@ -129,16 +128,8 @@ e_delegate_dialog_construct (EDelegateDialog *edd, const gchar *name, const gcha
 
 	/* Load the content widgets */
 
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      "e-delegate-dialog.glade",
-				      NULL);
-	priv->xml = glade_xml_new (gladefile, NULL, NULL);
-	g_free (gladefile);
-
-	if (!priv->xml) {
-		g_message ("e_delegate_dialog_construct(): Could not load the Glade XML file!");
-		goto error;
-	}
+	priv->builder = gtk_builder_new ();
+	e_load_ui_builder_definition (priv->builder, "e-delegate-dialog.ui");
 
 	if (!get_widgets (edd)) {
 		g_message ("e_delegate_dialog_construct(): Could not find all widgets in the XML file!");
@@ -185,11 +176,9 @@ get_widgets (EDelegateDialog *edd)
 
 	priv = edd->priv;
 
-#define GW(name) glade_xml_get_widget (priv->xml, name)
-
-	priv->app		= GW ("delegate-dialog");
-	priv->hbox              = GW ("delegate-hbox");
-	priv->addressbook	= GW ("addressbook");
+	priv->app = e_builder_get_widget (priv->builder, "delegate-dialog");
+	priv->hbox = e_builder_get_widget (priv->builder, "delegate-hbox");
+	priv->addressbook = e_builder_get_widget (priv->builder, "addressbook");
 
 	return (priv->app
 		&& priv->hbox
diff --git a/calendar/gui/dialogs/event-page.c b/calendar/gui/dialogs/event-page.c
index 4624c44..12a23ba 100644
--- a/calendar/gui/dialogs/event-page.c
+++ b/calendar/gui/dialogs/event-page.c
@@ -36,17 +36,19 @@
 #include <libedataserverui/e-category-completion.h>
 #include <libedataserverui/e-source-combo-box.h>
 #include "common/authentication.h"
-#include "e-util/e-categories-config.h"
-#include "e-util/e-dialog-widgets.h"
 #include "misc/e-dateedit.h"
 #include "misc/e-send-options.h"
 #include "misc/e-buffer-tagger.h"
 #include <libecal/e-cal-time-util.h>
 #include "../calendar-config.h"
 #include "../e-timezone-entry.h"
-#include <e-util/e-dialog-utils.h>
-#include <e-util/e-dialog-widgets.h>
-#include <e-util/e-util-private.h>
+
+#include "e-util/e-util.h"
+#include "e-util/e-categories-config.h"
+#include "e-util/e-dialog-utils.h"
+#include "e-util/e-dialog-widgets.h"
+#include "e-util/e-dialog-widgets.h"
+#include "e-util/e-util-private.h"
 
 #include "../e-meeting-attendee.h"
 #include "../e-meeting-store.h"
@@ -92,10 +94,9 @@ static const gint alarm_map_without_user_time[] = {
 
 /* Private part of the EventPage structure */
 struct _EventPagePrivate {
-	/* Glade XML data */
-	GladeXML *xml;
+	GtkBuilder *builder;
 
-	/* Widgets from the Glade file */
+	/* Widgets from the UI file */
 	GtkWidget *main;
 
 	/* Generic informative messages placeholder */
@@ -228,9 +229,9 @@ event_page_dispose (GObject *object)
 		priv->main = NULL;
 	}
 
-	if (priv->xml != NULL) {
-		g_object_unref (priv->xml);
-		priv->xml = NULL;
+	if (priv->builder != NULL) {
+		g_object_unref (priv->builder);
+		priv->builder = NULL;
 	}
 
 	if (priv->alarm_list_store != NULL) {
@@ -2113,7 +2114,7 @@ get_widgets (EventPage *epage)
 
 	priv = epage->priv;
 
-#define GW(name) glade_xml_get_widget (priv->xml, name)
+#define GW(name) e_builder_get_widget (priv->builder, name)
 
 	editor = comp_editor_page_get_editor (page);
 
@@ -3049,23 +3050,13 @@ event_page_construct (EventPage *epage, EMeetingStore *model)
 	EventPagePrivate *priv;
 	EIterator *it;
 	EAccount *a;
-	gchar *gladefile;
 
 	priv = epage->priv;
 	g_object_ref (model);
 	priv->model = model;
 
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      "event-page.glade",
-				      NULL);
-	priv->xml = glade_xml_new (gladefile, NULL, NULL);
-	g_free (gladefile);
-
-	if (!priv->xml) {
-		g_message ("event_page_construct(): "
-			   "Could not load the Glade XML file!");
-		return NULL;
-	}
+	priv->builder = gtk_builder_new ();
+	e_load_ui_builder_definition (priv->builder, "event-page.ui");
 
 	if (!get_widgets (epage)) {
 		g_message ("event_page_construct(): "
diff --git a/calendar/gui/dialogs/memo-page.c b/calendar/gui/dialogs/memo-page.c
index 38f9dd1..0954ee0 100644
--- a/calendar/gui/dialogs/memo-page.c
+++ b/calendar/gui/dialogs/memo-page.c
@@ -41,11 +41,13 @@
 #include <widgets/misc/e-dateedit.h>
 #include "misc/e-buffer-tagger.h"
 
-#include "common/authentication.h"
-#include "e-util/e-dialog-widgets.h"
-#include <e-util/e-dialog-utils.h>
+#include "e-util/e-util.h"
 #include "e-util/e-categories-config.h"
+#include "e-util/e-dialog-utils.h"
+#include "e-util/e-dialog-widgets.h"
 #include "e-util/e-util-private.h"
+
+#include "common/authentication.h"
 #include "../calendar-config.h"
 #include "comp-editor.h"
 #include "comp-editor-util.h"
@@ -58,10 +60,9 @@
 
 /* Private part of the MemoPage structure */
 struct _MemoPagePrivate {
-	/* Glade XML data */
-	GladeXML *xml;
+	GtkBuilder *builder;
 
-	/* Widgets from the Glade file */
+	/* Widgets from the UI file */
 	GtkWidget *main;
 
 	GtkWidget *memo_content;
@@ -160,9 +161,9 @@ memo_page_finalize (GObject *object)
 		priv->main = NULL;
 	}
 
-	if (priv->xml) {
-		g_object_unref (priv->xml);
-		priv->xml = NULL;
+	if (priv->builder) {
+		g_object_unref (priv->builder);
+		priv->builder = NULL;
 	}
 
 	g_free (priv->subscriber_info_text);
@@ -769,7 +770,7 @@ get_widgets (MemoPage *mpage)
 
 	priv = mpage->priv;
 
-#define GW(name) glade_xml_get_widget (priv->xml, name)
+#define GW(name) e_builder_get_widget (priv->builder, name)
 
 	priv->main = GW ("memo-page");
 	if (!priv->main) {
@@ -1115,23 +1116,13 @@ memo_page_construct (MemoPage *mpage)
 	CompEditor *editor;
 	CompEditorFlags flags;
 	EIterator *it;
-	gchar *gladefile;
 	EAccount *a;
 
 	editor = comp_editor_page_get_editor (COMP_EDITOR_PAGE (mpage));
 	flags = comp_editor_get_flags (editor);
 
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      "memo-page.glade",
-				      NULL);
-	priv->xml = glade_xml_new (gladefile, NULL, NULL);
-	g_free (gladefile);
-
-	if (!priv->xml) {
-		g_message ("memo_page_construct(): "
-			   "Could not load the Glade XML file!");
-		return NULL;
-	}
+	priv->builder = gtk_builder_new ();
+	e_load_ui_builder_definition (priv->builder, "memo-page.ui");
 
 	if (!get_widgets (mpage)) {
 		g_message ("memo_page_construct(): "
diff --git a/calendar/gui/dialogs/recurrence-page.c b/calendar/gui/dialogs/recurrence-page.c
index 322dcd1..448ba75 100644
--- a/calendar/gui/dialogs/recurrence-page.c
+++ b/calendar/gui/dialogs/recurrence-page.c
@@ -33,9 +33,6 @@
 #include <gtk/gtk.h>
 #include <glib/gi18n.h>
 #include <libedataserver/e-time-utils.h>
-#include <e-util/e-binding.h>
-#include <e-util/e-dialog-widgets.h>
-#include <e-util/e-util-private.h>
 #include <misc/e-dateedit.h>
 #include <libecal/e-cal-recur.h>
 #include <libecal/e-cal-time-util.h>
@@ -46,6 +43,11 @@
 #include "../e-date-time-list.h"
 #include "recurrence-page.h"
 
+#include "e-util/e-util.h"
+#include "e-util/e-binding.h"
+#include "e-util/e-dialog-widgets.h"
+#include "e-util/e-util-private.h"
+
 #define RECURRENCE_PAGE_GET_PRIVATE(obj) \
 	(G_TYPE_INSTANCE_GET_PRIVATE \
 	((obj), TYPE_RECURRENCE_PAGE, RecurrencePagePrivate))
@@ -135,10 +137,9 @@ struct _RecurrencePagePrivate {
 	/* Component we use to expand the recurrence rules for the preview */
 	ECalComponent *comp;
 
-	/* Glade XML data */
-	GladeXML *xml;
+	GtkBuilder *builder;
 
-	/* Widgets from the Glade file */
+	/* Widgets from the UI file */
 	GtkWidget *main;
 
 	GtkWidget *recurs;
@@ -306,9 +307,9 @@ recurrence_page_dispose (GObject *object)
 		priv->main = NULL;
 	}
 
-	if (priv->xml != NULL) {
-		g_object_unref (priv->xml);
-		priv->xml = NULL;
+	if (priv->builder != NULL) {
+		g_object_unref (priv->builder);
+		priv->builder = NULL;
 	}
 
 	if (priv->comp != NULL) {
@@ -1988,7 +1989,7 @@ get_widgets (RecurrencePage *rpage)
 
 	priv = rpage->priv;
 
-#define GW(name) glade_xml_get_widget (priv->xml, name)
+#define GW(name) e_builder_get_widget (priv->builder, name)
 
 	priv->main = GW ("recurrence-page");
 	if (!priv->main)
@@ -2367,21 +2368,11 @@ recurrence_page_construct (RecurrencePage *rpage)
 {
 	RecurrencePagePrivate *priv = rpage->priv;
 	CompEditor *editor;
-	gchar *gladefile;
 
 	editor = comp_editor_page_get_editor (COMP_EDITOR_PAGE (rpage));
 
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      "recurrence-page.glade",
-				      NULL);
-	priv->xml = glade_xml_new (gladefile, NULL, NULL);
-	g_free (gladefile);
-
-	if (!priv->xml) {
-		g_message ("recurrence_page_construct(): "
-			   "Could not load the Glade XML file!");
-		return NULL;
-	}
+	priv->builder = gtk_builder_new ();
+	e_load_ui_builder_definition (priv->builder, "recurrence-page.ui");
 
 	if (!get_widgets (rpage)) {
 		g_message ("recurrence_page_construct(): "
diff --git a/calendar/gui/dialogs/schedule-page.c b/calendar/gui/dialogs/schedule-page.c
index 78bcd7a..4c2b5cf 100644
--- a/calendar/gui/dialogs/schedule-page.c
+++ b/calendar/gui/dialogs/schedule-page.c
@@ -48,10 +48,9 @@
 
 /* Private part of the SchedulePage structure */
 struct _SchedulePagePrivate {
-	/* Glade XML data */
-	GladeXML *xml;
+	GtkBuilder *builder;
 
-	/* Widgets from the Glade file */
+	/* Widgets from the UI file */
 	GtkWidget *main;
 
 	/* Model */
@@ -88,9 +87,9 @@ schedule_page_dispose (GObject *object)
 		priv->main = NULL;
 	}
 
-	if (priv->xml != NULL) {
-		g_object_unref (priv->xml);
-		priv->xml = NULL;
+	if (priv->builder != NULL) {
+		g_object_unref (priv->builder);
+		priv->builder = NULL;
 	}
 
 	if (priv->model != NULL) {
@@ -315,7 +314,7 @@ get_widgets (SchedulePage *spage)
 
 	priv = spage->priv;
 
-#define GW(name) glade_xml_get_widget (priv->xml, name)
+#define GW(name) e_builder_get_widget (priv->builder, name)
 
 	priv->main = GW ("schedule-page");
 	if (!priv->main)
@@ -388,23 +387,13 @@ schedule_page_construct (SchedulePage *spage, EMeetingStore *ems)
 	EShellSettings *shell_settings;
 	EShell *shell;
 	CompEditor *editor;
-	gchar *gladefile;
 
 	editor = comp_editor_page_get_editor (COMP_EDITOR_PAGE (spage));
 	shell = comp_editor_get_shell (editor);
 	shell_settings = e_shell_get_shell_settings (shell);
 
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      "schedule-page.glade",
-				      NULL);
-	priv->xml = glade_xml_new (gladefile, NULL, NULL);
-	g_free (gladefile);
-
-	if (!priv->xml) {
-		g_message ("schedule_page_construct(): "
-			   "Could not load the Glade XML file!");
-		return NULL;
-	}
+	priv->builder = gtk_builder_new ();
+	e_load_ui_builder_definition (priv->builder, "schedule-page.ui");
 
 	if (!get_widgets (spage)) {
 		g_message ("schedule_page_construct(): "
diff --git a/calendar/gui/dialogs/task-details-page.c b/calendar/gui/dialogs/task-details-page.c
index 67115e3..09cef42 100644
--- a/calendar/gui/dialogs/task-details-page.c
+++ b/calendar/gui/dialogs/task-details-page.c
@@ -33,22 +33,23 @@
 #include <glib/gi18n.h>
 #include <misc/e-dateedit.h>
 #include <misc/e-url-entry.h>
-#include "e-util/e-dialog-widgets.h"
-#include "e-util/e-util-private.h"
 #include "../calendar-config.h"
 #include "../e-timezone-entry.h"
 #include "comp-editor-util.h"
 #include "task-details-page.h"
 
+#include "e-util/e-util.h"
+#include "e-util/e-dialog-widgets.h"
+#include "e-util/e-util-private.h"
+
 #define TASK_DETAILS_PAGE_GET_PRIVATE(obj) \
 	(G_TYPE_INSTANCE_GET_PRIVATE \
 	((obj), TYPE_TASK_DETAILS_PAGE, TaskDetailsPagePrivate))
 
 struct _TaskDetailsPagePrivate {
-	/* Glade XML data */
-	GladeXML *xml;
+	GtkBuilder *builder;
 
-	/* Widgets from the Glade file */
+	/* Widgets from the UI file */
 	GtkWidget *main;
 
 	GtkWidget *status_combo;
@@ -107,9 +108,9 @@ task_details_page_dispose (GObject *object)
 		priv->main = NULL;
 	}
 
-	if (priv->xml != NULL) {
-		g_object_unref (priv->xml);
-		priv->xml = NULL;
+	if (priv->builder != NULL) {
+		g_object_unref (priv->builder);
+		priv->builder = NULL;
 	}
 
 	/* Chain up to parent's dispose() method. */
@@ -450,7 +451,7 @@ get_widgets (TaskDetailsPage *tdpage)
 
 	priv = tdpage->priv;
 
-#define GW(name) glade_xml_get_widget (priv->xml, name)
+#define GW(name) e_builder_get_widget (priv->builder, name)
 
 	priv->main = GW ("task-details-page");
 	if (!priv->main)
@@ -719,21 +720,11 @@ task_details_page_construct (TaskDetailsPage *tdpage)
 {
 	TaskDetailsPagePrivate *priv = tdpage->priv;
 	CompEditor *editor;
-	gchar *gladefile;
 
 	editor = comp_editor_page_get_editor (COMP_EDITOR_PAGE (tdpage));
 
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      "task-details-page.glade",
-				      NULL);
-	priv->xml = glade_xml_new (gladefile, NULL, NULL);
-	g_free (gladefile);
-
-	if (!priv->xml) {
-		g_message ("task_details_page_construct(): "
-			   "Could not load the Glade XML file!");
-		return NULL;
-	}
+	priv->builder = gtk_builder_new ();
+	e_load_ui_builder_definition (priv->builder, "task-details-page.ui");
 
 	if (!get_widgets (tdpage)) {
 		g_message ("task_details_page_construct(): "
diff --git a/calendar/gui/dialogs/task-page.c b/calendar/gui/dialogs/task-page.c
index 73bb1c6..2b3de6a 100644
--- a/calendar/gui/dialogs/task-page.c
+++ b/calendar/gui/dialogs/task-page.c
@@ -39,9 +39,6 @@
 #include "misc/e-buffer-tagger.h"
 #include <e-util/e-dialog-utils.h>
 #include "common/authentication.h"
-#include "e-util/e-dialog-widgets.h"
-#include "e-util/e-categories-config.h"
-#include "e-util/e-util-private.h"
 #include "../e-timezone-entry.h"
 #include "../calendar-config.h"
 #include "comp-editor.h"
@@ -49,6 +46,11 @@
 #include "e-send-options-utils.h"
 #include "task-page.h"
 
+#include "e-util/e-util.h"
+#include "e-util/e-dialog-widgets.h"
+#include "e-util/e-categories-config.h"
+#include "e-util/e-util-private.h"
+
 #include "../e-meeting-attendee.h"
 #include "../e-meeting-store.h"
 #include "../e-meeting-list-view.h"
@@ -59,10 +61,9 @@
 
 /* Private part of the TaskPage structure */
 struct _TaskPagePrivate {
-	/* Glade XML data */
-	GladeXML *xml;
+	GtkBuilder *builder;
 
-	/* Widgets from the Glade file */
+	/* Widgets from the UI file */
 	GtkWidget *main;
 
 	EAccountList *accounts;
@@ -159,9 +160,9 @@ task_page_dispose (GObject *object)
 		priv->main = NULL;
 	}
 
-	if (priv->xml != NULL) {
-		g_object_unref (priv->xml);
-		priv->xml = NULL;
+	if (priv->builder != NULL) {
+		g_object_unref (priv->builder);
+		priv->builder = NULL;
 	}
 
 	if (priv->sod != NULL) {
@@ -1311,9 +1312,7 @@ get_widgets (TaskPage *tpage)
 
 	priv = tpage->priv;
 
-#define GW(name) glade_xml_get_widget (priv->xml, name)
-
-	priv->main = GW ("task-page");
+	priv->main = e_builder_get_widget (priv->builder, "task-page");
 	if (!priv->main)
 		return FALSE;
 
@@ -1327,37 +1326,37 @@ get_widgets (TaskPage *tpage)
 	g_object_ref (priv->main);
 	gtk_container_remove (GTK_CONTAINER (priv->main->parent), priv->main);
 
-	priv->info_hbox = GW ("generic-info");
-	priv->info_icon = GW ("generic-info-image");
-	priv->info_string = GW ("generic-info-msgs");
+	priv->info_hbox = e_builder_get_widget (priv->builder, "generic-info");
+	priv->info_icon = e_builder_get_widget (priv->builder, "generic-info-image");
+	priv->info_string = e_builder_get_widget (priv->builder, "generic-info-msgs");
 
-	priv->summary = GW ("summary");
-	priv->summary_label = GW ("summary-label");
+	priv->summary = e_builder_get_widget (priv->builder, "summary");
+	priv->summary_label = e_builder_get_widget (priv->builder, "summary-label");
 
 	/* Glade's visibility flag doesn't seem to work for custom widgets */
-	priv->due_date = GW ("due-date");
+	priv->due_date = e_builder_get_widget (priv->builder, "due-date");
 	gtk_widget_show (priv->due_date);
-	priv->start_date = GW ("start-date");
+	priv->start_date = e_builder_get_widget (priv->builder, "start-date");
 	gtk_widget_show (priv->start_date);
 
-	priv->timezone = GW ("timezone");
-	priv->timezone_label = GW ("timezone-label");
-	priv->attendees_label = GW ("attendees-label");
-	priv->description = GW ("description");
-	priv->categories_btn = GW ("categories-button");
-	priv->categories = GW ("categories");
+	priv->timezone = e_builder_get_widget (priv->builder, "timezone");
+	priv->timezone_label = e_builder_get_widget (priv->builder, "timezone-label");
+	priv->attendees_label = e_builder_get_widget (priv->builder, "attendees-label");
+	priv->description = e_builder_get_widget (priv->builder, "description");
+	priv->categories_btn = e_builder_get_widget (priv->builder, "categories-button");
+	priv->categories = e_builder_get_widget (priv->builder, "categories");
 
-	priv->organizer = GW ("organizer");
+	priv->organizer = e_builder_get_widget (priv->builder, "organizer");
 	gtk_list_store_clear (GTK_LIST_STORE (gtk_combo_box_get_model (GTK_COMBO_BOX (priv->organizer))));
 
-	priv->invite = GW ("invite");
-	priv->add = GW ("add-attendee");
-	priv->edit = GW ("edit-attendee");
-	priv->remove = GW ("remove-attendee");
-	priv->list_box = GW ("list-box");
-	priv->calendar_label = GW ("group-label");
-	priv->attendee_box = GW ("attendee-box");
-	priv->org_cal_label = GW ("org-task-label");
+	priv->invite = e_builder_get_widget (priv->builder, "invite");
+	priv->add = e_builder_get_widget (priv->builder, "add-attendee");
+	priv->edit = e_builder_get_widget (priv->builder, "edit-attendee");
+	priv->remove = e_builder_get_widget (priv->builder, "remove-attendee");
+	priv->list_box = e_builder_get_widget (priv->builder, "list-box");
+	priv->calendar_label = e_builder_get_widget (priv->builder, "group-label");
+	priv->attendee_box = e_builder_get_widget (priv->builder, "attendee-box");
+	priv->org_cal_label = e_builder_get_widget (priv->builder, "org-task-label");
 
 	priv->list_view = e_meeting_list_view_new (priv->model);
 
@@ -1372,12 +1371,10 @@ get_widgets (TaskPage *tpage)
 	gtk_container_add (GTK_CONTAINER (sw), GTK_WIDGET (priv->list_view));
 	gtk_box_pack_start (GTK_BOX (priv->list_box), sw, TRUE, TRUE, 0);
 
-	priv->source_selector = GW ("source");
+	priv->source_selector = e_builder_get_widget (priv->builder, "source");
 
 	gtk_label_set_mnemonic_widget (GTK_LABEL (priv->calendar_label), priv->source_selector);
 
-#undef GW
-
 	completion = e_category_completion_new ();
 	gtk_entry_set_completion (GTK_ENTRY (priv->categories), completion);
 	g_object_unref (completion);
@@ -1968,24 +1965,14 @@ task_page_construct (TaskPage *tpage, EMeetingStore *model, ECal *client)
 	TaskPagePrivate *priv;
 	EIterator *it;
 	EAccount *a;
-	gchar *gladefile;
 
 	priv = tpage->priv;
 	g_object_ref (model);
 	priv->model = model;
 	priv->client = client;
 
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      "task-page.glade",
-				      NULL);
-	priv->xml = glade_xml_new (gladefile, NULL, NULL);
-	g_free (gladefile);
-
-	if (!priv->xml) {
-		g_message ("task_page_construct(): "
-			   "Could not load the Glade XML file!");
-		return NULL;
-	}
+	priv->builder = gtk_builder_new ();
+	e_load_ui_builder_definition (priv->builder, "task-page.ui");
 
 	if (!get_widgets (tpage)) {
 		g_message ("task_page_construct(): "
diff --git a/calendar/gui/goto.c b/calendar/gui/goto.c
index ef00d75..fdae6e1 100644
--- a/calendar/gui/goto.c
+++ b/calendar/gui/goto.c
@@ -33,7 +33,7 @@
 
 typedef struct
 {
-	GladeXML *xml;
+	GtkBuilder *builder;
 	GtkWidget *dialog;
 
 	GtkWidget *month_combobox;
@@ -171,7 +171,7 @@ goto_today (GoToDialog *dlg)
 static gboolean
 get_widgets (GoToDialog *dlg)
 {
-#define GW(name) glade_xml_get_widget (dlg->xml, name)
+#define GW(name) e_builder_get_widget (dlg->builder, name)
 
 	dlg->dialog = GW ("goto-dialog");
 
@@ -210,7 +210,6 @@ goto_dialog (GnomeCalendar *gcal)
 	struct icaltimetype tt;
 	icaltimezone *timezone;
 	gint b;
-	gchar *gladefile;
 
 	if (dlg) {
 		return;
@@ -219,16 +218,8 @@ goto_dialog (GnomeCalendar *gcal)
 	dlg = g_new0 (GoToDialog, 1);
 
 	/* Load the content widgets */
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      "goto-dialog.glade",
-				      NULL);
-	dlg->xml = glade_xml_new (gladefile, NULL, NULL);
-	g_free (gladefile);
-	if (!dlg->xml) {
-		g_message ("goto_dialog(): Could not load the Glade XML file!");
-		g_free (dlg);
-		return;
-	}
+	dlg->builder = gtk_builder_new ();
+	e_load_ui_builder_definition (dlg->builder, "goto-dialog.ui");
 
 	if (!get_widgets (dlg)) {
 		g_message ("goto_dialog(): Could not find all widgets in the XML file!");
@@ -274,7 +265,7 @@ goto_dialog (GnomeCalendar *gcal)
 	if (b == 0)
 		goto_today (dlg);
 
-	g_object_unref (dlg->xml);
+	g_object_unref (dlg->builder);
 	g_free (dlg);
 	dlg = NULL;
 }
diff --git a/doc/reference/shell/tmpl/e-util.sgml b/doc/reference/shell/tmpl/e-util.sgml
index 7d2fde1..88a4c60 100644
--- a/doc/reference/shell/tmpl/e-util.sgml
+++ b/doc/reference/shell/tmpl/e-util.sgml
@@ -71,16 +71,6 @@ Miscellaneous Utility Functions
 @Returns: 
 
 
-<!-- ##### FUNCTION e_load_ui_definition ##### -->
-<para>
-
-</para>
-
- ui_manager: 
- basename: 
- Returns: 
-
-
 <!-- ##### FUNCTION e_action_compare_by_label ##### -->
 <para>
 
diff --git a/doc/reference/shell/tmpl/eshell-unused.sgml b/doc/reference/shell/tmpl/eshell-unused.sgml
index 4505a66..b915f5d 100644
--- a/doc/reference/shell/tmpl/eshell-unused.sgml
+++ b/doc/reference/shell/tmpl/eshell-unused.sgml
@@ -1850,6 +1850,15 @@ intelligent
 @revision: 
 @Returns: 
 
+<!-- ##### FUNCTION e_load_ui_definition ##### -->
+<para>
+
+</para>
+
+ ui_manager: 
+ basename: 
+ Returns: 
+
 <!-- ##### FUNCTION e_shell_backend_get_filename ##### -->
 <para>
 
diff --git a/e-util/e-util.c b/e-util/e-util.c
index 310bd47..5164791 100644
--- a/e-util/e-util.c
+++ b/e-util/e-util.c
@@ -281,6 +281,35 @@ e_lookup_action_group (GtkUIManager *ui_manager,
 }
 
 /**
+ * e_load_ui_builder_definition:
+ * @builder: a #GtkBuilder
+ * @basename: basename of the UI definition file
+ *
+ * Loads a UI definition into @builder from Evolution's UI directory.
+ * Failure here is fatal, since the application can't function without
+ * its UI definitions.
+ **/
+void
+e_load_ui_builder_definition (GtkBuilder *builder,
+                              const gchar *basename)
+{
+	gchar *filename;
+	GError *error = NULL;
+
+	g_return_if_fail (GTK_IS_BUILDER (builder));
+	g_return_if_fail (basename != NULL);
+
+	filename = g_build_filename (EVOLUTION_UIDIR, basename, NULL);
+	gtk_builder_add_from_file (builder, filename, &error);
+	g_free (filename);
+
+	if (error != NULL) {
+		g_error ("%s: %s", basename, error->message);
+		g_assert_not_reached ();
+	}
+}
+
+/**
  * e_load_ui_manager_definition:
  * @ui_manager: a #GtkUIManager
  * @basename: basename of the UI definition file
diff --git a/e-util/e-util.h b/e-util/e-util.h
index 59c8ce7..f9a5168 100644
--- a/e-util/e-util.h
+++ b/e-util/e-util.h
@@ -37,6 +37,11 @@
 
 #include <e-util/e-marshal.h>
 
+/* Convenience macro to help migrate from libglade to GtkBuilder.
+ * Use it as a direct replacement for glade_xml_get_widget(). */
+#define e_builder_get_widget(builder, name) \
+	GTK_WIDGET (gtk_builder_get_object ((builder), (name)))
+
 G_BEGIN_DECLS
 
 typedef enum {
@@ -58,6 +63,8 @@ GtkAction *	e_lookup_action			(GtkUIManager *ui_manager,
 						 const gchar *action_name);
 GtkActionGroup *e_lookup_action_group		(GtkUIManager *ui_manager,
 						 const gchar *group_name);
+void		e_load_ui_builder_definition	(GtkBuilder *builder,
+						 const gchar *basename);
 guint		e_load_ui_manager_definition	(GtkUIManager *ui_manager,
 						 const gchar *basename);
 gint		e_action_compare_by_label	(GtkAction *action1,
diff --git a/filter/e-filter-datespec.c b/filter/e-filter-datespec.c
index a60beda..f395bf9 100644
--- a/filter/e-filter-datespec.c
+++ b/filter/e-filter-datespec.c
@@ -34,6 +34,7 @@
 #include <glib/gi18n.h>
 
 #include "e-util/e-error.h"
+#include "e-util/e-util.h"
 #include "e-util/e-util-private.h"
 
 #include "e-filter-datespec.h"
@@ -256,14 +257,13 @@ button_clicked (GtkButton *button, EFilterDatespec *fds)
 	GtkWidget *content_area;
 	GtkWidget *toplevel;
 	GtkDialog *dialog;
-	GladeXML *gui;
-	gchar *filter_glade = g_build_filename (EVOLUTION_UIDIR,
-					       "filter.glade",
-					       NULL);
+	GtkBuilder *builder;
 
-	gui = glade_xml_new (filter_glade, "filter_datespec", NULL);
-	g_free (filter_glade);
-	toplevel = glade_xml_get_widget (gui, "filter_datespec");
+	/* XXX I think we're leaking the GtkBuilder. */
+	builder = gtk_builder_new ();
+	e_load_ui_builder_definition (builder, "filter.ui");
+
+	toplevel = e_builder_get_widget (builder, "filter_datespec");
 
 	dialog = (GtkDialog *) gtk_dialog_new ();
 	gtk_window_set_title ((GtkWindow *) dialog, _("Select a time to compare against"));
@@ -273,12 +273,12 @@ button_clicked (GtkButton *button, EFilterDatespec *fds)
 				NULL);
 	gtk_dialog_set_has_separator (dialog, FALSE);
 
-	p->notebook_type = glade_xml_get_widget (gui, "notebook_type");
-	p->combobox_type = glade_xml_get_widget (gui, "combobox_type");
-	p->calendar_specify = glade_xml_get_widget (gui, "calendar_specify");
-	p->spin_relative = glade_xml_get_widget (gui, "spin_relative");
-	p->combobox_relative = glade_xml_get_widget (gui, "combobox_relative");
-	p->combobox_past_future = glade_xml_get_widget (gui, "combobox_past_future");
+	p->notebook_type = e_builder_get_widget (builder, "notebook_type");
+	p->combobox_type = e_builder_get_widget (builder, "combobox_type");
+	p->calendar_specify = e_builder_get_widget (builder, "calendar_specify");
+	p->spin_relative = e_builder_get_widget (builder, "spin_relative");
+	p->combobox_relative = e_builder_get_widget (builder, "combobox_relative");
+	p->combobox_past_future = e_builder_get_widget (builder, "combobox_past_future");
 
 	set_values (fds);
 
diff --git a/filter/e-rule-editor.c b/filter/e-rule-editor.c
index 59b0d5d..4e64d7f 100644
--- a/filter/e-rule-editor.c
+++ b/filter/e-rule-editor.c
@@ -33,6 +33,7 @@
 
 #include "e-util/e-error.h"
 #include "e-util/e-util-private.h"
+#include "e-util/e-util.h"
 
 #include "e-rule-editor.h"
 
@@ -693,17 +694,14 @@ e_rule_editor_new (ERuleContext *context,
                    const gchar *label)
 {
 	ERuleEditor *editor = (ERuleEditor *) g_object_new (E_TYPE_RULE_EDITOR, NULL);
-	GladeXML *gui;
-	gchar *filter_glade = g_build_filename (EVOLUTION_GLADEDIR,
-					       "filter.glade",
-					       NULL);
-
-	gui = glade_xml_new (filter_glade, "rule_editor", NULL);
-	g_free (filter_glade);
-	e_rule_editor_construct (editor, context, gui, source, label);
-	gtk_widget_hide (glade_xml_get_widget (gui, "label17"));
-	gtk_widget_hide (glade_xml_get_widget (gui, "filter_source_combobox"));
-	g_object_unref (gui);
+	GtkBuilder *builder;
+
+	builder = gtk_builder_new ();
+	e_load_ui_builder_definition (builder, "filter.ui");
+	e_rule_editor_construct (editor, context, builder, source, label);
+	gtk_widget_hide (e_builder_get_widget (builder, "label17"));
+	gtk_widget_hide (e_builder_get_widget (builder, "filter_source_combobox"));
+	g_object_unref (builder);
 
 	return editor;
 }
@@ -856,7 +854,7 @@ rule_editor_treeview_new (gchar *widget_name,
 void
 e_rule_editor_construct (ERuleEditor *editor,
                          ERuleContext *context,
-                         GladeXML *gui,
+                         GtkBuilder *builder,
                          const gchar *source,
                          const gchar *label)
 {
@@ -868,7 +866,7 @@ e_rule_editor_construct (ERuleEditor *editor,
 
 	g_return_if_fail (E_IS_RULE_EDITOR (editor));
 	g_return_if_fail (E_IS_RULE_CONTEXT (context));
-	g_return_if_fail (GLADE_IS_XML (gui));
+	g_return_if_fail (GTK_IS_BUILDER (builder));
 
 	editor->context = g_object_ref (context);
 
@@ -880,22 +878,22 @@ e_rule_editor_construct (ERuleEditor *editor,
 	gtk_widget_realize ((GtkWidget *) editor);
 	gtk_container_set_border_width (GTK_CONTAINER (action_area), 12);
 
-	w = glade_xml_get_widget(gui, "rule_editor");
+	w = e_builder_get_widget(builder, "rule_editor");
 	gtk_box_pack_start (GTK_BOX (content_area), w, TRUE, TRUE, 3);
 
 	for (i = 0; i < BUTTON_LAST; i++) {
-		editor->priv->buttons[i] = (GtkButton *) (w = glade_xml_get_widget (gui, edit_buttons[i].name));
+		editor->priv->buttons[i] = (GtkButton *) (w = e_builder_get_widget (builder, edit_buttons[i].name));
 		g_signal_connect (w, "clicked", edit_buttons[i].func, editor);
 	}
 
-	w = glade_xml_get_widget (gui, "rule_list");
+	w = e_builder_get_widget (builder, "rule_list");
 	editor->list = (GtkTreeView *) g_object_get_data ((GObject *) w, "table");
 	editor->model = (GtkListStore *) g_object_get_data ((GObject *) w, "model");
 
 	g_signal_connect (editor->list, "cursor-changed", G_CALLBACK (cursor_changed), editor);
 	g_signal_connect (editor->list, "row-activated", G_CALLBACK (double_click), editor);
 
-	w = glade_xml_get_widget (gui, "rule_label");
+	w = e_builder_get_widget (builder, "rule_label");
 	tmp = alloca(strlen(label)+8);
 	sprintf(tmp, "<b>%s</b>", label);
 	gtk_label_set_label((GtkLabel *)w, tmp);
diff --git a/filter/e-rule-editor.h b/filter/e-rule-editor.h
index f7f2d2d..2b1a4f2 100644
--- a/filter/e-rule-editor.h
+++ b/filter/e-rule-editor.h
@@ -25,7 +25,6 @@
 #define E_RULE_EDITOR_H
 
 #include <gtk/gtk.h>
-#include <glade/glade.h>
 
 #include "e-rule-context.h"
 #include "e-filter-rule.h"
@@ -109,7 +108,7 @@ ERuleEditor *	e_rule_editor_new		(ERuleContext *context,
 						 const gchar *label);
 void		e_rule_editor_construct		(ERuleEditor *editor,
 						 ERuleContext *context,
-						 GladeXML *gui,
+						 GtkBuilder *builder,
 						 const gchar *source,
 						 const gchar *label);
 void		e_rule_editor_set_source	(ERuleEditor *editor,
diff --git a/mail/em-account-editor.c b/mail/em-account-editor.c
index cc07fbb..572423a 100644
--- a/mail/em-account-editor.c
+++ b/mail/em-account-editor.c
@@ -47,6 +47,7 @@
 #include <gconf/gconf-client.h>
 
 #include "shell/e-shell.h"
+#include "e-util/e-util.h"
 #include "e-util/e-error.h"
 #include "e-util/e-account-utils.h"
 #include "e-util/e-signature-list.h"
@@ -565,34 +566,30 @@ emae_load_text (GtkTextView *view, const gchar *filename)
 static gboolean
 emae_display_license (EMAccountEditor *emae, CamelProvider *prov)
 {
-	GladeXML *xml;
+	GtkBuilder *builder;
 	GtkWidget *w, *dialog;
 	gchar *tmp;
 	GtkResponseType response = GTK_RESPONSE_NONE;
-	gchar *gladefile;
 
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      "mail-dialogs.glade",
-				      NULL);
-	xml = glade_xml_new (gladefile, "license_dialog", NULL);
-	g_free (gladefile);
+	builder = gtk_builder_new ();
+	e_load_ui_builder_definition (builder, "mail-dialogs.ui");
 
-	dialog = glade_xml_get_widget (xml, "license_dialog");
+	dialog = e_builder_get_widget (builder, "license_dialog");
 	gtk_dialog_set_response_sensitive ((GtkDialog *)dialog, GTK_RESPONSE_ACCEPT, FALSE);
 	tmp = g_strdup_printf (_("%s License Agreement"), prov->license);
 	gtk_window_set_title ((GtkWindow *)dialog, tmp);
 	g_free (tmp);
 
-	g_signal_connect (glade_xml_get_widget (xml, "license_checkbutton"),
+	g_signal_connect (e_builder_get_widget (builder, "license_checkbutton"),
 			 "toggled", G_CALLBACK(emae_license_state), dialog);
 
 	tmp = g_strdup_printf (_("\nPlease read carefully the license agreement\n"
 				"for %s displayed below\n"
 				"and tick the check box for accepting it\n"), prov->license);
-	gtk_label_set_text ((GtkLabel *)glade_xml_get_widget (xml, "license_top_label"), tmp);
+	gtk_label_set_text ((GtkLabel *)e_builder_get_widget (builder, "license_top_label"), tmp);
 	g_free (tmp);
 
-	w = glade_xml_get_widget (xml, "license_textview");
+	w = e_builder_get_widget (builder, "license_textview");
 	if (emae_load_text ((GtkTextView *)w, prov->license_file)) {
 		gtk_text_view_set_editable ((GtkTextView *)w, FALSE);
 		response = gtk_dialog_run ((GtkDialog *)dialog);
@@ -602,7 +599,7 @@ emae_display_license (EMAccountEditor *emae, CamelProvider *prov)
 	}
 
 	gtk_widget_destroy (dialog);
-	g_object_unref (xml);
+	g_object_unref (builder);
 
 	return (response == GTK_RESPONSE_ACCEPT);
 }
@@ -711,8 +708,8 @@ emae_auto_detect_free (gpointer key, gpointer value, gpointer user_data)
 static void
 emae_auto_detect (EMAccountEditor *emae)
 {
-	EMAccountEditorPrivate *gui = emae->priv;
-	EMAccountEditorService *service = &gui->source;
+	EMAccountEditorPrivate *priv = emae->priv;
+	EMAccountEditorService *service = &priv->source;
 	GHashTable *auto_detected;
 	GSList *l;
 	CamelProviderConfEntry *entries;
@@ -888,11 +885,11 @@ emae_signature_new (GtkWidget *widget, EMAccountEditor *emae)
 }
 
 static GtkWidget *
-emae_setup_signatures (EMAccountEditor *emae, GladeXML *xml)
+emae_setup_signatures (EMAccountEditor *emae, GtkBuilder *builder)
 {
 	EMAccountEditorPrivate *p = emae->priv;
 	EAccount *account;
-	GtkComboBox *dropdown = (GtkComboBox *)glade_xml_get_widget (xml, "signature_dropdown");
+	GtkComboBox *dropdown = (GtkComboBox *)e_builder_get_widget (builder, "signature_dropdown");
 	GtkCellRenderer *cell = gtk_cell_renderer_text_new ();
 	GtkListStore *store;
 	gint i, active=0;
@@ -952,7 +949,7 @@ emae_setup_signatures (EMAccountEditor *emae, GladeXML *xml)
 	g_signal_connect (dropdown, "changed", G_CALLBACK(emae_signaturetype_changed), emae);
 	gtk_widget_set_sensitive ((GtkWidget *)dropdown, e_account_writable (account, E_ACCOUNT_ID_SIGNATURE));
 
-	button = glade_xml_get_widget (xml, "sigAddNew");
+	button = e_builder_get_widget (builder, "sigAddNew");
 	g_signal_connect (button, "clicked", G_CALLBACK(emae_signature_new), emae);
 	gtk_widget_set_sensitive (button,
 				 gconf_client_key_is_writable (mail_config_get_gconf_client (),
@@ -982,10 +979,10 @@ emae_receipt_policy_changed (GtkComboBox *dropdown, EMAccountEditor *emae)
 }
 
 static GtkWidget *
-emae_setup_receipt_policy (EMAccountEditor *emae, GladeXML *xml)
+emae_setup_receipt_policy (EMAccountEditor *emae, GtkBuilder *builder)
 {
 	EAccount *account;
-	GtkComboBox *dropdown = (GtkComboBox *)glade_xml_get_widget (xml, "receipt_policy_dropdown");
+	GtkComboBox *dropdown = (GtkComboBox *)e_builder_get_widget (builder, "receipt_policy_dropdown");
 	GtkListStore *store;
 	gint i = 0, active = 0;
 	GtkTreeIter iter;
@@ -1040,14 +1037,14 @@ emae_account_entry_changed (GtkEntry *entry, EMAccountEditor *emae)
 }
 
 static GtkEntry *
-emae_account_entry (EMAccountEditor *emae, const gchar *name, gint item, GladeXML *xml)
+emae_account_entry (EMAccountEditor *emae, const gchar *name, gint item, GtkBuilder *builder)
 {
 	EAccount *account;
 	GtkEntry *entry;
 	const gchar *text;
 
 	account = em_account_editor_get_modified_account (emae);
-	entry = (GtkEntry *)glade_xml_get_widget (xml, name);
+	entry = (GtkEntry *)e_builder_get_widget (builder, name);
 	text = e_account_get_string (account, item);
 	if (text)
 		gtk_entry_set_text (entry, text);
@@ -1097,11 +1094,11 @@ emae_account_toggle_widget (EMAccountEditor *emae, GtkToggleButton *toggle, gint
 }
 
 static GtkToggleButton *
-emae_account_toggle (EMAccountEditor *emae, const gchar *name, gint item, GladeXML *xml)
+emae_account_toggle (EMAccountEditor *emae, const gchar *name, gint item, GtkBuilder *builder)
 {
 	GtkToggleButton *toggle;
 
-	toggle = (GtkToggleButton *)glade_xml_get_widget (xml, name);
+	toggle = (GtkToggleButton *)e_builder_get_widget (builder, name);
 	emae_account_toggle_widget (emae, toggle, item);
 
 	return toggle;
@@ -1151,7 +1148,7 @@ emae_account_spinint (EMAccountEditor *emae, const gchar *name, gint item)
 {
 	GtkSpinButton *spin;
 
-	spin = (GtkSpinButton *)glade_xml_get_widget (emae->priv->xml, name);
+	spin = (GtkSpinButton *)e_builder_get_widget (emae->priv->xml, name);
 	emae_account_spinint_widget (emae, spin, item);
 
 	return spin;
@@ -1173,14 +1170,14 @@ emae_account_folder_changed (EMFolderSelectionButton *folder, EMAccountEditor *e
 }
 
 static EMFolderSelectionButton *
-emae_account_folder (EMAccountEditor *emae, const gchar *name, gint item, gint deffolder, GladeXML *xml)
+emae_account_folder (EMAccountEditor *emae, const gchar *name, gint item, gint deffolder, GtkBuilder *builder)
 {
 	EAccount *account;
 	EMFolderSelectionButton *folder;
 	const gchar *uri;
 
 	account = em_account_editor_get_modified_account (emae);
-	folder = (EMFolderSelectionButton *)glade_xml_get_widget (xml, name);
+	folder = (EMFolderSelectionButton *)e_builder_get_widget (builder, name);
 	uri = e_account_get_string (account, item);
 	if (uri) {
 		gchar *tmp = em_uri_to_camel (uri);
@@ -1208,35 +1205,35 @@ emae_account_folder (EMAccountEditor *emae, const gchar *name, gint item, gint d
 static void
 smime_changed (EMAccountEditor *emae)
 {
-	EMAccountEditorPrivate *gui = emae->priv;
+	EMAccountEditorPrivate *priv = emae->priv;
 	gint act;
 	const gchar *tmp;
 
-	tmp = gtk_entry_get_text (gui->smime_sign_key);
+	tmp = gtk_entry_get_text (priv->smime_sign_key);
 	act = tmp && tmp[0];
-	gtk_widget_set_sensitive ((GtkWidget *)gui->smime_sign_key_clear, act);
-	gtk_widget_set_sensitive ((GtkWidget *)gui->smime_sign_default, act);
+	gtk_widget_set_sensitive ((GtkWidget *)priv->smime_sign_key_clear, act);
+	gtk_widget_set_sensitive ((GtkWidget *)priv->smime_sign_default, act);
 	if (!act)
-		gtk_toggle_button_set_active (gui->smime_sign_default, FALSE);
+		gtk_toggle_button_set_active (priv->smime_sign_default, FALSE);
 
-	tmp = gtk_entry_get_text (gui->smime_encrypt_key);
+	tmp = gtk_entry_get_text (priv->smime_encrypt_key);
 	act = tmp && tmp[0];
-	gtk_widget_set_sensitive ((GtkWidget *)gui->smime_encrypt_key_clear, act);
-	gtk_widget_set_sensitive ((GtkWidget *)gui->smime_encrypt_default, act);
-	gtk_widget_set_sensitive ((GtkWidget *)gui->smime_encrypt_to_self, act);
+	gtk_widget_set_sensitive ((GtkWidget *)priv->smime_encrypt_key_clear, act);
+	gtk_widget_set_sensitive ((GtkWidget *)priv->smime_encrypt_default, act);
+	gtk_widget_set_sensitive ((GtkWidget *)priv->smime_encrypt_to_self, act);
 	if (!act) {
-		gtk_toggle_button_set_active (gui->smime_encrypt_default, FALSE);
-		gtk_toggle_button_set_active (gui->smime_encrypt_to_self, FALSE);
+		gtk_toggle_button_set_active (priv->smime_encrypt_default, FALSE);
+		gtk_toggle_button_set_active (priv->smime_encrypt_to_self, FALSE);
 	}
 }
 
 static void
 smime_sign_key_selected (GtkWidget *dialog, const gchar *key, EMAccountEditor *emae)
 {
-	EMAccountEditorPrivate *gui = emae->priv;
+	EMAccountEditorPrivate *priv = emae->priv;
 
 	if (key != NULL) {
-		gtk_entry_set_text (gui->smime_sign_key, key);
+		gtk_entry_set_text (priv->smime_sign_key, key);
 		smime_changed (emae);
 	}
 
@@ -1246,10 +1243,10 @@ smime_sign_key_selected (GtkWidget *dialog, const gchar *key, EMAccountEditor *e
 static void
 smime_sign_key_select (GtkWidget *button, EMAccountEditor *emae)
 {
-	EMAccountEditorPrivate *gui = emae->priv;
+	EMAccountEditorPrivate *priv = emae->priv;
 	GtkWidget *w;
 
-	w = e_cert_selector_new (E_CERT_SELECTOR_SIGNER, gtk_entry_get_text (gui->smime_sign_key));
+	w = e_cert_selector_new (E_CERT_SELECTOR_SIGNER, gtk_entry_get_text (priv->smime_sign_key));
 	gtk_window_set_modal ((GtkWindow *)w, TRUE);
 	gtk_window_set_transient_for ((GtkWindow *)w, (GtkWindow *)gtk_widget_get_toplevel (button));
 	g_signal_connect (w, "selected", G_CALLBACK(smime_sign_key_selected), emae);
@@ -1259,19 +1256,19 @@ smime_sign_key_select (GtkWidget *button, EMAccountEditor *emae)
 static void
 smime_sign_key_clear (GtkWidget *w, EMAccountEditor *emae)
 {
-	EMAccountEditorPrivate *gui = emae->priv;
+	EMAccountEditorPrivate *priv = emae->priv;
 
-	gtk_entry_set_text (gui->smime_sign_key, "");
+	gtk_entry_set_text (priv->smime_sign_key, "");
 	smime_changed (emae);
 }
 
 static void
 smime_encrypt_key_selected (GtkWidget *dialog, const gchar *key, EMAccountEditor *emae)
 {
-	EMAccountEditorPrivate *gui = emae->priv;
+	EMAccountEditorPrivate *priv = emae->priv;
 
 	if (key != NULL) {
-		gtk_entry_set_text (gui->smime_encrypt_key, key);
+		gtk_entry_set_text (priv->smime_encrypt_key, key);
 		smime_changed (emae);
 	}
 
@@ -1281,10 +1278,10 @@ smime_encrypt_key_selected (GtkWidget *dialog, const gchar *key, EMAccountEditor
 static void
 smime_encrypt_key_select (GtkWidget *button, EMAccountEditor *emae)
 {
-	EMAccountEditorPrivate *gui = emae->priv;
+	EMAccountEditorPrivate *priv = emae->priv;
 	GtkWidget *w;
 
-	w = e_cert_selector_new (E_CERT_SELECTOR_SIGNER, gtk_entry_get_text (gui->smime_encrypt_key));
+	w = e_cert_selector_new (E_CERT_SELECTOR_SIGNER, gtk_entry_get_text (priv->smime_encrypt_key));
 	gtk_window_set_modal ((GtkWindow *)w, TRUE);
 	gtk_window_set_transient_for ((GtkWindow *)w, (GtkWindow *)gtk_widget_get_toplevel (button));
 	g_signal_connect (w, "selected", G_CALLBACK(smime_encrypt_key_selected), emae);
@@ -1294,9 +1291,9 @@ smime_encrypt_key_select (GtkWidget *button, EMAccountEditor *emae)
 static void
 smime_encrypt_key_clear (GtkWidget *w, EMAccountEditor *emae)
 {
-	EMAccountEditorPrivate *gui = emae->priv;
+	EMAccountEditorPrivate *priv = emae->priv;
 
-	gtk_entry_set_text (gui->smime_encrypt_key, "");
+	gtk_entry_set_text (priv->smime_encrypt_key, "");
 	smime_changed (emae);
 }
 #endif
@@ -1953,7 +1950,7 @@ static void emae_check_authtype (GtkWidget *w, EMAccountEditorService *service)
 }
 
 static void
-emae_setup_service (EMAccountEditor *emae, EMAccountEditorService *service, GladeXML *xml)
+emae_setup_service (EMAccountEditor *emae, EMAccountEditorService *service, GtkBuilder *builder)
 {
 	EAccount *account;
 	struct _service_info *info = &emae_service_info[service->type];
@@ -1966,23 +1963,23 @@ emae_setup_service (EMAccountEditor *emae, EMAccountEditorService *service, Glad
 	uri = e_account_get_string (account, info->account_uri_key);
 
 	service->provider = uri?camel_provider_get (uri, NULL):NULL;
-	service->frame = glade_xml_get_widget (xml, info->frame);
-	service->container = glade_xml_get_widget (xml, info->container);
-	service->description = GTK_LABEL (glade_xml_get_widget (xml, info->description));
-	service->hostname = GTK_ENTRY (glade_xml_get_widget (xml, info->hostname));
-	service->hostlabel = (GtkLabel *)glade_xml_get_widget (xml, info->hostlabel);
-	service->username = GTK_ENTRY (glade_xml_get_widget (xml, info->username));
-	service->userlabel = (GtkLabel *)glade_xml_get_widget (xml, info->userlabel);
+	service->frame = e_builder_get_widget (builder, info->frame);
+	service->container = e_builder_get_widget (builder, info->container);
+	service->description = GTK_LABEL (e_builder_get_widget (builder, info->description));
+	service->hostname = GTK_ENTRY (e_builder_get_widget (builder, info->hostname));
+	service->hostlabel = (GtkLabel *)e_builder_get_widget (builder, info->hostlabel);
+	service->username = GTK_ENTRY (e_builder_get_widget (builder, info->username));
+	service->userlabel = (GtkLabel *)e_builder_get_widget (builder, info->userlabel);
 	if (info->pathentry) {
-		service->pathlabel = (GtkLabel *)glade_xml_get_widget (xml, info->pathlabel);
-		service->pathentry = glade_xml_get_widget (xml, info->pathentry);
+		service->pathlabel = (GtkLabel *)e_builder_get_widget (builder, info->pathlabel);
+		service->pathentry = e_builder_get_widget (builder, info->pathentry);
 	}
 
-	service->ssl_frame = glade_xml_get_widget (xml, info->security_frame);
+	service->ssl_frame = e_builder_get_widget (builder, info->security_frame);
 	gtk_widget_hide (service->ssl_frame);
-	service->ssl_hbox = glade_xml_get_widget (xml, info->ssl_hbox);
-	service->use_ssl = (GtkComboBox *)glade_xml_get_widget (xml, info->use_ssl);
-	service->no_ssl = glade_xml_get_widget (xml, info->ssl_disabled);
+	service->ssl_hbox = e_builder_get_widget (builder, info->ssl_hbox);
+	service->use_ssl = (GtkComboBox *)e_builder_get_widget (builder, info->use_ssl);
+	service->no_ssl = e_builder_get_widget (builder, info->ssl_disabled);
 
 	/* configure ui for current settings */
 	if (url->host) {
@@ -2028,18 +2025,18 @@ emae_setup_service (EMAccountEditor *emae, EMAccountEditorService *service, Glad
 
 	g_signal_connect (service->use_ssl, "changed", G_CALLBACK(emae_ssl_changed), service);
 
-	service->auth_frame = glade_xml_get_widget (xml, info->auth_frame);
-	service->remember = emae_account_toggle (emae, info->remember_password, info->save_passwd_key, xml);
-	service->check_supported = (GtkButton *)glade_xml_get_widget (xml, info->authtype_check);
-	service->authtype = (GtkComboBox *)glade_xml_get_widget (xml, info->authtype);
+	service->auth_frame = e_builder_get_widget (builder, info->auth_frame);
+	service->remember = emae_account_toggle (emae, info->remember_password, info->save_passwd_key, builder);
+	service->check_supported = (GtkButton *)e_builder_get_widget (builder, info->authtype_check);
+	service->authtype = (GtkComboBox *)e_builder_get_widget (builder, info->authtype);
 	/* old authtype will be destroyed when we exit */
 	service->auth_changed_id = 0;
-	service->providers = (GtkComboBox *)glade_xml_get_widget (xml, info->type_dropdown);
+	service->providers = (GtkComboBox *)e_builder_get_widget (builder, info->type_dropdown);
 	emae_refresh_providers (emae, service);
 	emae_refresh_authtype (emae, service);
 
 	if (info->needs_auth) {
-		service->needs_auth = (GtkToggleButton *)glade_xml_get_widget (xml, info->needs_auth);
+		service->needs_auth = (GtkToggleButton *)e_builder_get_widget (builder, info->needs_auth);
 		gtk_toggle_button_set_active (service->needs_auth, url->authmech != NULL);
 		g_signal_connect (service->needs_auth, "toggled", G_CALLBACK(emae_needs_auth), service);
 		emae_needs_auth (service->needs_auth, service);
@@ -2135,7 +2132,7 @@ static struct {
 
 /* its a bit obtuse, but its simple */
 static void
-emae_queue_widgets (EMAccountEditor *emae, GladeXML *xml, const gchar *first, ...)
+emae_queue_widgets (EMAccountEditor *emae, GtkBuilder *builder, const gchar *first, ...)
 {
 	gint i = 0;
 	va_list ap;
@@ -2143,7 +2140,7 @@ emae_queue_widgets (EMAccountEditor *emae, GladeXML *xml, const gchar *first, ..
 	va_start (ap, first);
 	while (first) {
 		emae->priv->widgets_name[i] = first;
-		emae->priv->widgets[i++] = glade_xml_get_widget (xml, first);
+		emae->priv->widgets[i++] = e_builder_get_widget (builder, first);
 		first = va_arg (ap, const gchar *);
 	}
 	va_end (ap);
@@ -2158,51 +2155,47 @@ static GtkWidget *
 emae_identity_page (EConfig *ec, EConfigItem *item, GtkWidget *parent, GtkWidget *old, gpointer data)
 {
 	EMAccountEditor *emae = data;
-	EMAccountEditorPrivate *gui = emae->priv;
+	EMAccountEditorPrivate *priv = emae->priv;
 	EAccount *account;
 	gint i;
 	GtkWidget *w;
-	GladeXML *xml;
-	gchar *gladefile;
+	GtkBuilder *builder;
 
 	/*if (old)
 	  return old;*/
 
 	account = em_account_editor_get_modified_account (emae);
 
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      "mail-config.glade",
-				      NULL);
-	xml = glade_xml_new (gladefile, item->label, NULL);
-	g_free (gladefile);
+	builder = gtk_builder_new ();
+	e_load_ui_builder_definition (builder, "mail-config.ui");
 
 	/* Management & Identity fields, in the assistant the management frame is relocated to the last page later on */
 	for (i=0;i<G_N_ELEMENTS (emae_identity_entries);i++)
-		gui->identity_entries[i] = emae_account_entry (emae, emae_identity_entries[i].name, emae_identity_entries[i].item, xml);
+		priv->identity_entries[i] = emae_account_entry (emae, emae_identity_entries[i].name, emae_identity_entries[i].item, builder);
 
-	gui->management_frame = glade_xml_get_widget (xml, "management_frame");
+	priv->management_frame = e_builder_get_widget (builder, "management_frame");
 
-	gui->default_account = GTK_TOGGLE_BUTTON (glade_xml_get_widget (xml, "management_default"));
+	priv->default_account = GTK_TOGGLE_BUTTON (e_builder_get_widget (builder, "management_default"));
 	if (!e_get_default_account ()
 		|| (account == e_get_default_account ())
 		|| (GPOINTER_TO_INT(g_object_get_data (G_OBJECT (account), "default_flagged"))) )
-			gtk_toggle_button_set_active (gui->default_account, TRUE);
+			gtk_toggle_button_set_active (priv->default_account, TRUE);
 
 	if (emae->do_signature) {
-		emae_setup_signatures (emae, xml);
+		emae_setup_signatures (emae, builder);
 	} else {
 		/* TODO: this could/should probably be neater */
-		gtk_widget_hide (glade_xml_get_widget (xml, "sigLabel"));
+		gtk_widget_hide (e_builder_get_widget (builder, "sigLabel"));
 #if 0
-		gtk_widget_hide (glade_xml_get_widget (xml, "sigOption"));
+		gtk_widget_hide (e_builder_get_widget (builder, "sigOption"));
 #endif
-		gtk_widget_hide (glade_xml_get_widget (xml, "sigAddNew"));
+		gtk_widget_hide (e_builder_get_widget (builder, "sigAddNew"));
 	}
 
-	w = glade_xml_get_widget (xml, item->label);
+	w = e_builder_get_widget (builder, item->label);
 	if (emae->type == EMAE_PAGES) {
 		gtk_box_pack_start ((GtkBox *)emae->pages[0], w, TRUE, TRUE, 0);
-	} else if (((EConfig *)gui->config)->type == E_CONFIG_ASSISTANT) {
+	} else if (((EConfig *)priv->config)->type == E_CONFIG_ASSISTANT) {
 		GtkWidget *page = emae_create_basic_assistant_page (GTK_ASSISTANT (parent), "identity_page", old);
 
 		gtk_box_pack_start (GTK_BOX (page), w, TRUE, TRUE, 0);
@@ -2212,9 +2205,9 @@ emae_identity_page (EConfig *ec, EConfigItem *item, GtkWidget *parent, GtkWidget
 		gtk_notebook_append_page ((GtkNotebook *)parent, w, gtk_label_new (_("Identity")));
 	}
 
-	emae_queue_widgets (emae, xml, "account_vbox", "identity_required_table", "identity_optional_table", NULL);
+	emae_queue_widgets (emae, builder, "account_vbox", "identity_required_table", "identity_optional_table", NULL);
 
-	g_object_unref (xml);
+	g_object_unref (builder);
 
 	return w;
 }
@@ -2223,27 +2216,23 @@ static GtkWidget *
 emae_receive_page (EConfig *ec, EConfigItem *item, GtkWidget *parent, GtkWidget *old, gpointer data)
 {
 	EMAccountEditor *emae = data;
-	EMAccountEditorPrivate *gui = emae->priv;
+	EMAccountEditorPrivate *priv = emae->priv;
 	GtkWidget *w;
-	GladeXML *xml;
-	gchar *gladefile;
+	GtkBuilder *builder;
 
 	/*if (old)
 	  return old;*/
 
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      "mail-config.glade",
-				      NULL);
-	xml = glade_xml_new (gladefile, item->label, NULL);
-	g_free (gladefile);
+	builder = gtk_builder_new ();
+	e_load_ui_builder_definition (builder, "mail-config.ui");
 
-	gui->source.type = CAMEL_PROVIDER_STORE;
-	emae_setup_service (emae, &gui->source, xml);
+	priv->source.type = CAMEL_PROVIDER_STORE;
+	emae_setup_service (emae, &priv->source, builder);
 
-	w = glade_xml_get_widget (xml, item->label);
+	w = e_builder_get_widget (builder, item->label);
 	if (emae->type == EMAE_PAGES) {
 		gtk_box_pack_start ((GtkBox *)emae->pages[1], w, TRUE, TRUE, 0);
-	} else if (((EConfig *)gui->config)->type == E_CONFIG_ASSISTANT) {
+	} else if (((EConfig *)priv->config)->type == E_CONFIG_ASSISTANT) {
 		GtkWidget *page = emae_create_basic_assistant_page (GTK_ASSISTANT (parent), "source_page", old);
 
 		gtk_box_pack_start (GTK_BOX (page), w, TRUE, TRUE, 0);
@@ -2253,9 +2242,9 @@ emae_receive_page (EConfig *ec, EConfigItem *item, GtkWidget *parent, GtkWidget
 		gtk_notebook_append_page ((GtkNotebook *)parent, w, gtk_label_new (_("Receiving Email")));
 	}
 
-	emae_queue_widgets (emae, xml, "source_type_table", "table4", "vbox181", "vbox179", NULL);
+	emae_queue_widgets (emae, builder, "source_type_table", "table4", "vbox181", "vbox179", NULL);
 
-	g_object_unref (xml);
+	g_object_unref (builder);
 
 	return w;
 }
@@ -2679,31 +2668,27 @@ static GtkWidget *
 emae_send_page (EConfig *ec, EConfigItem *item, GtkWidget *parent, GtkWidget *old, gpointer data)
 {
 	EMAccountEditor *emae = data;
-	EMAccountEditorPrivate *gui = emae->priv;
+	EMAccountEditorPrivate *priv = emae->priv;
 	GtkWidget *w;
-	GladeXML *xml;
-	gchar *gladefile;
+	GtkBuilder *builder;
 
 	/* no transport options page at all for these types of providers */
-	if (gui->source.provider && CAMEL_PROVIDER_IS_STORE_AND_TRANSPORT(gui->source.provider)) {
-		memset (&gui->transport.frame, 0, ((gchar *)&gui->transport.check_dialog)-((gchar *)&gui->transport.frame));
+	if (priv->source.provider && CAMEL_PROVIDER_IS_STORE_AND_TRANSPORT(priv->source.provider)) {
+		memset (&priv->transport.frame, 0, ((gchar *)&priv->transport.check_dialog)-((gchar *)&priv->transport.frame));
 		return NULL;
 	}
 
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      "mail-config.glade",
-				      NULL);
-	xml = glade_xml_new (gladefile, item->label, NULL);
-	g_free (gladefile);
+	builder = gtk_builder_new ();
+	e_load_ui_builder_definition (builder, "mail-config.ui");
 
 	/* Transport */
-	gui->transport.type = CAMEL_PROVIDER_TRANSPORT;
-	emae_setup_service (emae, &gui->transport, xml);
+	priv->transport.type = CAMEL_PROVIDER_TRANSPORT;
+	emae_setup_service (emae, &priv->transport, builder);
 
-	w = glade_xml_get_widget (xml, item->label);
+	w = e_builder_get_widget (builder, item->label);
 	if (emae->type == EMAE_PAGES) {
 		gtk_box_pack_start ((GtkBox *)emae->pages[2], w, TRUE, TRUE, 0);
-	} else if (((EConfig *)gui->config)->type == E_CONFIG_ASSISTANT) {
+	} else if (((EConfig *)priv->config)->type == E_CONFIG_ASSISTANT) {
 		GtkWidget *page = emae_create_basic_assistant_page (GTK_ASSISTANT (parent), "transport_page", old);
 
 		gtk_box_pack_start (GTK_BOX (page), w, TRUE, TRUE, 0);
@@ -2713,9 +2698,9 @@ emae_send_page (EConfig *ec, EConfigItem *item, GtkWidget *parent, GtkWidget *ol
 		gtk_notebook_append_page ((GtkNotebook *)parent, w, gtk_label_new (_("Sending Email")));
 	}
 
-	emae_queue_widgets (emae, xml, "transport_type_table", "vbox12", "vbox183", "vbox61", NULL);
+	emae_queue_widgets (emae, builder, "transport_type_table", "vbox12", "vbox183", "vbox61", NULL);
 
-	g_object_unref (xml);
+	g_object_unref (builder);
 
 	return w;
 }
@@ -2724,59 +2709,55 @@ static GtkWidget *
 emae_defaults_page (EConfig *ec, EConfigItem *item, GtkWidget *parent, GtkWidget *old, gpointer data)
 {
 	EMAccountEditor *emae = data;
-	EMAccountEditorPrivate *gui = emae->priv;
+	EMAccountEditorPrivate *priv = emae->priv;
 	EAccount *account;
 	GtkWidget *w;
-	GladeXML *xml;
-	gchar *gladefile;
+	GtkBuilder *builder;
 
 	/*if (old)
 	  return old;*/
 
 	account = em_account_editor_get_modified_account (emae);
 
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      "mail-config.glade",
-				      NULL);
-	xml = glade_xml_new (gladefile, item->label, NULL);
-	g_free (gladefile);
+	builder = gtk_builder_new ();
+	e_load_ui_builder_definition (builder, "mail-config.ui");
 
 	/* Special folders */
-	gui->drafts_folder_button = (GtkButton *)emae_account_folder (emae, "drafts_button", E_ACCOUNT_DRAFTS_FOLDER_URI, E_MAIL_FOLDER_DRAFTS, xml);
-	gui->sent_folder_button = (GtkButton *)emae_account_folder (emae, "sent_button", E_ACCOUNT_SENT_FOLDER_URI, E_MAIL_FOLDER_SENT, xml);
+	priv->drafts_folder_button = (GtkButton *)emae_account_folder (emae, "drafts_button", E_ACCOUNT_DRAFTS_FOLDER_URI, E_MAIL_FOLDER_DRAFTS, builder);
+	priv->sent_folder_button = (GtkButton *)emae_account_folder (emae, "sent_button", E_ACCOUNT_SENT_FOLDER_URI, E_MAIL_FOLDER_SENT, builder);
 
 	/* Special Folders "Reset Defaults" button */
-	gui->restore_folders_button = (GtkButton *)glade_xml_get_widget (xml, "default_folders_button");
-	g_signal_connect (gui->restore_folders_button, "clicked", G_CALLBACK (default_folders_clicked), emae);
+	priv->restore_folders_button = (GtkButton *)e_builder_get_widget (builder, "default_folders_button");
+	g_signal_connect (priv->restore_folders_button, "clicked", G_CALLBACK (default_folders_clicked), emae);
 
 	/* Always Cc/Bcc */
-	emae_account_toggle (emae, "always_cc", E_ACCOUNT_CC_ALWAYS, xml);
-	emae_account_entry (emae, "cc_addrs", E_ACCOUNT_CC_ADDRS, xml);
-	emae_account_toggle (emae, "always_bcc", E_ACCOUNT_BCC_ALWAYS, xml);
-	emae_account_entry (emae, "bcc_addrs", E_ACCOUNT_BCC_ADDRS, xml);
+	emae_account_toggle (emae, "always_cc", E_ACCOUNT_CC_ALWAYS, builder);
+	emae_account_entry (emae, "cc_addrs", E_ACCOUNT_CC_ADDRS, builder);
+	emae_account_toggle (emae, "always_bcc", E_ACCOUNT_BCC_ALWAYS, builder);
+	emae_account_entry (emae, "bcc_addrs", E_ACCOUNT_BCC_ADDRS, builder);
 
-	gtk_widget_set_sensitive ((GtkWidget *)gui->drafts_folder_button, e_account_writable (account, E_ACCOUNT_DRAFTS_FOLDER_URI));
+	gtk_widget_set_sensitive ((GtkWidget *)priv->drafts_folder_button, e_account_writable (account, E_ACCOUNT_DRAFTS_FOLDER_URI));
 
-	gtk_widget_set_sensitive ( (GtkWidget *)gui->sent_folder_button,
+	gtk_widget_set_sensitive ( (GtkWidget *)priv->sent_folder_button,
 				  e_account_writable (account, E_ACCOUNT_SENT_FOLDER_URI)
 				  &&
 				  (emae->priv->source.provider ? !(emae->priv->source.provider->flags & CAMEL_PROVIDER_DISABLE_SENT_FOLDER): TRUE)
 				);
 
-	gtk_widget_set_sensitive ((GtkWidget *)gui->restore_folders_button,
+	gtk_widget_set_sensitive ((GtkWidget *)priv->restore_folders_button,
 				 (e_account_writable (account, E_ACCOUNT_SENT_FOLDER_URI)
 				  && ((emae->priv->source.provider  && !( emae->priv->source.provider->flags & CAMEL_PROVIDER_DISABLE_SENT_FOLDER))
 				      || e_account_writable (account, E_ACCOUNT_DRAFTS_FOLDER_URI))));
 
 	/* Receipt policy */
-	emae_setup_receipt_policy (emae, xml);
+	emae_setup_receipt_policy (emae, builder);
 
-	w = glade_xml_get_widget (xml, item->label);
+	w = e_builder_get_widget (builder, item->label);
 	gtk_notebook_append_page ((GtkNotebook *)parent, w, gtk_label_new (_("Defaults")));
 
-	emae_queue_widgets (emae, xml, "vbox184", "table8", NULL);
+	emae_queue_widgets (emae, builder, "vbox184", "table8", NULL);
 
-	g_object_unref (xml);
+	g_object_unref (builder);
 
 	return w;
 }
@@ -2786,61 +2767,57 @@ emae_security_page (EConfig *ec, EConfigItem *item, GtkWidget *parent, GtkWidget
 {
 	EMAccountEditor *emae = data;
 #if defined (HAVE_NSS)
-	EMAccountEditorPrivate *gui = emae->priv;
+	EMAccountEditorPrivate *priv = emae->priv;
 #endif
 	GtkWidget *w;
-	GladeXML *xml;
-	gchar *gladefile;
+	GtkBuilder *builder;
 
 	/*if (old)
 	  return old;*/
 
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      "mail-config.glade",
-				      NULL);
-	xml = glade_xml_new (gladefile, item->label, NULL);
-	g_free (gladefile);
+	builder = gtk_builder_new ();
+	e_load_ui_builder_definition (builder, "mail-config.ui");
 
 	/* Security */
-	emae_account_entry (emae, "pgp_key", E_ACCOUNT_PGP_KEY, xml);
-	emae_account_toggle (emae, "pgp_encrypt_to_self", E_ACCOUNT_PGP_ENCRYPT_TO_SELF, xml);
-	emae_account_toggle (emae, "pgp_always_sign", E_ACCOUNT_PGP_ALWAYS_SIGN, xml);
-	emae_account_toggle (emae, "pgp_no_imip_sign", E_ACCOUNT_PGP_NO_IMIP_SIGN, xml);
-	emae_account_toggle (emae, "pgp_always_trust", E_ACCOUNT_PGP_ALWAYS_TRUST, xml);
+	emae_account_entry (emae, "pgp_key", E_ACCOUNT_PGP_KEY, builder);
+	emae_account_toggle (emae, "pgp_encrypt_to_self", E_ACCOUNT_PGP_ENCRYPT_TO_SELF, builder);
+	emae_account_toggle (emae, "pgp_always_sign", E_ACCOUNT_PGP_ALWAYS_SIGN, builder);
+	emae_account_toggle (emae, "pgp_no_imip_sign", E_ACCOUNT_PGP_NO_IMIP_SIGN, builder);
+	emae_account_toggle (emae, "pgp_always_trust", E_ACCOUNT_PGP_ALWAYS_TRUST, builder);
 
 #if defined (HAVE_NSS)
 	/* TODO: this should handle its entry separately? */
-	gui->smime_sign_key = emae_account_entry (emae, "smime_sign_key", E_ACCOUNT_SMIME_SIGN_KEY, xml);
-	gui->smime_sign_key_select = (GtkButton *)glade_xml_get_widget (xml, "smime_sign_key_select");
-	gui->smime_sign_key_clear = (GtkButton *)glade_xml_get_widget (xml, "smime_sign_key_clear");
-	g_signal_connect (gui->smime_sign_key_select, "clicked", G_CALLBACK(smime_sign_key_select), emae);
-	g_signal_connect (gui->smime_sign_key_clear, "clicked", G_CALLBACK(smime_sign_key_clear), emae);
-
-	gui->smime_sign_default = emae_account_toggle (emae, "smime_sign_default", E_ACCOUNT_SMIME_SIGN_DEFAULT, xml);
-
-	gui->smime_encrypt_key = emae_account_entry (emae, "smime_encrypt_key", E_ACCOUNT_SMIME_ENCRYPT_KEY, xml);
-	gui->smime_encrypt_key_select = (GtkButton *)glade_xml_get_widget (xml, "smime_encrypt_key_select");
-	gui->smime_encrypt_key_clear = (GtkButton *)glade_xml_get_widget (xml, "smime_encrypt_key_clear");
-	g_signal_connect (gui->smime_encrypt_key_select, "clicked", G_CALLBACK(smime_encrypt_key_select), emae);
-	g_signal_connect (gui->smime_encrypt_key_clear, "clicked", G_CALLBACK(smime_encrypt_key_clear), emae);
-
-	gui->smime_encrypt_default = emae_account_toggle (emae, "smime_encrypt_default", E_ACCOUNT_SMIME_ENCRYPT_DEFAULT, xml);
-	gui->smime_encrypt_to_self = emae_account_toggle (emae, "smime_encrypt_to_self", E_ACCOUNT_SMIME_ENCRYPT_TO_SELF, xml);
+	priv->smime_sign_key = emae_account_entry (emae, "smime_sign_key", E_ACCOUNT_SMIME_SIGN_KEY, builder);
+	priv->smime_sign_key_select = (GtkButton *)e_builder_get_widget (builder, "smime_sign_key_select");
+	priv->smime_sign_key_clear = (GtkButton *)e_builder_get_widget (builder, "smime_sign_key_clear");
+	g_signal_connect (priv->smime_sign_key_select, "clicked", G_CALLBACK(smime_sign_key_select), emae);
+	g_signal_connect (priv->smime_sign_key_clear, "clicked", G_CALLBACK(smime_sign_key_clear), emae);
+
+	priv->smime_sign_default = emae_account_toggle (emae, "smime_sign_default", E_ACCOUNT_SMIME_SIGN_DEFAULT, builder);
+
+	priv->smime_encrypt_key = emae_account_entry (emae, "smime_encrypt_key", E_ACCOUNT_SMIME_ENCRYPT_KEY, builder);
+	priv->smime_encrypt_key_select = (GtkButton *)e_builder_get_widget (builder, "smime_encrypt_key_select");
+	priv->smime_encrypt_key_clear = (GtkButton *)e_builder_get_widget (builder, "smime_encrypt_key_clear");
+	g_signal_connect (priv->smime_encrypt_key_select, "clicked", G_CALLBACK(smime_encrypt_key_select), emae);
+	g_signal_connect (priv->smime_encrypt_key_clear, "clicked", G_CALLBACK(smime_encrypt_key_clear), emae);
+
+	priv->smime_encrypt_default = emae_account_toggle (emae, "smime_encrypt_default", E_ACCOUNT_SMIME_ENCRYPT_DEFAULT, builder);
+	priv->smime_encrypt_to_self = emae_account_toggle (emae, "smime_encrypt_to_self", E_ACCOUNT_SMIME_ENCRYPT_TO_SELF, builder);
 	smime_changed (emae);
 #else
 	{
 		/* Since we don't have NSS, hide the S/MIME config options */
 		GtkWidget *frame;
 
-		frame = glade_xml_get_widget (xml, "smime_vbox");
+		frame = e_builder_get_widget (builder, "smime_vbox");
 		gtk_widget_destroy (frame);
 	}
 #endif /* HAVE_NSS */
 
-	w = glade_xml_get_widget (xml, item->label);
+	w = e_builder_get_widget (builder, item->label);
 	gtk_notebook_append_page ((GtkNotebook *)parent, w, gtk_label_new (_("Security")));
 
-	g_object_unref (xml);
+	g_object_unref (builder);
 
 	return w;
 }
@@ -2900,11 +2877,11 @@ static GtkWidget *
 emae_management_page (EConfig *ec, EConfigItem *item, GtkWidget *parent, GtkWidget *old, gpointer data)
 {
 	EMAccountEditor *emae = data;
-	EMAccountEditorPrivate *gui = emae->priv;
+	EMAccountEditorPrivate *priv = emae->priv;
 	GtkWidget *w;
 
-	w = gui->management_frame;
-	if (((EConfig *)gui->config)->type == E_CONFIG_ASSISTANT) {
+	w = priv->management_frame;
+	if (((EConfig *)priv->config)->type == E_CONFIG_ASSISTANT) {
 		GtkWidget *page = emae_create_basic_assistant_page (GTK_ASSISTANT (parent), "management_page", old);
 
 		gtk_widget_reparent (w, page);
@@ -3309,7 +3286,7 @@ emae_editor_destroyed (GtkWidget *dialog, EMAccountEditor *emae)
 static void
 em_account_editor_construct (EMAccountEditor *emae, EMAccountEditorType type, const gchar *id)
 {
-	EMAccountEditorPrivate *gui = emae->priv;
+	EMAccountEditorPrivate *priv = emae->priv;
 	EAccount *account;
 	gint i, index;
 	GSList *l;
@@ -3322,7 +3299,7 @@ em_account_editor_construct (EMAccountEditor *emae, EMAccountEditorType type, co
 	emae->type = type;
 
 	/* sort the providers, remote first */
-	gui->providers = g_list_sort (camel_provider_list (TRUE), (GCompareFunc)provider_compare);
+	priv->providers = g_list_sort (camel_provider_list (TRUE), (GCompareFunc)provider_compare);
 
 	if (type == EMAE_NOTEBOOK) {
 		ec = em_config_new (E_CONFIG_BOOK, id);
@@ -3346,7 +3323,7 @@ em_account_editor_construct (EMAccountEditor *emae, EMAccountEditorType type, co
 		}
 	}
 
-	emae->config = gui->config = ec;
+	emae->config = priv->config = ec;
 	l = NULL;
 	for (i=0;items[i].path;i++)
 		l = g_slist_prepend (l, &items[i]);
@@ -3356,7 +3333,7 @@ em_account_editor_construct (EMAccountEditor *emae, EMAccountEditorType type, co
 	l = NULL;
 	have = g_hash_table_new (g_str_hash, g_str_equal);
 	index = 20;
-	for (prov=gui->providers;prov;prov=g_list_next (prov)) {
+	for (prov=priv->providers;prov;prov=g_list_next (prov)) {
 		CamelProviderConfEntry *entries = ((CamelProvider *)prov->data)->extra_conf;
 
 		for (i=0;entries && entries[i].type != CAMEL_PROVIDER_CONF_END;i++) {
@@ -3394,7 +3371,7 @@ em_account_editor_construct (EMAccountEditor *emae, EMAccountEditorType type, co
 	}
 	g_hash_table_destroy (have);
 	e_config_add_items ((EConfig *)ec, l, NULL, NULL, emae_free_auto, emae);
-	gui->extra_items = l;
+	priv->extra_items = l;
 
 	e_config_add_page_check ((EConfig *)ec, NULL, emae_check_complete, emae);
 
diff --git a/mail/em-filter-editor.c b/mail/em-filter-editor.c
index f104cef..ecc1bbc 100644
--- a/mail/em-filter-editor.c
+++ b/mail/em-filter-editor.c
@@ -28,6 +28,7 @@
 #include <gtk/gtk.h>
 #include <glib/gi18n.h>
 
+#include "e-util/e-util.h"
 #include "e-util/e-util-private.h"
 #include "e-util/gconf-bridge.h"
 
@@ -116,18 +117,14 @@ em_filter_editor_new (EMFilterContext *fc,
                       const EMFilterSource *source_names)
 {
 	EMFilterEditor *fe;
-	GladeXML *gui;
-	gchar *gladefile;
+	GtkBuilder *builder;
 
 	fe = g_object_new (EM_TYPE_FILTER_EDITOR, NULL);
 
-	gladefile = g_build_filename (
-		EVOLUTION_UIDIR, "filter.glade", NULL);
-	gui = glade_xml_new (gladefile, "rule_editor", NULL);
-	g_free (gladefile);
-
-	em_filter_editor_construct (fe, fc, gui, source_names);
-	g_object_unref (gui);
+	builder = gtk_builder_new ();
+	e_load_ui_builder_definition (builder, "filter.ui");
+	em_filter_editor_construct (fe, fc, builder, source_names);
+	g_object_unref (builder);
 
 	return fe;
 }
@@ -164,7 +161,7 @@ select_source (GtkComboBox *combobox, EMFilterEditor *fe)
 void
 em_filter_editor_construct (EMFilterEditor *fe,
                             EMFilterContext *fc,
-                            GladeXML *gui,
+                            GtkBuilder *builder,
                             const EMFilterSource *source_names)
 {
 	GtkWidget *combobox;
@@ -172,7 +169,7 @@ em_filter_editor_construct (EMFilterEditor *fe,
 	GtkTreeViewColumn *column;
 	GSList *sources = NULL;
 
-        combobox = glade_xml_get_widget (gui, "filter_source_combobox");
+        combobox = e_builder_get_widget (builder, "filter_source_combobox");
 	gtk_list_store_clear (GTK_LIST_STORE (gtk_combo_box_get_model (GTK_COMBO_BOX (combobox))));
 
 	for (i = 0; source_names[i].source; i++) {
@@ -185,7 +182,7 @@ em_filter_editor_construct (EMFilterEditor *fe,
 	g_object_set_data_full (G_OBJECT (combobox), "sources", sources, free_sources);
 	gtk_widget_show (combobox);
 
-	e_rule_editor_construct ((ERuleEditor *) fe, (ERuleContext *) fc, gui, source_names[0].source, _("_Filter Rules"));
+	e_rule_editor_construct ((ERuleEditor *) fe, (ERuleContext *) fc, builder, source_names[0].source, _("_Filter Rules"));
 
 	/* Show the Enabled column, we support it here */
 	column = gtk_tree_view_get_column (GTK_TREE_VIEW (E_RULE_EDITOR (fe)->list), 0);
diff --git a/mail/em-filter-editor.h b/mail/em-filter-editor.h
index e70b346..3df5b75 100644
--- a/mail/em-filter-editor.h
+++ b/mail/em-filter-editor.h
@@ -72,7 +72,7 @@ EMFilterEditor *em_filter_editor_new		(EMFilterContext *f,
 						 const EMFilterSource *source_names);
 void		em_filter_editor_construct	(EMFilterEditor *fe,
 						 EMFilterContext *fc,
-						 GladeXML *gui,
+						 GtkBuilder *builder,
 						 const EMFilterSource *source_names);
 
 #endif /* EM_FILTER_EDITOR_H */
diff --git a/mail/em-format-html-display.c b/mail/em-format-html-display.c
index 786936a..ba5514a 100644
--- a/mail/em-format-html-display.c
+++ b/mail/em-format-html-display.c
@@ -278,22 +278,19 @@ efhd_xpkcs7mime_validity_clicked (GtkWidget *button,
                                   EMFormatHTMLPObject *pobject)
 {
 	struct _smime_pobject *po = (struct _smime_pobject *)pobject;
-	GladeXML *xml;
+	GtkBuilder *builder;
 	GtkWidget *vbox, *w;
-	gchar *gladefile;
 
 	if (po->widget)
 		/* FIXME: window raise? */
 		return;
 
-	gladefile = g_build_filename (
-		EVOLUTION_UIDIR, "mail-dialogs.glade", NULL);
-	xml = glade_xml_new (gladefile, "message_security_dialog", NULL);
-	g_free (gladefile);
+	builder = gtk_builder_new ();
+	e_load_ui_builder_definition (builder, "mail-dialogs.ui");
 
-	po->widget = glade_xml_get_widget(xml, "message_security_dialog");
+	po->widget = e_builder_get_widget(builder, "message_security_dialog");
 
-	vbox = glade_xml_get_widget(xml, "signature_vbox");
+	vbox = e_builder_get_widget(builder, "signature_vbox");
 	w = gtk_label_new (_(smime_sign_table[po->valid->sign.status].description));
 	gtk_misc_set_alignment((GtkMisc *)w, 0.0, 0.5);
 	gtk_label_set_line_wrap((GtkLabel *)w, TRUE);
@@ -325,7 +322,7 @@ efhd_xpkcs7mime_validity_clicked (GtkWidget *button,
 
 	gtk_widget_show_all(vbox);
 
-	vbox = glade_xml_get_widget(xml, "encryption_vbox");
+	vbox = e_builder_get_widget(builder, "encryption_vbox");
 	w = gtk_label_new(_(smime_encrypt_table[po->valid->encrypt.status].description));
 	gtk_misc_set_alignment((GtkMisc *)w, 0.0, 0.5);
 	gtk_label_set_line_wrap((GtkLabel *)w, TRUE);
@@ -357,7 +354,7 @@ efhd_xpkcs7mime_validity_clicked (GtkWidget *button,
 
 	gtk_widget_show_all(vbox);
 
-	g_object_unref(xml);
+	g_object_unref(builder);
 
 	g_signal_connect(po->widget, "response", G_CALLBACK(efhd_xpkcs7mime_info_response), po);
 	gtk_widget_show(po->widget);
diff --git a/mail/em-subscribe-editor.c b/mail/em-subscribe-editor.c
index b07c0e1..76fec73 100644
--- a/mail/em-subscribe-editor.c
+++ b/mail/em-subscribe-editor.c
@@ -34,6 +34,7 @@
 #include "camel/camel-store.h"
 #include "camel/camel-session.h"
 
+#include "e-util/e-util.h"
 #include "e-util/e-account-utils.h"
 #include "e-util/e-util-private.h"
 
@@ -819,34 +820,27 @@ em_subscribe_editor_new(void)
 	EMSubscribeEditor *se;
 	EAccountList *accounts;
 	EIterator *iter;
-	GladeXML *xml;
+	GtkBuilder *builder;
 	GtkWidget *w;
 	GtkCellRenderer *cell;
 	GtkListStore *store;
 	GtkTreeIter gtiter;
-	gchar *gladefile;
 
 	se = g_malloc0(sizeof(*se));
 	g_queue_init (&se->stores);
 
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      "mail-dialogs.glade",
-				      NULL);
-	xml = glade_xml_new (gladefile, "subscribe_dialog", NULL);
-	g_free (gladefile);
+	/* XXX I think we're leaking the GtkBuilder. */
+	builder = gtk_builder_new ();
+	e_load_ui_builder_definition (builder, "mail-dialogs.ui");
 
-	if (xml == NULL) {
-		/* ?? */
-		return NULL;
-	}
-	se->dialog = (GtkDialog *)glade_xml_get_widget (xml, "subscribe_dialog");
+	se->dialog = (GtkDialog *)e_builder_get_widget (builder, "subscribe_dialog");
 	g_signal_connect(se->dialog, "destroy", G_CALLBACK(sub_editor_destroy), se);
 
 	gtk_widget_ensure_style ((GtkWidget *)se->dialog);
 	gtk_container_set_border_width ((GtkContainer *) ((GtkDialog *)se->dialog)->action_area, 12);
 	gtk_container_set_border_width ((GtkContainer *) ((GtkDialog *)se->dialog)->vbox, 0);
 
-	se->vbox = glade_xml_get_widget(xml, "tree_box");
+	se->vbox = e_builder_get_widget(builder, "tree_box");
 
 	/* FIXME: This is just to get the shadow, is there a better way? */
 	w = gtk_label_new(_("Please select a server."));
@@ -858,17 +852,17 @@ em_subscribe_editor_new(void)
 	gtk_box_pack_start((GtkBox *)se->vbox, se->none_selected, TRUE, TRUE, 0);
 	gtk_widget_show(se->none_selected);
 
-	se->progress = glade_xml_get_widget(xml, "progress_bar");
+	se->progress = e_builder_get_widget(builder, "progress_bar");
 	gtk_widget_hide(se->progress);
 
-	w = glade_xml_get_widget(xml, "close_button");
+	w = e_builder_get_widget(builder, "close_button");
 	g_signal_connect(w, "clicked", G_CALLBACK(sub_editor_close), se);
 
-	w = glade_xml_get_widget(xml, "refresh_button");
+	w = e_builder_get_widget(builder, "refresh_button");
 	g_signal_connect(w, "clicked", G_CALLBACK(sub_editor_refresh), se);
 
 	/* setup stores combobox */
-	se->combobox = glade_xml_get_widget (xml, "store_combobox");
+	se->combobox = e_builder_get_widget (builder, "store_combobox");
 	store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_BOOLEAN);
 	gtk_combo_box_set_model (GTK_COMBO_BOX (se->combobox), GTK_TREE_MODEL (store));
 	g_object_unref (store);
diff --git a/mail/em-vfolder-editor.c b/mail/em-vfolder-editor.c
index e038f52..0522e49 100644
--- a/mail/em-vfolder-editor.c
+++ b/mail/em-vfolder-editor.c
@@ -30,6 +30,7 @@
 #include <gtk/gtk.h>
 #include <glib/gi18n.h>
 
+#include "e-util/e-util.h"
 #include "e-util/e-util-private.h"
 #include "e-util/gconf-bridge.h"
 
@@ -113,20 +114,17 @@ GtkWidget *
 em_vfolder_editor_new (EMVFolderContext *vc)
 {
 	EMVFolderEditor *ve;
-	GladeXML *gui;
-	gchar *gladefile;
+	GtkBuilder *builder;
 
 	ve = g_object_new (EM_TYPE_VFOLDER_EDITOR, NULL);
 
-	gladefile = g_build_filename (
-		EVOLUTION_UIDIR, "filter.glade", NULL);
-	gui = glade_xml_new (gladefile, "rule_editor", NULL);
-	g_free (gladefile);
+	builder = gtk_builder_new ();
+	e_load_ui_builder_definition (builder, "filter.ui");
 
-	e_rule_editor_construct ((ERuleEditor *) ve, (ERuleContext *) vc, gui, "incoming", _("Search _Folders"));
-	gtk_widget_hide (glade_xml_get_widget (gui, "label17"));
-	gtk_widget_hide (glade_xml_get_widget (gui, "filter_source_combobox"));
-	g_object_unref (gui);
+	e_rule_editor_construct ((ERuleEditor *) ve, (ERuleContext *) vc, builder, "incoming", _("Search _Folders"));
+	gtk_widget_hide (e_builder_get_widget (builder, "label17"));
+	gtk_widget_hide (e_builder_get_widget (builder, "filter_source_combobox"));
+	g_object_unref (builder);
 
 	return GTK_WIDGET (ve);
 }
diff --git a/mail/em-vfolder-rule.c b/mail/em-vfolder-rule.c
index ada89d0..b1a3f76 100644
--- a/mail/em-vfolder-rule.c
+++ b/mail/em-vfolder-rule.c
@@ -37,6 +37,8 @@
 #include "mail/em-utils.h"
 #include "mail/em-folder-tree.h"
 #include "mail/em-folder-selector.h"
+
+#include "e-util/e-util.h"
 #include "e-util/e-error.h"
 #include "e-util/e-util-private.h"
 
@@ -618,9 +620,8 @@ get_widget(EFilterRule *fr, ERuleContext *rc)
 	GtkRadioButton *rb;
 	const gchar *source;
 	GtkTreeIter iter;
-	GladeXML *gui;
+	GtkBuilder *builder;
 	gint i;
-	gchar *gladefile;
 
         widget = E_FILTER_RULE_CLASS(parent_class)->get_widget(fr, rc);
 
@@ -628,22 +629,19 @@ get_widget(EFilterRule *fr, ERuleContext *rc)
 	data->rc = rc;
 	data->vr = vr;
 
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      "mail-dialogs.glade",
-				      NULL);
-	gui = glade_xml_new(gladefile, "vfolder_source_frame", NULL);
-	g_free (gladefile);
+	builder = gtk_builder_new ();
+	e_load_ui_builder_definition (builder, "mail-dialogs.ui");
 
-        frame = glade_xml_get_widget(gui, "vfolder_source_frame");
+        frame = e_builder_get_widget(builder, "vfolder_source_frame");
 
 	g_object_set_data_full((GObject *)frame, "data", data, g_free);
 
 	for (i = 0; i < BUTTON_LAST; i++) {
-		data->buttons[i] =(GtkButton *)glade_xml_get_widget(gui, edit_buttons[i].name);
+		data->buttons[i] =(GtkButton *)e_builder_get_widget(builder, edit_buttons[i].name);
 		g_signal_connect(data->buttons[i], "clicked", edit_buttons[i].func, data);
 	}
 
-	list = glade_xml_get_widget(gui, "source_list");
+	list = e_builder_get_widget(builder, "source_list");
 	data->list =(GtkTreeView *)g_object_get_data((GObject *)list, "table");
 	data->model =(GtkListStore *)g_object_get_data((GObject *)list, "model");
 
@@ -658,19 +656,19 @@ get_widget(EFilterRule *fr, ERuleContext *rc)
 
 	g_signal_connect(data->list, "cursor-changed", G_CALLBACK(select_source), data);
 
-	rb = (GtkRadioButton *)glade_xml_get_widget (gui, "local_rb");
+	rb = (GtkRadioButton *)e_builder_get_widget (builder, "local_rb");
 	g_signal_connect (GTK_WIDGET(rb), "toggled", G_CALLBACK(select_source_with_changed), data);
 
-	rb = (GtkRadioButton *)glade_xml_get_widget (gui, "remote_rb");
+	rb = (GtkRadioButton *)e_builder_get_widget (builder, "remote_rb");
 	g_signal_connect (GTK_WIDGET(rb), "toggled", G_CALLBACK(select_source_with_changed), data);
 
-	rb = (GtkRadioButton *)glade_xml_get_widget (gui, "local_and_remote_rb");
+	rb = (GtkRadioButton *)e_builder_get_widget (builder, "local_and_remote_rb");
 	g_signal_connect (GTK_WIDGET(rb), "toggled", G_CALLBACK(select_source_with_changed), data);
 
-	rb = (GtkRadioButton *)glade_xml_get_widget (gui, "specific_rb");
+	rb = (GtkRadioButton *)e_builder_get_widget (builder, "specific_rb");
 	g_signal_connect (GTK_WIDGET(rb), "toggled", G_CALLBACK(select_source_with_changed), data);
 
-	data->source_selector = (GtkWidget *)glade_xml_get_widget (gui, "source_selector");
+	data->source_selector = (GtkWidget *)e_builder_get_widget (builder, "source_selector");
 
 	rb = g_slist_nth_data(gtk_radio_button_get_group (rb), vr->with);
 	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (rb), TRUE);
@@ -678,7 +676,7 @@ get_widget(EFilterRule *fr, ERuleContext *rc)
 
 	set_sensitive(data);
 
-	g_object_unref(gui);
+	g_object_unref(builder);
 
 	gtk_box_pack_start(GTK_BOX(widget), frame, TRUE, TRUE, 3);
 
diff --git a/mail/message-tag-followup.c b/mail/message-tag-followup.c
index 557c822..39283a2 100644
--- a/mail/message-tag-followup.c
+++ b/mail/message-tag-followup.c
@@ -34,6 +34,7 @@
 
 #include <glib/gi18n.h>
 
+#include "e-util/e-util.h"
 #include "e-util/e-util-private.h"
 
 #include "misc/e-dateedit.h"
@@ -260,9 +261,8 @@ construct (MessageTagEditor *editor)
 	GtkCellRenderer *renderer;
 	GtkListStore *model;
 	GtkWidget *widget;
-	GladeXML *gui;
+	GtkBuilder *builder;
 	gint i;
-	gchar *gladefile;
 
 	gtk_window_set_title (GTK_WINDOW (editor), _("Flag to Follow Up"));
 
@@ -273,24 +273,21 @@ construct (MessageTagEditor *editor)
 	gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (editor)->vbox), 0);
 	gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (editor)->action_area), 12);
 
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      "mail-dialogs.glade",
-				      NULL);
-	gui = glade_xml_new (gladefile, "followup_editor", NULL);
-	g_free (gladefile);
+	builder = gtk_builder_new ();
+	e_load_ui_builder_definition (builder, "mail-dialogs.ui");
 
-	widget = glade_xml_get_widget (gui, "toplevel");
+	widget = e_builder_get_widget (builder, "toplevel");
 
 	/* reparent */
 	gtk_widget_reparent (widget, GTK_DIALOG (editor)->vbox);
 	gtk_box_set_child_packing (GTK_BOX (GTK_DIALOG (editor)->vbox), widget, TRUE, TRUE, 6, GTK_PACK_START);
 
-	widget = glade_xml_get_widget (gui, "pixmap");
+	widget = e_builder_get_widget (builder, "pixmap");
 	gtk_image_set_from_icon_name (
 		GTK_IMAGE (widget), "stock_mail-flag-for-followup",
 		GTK_ICON_SIZE_DIALOG);
 
-	followup->message_list = GTK_TREE_VIEW (glade_xml_get_widget (gui, "message_list"));
+	followup->message_list = GTK_TREE_VIEW (e_builder_get_widget (builder, "message_list"));
 	model = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING);
 	gtk_tree_view_set_model (followup->message_list, (GtkTreeModel *) model);
 
@@ -302,26 +299,24 @@ construct (MessageTagEditor *editor)
 	gtk_tree_view_insert_column_with_attributes (followup->message_list, -1, _("Subject"),
 						     renderer, "text", 1, NULL);
 
-	followup->combo_entry = GTK_COMBO_BOX (glade_xml_get_widget (gui, "combo"));
+	followup->combo_entry = GTK_COMBO_BOX (e_builder_get_widget (builder, "combo"));
 	gtk_list_store_clear (GTK_LIST_STORE (gtk_combo_box_get_model (followup->combo_entry)));
 	for (i = 0; i < G_N_ELEMENTS (available_flags); i++)
 		gtk_combo_box_append_text (followup->combo_entry, (gchar *) _(available_flags[i]));
 	gtk_combo_box_set_active (followup->combo_entry, DEFAULT_FLAG);
 
-	followup->target_date = E_DATE_EDIT (glade_xml_get_widget (gui, "target_date"));
+	followup->target_date = E_DATE_EDIT (e_builder_get_widget (builder, "target_date"));
 	/* glade bug, need to show this ourselves */
 	gtk_widget_show ((GtkWidget *) followup->target_date);
 	e_date_edit_set_time (followup->target_date, (time_t) -1);
 
-	followup->completed = GTK_TOGGLE_BUTTON (glade_xml_get_widget (gui, "completed"));
+	followup->completed = GTK_TOGGLE_BUTTON (e_builder_get_widget (builder, "completed"));
 	g_signal_connect (followup->completed, "toggled", G_CALLBACK (completed_toggled), followup);
 
-	followup->clear = GTK_BUTTON (glade_xml_get_widget (gui, "clear"));
-	gtk_button_set_label (followup->clear, _("Clea_r"));
-	gtk_button_set_image (followup->clear, gtk_image_new_from_stock (GTK_STOCK_CLEAR, GTK_ICON_SIZE_BUTTON));
+	followup->clear = GTK_BUTTON (e_builder_get_widget (builder, "clear"));
 	g_signal_connect (followup->clear, "clicked", G_CALLBACK (clear_clicked), followup);
 
-	g_object_unref (gui);
+	g_object_unref (builder);
 }
 
 MessageTagEditor *
diff --git a/modules/addressbook/addressbook-config.c b/modules/addressbook/addressbook-config.c
index 460f9de..bbd74d4 100644
--- a/modules/addressbook/addressbook-config.c
+++ b/modules/addressbook/addressbook-config.c
@@ -44,6 +44,7 @@
 #include "addressbook.h"
 #include "addressbook-config.h"
 
+#include "e-util/e-util.h"
 #include "e-util/e-error.h"
 #include "e-util/e-util-private.h"
 
@@ -66,8 +67,6 @@
 #define LDAP_PORT_STRING "389"
 #define LDAPS_PORT_STRING "636"
 
-#define GLADE_FILE_NAME "ldap-config.glade"
-
 GtkWidget* supported_bases_create_table (gchar *name, gchar *string1, gchar *string2,
 					 gint num1, gint num2);
 
@@ -83,7 +82,7 @@ GtkWidget* supported_bases_create_table (gchar *name, gchar *string1, gchar *str
 typedef struct _AddressbookSourceDialog AddressbookSourceDialog;
 
 struct _AddressbookSourceDialog {
-	GladeXML  *gui;
+	GtkBuilder *builder;
 
 	EABConfig *config;	/* the config manager */
 
@@ -410,17 +409,13 @@ query_for_supported_bases (GtkWidget *button, AddressbookSourceDialog *sdialog)
 	GtkTreeView *table;
 	GtkWidget *dialog;
 	GtkWidget *supported_bases_table;
-	GladeXML *gui;
+	GtkBuilder *builder;
 	GtkTreeIter iter;
-	gchar *gladefile;
 
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      GLADE_FILE_NAME,
-				      NULL);
-	gui = glade_xml_new (gladefile, "supported-bases-dialog", NULL);
-	g_free (gladefile);
+	builder = gtk_builder_new ();
+	e_load_ui_builder_definition (builder, "ldap-config.ui");
 
-	dialog = glade_xml_get_widget (gui, "supported-bases-dialog");
+	dialog = e_builder_get_widget (builder, "supported-bases-dialog");
 
 	gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (sdialog->window));
 	gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
@@ -429,7 +424,7 @@ query_for_supported_bases (GtkWidget *button, AddressbookSourceDialog *sdialog)
 	gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), 0);
 	gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (dialog)->action_area), 12);
 
-	supported_bases_table = glade_xml_get_widget (gui, "supported-bases-table");
+	supported_bases_table = e_builder_get_widget (builder, "supported-bases-table");
 	gtk_widget_show_all (supported_bases_table);
 
 	table = g_object_get_data (G_OBJECT (supported_bases_table), "table");
@@ -583,22 +578,18 @@ eabc_general_name(EConfig *ec, EConfigItem *item, GtkWidget *parent, GtkWidget *
 	AddressbookSourceDialog *sdialog = data;
 	const gchar *uri;
 	GtkWidget *w;
-	GladeXML *gui;
-	gchar *gladefile;
+	GtkBuilder *builder;
 
 	if (old)
 		return old;
 
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      GLADE_FILE_NAME,
-				      NULL);
-	gui = glade_xml_new (gladefile, item->label, NULL);
-	g_free (gladefile);
+	builder = gtk_builder_new ();
+	e_load_ui_builder_definition (builder, "ldap-config.ui");
 
-	w = glade_xml_get_widget(gui, item->label);
+	w = e_builder_get_widget(builder, item->label);
 	gtk_box_pack_start((GtkBox *)parent, w, FALSE, FALSE, 0);
 
-	sdialog->display_name = glade_xml_get_widget (gui, "account-editor-display-name-entry");
+	sdialog->display_name = e_builder_get_widget (builder, "account-editor-display-name-entry");
 	g_signal_connect(sdialog->display_name, "changed", G_CALLBACK(name_changed_cb), sdialog);
 	gtk_entry_set_text((GtkEntry *)sdialog->display_name, e_source_peek_name(sdialog->source));
 
@@ -610,7 +601,7 @@ eabc_general_name(EConfig *ec, EConfigItem *item, GtkWidget *parent, GtkWidget *
 		}
 	}
 
-	g_object_unref(gui);
+	g_object_unref(builder);
 
 	return w;
 }
@@ -754,19 +745,15 @@ eabc_general_host(EConfig *ec, EConfigItem *item, GtkWidget *parent, GtkWidget *
 	GtkWidget *w;
 	gchar *uri, port[16];
 	LDAPURLDesc *lud;
-	GladeXML *gui;
-	gchar *gladefile;
+	GtkBuilder *builder;
 
 	if (!source_group_is_remote(sdialog->source_group))
 		return NULL;
 
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      GLADE_FILE_NAME,
-				      NULL);
-	gui = glade_xml_new (gladefile, item->label, NULL);
-	g_free (gladefile);
+	builder = gtk_builder_new ();
+	e_load_ui_builder_definition (builder, "ldap-config.ui");
 
-	w = glade_xml_get_widget(gui, item->label);
+	w = e_builder_get_widget(builder, item->label);
 	gtk_box_pack_start((GtkBox *)parent, w, FALSE, FALSE, 0);
 
 	uri = e_source_get_uri(sdialog->source);
@@ -774,11 +761,11 @@ eabc_general_host(EConfig *ec, EConfigItem *item, GtkWidget *parent, GtkWidget *
 		lud = NULL;
 	g_free(uri);
 
-	sdialog->host = glade_xml_get_widget (gui, "server-name-entry");
+	sdialog->host = e_builder_get_widget (builder, "server-name-entry");
 	gtk_entry_set_text((GtkEntry *)sdialog->host, lud && lud->lud_host ? lud->lud_host : "");
 	g_signal_connect (sdialog->host, "changed", G_CALLBACK (host_changed_cb), sdialog);
 
-	sdialog->port_comboentry = glade_xml_get_widget (gui, "port-comboentry");
+	sdialog->port_comboentry = e_builder_get_widget (builder, "port-comboentry");
 	gtk_widget_set_has_tooltip (sdialog->port_comboentry, TRUE);
 	gtk_widget_set_tooltip_text (sdialog->port_comboentry, _("This is the port on the LDAP server that Evolution will try to connect to. A list of standard ports has been provided. Ask your system administrator what port you should specify."));
 	sprintf(port, "%u", lud && lud->lud_port? lud->lud_port : LDAP_PORT);
@@ -788,7 +775,7 @@ eabc_general_host(EConfig *ec, EConfigItem *item, GtkWidget *parent, GtkWidget *
 	if (lud)
 		ldap_free_urldesc (lud);
 
-	sdialog->ssl_combobox = glade_xml_get_widget (gui, "ssl-combobox");
+	sdialog->ssl_combobox = e_builder_get_widget (builder, "ssl-combobox");
 	gtk_widget_set_has_tooltip (sdialog->ssl_combobox, TRUE);
 	tmp = e_source_get_property (sdialog->source, "ssl");
 	sdialog->ssl = ldap_parse_ssl (tmp);
@@ -797,7 +784,7 @@ eabc_general_host(EConfig *ec, EConfigItem *item, GtkWidget *parent, GtkWidget *
 	gtk_widget_set_sensitive (sdialog->ssl_combobox, strcmp (port, LDAPS_PORT_STRING) != 0);
 	g_signal_connect (sdialog->ssl_combobox, "changed", G_CALLBACK (ssl_combobox_changed_cb), sdialog);
 
-	g_object_unref(gui);
+	g_object_unref(builder);
 
 	return w;
 }
@@ -841,22 +828,18 @@ eabc_general_auth(EConfig *ec, EConfigItem *item, GtkWidget *parent, GtkWidget *
 	AddressbookSourceDialog *sdialog = data;
 	GtkWidget *w;
 	const gchar *tmp;
-	GladeXML *gui;
-	gchar *gladefile;
+	GtkBuilder *builder;
 
 	if (!source_group_is_remote(sdialog->source_group))
 		return NULL;
 
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      GLADE_FILE_NAME,
-				      NULL);
-	gui = glade_xml_new (gladefile, item->label, NULL);
-	g_free (gladefile);
+	builder = gtk_builder_new ();
+	e_load_ui_builder_definition (builder, "ldap-config.ui");
 
-	w = glade_xml_get_widget(gui, item->label);
+	w = e_builder_get_widget(builder, item->label);
 	gtk_box_pack_start((GtkBox *)parent, w, FALSE, FALSE, 0);
 
-	sdialog->auth_combobox = glade_xml_get_widget (gui, "auth-combobox");
+	sdialog->auth_combobox = e_builder_get_widget (builder, "auth-combobox");
 	gtk_widget_set_has_tooltip (sdialog->auth_combobox, TRUE);
 	gtk_widget_set_tooltip_text (sdialog->auth_combobox, _("This is the method Evolution will use to authenticate you.  Note that setting this to \"Email Address\" requires anonymous access to your LDAP server."));
 	tmp = e_source_get_property(sdialog->source, "auth");
@@ -864,7 +847,7 @@ eabc_general_auth(EConfig *ec, EConfigItem *item, GtkWidget *parent, GtkWidget *
 	gtk_combo_box_set_active (GTK_COMBO_BOX (sdialog->auth_combobox), sdialog->auth);
 	g_signal_connect (sdialog->auth_combobox, "changed", G_CALLBACK(auth_combobox_changed_cb), sdialog);
 
-	sdialog->auth_principal = glade_xml_get_widget (gui, "auth-entry");
+	sdialog->auth_principal = e_builder_get_widget (builder, "auth-entry");
 	switch (sdialog->auth) {
 	case ADDRESSBOOK_LDAP_AUTH_SIMPLE_EMAIL:
 		tmp = e_source_get_property(sdialog->source, "email_addr");
@@ -880,7 +863,7 @@ eabc_general_auth(EConfig *ec, EConfigItem *item, GtkWidget *parent, GtkWidget *
 	gtk_entry_set_text((GtkEntry *)sdialog->auth_principal, tmp?tmp:"");
 	g_signal_connect (sdialog->auth_principal, "changed", G_CALLBACK (auth_entry_changed_cb), sdialog);
 
-	g_object_unref(gui);
+	g_object_unref(builder);
 
 	return w;
 }
@@ -911,19 +894,15 @@ eabc_details_search(EConfig *ec, EConfigItem *item, GtkWidget *parent, GtkWidget
 	GtkWidget *w;
 	LDAPURLDesc *lud;
 	gchar *uri;
-	GladeXML *gui;
-	gchar *gladefile;
+	GtkBuilder *builder;
 
 	if (!source_group_is_remote(sdialog->source_group))
 		return NULL;
 
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      GLADE_FILE_NAME,
-				      NULL);
-	gui = glade_xml_new (gladefile, item->label, NULL);
-	g_free (gladefile);
+	builder = gtk_builder_new ();
+	e_load_ui_builder_definition (builder, "ldap-config.ui");
 
-	w = glade_xml_get_widget(gui, item->label);
+	w = e_builder_get_widget(builder, item->label);
 	gtk_box_pack_start((GtkBox *)parent, w, FALSE, FALSE, 0);
 
 	uri = e_source_get_uri(sdialog->source);
@@ -931,11 +910,11 @@ eabc_details_search(EConfig *ec, EConfigItem *item, GtkWidget *parent, GtkWidget
 		lud = NULL;
 	g_free(uri);
 
-	sdialog->rootdn = glade_xml_get_widget (gui, "rootdn-entry");
+	sdialog->rootdn = e_builder_get_widget (builder, "rootdn-entry");
 	gtk_entry_set_text((GtkEntry *)sdialog->rootdn, lud && lud->lud_dn ? lud->lud_dn : "");
 	g_signal_connect (sdialog->rootdn, "changed", G_CALLBACK (rootdn_changed_cb), sdialog);
 
-	sdialog->scope_combobox = glade_xml_get_widget (gui, "scope-combobox");
+	sdialog->scope_combobox = e_builder_get_widget (builder, "scope-combobox");
 	gtk_widget_set_has_tooltip (sdialog->scope_combobox, TRUE);
 	gtk_widget_set_tooltip_text (sdialog->scope_combobox, _("The search scope defines how deep you would like the search to extend down the directory tree. A search scope of \"sub\" will include all entries below your search base. A search scope of \"one\" will only include the entries one level beneath your base."));
 	if (lud) {
@@ -955,17 +934,17 @@ eabc_details_search(EConfig *ec, EConfigItem *item, GtkWidget *parent, GtkWidget
 	gtk_combo_box_set_active (GTK_COMBO_BOX (sdialog->scope_combobox), sdialog->scope);
 	g_signal_connect (sdialog->scope_combobox, "changed", G_CALLBACK(scope_combobox_changed_cb), sdialog);
 
-	sdialog->search_filter =  glade_xml_get_widget (gui, "search-filter-entry");
+	sdialog->search_filter =  e_builder_get_widget (builder, "search-filter-entry");
 	gtk_entry_set_text((GtkEntry *)sdialog->search_filter, lud && lud->lud_filter ? lud->lud_filter : "");
 	g_signal_connect (sdialog->search_filter, "changed",  G_CALLBACK (search_filter_changed_cb), sdialog);
 
-	g_signal_connect (glade_xml_get_widget(gui, "rootdn-button"), "clicked",
+	g_signal_connect (e_builder_get_widget(builder, "rootdn-button"), "clicked",
 			  G_CALLBACK(query_for_supported_bases), sdialog);
 
 	if (lud)
 		ldap_free_urldesc (lud);
 
-	g_object_unref(gui);
+	g_object_unref(builder);
 
 	return w;
 }
@@ -1004,36 +983,32 @@ eabc_details_limit(EConfig *ec, EConfigItem *item, GtkWidget *parent, GtkWidget
 	AddressbookSourceDialog *sdialog = data;
 	GtkWidget *w;
 	const gchar *tmp;
-	GladeXML *gui;
-	gchar *gladefile;
+	GtkBuilder *builder;
 
 	if (!source_group_is_remote(sdialog->source_group))
 		return NULL;
 
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      GLADE_FILE_NAME,
-				      NULL);
-	gui = glade_xml_new (gladefile, item->label, NULL);
-	g_free (gladefile);
+	builder = gtk_builder_new ();
+	e_load_ui_builder_definition (builder, "ldap-config.ui");
 
-	w = glade_xml_get_widget(gui, item->label);
+	w = e_builder_get_widget(builder, item->label);
 	gtk_box_pack_start((GtkBox *)parent, w, FALSE, FALSE, 0);
 
-	sdialog->timeout_scale = glade_xml_get_widget (gui, "timeout-scale");
+	sdialog->timeout_scale = e_builder_get_widget (builder, "timeout-scale");
 	tmp = e_source_get_property(sdialog->source, "timeout");
 	gtk_adjustment_set_value(((GtkRange *)sdialog->timeout_scale)->adjustment, tmp?g_strtod(tmp, NULL):3.0);
 	g_signal_connect (GTK_RANGE(sdialog->timeout_scale)->adjustment, "value_changed", G_CALLBACK (timeout_changed_cb), sdialog);
 
-	sdialog->limit_spinbutton = glade_xml_get_widget (gui, "download-limit-spinbutton");
+	sdialog->limit_spinbutton = e_builder_get_widget (builder, "download-limit-spinbutton");
 	tmp = e_source_get_property(sdialog->source, "limit");
 	gtk_spin_button_set_value((GtkSpinButton *)sdialog->limit_spinbutton, tmp?g_strtod(tmp, NULL):100.0);
 	g_signal_connect (sdialog->limit_spinbutton, "value_changed", G_CALLBACK (limit_changed_cb), sdialog);
 
-	sdialog->canbrowsecheck = glade_xml_get_widget (gui, "canbrowsecheck");
+	sdialog->canbrowsecheck = e_builder_get_widget (builder, "canbrowsecheck");
 	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sdialog->canbrowsecheck), e_source_get_property (sdialog->source, "can-browse") && strcmp (e_source_get_property (sdialog->source, "can-browse"), "1") == 0);
 	g_signal_connect (sdialog->canbrowsecheck, "toggled", G_CALLBACK (canbrowse_toggled_cb), sdialog->source);
 
-	g_object_unref(gui);
+	g_object_unref(builder);
 
 	return w;
 }
@@ -1115,7 +1090,7 @@ eabc_free(EConfig *ec, GSList *items, gpointer data)
 		g_object_unref(sdialog->source_list);
 	g_slist_free(sdialog->menu_source_groups);
 
-	g_object_unref(sdialog->gui);
+	g_object_unref(sdialog->builder);
 
 	g_free(sdialog);
 }
@@ -1198,13 +1173,9 @@ addressbook_config_edit_source (GtkWidget *parent, ESource *source)
 	GSList *items = NULL;
 	EABConfigTargetSource *target;
 	gchar *xml;
-	gchar *gladefile;
 
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      GLADE_FILE_NAME,
-				      NULL);
-	sdialog->gui = glade_xml_new (gladefile, "account-editor-notebook", NULL);
-	g_free (gladefile);
+	sdialog->builder = gtk_builder_new ();
+	e_load_ui_builder_definition (sdialog->builder, "ldap-config.ui");
 
 	if (source) {
 		sdialog->original_source = source;
diff --git a/modules/mail/em-composer-prefs.c b/modules/mail/em-composer-prefs.c
index 37fe3b1..6e27e7a 100644
--- a/modules/mail/em-composer-prefs.c
+++ b/modules/mail/em-composer-prefs.c
@@ -47,6 +47,7 @@
 #include <gtkhtml/gtkhtml.h>
 #include <editor/gtkhtml-spell-language.h>
 
+#include "e-util/e-util.h"
 #include "e-util/e-error.h"
 #include "e-util/e-util-private.h"
 #include "widgets/misc/e-charset-combo-box.h"
@@ -168,7 +169,7 @@ composer_prefs_finalize (GObject *object)
 {
 	EMComposerPrefs *prefs = (EMComposerPrefs *) object;
 
-	g_object_unref (prefs->gui);
+	g_object_unref (prefs->builder);
 
 	/* Chain up to parent's finalize() method. */
         G_OBJECT_CLASS (parent_class)->finalize (object);
@@ -329,7 +330,7 @@ emcp_widget_glade (EConfig *ec,
 {
 	EMComposerPrefs *prefs = data;
 
-	return glade_xml_get_widget (prefs->gui, item->label);
+	return e_builder_get_widget (prefs->builder, item->label);
 }
 
 /* plugin meta-data */
@@ -362,7 +363,6 @@ em_composer_prefs_construct (EMComposerPrefs *prefs,
 	EShellSettings *shell_settings;
 	ESignatureList *signature_list;
 	ESignatureTreeView *signature_tree_view;
-	GladeXML *gui;
 	GtkTreeView *view;
 	GtkListStore *store;
 	GtkTreeSelection *selection;
@@ -373,18 +373,13 @@ em_composer_prefs_construct (EMComposerPrefs *prefs,
 	EMConfigTargetPrefs *target;
 	GSList *l;
 	gint i;
-	gchar *gladefile;
 
 	bridge = gconf_bridge_get ();
 	client = mail_config_get_gconf_client ();
 	shell_settings = e_shell_get_shell_settings (shell);
 
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      "mail-config.glade",
-				      NULL);
-	gui = glade_xml_new (gladefile, "composer_toplevel", NULL);
-	prefs->gui = gui;
-	g_free (gladefile);
+	prefs->builder = gtk_builder_new ();
+	e_load_ui_builder_definition (prefs->builder, "mail-config.ui");
 
 	/** @HookPoint-EMConfig: Mail Composer Preferences
 	 * @Id: org.gnome.evolution.mail.composerPrefs
@@ -403,53 +398,53 @@ em_composer_prefs_construct (EMComposerPrefs *prefs,
 	/* General tab */
 
 	/* Default Behavior */
-	widget = glade_xml_get_widget (gui, "chkSendHTML");
+	widget = e_builder_get_widget (prefs->builder, "chkSendHTML");
 	e_mutual_binding_new (
 		shell_settings, "composer-format-html",
 		widget, "active");
 
-	widget = glade_xml_get_widget (gui, "chkPromptEmptySubject");
+	widget = e_builder_get_widget (prefs->builder, "chkPromptEmptySubject");
 	e_mutual_binding_new (
 		shell_settings, "composer-prompt-empty-subject",
 		widget, "active");
 
-	widget = glade_xml_get_widget (gui, "chkPromptBccOnly");
+	widget = e_builder_get_widget (prefs->builder, "chkPromptBccOnly");
 	e_mutual_binding_new (
 		shell_settings, "composer-prompt-only-bcc",
 		widget, "active");
 
-	widget = glade_xml_get_widget (gui, "chkAutoSmileys");
+	widget = e_builder_get_widget (prefs->builder, "chkAutoSmileys");
 	e_mutual_binding_new (
 		shell_settings, "composer-magic-smileys",
 		widget, "active");
 
-	widget = glade_xml_get_widget (gui, "chkRequestReceipt");
+	widget = e_builder_get_widget (prefs->builder, "chkRequestReceipt");
 	e_mutual_binding_new (
 		shell_settings, "composer-request-receipt",
 		widget, "active");
 
-	widget = glade_xml_get_widget (gui, "chkReplyStartBottom");
+	widget = e_builder_get_widget (prefs->builder, "chkReplyStartBottom");
 	e_mutual_binding_new (
 		shell_settings, "composer-reply-start-bottom",
 		widget, "active");
 
-	widget = glade_xml_get_widget (gui, "chkOutlookFilenames");
+	widget = e_builder_get_widget (prefs->builder, "chkOutlookFilenames");
 	e_mutual_binding_new (
 		shell_settings, "composer-outlook-filenames",
 		widget, "active");
 
-	widget = glade_xml_get_widget (gui, "chkTopSignature");
+	widget = e_builder_get_widget (prefs->builder, "chkTopSignature");
 	e_mutual_binding_new (
 		shell_settings, "composer-top-signature",
 		widget, "active");
 
-	widget = glade_xml_get_widget (gui, "chkEnableSpellChecking");
+	widget = e_builder_get_widget (prefs->builder, "chkEnableSpellChecking");
 	e_mutual_binding_new (
 		shell_settings, "composer-inline-spelling",
 		widget, "active");
 
 	widget = e_charset_combo_box_new ();
-	container = glade_xml_get_widget (gui, "hboxComposerCharset");
+	container = e_builder_get_widget (prefs->builder, "hboxComposerCharset");
 	gtk_box_pack_start (GTK_BOX (container), widget, FALSE, FALSE, 0);
 	gtk_widget_show (widget);
 	e_mutual_binding_new (
@@ -457,7 +452,7 @@ em_composer_prefs_construct (EMComposerPrefs *prefs,
 		widget, "charset");
 
 	/* Spell Checking */
-	widget = glade_xml_get_widget (gui, "listSpellCheckLanguage");
+	widget = e_builder_get_widget (prefs->builder, "listSpellCheckLanguage");
 	view = GTK_TREE_VIEW (widget);
 	store = gtk_list_store_new (
 		3, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_POINTER);
@@ -480,12 +475,12 @@ em_composer_prefs_construct (EMComposerPrefs *prefs,
 		"text", 1, NULL);
 	selection = gtk_tree_view_get_selection (view);
 	gtk_tree_selection_set_mode (selection, GTK_SELECTION_NONE);
-	info_pixmap = glade_xml_get_widget (gui, "pixmapSpellInfo");
+	info_pixmap = e_builder_get_widget (prefs->builder, "pixmapSpellInfo");
 	gtk_image_set_from_stock (
 		GTK_IMAGE (info_pixmap),
 		GTK_STOCK_DIALOG_INFO, GTK_ICON_SIZE_BUTTON);
 
-	widget = glade_xml_get_widget (gui, "colorButtonSpellCheckColor");
+	widget = e_builder_get_widget (prefs->builder, "colorButtonSpellCheckColor");
 	e_mutual_binding_new_full (
 		shell_settings, "composer-spell-color",
 		widget, "color",
@@ -496,12 +491,12 @@ em_composer_prefs_construct (EMComposerPrefs *prefs,
 	spell_setup (prefs);
 
 	/* Forwards and Replies */
-	widget = glade_xml_get_widget (gui, "comboboxForwardStyle");
+	widget = e_builder_get_widget (prefs->builder, "comboboxForwardStyle");
 	e_mutual_binding_new (
 		shell_settings, "mail-forward-style",
 		widget, "active");
 
-	widget = glade_xml_get_widget (gui, "comboboxReplyStyle");
+	widget = e_builder_get_widget (prefs->builder, "comboboxReplyStyle");
 	e_mutual_binding_new_full (
 		shell_settings, "mail-reply-style",
 		widget, "active",
@@ -511,7 +506,7 @@ em_composer_prefs_construct (EMComposerPrefs *prefs,
 
 	/* Signatures */
 	signature_list = e_get_signature_list ();
-	container = glade_xml_get_widget (gui, "alignSignatures");
+	container = e_builder_get_widget (prefs->builder, "alignSignatures");
 	widget = e_signature_manager_new (signature_list);
 	gtk_container_add (GTK_CONTAINER (container), widget);
 	gtk_widget_show (widget);
@@ -533,7 +528,7 @@ em_composer_prefs_construct (EMComposerPrefs *prefs,
 	signature_tree_view = e_signature_manager_get_tree_view (
 		E_SIGNATURE_MANAGER (widget));
 
-	container = glade_xml_get_widget (gui, "scrolled-sig");
+	container = e_builder_get_widget (prefs->builder, "scrolled-sig");
 	widget = e_signature_preview_new ();
 	gtk_container_add (GTK_CONTAINER (container), widget);
 	gtk_widget_show (widget);
diff --git a/modules/mail/em-composer-prefs.h b/modules/mail/em-composer-prefs.h
index e23a18d..af4979a 100644
--- a/modules/mail/em-composer-prefs.h
+++ b/modules/mail/em-composer-prefs.h
@@ -57,7 +57,7 @@ struct _ESignature;
 struct _EMComposerPrefs {
 	GtkVBox parent;
 
-	GladeXML *gui;
+	GtkBuilder *builder;
 
 	/* General tab */
 
diff --git a/modules/mail/em-mailer-prefs.c b/modules/mail/em-mailer-prefs.c
index f92ff4d..762d237 100644
--- a/modules/mail/em-mailer-prefs.c
+++ b/modules/mail/em-mailer-prefs.c
@@ -38,6 +38,7 @@
 
 #include "libedataserverui/e-cell-renderer-color.h"
 
+#include "e-util/e-util.h"
 #include "e-util/e-binding.h"
 #include "e-util/e-datetime-format.h"
 #include "e-util/e-util-private.h"
@@ -141,7 +142,7 @@ em_mailer_prefs_finalize (GObject *obj)
 {
 	EMMailerPrefs *prefs = (EMMailerPrefs *) obj;
 
-	g_object_unref (prefs->gui);
+	g_object_unref (prefs->builder);
 
 	if (prefs->labels_change_notify_id) {
 		gconf_client_notify_remove (prefs->gconf, prefs->labels_change_notify_id);
@@ -669,7 +670,7 @@ emmp_widget_glade(EConfig *ec, EConfigItem *item, GtkWidget *parent, GtkWidget *
 {
 	EMMailerPrefs *prefs = data;
 
-	return glade_xml_get_widget(prefs->gui, item->label);
+	return e_builder_get_widget(prefs->builder, item->label);
 }
 
 /* plugin meta-data */
@@ -821,23 +822,16 @@ em_mailer_prefs_construct (EMMailerPrefs *prefs,
 	GtkTreeSelection *selection;
 	GtkCellRenderer *renderer;
 	GtkTreeIter iter;
-	GladeXML *gui;
 	gboolean locked;
 	gint val, i;
 	EMConfig *ec;
 	EMConfigTargetPrefs *target;
 	GSList *l;
-	gchar *gladefile;
 
 	shell_settings = e_shell_get_shell_settings (shell);
 
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      "mail-config.glade",
-				      NULL);
-	gui = glade_xml_new (gladefile, "preferences_toplevel", NULL);
-	g_free (gladefile);
-
-	prefs->gui = gui;
+	prefs->builder = gtk_builder_new ();
+	e_load_ui_builder_definition (prefs->builder, "mail-config.ui");
 
 	/** @HookPoint-EMConfig: Mail Preferences Page
 	 * @Id: org.gnome.evolution.mail.prefs
@@ -856,7 +850,7 @@ em_mailer_prefs_construct (EMMailerPrefs *prefs,
 	/* General tab */
 
 	/* Message Display */
-	widget = glade_xml_get_widget (gui, "chkMarkTimeout");
+	widget = e_builder_get_widget (prefs->builder, "chkMarkTimeout");
 	e_mutual_binding_new (
 		shell_settings, "mail-mark-seen",
 		widget, "active");
@@ -864,7 +858,7 @@ em_mailer_prefs_construct (EMMailerPrefs *prefs,
 	/* The "mark seen" timeout requires special transform functions
 	 * because we display the timeout value to the user in seconds
 	 * but store the settings value in milliseconds. */
-	widget = glade_xml_get_widget (gui, "spinMarkTimeout");
+	widget = e_builder_get_widget (prefs->builder, "spinMarkTimeout");
 	prefs->timeout = GTK_SPIN_BUTTON (widget);
 	e_mutual_binding_new (
 		shell_settings, "mail-mark-seen",
@@ -876,12 +870,12 @@ em_mailer_prefs_construct (EMMailerPrefs *prefs,
 		mark_seen_timeout_reverse_transform,
 		NULL, NULL);
 
-	widget = glade_xml_get_widget (gui, "mlimit_checkbutton");
+	widget = e_builder_get_widget (prefs->builder, "mlimit_checkbutton");
 	e_mutual_binding_new (
 		shell_settings, "mail-force-message-limit",
 		widget, "active");
 
-	widget = glade_xml_get_widget (gui, "mlimit_spin");
+	widget = e_builder_get_widget (prefs->builder, "mlimit_spin");
 	e_mutual_binding_new (
 		shell_settings, "mail-force-message-limit",
 		widget, "sensitive");
@@ -889,12 +883,12 @@ em_mailer_prefs_construct (EMMailerPrefs *prefs,
 		shell_settings, "mail-message-text-part-limit",
 		widget, "value");
 
-	widget = glade_xml_get_widget (gui, "address_checkbox");
+	widget = e_builder_get_widget (prefs->builder, "address_checkbox");
 	e_mutual_binding_new (
 		shell_settings, "mail-address-compress",
 		widget, "active");
 
-	widget = glade_xml_get_widget (gui, "address_spin");
+	widget = e_builder_get_widget (prefs->builder, "address_spin");
 	e_mutual_binding_new (
 		shell_settings, "mail-address-compress",
 		widget, "sensitive");
@@ -902,25 +896,25 @@ em_mailer_prefs_construct (EMMailerPrefs *prefs,
 		shell_settings, "mail-address-count",
 		widget, "value");
 
-	widget = glade_xml_get_widget (gui, "magic_spacebar_checkbox");
+	widget = e_builder_get_widget (prefs->builder, "magic_spacebar_checkbox");
 	e_mutual_binding_new (
 		shell_settings, "mail-magic-spacebar",
 		widget, "active");
 
 	widget = e_charset_combo_box_new ();
-	container = glade_xml_get_widget (gui, "hboxDefaultCharset");
+	container = e_builder_get_widget (prefs->builder, "hboxDefaultCharset");
 	gtk_box_pack_start (GTK_BOX (container), widget, FALSE, FALSE, 0);
 	gtk_widget_show (widget);
 	e_mutual_binding_new (
 		shell_settings, "mail-charset",
 		widget, "charset");
 
-	widget = glade_xml_get_widget (gui, "chkHighlightCitations");
+	widget = e_builder_get_widget (prefs->builder, "chkHighlightCitations");
 	e_mutual_binding_new (
 		shell_settings, "mail-mark-citations",
 		widget, "active");
 
-	widget = glade_xml_get_widget (gui, "colorButtonHighlightCitations");
+	widget = e_builder_get_widget (prefs->builder, "colorButtonHighlightCitations");
 	e_mutual_binding_new (
 		shell_settings, "mail-mark-citations",
 		widget, "sensitive");
@@ -931,35 +925,35 @@ em_mailer_prefs_construct (EMMailerPrefs *prefs,
 		e_binding_transform_color_to_string,
 		NULL, NULL);
 
-	widget = glade_xml_get_widget (gui, "chkEnableSearchFolders");
+	widget = e_builder_get_widget (prefs->builder, "chkEnableSearchFolders");
 	e_mutual_binding_new (
 		shell_settings, "mail-enable-search-folders",
 		widget, "active");
 
 	/* Deleting Mail */
-	widget = glade_xml_get_widget (gui, "chkEmptyTrashOnExit");
+	widget = e_builder_get_widget (prefs->builder, "chkEmptyTrashOnExit");
 	e_mutual_binding_new (
 		shell_settings, "mail-empty-trash-on-exit",
 		widget, "active");
 
-	widget = glade_xml_get_widget (gui, "comboboxEmptyTrashDays");
+	widget = e_builder_get_widget (prefs->builder, "comboboxEmptyTrashDays");
 	e_mutual_binding_new (
 		shell_settings, "mail-empty-trash-on-exit",
 		widget, "sensitive");
 	emmp_empty_trash_init (prefs, GTK_COMBO_BOX (widget));
 
-	widget = glade_xml_get_widget (gui, "chkConfirmExpunge");
+	widget = e_builder_get_widget (prefs->builder, "chkConfirmExpunge");
 	e_mutual_binding_new (
 		shell_settings, "mail-confirm-expunge",
 		widget, "active");
 
 	/* Mail Fonts */
-	widget = glade_xml_get_widget (gui, "radFontUseSame");
+	widget = e_builder_get_widget (prefs->builder, "radFontUseSame");
 	e_mutual_binding_new_with_negation (
 		shell_settings, "mail-use-custom-fonts",
 		widget, "active");
 
-	widget = glade_xml_get_widget (gui, "FontFixed");
+	widget = e_builder_get_widget (prefs->builder, "FontFixed");
 	e_mutual_binding_new (
 		shell_settings, "mail-font-monospace",
 		widget, "font-name");
@@ -967,7 +961,7 @@ em_mailer_prefs_construct (EMMailerPrefs *prefs,
 		shell_settings, "mail-use-custom-fonts",
 		widget, "sensitive");
 
-	widget = glade_xml_get_widget (gui, "FontVariable");
+	widget = e_builder_get_widget (prefs->builder, "FontVariable");
 	e_mutual_binding_new (
 		shell_settings, "mail-font-variable",
 		widget, "font-name");
@@ -981,17 +975,17 @@ em_mailer_prefs_construct (EMMailerPrefs *prefs,
 	locked = !gconf_client_key_is_writable (prefs->gconf, "/apps/evolution/mail/display/load_http_images", NULL);
 
 	val = gconf_client_get_int (prefs->gconf, "/apps/evolution/mail/display/load_http_images", NULL);
-	prefs->images_never = GTK_TOGGLE_BUTTON (glade_xml_get_widget (gui, "radImagesNever"));
+	prefs->images_never = GTK_TOGGLE_BUTTON (e_builder_get_widget (prefs->builder, "radImagesNever"));
 	gtk_toggle_button_set_active (prefs->images_never, val == MAIL_CONFIG_HTTP_NEVER);
 	if (locked)
 		gtk_widget_set_sensitive ((GtkWidget *) prefs->images_never, FALSE);
 
-	prefs->images_sometimes = GTK_TOGGLE_BUTTON (glade_xml_get_widget (gui, "radImagesSometimes"));
+	prefs->images_sometimes = GTK_TOGGLE_BUTTON (e_builder_get_widget (prefs->builder, "radImagesSometimes"));
 	gtk_toggle_button_set_active (prefs->images_sometimes, val == MAIL_CONFIG_HTTP_SOMETIMES);
 	if (locked)
 		gtk_widget_set_sensitive ((GtkWidget *) prefs->images_sometimes, FALSE);
 
-	prefs->images_always = GTK_TOGGLE_BUTTON (glade_xml_get_widget (gui, "radImagesAlways"));
+	prefs->images_always = GTK_TOGGLE_BUTTON (e_builder_get_widget (prefs->builder, "radImagesAlways"));
 	gtk_toggle_button_set_active (prefs->images_always, val == MAIL_CONFIG_HTTP_ALWAYS);
 	if (locked)
 		gtk_widget_set_sensitive ((GtkWidget *) prefs->images_always, FALSE);
@@ -1000,17 +994,17 @@ em_mailer_prefs_construct (EMMailerPrefs *prefs,
 	g_signal_connect (prefs->images_sometimes, "toggled", G_CALLBACK (http_images_changed), prefs);
 	g_signal_connect (prefs->images_always, "toggled", G_CALLBACK (http_images_changed), prefs);
 
-	widget = glade_xml_get_widget (gui, "chkShowAnimatedImages");
+	widget = e_builder_get_widget (prefs->builder, "chkShowAnimatedImages");
 	e_mutual_binding_new (
 		shell_settings, "mail-show-animated-images",
 		widget, "active");
 
-	widget = glade_xml_get_widget (gui, "chkPromptWantHTML");
+	widget = e_builder_get_widget (prefs->builder, "chkPromptWantHTML");
 	e_mutual_binding_new (
 		shell_settings, "mail-confirm-unwanted-html",
 		widget, "active");
 
-	container = glade_xml_get_widget (gui, "labels-alignment");
+	container = e_builder_get_widget (prefs->builder, "labels-alignment");
 	widget = e_mail_label_manager_new ();
 	gtk_container_add (GTK_CONTAINER (container), widget);
 	gtk_widget_show (widget);
@@ -1022,12 +1016,12 @@ em_mailer_prefs_construct (EMMailerPrefs *prefs,
 	/* headers */
 	locked = !gconf_client_key_is_writable (prefs->gconf, "/apps/evolution/mail/display/headers", NULL);
 
-	widget = glade_xml_get_widget (gui, "photo_show");
+	widget = e_builder_get_widget (prefs->builder, "photo_show");
 	e_mutual_binding_new (
 		shell_settings, "mail-show-sender-photo",
 		widget, "active");
 
-	widget = glade_xml_get_widget (gui, "photo_local");
+	widget = e_builder_get_widget (prefs->builder, "photo_local");
 	e_mutual_binding_new (
 		shell_settings, "mail-show-sender-photo",
 		widget, "sensitive");
@@ -1036,17 +1030,17 @@ em_mailer_prefs_construct (EMMailerPrefs *prefs,
 		widget, "active");
 
 	/* always de-sensitised until the user types something in the entry */
-	prefs->add_header = GTK_BUTTON (glade_xml_get_widget (gui, "cmdHeadersAdd"));
+	prefs->add_header = GTK_BUTTON (e_builder_get_widget (prefs->builder, "cmdHeadersAdd"));
 	gtk_widget_set_sensitive ((GtkWidget *) prefs->add_header, FALSE);
 
 	/* always de-sensitised until the user selects a header in the list */
-	prefs->remove_header = GTK_BUTTON (glade_xml_get_widget (gui, "cmdHeadersRemove"));
+	prefs->remove_header = GTK_BUTTON (e_builder_get_widget (prefs->builder, "cmdHeadersRemove"));
 	gtk_widget_set_sensitive ((GtkWidget *) prefs->remove_header, FALSE);
 
-	prefs->entry_header = GTK_ENTRY (glade_xml_get_widget (gui, "txtHeaders"));
+	prefs->entry_header = GTK_ENTRY (e_builder_get_widget (prefs->builder, "txtHeaders"));
 	gtk_widget_set_sensitive ((GtkWidget *) prefs->entry_header, !locked);
 
-	prefs->header_list = GTK_TREE_VIEW (glade_xml_get_widget (gui, "treeHeaders"));
+	prefs->header_list = GTK_TREE_VIEW (e_builder_get_widget (prefs->builder, "treeHeaders"));
 	gtk_widget_set_sensitive ((GtkWidget *) prefs->header_list, !locked);
 
 	selection = gtk_tree_view_get_selection (prefs->header_list);
@@ -1140,38 +1134,38 @@ em_mailer_prefs_construct (EMMailerPrefs *prefs,
 	g_slist_free (header_add_list);
 
 	/* date/time format */
-	table = glade_xml_get_widget (gui, "datetime_format_table");
+	table = e_builder_get_widget (prefs->builder, "datetime_format_table");
 	e_datetime_format_add_setup_widget (table, 0, "mail", "header", DTFormatKindDateTime, _("Date header:"));
 	e_datetime_format_add_setup_widget (table, 1, "mail", "table",  DTFormatKindDateTime, _("Table column:"));
 
 	/* Junk prefs */
-	widget = glade_xml_get_widget (gui, "chkCheckIncomingMail");
+	widget = e_builder_get_widget (prefs->builder, "chkCheckIncomingMail");
 	e_mutual_binding_new (
 		shell_settings, "mail-check-for-junk",
 		widget, "active");
 
-	widget = glade_xml_get_widget (gui, "junk_empty_check");
+	widget = e_builder_get_widget (prefs->builder, "junk_empty_check");
 	e_mutual_binding_new (
 		shell_settings, "mail-empty-junk-on-exit",
 		widget, "active");
 
-	widget = glade_xml_get_widget (gui, "junk_empty_combobox");
+	widget = e_builder_get_widget (prefs->builder, "junk_empty_combobox");
 	e_mutual_binding_new (
 		shell_settings, "mail-empty-junk-on-exit",
 		widget, "sensitive");
 	emmp_empty_junk_init (prefs, GTK_COMBO_BOX (widget));
 
-	prefs->default_junk_plugin = GTK_COMBO_BOX (glade_xml_get_widget (gui, "default_junk_plugin"));
-	prefs->plugin_status = GTK_LABEL (glade_xml_get_widget (gui, "plugin_status"));
-	prefs->plugin_image = GTK_IMAGE (glade_xml_get_widget (gui, "plugin_image"));
+	prefs->default_junk_plugin = GTK_COMBO_BOX (e_builder_get_widget (prefs->builder, "default_junk_plugin"));
+	prefs->plugin_status = GTK_LABEL (e_builder_get_widget (prefs->builder, "plugin_status"));
+	prefs->plugin_image = GTK_IMAGE (e_builder_get_widget (prefs->builder, "plugin_image"));
 	junk_plugin_setup (GTK_WIDGET (prefs->default_junk_plugin), prefs);
 
-	prefs->junk_header_check = (GtkToggleButton *)glade_xml_get_widget (gui, "junk_header_check");
-	prefs->junk_header_tree = (GtkTreeView *)glade_xml_get_widget (gui, "junk_header_tree");
-	prefs->junk_header_add = (GtkButton *)glade_xml_get_widget (gui, "junk_header_add");
-	prefs->junk_header_remove = (GtkButton *)glade_xml_get_widget (gui, "junk_header_remove");
-	prefs->junk_book_lookup = (GtkToggleButton *)glade_xml_get_widget (gui, "lookup_book");
-	prefs->junk_lookup_local_only = (GtkToggleButton *)glade_xml_get_widget (gui, "junk_lookup_local_only");
+	prefs->junk_header_check = (GtkToggleButton *)e_builder_get_widget (prefs->builder, "junk_header_check");
+	prefs->junk_header_tree = (GtkTreeView *)e_builder_get_widget (prefs->builder, "junk_header_tree");
+	prefs->junk_header_add = (GtkButton *)e_builder_get_widget (prefs->builder, "junk_header_add");
+	prefs->junk_header_remove = (GtkButton *)e_builder_get_widget (prefs->builder, "junk_header_remove");
+	prefs->junk_book_lookup = (GtkToggleButton *)e_builder_get_widget (prefs->builder, "lookup_book");
+	prefs->junk_lookup_local_only = (GtkToggleButton *)e_builder_get_widget (prefs->builder, "junk_lookup_local_only");
 	toggle_button_init (prefs, prefs->junk_book_lookup, FALSE,
 			    "/apps/evolution/mail/junk/lookup_addressbook",
 			    G_CALLBACK (junk_book_lookup_button_toggled));
diff --git a/modules/mail/em-mailer-prefs.h b/modules/mail/em-mailer-prefs.h
index 8980e03..8ad6ad2 100644
--- a/modules/mail/em-mailer-prefs.h
+++ b/modules/mail/em-mailer-prefs.h
@@ -61,7 +61,7 @@ struct _EMMailerPrefsHeader {
 struct _EMMailerPrefs {
 	GtkVBox parent_object;
 
-	GladeXML *gui;
+	GtkBuilder *builder;
 	GConfClient *gconf;
 
 	/* General tab */
diff --git a/modules/mail/em-network-prefs.c b/modules/mail/em-network-prefs.c
index 4e4ce83..b2e2e26 100644
--- a/modules/mail/em-network-prefs.c
+++ b/modules/mail/em-network-prefs.c
@@ -37,6 +37,7 @@
 
 #include <glib/gstdio.h>
 
+#include "e-util/e-util.h"
 #include "e-util/e-error.h"
 #include "e-util/e-util-private.h"
 
@@ -160,7 +161,7 @@ emnp_widget_glade(EConfig *ec, EConfigItem *item, GtkWidget *parent, GtkWidget *
 {
 	EMNetworkPrefs *prefs = data;
 
-	return glade_xml_get_widget(prefs->gui, item->label);
+	return e_builder_get_widget(prefs->builder, item->label);
 }
 
 static void
@@ -294,23 +295,17 @@ static void
 em_network_prefs_construct (EMNetworkPrefs *prefs)
 {
 	GtkWidget *toplevel;
-	GladeXML *gui;
 	GSList* l;
 	gchar *buf;
 	EMConfig *ec;
 	EMConfigTargetPrefs *target;
 	gboolean locked;
 	gint i, val, port;
-	gchar *gladefile;
 
 	prefs->gconf = mail_config_get_gconf_client ();
 
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      "mail-config.glade",
-				      NULL);
-	gui = glade_xml_new (gladefile, "network_preferences_toplevel", NULL);
-	prefs->gui = gui;
-	g_free (gladefile);
+	prefs->builder = gtk_builder_new ();
+	e_load_ui_builder_definition (prefs->builder, "mail-config.ui");
 
 	/** @HookPoint-EMConfig: Network Preferences
 	 * @Id: org.gnome.evolution.mail.networkPrefs
@@ -337,14 +332,14 @@ em_network_prefs_construct (EMNetworkPrefs *prefs)
 	if (val == NETWORK_PROXY_AUTOCONFIG)
 		val = NETWORK_PROXY_SYS_SETTINGS;
 
-	prefs->sys_proxy = GTK_TOGGLE_BUTTON (glade_xml_get_widget (gui, "rdoSysSettings"));
+	prefs->sys_proxy = GTK_TOGGLE_BUTTON (e_builder_get_widget (prefs->builder, "rdoSysSettings"));
 	gtk_toggle_button_set_active (prefs->sys_proxy, val == NETWORK_PROXY_SYS_SETTINGS);
 	if (locked)
 		gtk_widget_set_sensitive ((GtkWidget *) prefs->sys_proxy, FALSE);
 
 	d(g_print ("Sys settings ----!!! \n"));
 
-	prefs->no_proxy = GTK_TOGGLE_BUTTON (glade_xml_get_widget (gui, "rdoNoProxy"));
+	prefs->no_proxy = GTK_TOGGLE_BUTTON (e_builder_get_widget (prefs->builder, "rdoNoProxy"));
 	gtk_toggle_button_set_active (prefs->no_proxy, val == NETWORK_PROXY_DIRECT_CONNECTION);
 	if (locked)
 		gtk_widget_set_sensitive ((GtkWidget *) prefs->no_proxy, FALSE);
@@ -353,8 +348,8 @@ em_network_prefs_construct (EMNetworkPrefs *prefs)
 
 	/* no auto-proxy at the moment */
 #if 0
-	prefs->auto_proxy = GTK_TOGGLE_BUTTON (glade_xml_get_widget (gui, "rdoAutoConfig"));
-	prefs->auto_proxy_url = GTK_ENTRY (glade_xml_get_widget (gui, "txtAutoConfigUrl"));
+	prefs->auto_proxy = GTK_TOGGLE_BUTTON (e_builder_get_widget (prefs->builder, "rdoAutoConfig"));
+	prefs->auto_proxy_url = GTK_ENTRY (e_builder_get_widget (prefs->builder, "txtAutoConfigUrl"));
 
 	gtk_toggle_button_set_active (prefs->auto_proxy, val == NETWORK_PROXY_AUTOCONFIG);
 
@@ -365,29 +360,29 @@ em_network_prefs_construct (EMNetworkPrefs *prefs)
 
 	d(g_print ("Auto config settings ----!!! \n"));
 
-	prefs->manual_proxy = GTK_TOGGLE_BUTTON (glade_xml_get_widget (gui, "rdoManualProxy"));
-	prefs->http_host = GTK_ENTRY (glade_xml_get_widget (gui, "txtHttpHost"));
-	prefs->https_host = GTK_ENTRY (glade_xml_get_widget (gui, "txtHttpsHost"));
-	prefs->ignore_hosts = GTK_ENTRY (glade_xml_get_widget (gui, "txtIgnoreHosts"));
-	prefs->http_port = GTK_SPIN_BUTTON (glade_xml_get_widget (gui, "spnHttpPort"));
-	prefs->https_port = GTK_SPIN_BUTTON (glade_xml_get_widget (gui, "spnHttpsPort"));
-	prefs->lbl_http_host = GTK_LABEL (glade_xml_get_widget (gui, "lblHttpHost"));
-	prefs->lbl_http_port = GTK_LABEL (glade_xml_get_widget (gui, "lblHttpPort"));
-	prefs->lbl_https_host = GTK_LABEL (glade_xml_get_widget (gui, "lblHttpsHost"));
-	prefs->lbl_https_port = GTK_LABEL (glade_xml_get_widget (gui, "lblHttpsPort"));
-	prefs->lbl_ignore_hosts = GTK_LABEL (glade_xml_get_widget (gui, "lblIgnoreHosts"));
-	prefs->use_auth = GTK_TOGGLE_BUTTON (glade_xml_get_widget (gui, "chkUseAuth"));
+	prefs->manual_proxy = GTK_TOGGLE_BUTTON (e_builder_get_widget (prefs->builder, "rdoManualProxy"));
+	prefs->http_host = GTK_ENTRY (e_builder_get_widget (prefs->builder, "txtHttpHost"));
+	prefs->https_host = GTK_ENTRY (e_builder_get_widget (prefs->builder, "txtHttpsHost"));
+	prefs->ignore_hosts = GTK_ENTRY (e_builder_get_widget (prefs->builder, "txtIgnoreHosts"));
+	prefs->http_port = GTK_SPIN_BUTTON (e_builder_get_widget (prefs->builder, "spnHttpPort"));
+	prefs->https_port = GTK_SPIN_BUTTON (e_builder_get_widget (prefs->builder, "spnHttpsPort"));
+	prefs->lbl_http_host = GTK_LABEL (e_builder_get_widget (prefs->builder, "lblHttpHost"));
+	prefs->lbl_http_port = GTK_LABEL (e_builder_get_widget (prefs->builder, "lblHttpPort"));
+	prefs->lbl_https_host = GTK_LABEL (e_builder_get_widget (prefs->builder, "lblHttpsHost"));
+	prefs->lbl_https_port = GTK_LABEL (e_builder_get_widget (prefs->builder, "lblHttpsPort"));
+	prefs->lbl_ignore_hosts = GTK_LABEL (e_builder_get_widget (prefs->builder, "lblIgnoreHosts"));
+	prefs->use_auth = GTK_TOGGLE_BUTTON (e_builder_get_widget (prefs->builder, "chkUseAuth"));
 	toggle_button_init (prefs, prefs->use_auth, GCONF_E_USE_AUTH_KEY);
-	prefs->lbl_auth_user = GTK_LABEL (glade_xml_get_widget (gui, "lblAuthUser"));
-	prefs->lbl_auth_pwd = GTK_LABEL (glade_xml_get_widget (gui, "lblAuthPwd"));
-	prefs->auth_user = GTK_ENTRY (glade_xml_get_widget (gui, "txtAuthUser"));
-	prefs->auth_pwd = GTK_ENTRY (glade_xml_get_widget (gui, "txtAuthPwd"));
+	prefs->lbl_auth_user = GTK_LABEL (e_builder_get_widget (prefs->builder, "lblAuthUser"));
+	prefs->lbl_auth_pwd = GTK_LABEL (e_builder_get_widget (prefs->builder, "lblAuthPwd"));
+	prefs->auth_user = GTK_ENTRY (e_builder_get_widget (prefs->builder, "txtAuthUser"));
+	prefs->auth_pwd = GTK_ENTRY (e_builder_get_widget (prefs->builder, "txtAuthPwd"));
 
 #if 0
-	prefs->socks_host = GTK_ENTRY (glade_xml_get_widget (gui, "txtSocksHost"));
-	prefs->socks_port = GTK_SPIN_BUTTON (glade_xml_get_widget (gui, "spnSocksPort"));
-	prefs->lbl_socks_host = GTK_LABEL (glade_xml_get_widget (gui, "lblSocksHost"));
-	prefs->lbl_socks_port = GTK_LABEL (glade_xml_get_widget (gui, "lblSocksPort"));
+	prefs->socks_host = GTK_ENTRY (e_builder_get_widget (prefs->builder, "txtSocksHost"));
+	prefs->socks_port = GTK_SPIN_BUTTON (e_builder_get_widget (prefs->builder, "spnSocksPort"));
+	prefs->lbl_socks_host = GTK_LABEL (e_builder_get_widget (prefs->builder, "lblSocksHost"));
+	prefs->lbl_socks_port = GTK_LABEL (e_builder_get_widget (prefs->builder, "lblSocksPort"));
 	g_signal_connect (prefs->socks_host, "changed",
 			  G_CALLBACK(widget_entry_changed_cb), GCONF_E_SOCKS_HOST_KEY);
 	g_signal_connect (prefs->socks_port, "value_changed",
diff --git a/modules/mail/em-network-prefs.h b/modules/mail/em-network-prefs.h
index 78816b0..c7a70a8 100644
--- a/modules/mail/em-network-prefs.h
+++ b/modules/mail/em-network-prefs.h
@@ -62,7 +62,7 @@ struct _EMNetworkPrefs {
 
 	GConfClient *gconf;
 
-	GladeXML *gui;
+	GtkBuilder *builder;
 
 	/* Default Behavior */
 	GtkToggleButton *sys_proxy;
diff --git a/plugins/attachment-reminder/Makefile.am b/plugins/attachment-reminder/Makefile.am
index b213db0..22c8a7c 100644
--- a/plugins/attachment-reminder/Makefile.am
+++ b/plugins/attachment-reminder/Makefile.am
@@ -5,8 +5,9 @@ error_DATA = org-gnome-attachment-reminder.error
 errordir = $(privdatadir)/errors
 
 plugin_DATA = 						\
-	org-gnome-evolution-attachment-reminder.eplug	\
-	attachment-reminder.ui
+	org-gnome-evolution-attachment-reminder.eplug
+
+ui_DATA = attachment-reminder.ui
 
 plugin_LTLIBRARIES = liborg-gnome-evolution-attachment-reminder.la
 
diff --git a/plugins/attachment-reminder/attachment-reminder.c b/plugins/attachment-reminder/attachment-reminder.c
index 330fd5d..71137a4 100644
--- a/plugins/attachment-reminder/attachment-reminder.c
+++ b/plugins/attachment-reminder/attachment-reminder.c
@@ -27,6 +27,7 @@
 #include <glade/glade-xml.h>
 #include <gconf/gconf-client.h>
 
+#include <e-util/e-util.h>
 #include <e-util/e-config.h>
 #include <mail/em-config.h>
 #include <mail/em-event.h>
@@ -53,7 +54,7 @@
 #define SIGNATURE "-- "
 
 typedef struct {
-	GladeXML *xml;
+	GtkBuilder *builder;
 	GConfClient *gconf;
 	GtkWidget   *treeview;
 	GtkWidget   *clue_add;
@@ -438,7 +439,7 @@ destroy_ui_data (gpointer data)
 	if (!ui)
 		return;
 
-	g_object_unref (ui->xml);
+	g_object_unref (ui->builder);
 	g_object_unref (ui->gconf);
 	g_free (ui);
 }
@@ -456,17 +457,12 @@ e_plugin_lib_get_configure_widget (EPlugin *epl)
 
 	UIData *ui = g_new0 (UIData, 1);
 
-	gchar *gladefile;
-
-	gladefile = g_build_filename (EVOLUTION_PLUGINDIR,
-			"attachment-reminder.glade",
-			NULL);
-	ui->xml = glade_xml_new (gladefile, "reminder_configuration_box", NULL);
-	g_free (gladefile);
+	ui->builder = gtk_builder_new ();
+	e_load_ui_builder_definition (ui->builder, "attachment-reminder.ui");
 
 	ui->gconf = gconf_client_get_default ();
 
-	ui->treeview = glade_xml_get_widget (ui->xml, "clue_treeview");
+	ui->treeview = e_builder_get_widget (ui->builder, "clue_treeview");
 
 	ui->store = gtk_list_store_new (CLUE_N_COLUMNS, G_TYPE_STRING);
 
@@ -483,14 +479,14 @@ e_plugin_lib_get_configure_widget (EPlugin *epl)
 	g_signal_connect (G_OBJECT (selection), "changed", G_CALLBACK (selection_changed), ui);
 	gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (ui->treeview), TRUE);
 
-	ui->clue_add = glade_xml_get_widget (ui->xml, "clue_add");
+	ui->clue_add = e_builder_get_widget (ui->builder, "clue_add");
 	g_signal_connect (G_OBJECT (ui->clue_add), "clicked", G_CALLBACK (clue_add_clicked), ui);
 
-	ui->clue_remove = glade_xml_get_widget (ui->xml, "clue_remove");
+	ui->clue_remove = e_builder_get_widget (ui->builder, "clue_remove");
 	g_signal_connect (G_OBJECT (ui->clue_remove), "clicked", G_CALLBACK (clue_remove_clicked), ui);
 	gtk_widget_set_sensitive (ui->clue_remove, FALSE);
 
-	ui->clue_edit = glade_xml_get_widget (ui->xml, "clue_edit");
+	ui->clue_edit = e_builder_get_widget (ui->builder, "clue_edit");
 	g_signal_connect (G_OBJECT (ui->clue_edit), "clicked", G_CALLBACK (clue_edit_clicked), ui);
 	gtk_widget_set_sensitive (ui->clue_edit, FALSE);
 
@@ -514,7 +510,7 @@ e_plugin_lib_get_configure_widget (EPlugin *epl)
 
 	hbox = gtk_vbox_new (FALSE, 0);
 
-	gtk_box_pack_start (GTK_BOX (hbox), glade_xml_get_widget (ui->xml, "reminder_configuration_box"), TRUE, TRUE, 0);
+	gtk_box_pack_start (GTK_BOX (hbox), e_builder_get_widget (ui->builder, "reminder_configuration_box"), TRUE, TRUE, 0);
 
 	/* to let free data properly on destroy of configuration widget */
 	g_object_set_data_full (G_OBJECT (hbox), "myui-data", ui, destroy_ui_data);
diff --git a/plugins/email-custom-header/email-custom-header.c b/plugins/email-custom-header/email-custom-header.c
index d42732d..85b7a8a 100644
--- a/plugins/email-custom-header/email-custom-header.c
+++ b/plugins/email-custom-header/email-custom-header.c
@@ -40,7 +40,7 @@
 #define GCONF_KEY_CUSTOM_HEADER "/apps/evolution/eplugin/email_custom_header/customHeader"
 
 typedef struct {
-        GladeXML *xml;
+	GtkBuilder *builder;
         GConfClient *gconf;
         GtkWidget   *treeview;
         GtkWidget   *header_add;
@@ -56,8 +56,7 @@ enum {
 };
 
 struct _EmailCustomHeaderOptionsDialogPrivate {
-	/* Glade XML data */
-	GladeXML *xml;
+	GtkBuilder *builder;
 	/*Widgets*/
 	GtkWidget *main;
 	GtkWidget *page;
@@ -118,7 +117,7 @@ epech_get_widgets (CustomHeaderOptionsDialog *mch)
 	EmailCustomHeaderOptionsDialogPrivate *priv;
 	priv = mch->priv;
 
-#define EMAIL_CUSTOM_HEADER(name) glade_xml_get_widget (priv->xml, name)
+#define EMAIL_CUSTOM_HEADER(name) e_builder_get_widget (priv->builder, name)
 	priv->main = EMAIL_CUSTOM_HEADER ("email-custom-header-dialog");
 
 	if (!priv->main)
@@ -206,7 +205,7 @@ epech_header_options_cb (GtkDialog *dialog, gint state, gpointer func_data)
 		case GTK_RESPONSE_CANCEL:
 			gtk_widget_hide (priv->main);
 			gtk_widget_destroy (priv->main);
-			g_object_unref (priv->xml);
+			g_object_unref (priv->builder);
 			break;
 		case GTK_RESPONSE_HELP:
 			e_display_help (
@@ -223,24 +222,17 @@ epech_dialog_run (CustomHeaderOptionsDialog *mch, GtkWidget *parent)
 {
 	EmailCustomHeaderOptionsDialogPrivate *priv;
 	GtkWidget *toplevel;
-	gchar *filename;
 
 	g_return_val_if_fail (mch != NULL || EMAIL_CUSTOM_HEADER_OPTIONS_IS_DIALOG (mch), FALSE);
 	priv = mch->priv;
 	epech_get_header_list (mch);
 
-	filename = g_build_filename (EVOLUTION_UIDIR,
-			"org-gnome-email-custom-header.glade",
-			NULL);
-	priv->xml = glade_xml_new (filename, NULL, NULL);
-	g_free (filename);
-
-	if (!priv->xml) {
-		d (printf ("\n Could not load the Glade XML file\n"));
-	}
+	priv->builder = gtk_builder_new ();
+	e_load_ui_builder_definition (
+		priv->builder, "org-gnome-email-custom-header.ui");
 
 	if (!epech_get_widgets(mch)) {
-		g_object_unref (priv->xml);
+		g_object_unref (priv->builder);
 		d (printf ("\n Could not get the Widgets\n"));
 	}
 
@@ -423,7 +415,7 @@ epech_dialog_init (GObject *object)
 	mch = EMAIL_CUSTOM_HEADEROPTIONS_DIALOG (object);
 	priv = g_new0 (EmailCustomHeaderOptionsDialogPrivate, 1);
 	mch->priv = priv;
-	priv->xml = NULL;
+	priv->builder = NULL;
 	priv->main = NULL;
 	priv->page = NULL;
 	priv->header_table = NULL;
@@ -860,7 +852,7 @@ destroy_cd_data (gpointer data)
 	if (!cd)
 		return;
 
-	g_object_unref (cd->xml);
+	g_object_unref (cd->builder);
 	g_object_unref (cd->gconf);
 	g_free (cd);
 }
@@ -884,17 +876,12 @@ e_plugin_lib_get_configure_widget (EPlugin *epl)
 
 	ConfigData *cd = g_new0 (ConfigData, 1);
 
-	gchar *gladefile;
-
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-			"email-custom-header.glade",
-			NULL);
-	cd->xml = glade_xml_new (gladefile, "ech_configuration_box", NULL);
-	g_free (gladefile);
+	cd->builder = gtk_builder_new ();
+	e_load_ui_builder_definition (cd->builder, "email-custom-header.ui");
 
 	cd->gconf = gconf_client_get_default ();
 
-	cd->treeview = glade_xml_get_widget (cd->xml, "header_treeview");
+	cd->treeview = e_builder_get_widget (cd->builder, "header_treeview");
 
 	cd->store = gtk_list_store_new (HEADER_N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING);
 
@@ -926,14 +913,14 @@ e_plugin_lib_get_configure_widget (EPlugin *epl)
 	g_signal_connect (G_OBJECT (selection), "changed", G_CALLBACK (selection_changed), cd);
 	gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (cd->treeview), TRUE);
 
-	cd->header_add = glade_xml_get_widget (cd->xml, "header_add");
+	cd->header_add = e_builder_get_widget (cd->builder, "header_add");
 	g_signal_connect (G_OBJECT (cd->header_add), "clicked", G_CALLBACK (header_add_clicked), cd);
 
-	cd->header_remove = glade_xml_get_widget (cd->xml, "header_remove");
+	cd->header_remove = e_builder_get_widget (cd->builder, "header_remove");
 	g_signal_connect (G_OBJECT (cd->header_remove), "clicked", G_CALLBACK (header_remove_clicked), cd);
 	gtk_widget_set_sensitive (cd->header_remove, FALSE);
 
-	cd->header_edit = glade_xml_get_widget (cd->xml, "header_edit");
+	cd->header_edit = e_builder_get_widget (cd->builder, "header_edit");
 	g_signal_connect (G_OBJECT (cd->header_edit), "clicked", G_CALLBACK (header_edit_clicked), cd);
 	gtk_widget_set_sensitive (cd->header_edit, FALSE);
 
@@ -967,7 +954,7 @@ e_plugin_lib_get_configure_widget (EPlugin *epl)
 
 	hbox = gtk_vbox_new (FALSE, 0);
 
-	gtk_box_pack_start (GTK_BOX (hbox), glade_xml_get_widget (cd->xml, "ech_configuration_box"), TRUE, TRUE, 0);
+	gtk_box_pack_start (GTK_BOX (hbox), e_builder_get_widget (cd->builder, "ech_configuration_box"), TRUE, TRUE, 0);
 
 	/* to let free data properly on destroy of configuration widget */
 	g_object_set_data_full (G_OBJECT (hbox), "mycd-data", cd, destroy_cd_data);
diff --git a/plugins/groupwise-features/junk-settings.c b/plugins/groupwise-features/junk-settings.c
index 9c49cf0..ac985fd 100644
--- a/plugins/groupwise-features/junk-settings.c
+++ b/plugins/groupwise-features/junk-settings.c
@@ -26,6 +26,7 @@
 #include "junk-settings.h"
 #include <gtk/gtk.h>
 #include <glib/gi18n.h>
+#include <e-util/e-util.h>
 #include <e-util/e-error.h>
 #include <e-util/e-util-private.h>
 #include <e-gw-connection.h>
@@ -87,7 +88,7 @@ static void
 junk_settings_finalise (GObject *obj)
 {
 	JunkSettings *js = (JunkSettings *) obj;
-	g_object_unref (js->xml);
+	g_object_unref (js->builder);
 	free_all(js);
 
 	G_OBJECT_CLASS (parent_class)->finalize (obj);
@@ -369,42 +370,31 @@ user_selected(GtkTreeSelection *selection, JunkSettings *js)
 static void
 junk_settings_construct (JunkSettings *js)
 {
-	GladeXML *xml;
-	gchar *gladefile;
+	js->builder = gtk_builder_new ();
+	e_load_ui_builder_definition (js->builder, "junk-settings.ui");
 
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      "junk-settings.glade",
-				      NULL);
-	xml = glade_xml_new (gladefile, ROOTNODE, NULL);
-	g_free (gladefile);
-
-	js->xml =xml;
-
-	if (!js->xml) {
-		g_warning ("could not get xml");
-	}
-	js->vbox = GTK_VBOX (glade_xml_get_widget(js->xml, "vboxSettings"));
-	js->table = GTK_VBOX (glade_xml_get_widget (js->xml, "vbox194"));
+	js->vbox = GTK_VBOX (e_builder_get_widget(js->builder, "vboxSettings"));
+	js->table = GTK_VBOX (e_builder_get_widget (js->builder, "vbox194"));
 	gtk_widget_set_sensitive (GTK_WIDGET (js->table), FALSE);
 
-	js->enable = GTK_RADIO_BUTTON (glade_xml_get_widget (js->xml, "radEnable"));
+	js->enable = GTK_RADIO_BUTTON (e_builder_get_widget (js->builder, "radEnable"));
 	g_signal_connect ((gpointer) js->enable, "clicked", G_CALLBACK (enable_clicked), js);
 
-	js->disable = GTK_RADIO_BUTTON (glade_xml_get_widget (js->xml, "radDisable"));
+	js->disable = GTK_RADIO_BUTTON (e_builder_get_widget (js->builder, "radDisable"));
 	g_signal_connect ((gpointer) js->disable, "clicked", G_CALLBACK (disable_clicked), js);
 
-	js->add_button = GTK_BUTTON (glade_xml_get_widget(js->xml, "Add"));
+	js->add_button = GTK_BUTTON (e_builder_get_widget(js->builder, "Add"));
 	g_signal_connect((GtkWidget *) js->add_button, "clicked", G_CALLBACK (add_clicked), js);
 
-	js->remove = GTK_BUTTON(glade_xml_get_widget(js->xml, "Remove"));
+	js->remove = GTK_BUTTON(e_builder_get_widget(js->builder, "Remove"));
 	g_signal_connect ((GtkWidget *) js->remove, "clicked", G_CALLBACK (remove_clicked), js);
 	gtk_widget_set_sensitive(GTK_WIDGET (js->remove), FALSE);
 
-	js->entry = GTK_ENTRY (glade_xml_get_widget (js->xml, "entry4"));
+	js->entry = GTK_ENTRY (e_builder_get_widget (js->builder, "entry4"));
 		/*TODO:connect entry and label*/
 	gtk_widget_show ((GtkWidget *) js->entry);
 
-	js->scrolled_window = GTK_WIDGET (glade_xml_get_widget (js->xml,"scrolledwindow4"));
+	js->scrolled_window = GTK_WIDGET (e_builder_get_widget (js->builder,"scrolledwindow4"));
 
 	gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (js->scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
 
diff --git a/plugins/groupwise-features/junk-settings.h b/plugins/groupwise-features/junk-settings.h
index 3216ed9..d4b59ae 100644
--- a/plugins/groupwise-features/junk-settings.h
+++ b/plugins/groupwise-features/junk-settings.h
@@ -24,8 +24,6 @@
 #ifndef __JUNK_SETTINGS_H__
 #define __JUNK_SETTINGS_H__
 
-G_BEGIN_DECLS
-
 #include <gtk/gtk.h>
 #include <camel/camel-store.h>
 #include <e-gw-connection.h>
@@ -36,13 +34,15 @@ G_BEGIN_DECLS
 #define IS_JUNK_SETTINGS(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), JUNK_SETTINGS_TYPE))
 #define IS_JUNK_SETTINGS_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), JUNK_SETTINGS_TYPE))
 
+G_BEGIN_DECLS
+
 typedef struct _JunkSettings JunkSettings;
 typedef struct _JunkSettingsClass JunkSettingsClass;
 
 struct _JunkSettings {
 	GtkVBox parent_object;
 
-	GladeXML *xml;
+	GtkBuilder *builder;
 
 	/* General tab */
 
diff --git a/plugins/groupwise-features/proxy-login.c b/plugins/groupwise-features/proxy-login.c
index 452d7f5..8a8c103 100644
--- a/plugins/groupwise-features/proxy-login.c
+++ b/plugins/groupwise-features/proxy-login.c
@@ -37,6 +37,7 @@
 #include <camel/camel-store.h>
 #include <mail/mail-ops.h>
 #include <libedataserver/e-account.h>
+#include <e-util/e-util.h>
 #include <e-util/e-error.h>
 #include <e-util/e-icon-factory.h>
 #include <e-util/e-util-private.h>
@@ -51,7 +52,7 @@
 #include "gw-ui.h"
 #include "proxy-login.h"
 
-#define GW(name) glade_xml_get_widget (priv->xml, name)
+#define GW(name) e_builder_get_widget (priv->builder, name)
 
 #define ACCOUNT_PICTURE 0
 #define ACCOUNT_NAME 1
@@ -60,8 +61,8 @@ proxyLogin *pld = NULL;
 static GObjectClass *parent_class = NULL;
 
 struct _proxyLoginPrivate {
-	/* Glade XML data for the Add/Edit Proxy dialog*/
-	GladeXML *xml;
+	/* UI data for the Add/Edit Proxy dialog*/
+	GtkBuilder *builder;
 	/* Widgets */
 	GtkWidget *main;
 
@@ -84,7 +85,7 @@ proxy_login_finalize (GObject *object)
 	g_list_foreach (prd->proxy_list, (GFunc)g_free, NULL);
 	g_list_free (prd->proxy_list);
 	prd->proxy_list = NULL;
-	g_object_unref (priv->xml);
+	g_object_unref (priv->builder);
 	g_free (priv->help_section);
 
 	if (prd->priv) {
@@ -133,7 +134,7 @@ proxy_login_init (GObject *object)
 	prd->priv = priv;
 
 	prd->proxy_list = NULL;
-	priv->xml = NULL;
+	priv->builder = NULL;
 	priv->main = NULL;
 	priv->store = NULL;
 	priv->tree = NULL;
@@ -281,7 +282,7 @@ proxy_login_cb (GtkDialog *dialog, gint state, GtkWindow *parent)
 	gchar *proxy_name;
 
 	priv = pld->priv;
-	account_name_tbox = glade_xml_get_widget (priv->xml, "account_name");
+	account_name_tbox = e_builder_get_widget (priv->builder, "account_name");
 	proxy_name = g_strdup ((gchar *) gtk_entry_get_text ((GtkEntry *) account_name_tbox));
 
 	switch (state) {
@@ -404,7 +405,7 @@ proxy_login_tree_view_changed_cb(GtkDialog *dialog)
 		return;
 	gtk_tree_model_get (model, &iter, ACCOUNT_NAME, &account_mailid, -1);
 	account_mailid = g_strrstr (account_mailid, "\n") + 1;
-	account_name_tbox = glade_xml_get_widget (priv->xml, "account_name");
+	account_name_tbox = e_builder_get_widget (priv->builder, "account_name");
 	gtk_entry_set_text((GtkEntry*) account_name_tbox,account_mailid);
 }
 
@@ -482,7 +483,6 @@ gw_proxy_login_cb (GtkAction *action, EShellView *shell_view)
 	gchar *uri = NULL;
 	proxyLoginPrivate *priv;
 	EGwConnection *cnc;
-	gchar *gladefile;
 
 	shell_sidebar = e_shell_view_get_shell_sidebar (shell_view);
 	g_object_get (shell_sidebar, "folder-tree", &folder_tree, NULL);
@@ -509,15 +509,12 @@ gw_proxy_login_cb (GtkAction *action, EShellView *shell_view)
 	pld = proxy_login_new();
 	priv = pld->priv;
 
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      "proxy-login-dialog.glade",
-				      NULL);
-	priv->xml = glade_xml_new (gladefile, NULL, NULL);
-	g_free (gladefile);
+	priv->builder = gtk_builder_new ();
+	e_load_ui_builder_definition (priv->builder, "proxy-login-dialog.ui");
 
-	priv->main = glade_xml_get_widget (priv->xml, "proxy_login_dialog");
+	priv->main = e_builder_get_widget (priv->builder, "proxy_login_dialog");
 	pld->account = mail_config_get_account_by_source_url (uri);
-	priv->tree = GTK_TREE_VIEW (glade_xml_get_widget (priv->xml, "proxy_login_treeview"));
+	priv->tree = GTK_TREE_VIEW (e_builder_get_widget (priv->builder, "proxy_login_treeview"));
 	priv->store =  gtk_tree_store_new (2,
 					   GDK_TYPE_PIXBUF,
 					   G_TYPE_STRING
diff --git a/plugins/groupwise-features/proxy.c b/plugins/groupwise-features/proxy.c
index 82746c3..7e2aea3 100644
--- a/plugins/groupwise-features/proxy.c
+++ b/plugins/groupwise-features/proxy.c
@@ -30,6 +30,7 @@
 
 #include <libedataserverui/e-contact-store.h>
 
+#include <e-util/e-util.h>
 #include <e-util/e-error.h>
 #include <e-util/e-util-private.h>
 #include <e-gw-container.h>
@@ -51,7 +52,7 @@
 #include <proxy.h>
 #include <string.h>
 
-#define GW(name) glade_xml_get_widget (priv->xml, name)
+#define GW(name) e_builder_get_widget (priv->builder, name)
 
 #define ACCOUNT_PICTURE 0
 #define ACCOUNT_NAME 1
@@ -63,10 +64,10 @@ static GObjectClass *parent_class = NULL;
 static gboolean proxy_page_changed_cb (GtkNotebook *notebook, GtkNotebookPage *page, gint num, EAccount *account);
 
 struct _proxyDialogPrivate {
-	/* Glade XML data for the Add/Edit Proxy dialog*/
-	GladeXML *xml;
-	/*Glade XML data for Proxy Tab*/
-	GladeXML *xml_tab;
+	/* UI data for the Add/Edit Proxy dialog*/
+	GtkBuilder *builder;
+	/* UI data for Proxy Tab*/
+	GtkBuilder *builder_tab;
 
 	/* Widgets */
 	GtkWidget *main;
@@ -150,7 +151,7 @@ proxy_dialog_finalize (GObject *object)
 	if (priv) {
 		free_proxy_list (priv->proxy_list);
 		g_free (priv->help_section);
-		g_object_unref (priv->xml_tab);
+		g_object_unref (priv->builder_tab);
 		g_free (prd->priv);
 		prd->priv = NULL;
 	}
@@ -188,8 +189,8 @@ proxy_dialog_init (GObject *object)
 
 	prd->cnc = NULL;
 	priv->tab_dialog = NULL;
-	priv->xml = NULL;
-	priv->xml_tab = NULL;
+	priv->builder = NULL;
+	priv->builder_tab = NULL;
 	priv->main = NULL;
 	priv->tree = NULL;
 	priv->store = NULL;
@@ -637,7 +638,6 @@ org_gnome_proxy (EPlugin *epl, EConfigHookItemFactoryData *data)
 	CamelOfflineStore *store;
 	CamelException ex;
 	gint pag_num;
-	gchar *gladefile;
 
 	target_account = (EMConfigTargetAccount *)data->config->target;
 	account = target_account->account;
@@ -656,24 +656,21 @@ org_gnome_proxy (EPlugin *epl, EConfigHookItemFactoryData *data)
 		g_object_set_data_full ((GObject *) account, "prd", prd, (GDestroyNotify) g_object_unref);
 		priv = prd->priv;
 
-		gladefile = g_build_filename (EVOLUTION_UIDIR,
-					      "proxy-listing.glade",
-					      NULL);
-		priv->xml_tab = glade_xml_new (gladefile, "proxy_vbox", NULL);
-		g_free (gladefile);
+		priv->builder_tab = gtk_builder_new ();
+		e_load_ui_builder_definition (priv->builder_tab, "proxy-listing.ui");
 
 		if (account->enabled && (store->state == CAMEL_OFFLINE_STORE_NETWORK_AVAIL)) {
-			priv->tab_dialog = GTK_WIDGET (glade_xml_get_widget (priv->xml_tab, "proxy_vbox"));
-			priv->tree = GTK_TREE_VIEW (glade_xml_get_widget (priv->xml_tab, "proxy_access_list"));
+			priv->tab_dialog = GTK_WIDGET (e_builder_get_widget (priv->builder_tab, "proxy_vbox"));
+			priv->tree = GTK_TREE_VIEW (e_builder_get_widget (priv->builder_tab, "proxy_access_list"));
 			priv->store =  gtk_tree_store_new (2,
 							   GDK_TYPE_PIXBUF,
 							   G_TYPE_STRING
 				);
 			proxy_setup_meta_tree_view (account);
 
-			addProxy = (GtkButton *) glade_xml_get_widget (priv->xml_tab, "add_proxy");
-			removeProxy = (GtkButton *) glade_xml_get_widget (priv->xml_tab, "remove_proxy");
-			editProxy = (GtkButton *) glade_xml_get_widget (priv->xml_tab, "edit_proxy");
+			addProxy = (GtkButton *) e_builder_get_widget (priv->builder_tab, "add_proxy");
+			removeProxy = (GtkButton *) e_builder_get_widget (priv->builder_tab, "remove_proxy");
+			editProxy = (GtkButton *) e_builder_get_widget (priv->builder_tab, "edit_proxy");
 
 			g_signal_connect (addProxy, "clicked", G_CALLBACK(proxy_add_account), account);
 			g_signal_connect (removeProxy, "clicked", G_CALLBACK(proxy_remove_account), account);
@@ -779,7 +776,7 @@ proxy_cancel(GtkWidget *button, EAccount *account)
 	prd = g_object_get_data ((GObject *)account, "prd");
 	priv = prd->priv;
 	gtk_widget_destroy (priv->main);
-	g_object_unref (priv->xml);
+	g_object_unref (priv->builder);
 }
 
 static void
@@ -796,7 +793,7 @@ proxy_add_ok (GtkWidget *button, EAccount *account)
 
 	proxy_update_tree_view (account);
 	gtk_widget_destroy (priv->main);
-	g_object_unref (priv->xml);
+	g_object_unref (priv->builder);
 }
 
 static void
@@ -813,7 +810,7 @@ proxy_edit_ok (GtkWidget *button, EAccount *account)
 
 	proxy_update_tree_view (account);
 	gtk_widget_destroy (priv->main);
-	g_object_unref (priv->xml);
+	g_object_unref (priv->builder);
 }
 
 static proxyHandler *
@@ -900,22 +897,18 @@ proxy_add_account (GtkWidget *button, EAccount *account)
 	ENameSelectorEntry *name_selector_entry;
 	GtkWidget *proxy_name, *name_box;
 	proxyDialog *prd = NULL;
-	gchar *gladefile;
 
 	prd = g_object_get_data ((GObject *)account, "prd");
 	priv = prd->priv;
 
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      "proxy-add-dialog.glade",
-				      NULL);
-	priv->xml = glade_xml_new (gladefile, NULL, NULL);
-	g_free (gladefile);
+	priv->builder = gtk_builder_new ();
+	e_load_ui_builder_definition (priv->builder, "proxy-add-dialog.ui");
 
 	proxy_dialog_initialize_widgets (account);
-	priv->main = glade_xml_get_widget (priv->xml, "ProxyAccessRights");
-	okButton = (GtkButton *) glade_xml_get_widget (priv->xml,"proxy_button_ok");
-	contacts = (GtkButton *) glade_xml_get_widget (priv->xml,"contacts");
-	cancel = (GtkButton *) glade_xml_get_widget (priv->xml,"proxy_cancel");
+	priv->main = e_builder_get_widget (priv->builder, "ProxyAccessRights");
+	okButton = (GtkButton *) e_builder_get_widget (priv->builder,"proxy_button_ok");
+	contacts = (GtkButton *) e_builder_get_widget (priv->builder,"contacts");
+	cancel = (GtkButton *) e_builder_get_widget (priv->builder,"proxy_cancel");
 
 	priv->proxy_name_selector = e_name_selector_new ();
 	name_selector_dialog = e_name_selector_peek_dialog (priv->proxy_name_selector);
@@ -933,8 +926,8 @@ proxy_add_account (GtkWidget *button, EAccount *account)
 	g_signal_connect (name_selector_entry, "changed",
 			  G_CALLBACK (addressbook_entry_changed), prd);
 
-	proxy_name = glade_xml_get_widget (priv->xml, "proxy_account_name");
-	name_box = glade_xml_get_widget (priv->xml, "proxy_name_box");
+	proxy_name = e_builder_get_widget (priv->builder, "proxy_account_name");
+	name_box = e_builder_get_widget (priv->builder, "proxy_name_box");
 	gtk_widget_hide (proxy_name);
 	gtk_container_add ((GtkContainer *)name_box, (GtkWidget *)name_selector_entry);
 	gtk_widget_show ((GtkWidget *) name_selector_entry);
@@ -1001,7 +994,6 @@ proxy_edit_account (GtkWidget *button, EAccount *account)
 	gchar *account_mailid;
 	GtkWidget *contacts;
 	proxyDialog *prd = NULL;
-	gchar *gladefile;
 
 	prd = g_object_get_data ((GObject *)account, "prd");
 	priv = prd->priv;
@@ -1015,17 +1007,14 @@ proxy_edit_account (GtkWidget *button, EAccount *account)
 		account_mailid = g_strrstr (account_mailid, "\n") + 1;
 		edited = proxy_get_item_from_list (account, account_mailid);
 		if (edited) {
-			gladefile = g_build_filename (EVOLUTION_UIDIR,
-						      "proxy-add-dialog.glade",
-						      NULL);
-			priv->xml = glade_xml_new (gladefile, NULL, NULL);
-			g_free (gladefile);
+			priv->builder = gtk_builder_new ();
+			e_load_ui_builder_definition (priv->builder, "proxy-add-dialog.ui");
 
-			priv->main = glade_xml_get_widget (priv->xml, "ProxyAccessRights");
+			priv->main = e_builder_get_widget (priv->builder, "ProxyAccessRights");
 			proxy_dialog_initialize_widgets (account);
-			okButton = (GtkButton *) glade_xml_get_widget (priv->xml,"proxy_button_ok");
-			proxyCancel = (GtkButton *) glade_xml_get_widget (priv->xml,"proxy_cancel");
-			contacts = glade_xml_get_widget (priv->xml, "contacts");
+			okButton = (GtkButton *) e_builder_get_widget (priv->builder,"proxy_button_ok");
+			proxyCancel = (GtkButton *) e_builder_get_widget (priv->builder,"proxy_cancel");
+			contacts = e_builder_get_widget (priv->builder, "contacts");
 
 			g_signal_connect ((GtkWidget *)okButton, "clicked", G_CALLBACK (proxy_edit_ok), account);
 			g_signal_connect ((GtkWidget *)proxyCancel, "clicked", G_CALLBACK (proxy_cancel), account);
diff --git a/plugins/groupwise-features/share-folder.c b/plugins/groupwise-features/share-folder.c
index 3594a2e..9a39678 100644
--- a/plugins/groupwise-features/share-folder.c
+++ b/plugins/groupwise-features/share-folder.c
@@ -26,6 +26,7 @@
 #include "share-folder.h"
 #include <glib/gi18n-lib.h>
 #include <libedataserverui/e-contact-store.h>
+#include <e-util/e-util.h>
 #include <e-util/e-error.h>
 #include <e-util/e-util-private.h>
 #include <e-gw-container.h>
@@ -98,7 +99,7 @@ static void
 share_folder_finalise (GObject *obj)
 {
 	ShareFolder *sf = (ShareFolder *) obj;
-	g_object_unref (sf->xml);
+	g_object_unref (sf->builder);
 	free_all(sf);
 	G_OBJECT_CLASS (parent_class)->finalize (obj);
 }
@@ -503,29 +504,25 @@ not_cancel_clicked(GtkButton *button, GtkWidget *window)
 static void
 notification_clicked(GtkButton *button, ShareFolder *sf)
 {
-	static  GladeXML *xmln;
+	static  GtkBuilder *builder;
 	GtkButton *not_ok;
 	GtkButton *not_cancel;
 	GtkWidget *vbox;
-	gchar *gladefile;
 
 	sf->window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
 	gtk_window_set_type_hint (GTK_WINDOW (sf->window), GDK_WINDOW_TYPE_HINT_DIALOG);
 
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      "properties.glade",
-				      NULL);
-	xmln = glade_xml_new (gladefile, NROOTNODE , NULL);
-	g_free (gladefile);
+	builder = gtk_builder_new ();
+	e_load_ui_builder_definition (builder, "properties.ui");
 
-	vbox = GTK_WIDGET (glade_xml_get_widget (xmln, "vbox191"));
+	vbox = GTK_WIDGET (e_builder_get_widget (builder, "vbox191"));
 	gtk_container_add (GTK_CONTAINER (sf->window), vbox);
-	sf->subject = GTK_ENTRY (glade_xml_get_widget (xmln, "entry3"));
+	sf->subject = GTK_ENTRY (e_builder_get_widget (builder, "entry3"));
 	gtk_entry_set_text(GTK_ENTRY (sf->subject) , sf->sub);
-	sf->message = GTK_TEXT_VIEW (glade_xml_get_widget (xmln, "textview1"));
-	not_ok = GTK_BUTTON (glade_xml_get_widget (xmln, "nOK"));
+	sf->message = GTK_TEXT_VIEW (e_builder_get_widget (builder, "textview1"));
+	not_ok = GTK_BUTTON (e_builder_get_widget (builder, "nOK"));
 	g_signal_connect ((gpointer) not_ok, "clicked", G_CALLBACK (not_ok_clicked), sf);
-	not_cancel = GTK_BUTTON (glade_xml_get_widget (xmln, "nCancel"));
+	not_cancel = GTK_BUTTON (e_builder_get_widget (builder, "nCancel"));
 	g_signal_connect ((gpointer) not_cancel, "clicked", G_CALLBACK (not_cancel_clicked), sf->window);
 	gtk_window_set_title (GTK_WINDOW (sf->window), _("Custom Notification"));
 	gtk_window_set_position (GTK_WINDOW (sf->window) , GTK_WIN_POS_CENTER_ALWAYS);
@@ -671,35 +668,25 @@ delete_right_clicked(GtkCellRenderer *renderer, gchar *arg1, ShareFolder *sf )
 static void
 share_folder_construct (ShareFolder *sf)
 {
-	GladeXML *xml;
 	ENameSelectorDialog *name_selector_dialog;
 	ENameSelectorModel *name_selector_model;
 	ENameSelectorEntry *name_selector_entry;
 	GtkWidget *box;
-	gchar *gladefile;
 
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      "properties.glade",
-				      NULL);
-	xml = glade_xml_new (gladefile, ROOTNODE, NULL);
-	g_free (gladefile);
+	sf->builder = gtk_builder_new ();
+	e_load_ui_builder_definition (sf->builder, "properties.ui");
 
-	sf->xml =xml;
-
-	if (!sf->xml) {
-		g_warning ("could not get xml");
-	}
-	sf->vbox = GTK_VBOX (glade_xml_get_widget(sf->xml, "vboxSharing"));
-	sf->table = GTK_VBOX (glade_xml_get_widget (sf->xml, "vbox194"));
+	sf->vbox = GTK_VBOX (e_builder_get_widget(sf->builder, "vboxSharing"));
+	sf->table = GTK_VBOX (e_builder_get_widget (sf->builder, "vbox194"));
 	gtk_widget_set_sensitive (GTK_WIDGET (sf->table), FALSE);
 
-	sf->shared = GTK_RADIO_BUTTON (glade_xml_get_widget (sf->xml, "radShared"));
+	sf->shared = GTK_RADIO_BUTTON (e_builder_get_widget (sf->builder, "radShared"));
 	g_signal_connect ((gpointer) sf->shared, "clicked", G_CALLBACK (shared_clicked), sf);
 
-	sf->not_shared = GTK_RADIO_BUTTON (glade_xml_get_widget (sf->xml, "radNotShared"));
+	sf->not_shared = GTK_RADIO_BUTTON (e_builder_get_widget (sf->builder, "radNotShared"));
 	g_signal_connect ((gpointer) sf->not_shared, "clicked", G_CALLBACK (not_shared_clicked), sf);
 
-	sf->add_book = GTK_BUTTON (glade_xml_get_widget (sf->xml, "Address"));
+	sf->add_book = GTK_BUTTON (e_builder_get_widget (sf->builder, "Address"));
 	gtk_widget_set_sensitive (GTK_WIDGET (sf->add_book), TRUE);
 	g_signal_connect((GtkWidget *) sf->add_book, "clicked", G_CALLBACK (address_button_clicked_cb), sf);
 
@@ -714,26 +701,26 @@ share_folder_construct (ShareFolder *sf)
 	name_selector_entry = e_name_selector_peek_section_entry (sf->name_selector, "Add User");
 	g_signal_connect (name_selector_entry, "changed",
 			G_CALLBACK (addressbook_entry_changed), sf);
-	gtk_label_set_mnemonic_widget (GTK_LABEL (glade_xml_get_widget (sf->xml, "label557")), GTK_WIDGET (name_selector_entry));
+	gtk_label_set_mnemonic_widget (GTK_LABEL (e_builder_get_widget (sf->builder, "label557")), GTK_WIDGET (name_selector_entry));
 
-	sf->add_button = GTK_BUTTON (glade_xml_get_widget(sf->xml, "Add"));
+	sf->add_button = GTK_BUTTON (e_builder_get_widget(sf->builder, "Add"));
 	g_signal_connect((GtkWidget *) sf->add_button, "clicked", G_CALLBACK (add_clicked), sf);
 
-	sf->remove = GTK_BUTTON(glade_xml_get_widget(sf->xml, "Remove"));
+	sf->remove = GTK_BUTTON(e_builder_get_widget(sf->builder, "Remove"));
 	g_signal_connect ((GtkWidget *) sf->remove, "clicked", G_CALLBACK (remove_clicked), sf);
 	gtk_widget_set_sensitive(GTK_WIDGET (sf->remove), FALSE);
 
-	sf->notification = GTK_BUTTON (glade_xml_get_widget (sf->xml, "Notification"));
+	sf->notification = GTK_BUTTON (e_builder_get_widget (sf->builder, "Notification"));
 	g_signal_connect((GtkWidget *) sf->notification, "clicked", G_CALLBACK (notification_clicked), sf);
 
-	sf->name = GTK_ENTRY (glade_xml_get_widget (sf->xml, "entry4"));
+	sf->name = GTK_ENTRY (e_builder_get_widget (sf->builder, "entry4"));
 		/*TODO:connect name and label*/
 	gtk_widget_hide (GTK_WIDGET(sf->name));
-	box = GTK_WIDGET (glade_xml_get_widget (sf->xml, "hbox227"));
+	box = GTK_WIDGET (e_builder_get_widget (sf->builder, "hbox227"));
 	gtk_box_pack_start (GTK_BOX (box), (GtkWidget *) name_selector_entry, TRUE, TRUE, 0);
 	gtk_widget_show ((GtkWidget *) name_selector_entry);
 
-	sf->scrolled_window = GTK_WIDGET (glade_xml_get_widget (sf->xml,"scrolledwindow4"));
+	sf->scrolled_window = GTK_WIDGET (e_builder_get_widget (sf->builder,"scrolledwindow4"));
 
 	gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sf->scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
 
diff --git a/plugins/groupwise-features/share-folder.h b/plugins/groupwise-features/share-folder.h
index 8f1f935..138266c 100644
--- a/plugins/groupwise-features/share-folder.h
+++ b/plugins/groupwise-features/share-folder.h
@@ -24,13 +24,10 @@
 #ifndef __SHARE_FOLDER_H__
 #define __SHARE_FOLDER_H__
 
-G_BEGIN_DECLS
-
 #include <gtk/gtk.h>
 #include <camel/camel-store.h>
 #include <e-gw-connection.h>
 #include <libedataserverui/e-name-selector.h>
-#include <glade/glade-xml.h>
 
 #define _SHARE_FOLDER_TYPE	      (share_folder_get_type ())
 #define SHARE_FOLDER(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), SHARE_FOLDER, ShareFolder))
@@ -38,13 +35,15 @@ G_BEGIN_DECLS
 #define IS_SHARE_FOLDER(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), SHARE_FOLDER_TYPE))
 #define IS_SHARE_FOLDER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), SHARE_FOLDER_TYPE))
 
+G_BEGIN_DECLS
+
 typedef struct _ShareFolder ShareFolder;
 typedef struct _ShareFolderClass ShareFolderClass;
 
 struct _ShareFolder {
 	GtkVBox parent_object;
 
-	GladeXML *xml;
+	GtkBuilder *builder;
 
 	/* General tab */
 
diff --git a/plugins/imap-features/imap-headers.c b/plugins/imap-features/imap-headers.c
index 1e94958..df567aa 100644
--- a/plugins/imap-features/imap-headers.c
+++ b/plugins/imap-features/imap-headers.c
@@ -31,7 +31,8 @@
 
 #include <gtk/gtk.h>
 
-#include "e-util/e-account-utils.h"
+#include <e-util/e-util.h>
+#include <e-util/e-account-utils.h>
 
 #include <camel/camel-url.h>
 #include <camel/camel-exception.h>
@@ -257,8 +258,7 @@ org_gnome_imap_headers (EPlugin *epl, EConfigHookItemFactoryData *data)
 	GtkWidget *vbox;
 	CamelURL *url = NULL;
 	CamelException ex;
-	gchar *gladefile;
-	GladeXML *gladexml;
+	GtkBuilder *builder;
 	GtkCellRenderer *renderer;
 	GtkTreeViewColumn *column;
 	GtkTreeIter iter;
@@ -273,19 +273,18 @@ org_gnome_imap_headers (EPlugin *epl, EConfigHookItemFactoryData *data)
 	if (!g_str_has_prefix (account->source->url, "imap://") && !(use_imap && g_str_has_prefix (account->source->url, "groupwise://")))
 		return NULL;
 
-	gladefile = g_build_filename (EVOLUTION_UIDIR, "imap-headers.glade", NULL);
-	gladexml = glade_xml_new (gladefile, "vbox2", NULL);
-	g_free (gladefile);
-
-	vbox = glade_xml_get_widget (gladexml, "vbox2");
-	ui->all_headers = glade_xml_get_widget (gladexml, "allHeaders");
-	ui->basic_headers = glade_xml_get_widget (gladexml, "basicHeaders");
-	ui->mailing_list_headers = glade_xml_get_widget (gladexml, "mailingListHeaders");
-	ui->custom_headers_box = glade_xml_get_widget (gladexml, "custHeaderHbox");
-	ui->custom_headers_tree = GTK_TREE_VIEW(glade_xml_get_widget (gladexml, "custHeaderTree"));
-	ui->add_header = GTK_BUTTON(glade_xml_get_widget (gladexml, "addHeader"));
-	ui->remove_header = GTK_BUTTON(glade_xml_get_widget (gladexml, "removeHeader"));
-	ui->entry_header = GTK_ENTRY (glade_xml_get_widget (gladexml, "customHeaderEntry"));
+	builder = gtk_builder_new ();
+	e_load_ui_builder_definition (builder, "imap-headers.ui");
+
+	vbox = e_builder_get_widget (builder, "vbox2");
+	ui->all_headers = e_builder_get_widget (builder, "allHeaders");
+	ui->basic_headers = e_builder_get_widget (builder, "basicHeaders");
+	ui->mailing_list_headers = e_builder_get_widget (builder, "mailingListHeaders");
+	ui->custom_headers_box = e_builder_get_widget (builder, "custHeaderHbox");
+	ui->custom_headers_tree = GTK_TREE_VIEW(e_builder_get_widget (builder, "custHeaderTree"));
+	ui->add_header = GTK_BUTTON(e_builder_get_widget (builder, "addHeader"));
+	ui->remove_header = GTK_BUTTON(e_builder_get_widget (builder, "removeHeader"));
+	ui->entry_header = GTK_ENTRY (e_builder_get_widget (builder, "customHeaderEntry"));
 
 	url = camel_url_new (e_account_get_string(account, E_ACCOUNT_SOURCE_URL), &ex);
 
diff --git a/plugins/publish-calendar/publish-calendar.c b/plugins/publish-calendar/publish-calendar.c
index 1634f89..cda4169 100644
--- a/plugins/publish-calendar/publish-calendar.c
+++ b/plugins/publish-calendar/publish-calendar.c
@@ -29,6 +29,7 @@
 #include <libedataserverui/e-passwords.h>
 #include <calendar/gui/e-cal-config.h>
 #include <shell/es-event.h>
+#include <e-util/e-util.h>
 #include <e-util/e-util-private.h>
 #include <e-util/e-dialog-utils.h>
 
@@ -690,7 +691,7 @@ online_state_changed (EShell *shell)
 GtkWidget *
 publish_calendar_locations (EPlugin *epl, EConfigHookItemFactoryData *data)
 {
-	GladeXML *xml;
+	GtkBuilder *builder;
 	GtkCellRenderer *renderer;
 	GtkTreeSelection *selection;
 	GtkWidget *toplevel;
@@ -698,15 +699,11 @@ publish_calendar_locations (EPlugin *epl, EConfigHookItemFactoryData *data)
 	GSList *l;
 	GtkTreeIter iter;
 	GConfClient *client;
-	gchar *gladefile;
 
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      "publish-calendar.glade",
-				      NULL);
-	xml = glade_xml_new (gladefile, "toplevel", NULL);
-	g_free (gladefile);
+	builder = gtk_builder_new ();
+	e_load_ui_builder_definition (builder, "publish-calendar.ui");
 
-	ui->treeview = glade_xml_get_widget (xml, "url list");
+	ui->treeview = e_builder_get_widget (builder, "url list");
 	if (store == NULL)
 		store = gtk_list_store_new (URL_LIST_N_COLUMNS, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_POINTER);
 	else
@@ -728,10 +725,10 @@ publish_calendar_locations (EPlugin *epl, EConfigHookItemFactoryData *data)
 	gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (ui->treeview), TRUE);
 	g_signal_connect (G_OBJECT (ui->treeview), "row-activated", G_CALLBACK (url_list_double_click), ui);
 
-	ui->url_add = glade_xml_get_widget (xml, "url add");
-	ui->url_edit = glade_xml_get_widget (xml, "url edit");
-	ui->url_remove = glade_xml_get_widget (xml, "url remove");
-	ui->url_enable = glade_xml_get_widget (xml, "url enable");
+	ui->url_add = e_builder_get_widget (builder, "url add");
+	ui->url_edit = e_builder_get_widget (builder, "url edit");
+	ui->url_remove = e_builder_get_widget (builder, "url remove");
+	ui->url_enable = e_builder_get_widget (builder, "url enable");
 	g_signal_connect (G_OBJECT (ui->url_add), "clicked", G_CALLBACK (url_add_clicked), ui);
 	g_signal_connect (G_OBJECT (ui->url_edit), "clicked", G_CALLBACK (url_edit_clicked), ui);
 	g_signal_connect (G_OBJECT (ui->url_remove), "clicked", G_CALLBACK (url_remove_clicked), ui);
@@ -759,11 +756,11 @@ publish_calendar_locations (EPlugin *epl, EConfigHookItemFactoryData *data)
 	if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter))
 		gtk_tree_selection_select_iter (selection, &iter);
 
-	toplevel = glade_xml_get_widget (xml, "toplevel");
+	toplevel = e_builder_get_widget (builder, "toplevel");
 	gtk_widget_show_all (toplevel);
 	gtk_box_pack_start (GTK_BOX (data->parent), toplevel, FALSE, TRUE, 0);
 
-	g_object_unref (xml);
+	g_object_unref (builder);
 
 	return toplevel;
 }
diff --git a/plugins/publish-calendar/url-editor-dialog.c b/plugins/publish-calendar/url-editor-dialog.c
index 559a055..0ef0020 100644
--- a/plugins/publish-calendar/url-editor-dialog.c
+++ b/plugins/publish-calendar/url-editor-dialog.c
@@ -26,6 +26,7 @@
 #include <glib.h>
 #include <glib/gi18n.h>
 #include <string.h>
+#include <e-util/e-util.h>
 #include <e-util/e-util-private.h>
 
 static GtkDialogClass *parent_class = NULL;
@@ -326,23 +327,17 @@ set_from_uri (UrlEditorDialog *dialog)
 static gboolean
 url_editor_dialog_construct (UrlEditorDialog *dialog)
 {
-	GladeXML *gui;
 	GtkWidget *toplevel;
 	GConfClient *gconf;
 	GtkSizeGroup *group;
 	EPublishUri *uri;
-	gchar *gladefile;
 
 	gconf = gconf_client_get_default ();
 
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      "publish-calendar.glade",
-				      NULL);
-	gui = glade_xml_new (gladefile, "publishing toplevel", NULL);
-	g_free (gladefile);
-	dialog->gui = gui;
+	dialog->builder = gtk_builder_new ();
+	e_load_ui_builder_definition (dialog->builder, "publish-calendar.ui");
 
-#define GW(name) ((dialog->name) = glade_xml_get_widget (dialog->gui, #name))
+#define GW(name) ((dialog->name) = e_builder_get_widget (dialog->builder, #name))
 	GW(type_selector);
 	GW(fb_duration_label);
 	GW(fb_duration_spin);
@@ -375,11 +370,9 @@ url_editor_dialog_construct (UrlEditorDialog *dialog)
 	GW(file_label);
 #undef GW
 
-	g_return_val_if_fail (gui != NULL, FALSE);
-
 	uri = dialog->uri;
 
-	toplevel = glade_xml_get_widget (gui, "publishing toplevel");
+	toplevel = e_builder_get_widget (dialog->builder, "publishing toplevel");
 	gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), toplevel);
 
 	gtk_container_set_border_width (GTK_CONTAINER (dialog), 6);
@@ -498,9 +491,9 @@ url_editor_dialog_dispose (GObject *obj)
 		g_object_unref (dialog->url_list_model);
 		dialog->url_list_model = NULL;
 	}
-	if (dialog->gui) {
-		g_object_unref (dialog->gui);
-		dialog->gui = NULL;
+	if (dialog->builder) {
+		g_object_unref (dialog->builder);
+		dialog->builder = NULL;
 	}
 
 	((GObjectClass *)(parent_class))->dispose (obj);
diff --git a/plugins/publish-calendar/url-editor-dialog.h b/plugins/publish-calendar/url-editor-dialog.h
index 0a5f8d4..d222354 100644
--- a/plugins/publish-calendar/url-editor-dialog.h
+++ b/plugins/publish-calendar/url-editor-dialog.h
@@ -61,7 +61,7 @@ struct _UrlEditorDialog {
 	GtkTreeModel *url_list_model;
 	EPublishUri *uri;
 
-	GladeXML *gui;
+	GtkBuilder *builder;
 
 	GtkWidget *type_selector;
 	GtkWidget *fb_duration_label;
diff --git a/plugins/templates/templates.c b/plugins/templates/templates.c
index 5d25133..753dcc7 100644
--- a/plugins/templates/templates.c
+++ b/plugins/templates/templates.c
@@ -52,7 +52,7 @@
 #define GCONF_KEY_TEMPLATE_PLACEHOLDERS "/apps/evolution/mail/template_placeholders"
 
 typedef struct {
-	GladeXML *xml;
+	GtkBuilder *builder;
 	GConfClient *gconf;
 	GtkWidget   *treeview;
 	GtkWidget   *clue_add;
@@ -113,7 +113,7 @@ destroy_ui_data (gpointer data)
 	if (!ui)
 		return;
 
-	g_object_unref (ui->xml);
+	g_object_unref (ui->builder);
 	g_object_unref (ui->gconf);
 	g_free (ui);
 }
@@ -357,17 +357,12 @@ e_plugin_lib_get_configure_widget (EPlugin *epl)
 
 	UIData *ui = g_new0 (UIData, 1);
 
-	gchar *gladefile;
-
-	gladefile = g_build_filename (EVOLUTION_PLUGINDIR,
-			"templates.glade",
-			NULL);
-	ui->xml = glade_xml_new (gladefile, "templates_configuration_box", NULL);
-	g_free (gladefile);
+	ui->builder = gtk_builder_new ();
+	e_load_ui_builder_definition (ui->builder, "templates.ui");
 
 	ui->gconf = gconf_client_get_default ();
 
-	ui->treeview = glade_xml_get_widget (ui->xml, "clue_treeview");
+	ui->treeview = e_builder_get_widget (ui->builder, "clue_treeview");
 
 	ui->store = gtk_list_store_new (CLUE_N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING);
 
@@ -390,14 +385,14 @@ e_plugin_lib_get_configure_widget (EPlugin *epl)
 	g_signal_connect (G_OBJECT (selection), "changed", G_CALLBACK (selection_changed), ui);
 	gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (ui->treeview), TRUE);
 
-	ui->clue_add = glade_xml_get_widget (ui->xml, "clue_add");
+	ui->clue_add = e_builder_get_widget (ui->builder, "clue_add");
 	g_signal_connect (G_OBJECT (ui->clue_add), "clicked", G_CALLBACK (clue_add_clicked), ui);
 
-	ui->clue_remove = glade_xml_get_widget (ui->xml, "clue_remove");
+	ui->clue_remove = e_builder_get_widget (ui->builder, "clue_remove");
 	g_signal_connect (G_OBJECT (ui->clue_remove), "clicked", G_CALLBACK (clue_remove_clicked), ui);
 	gtk_widget_set_sensitive (ui->clue_remove, FALSE);
 
-	ui->clue_edit = glade_xml_get_widget (ui->xml, "clue_edit");
+	ui->clue_edit = e_builder_get_widget (ui->builder, "clue_edit");
 	g_signal_connect (G_OBJECT (ui->clue_edit), "clicked", G_CALLBACK (clue_edit_clicked), ui);
 	gtk_widget_set_sensitive (ui->clue_edit, FALSE);
 
@@ -423,7 +418,7 @@ e_plugin_lib_get_configure_widget (EPlugin *epl)
 
 	hbox = gtk_vbox_new (FALSE, 0);
 
-	gtk_box_pack_start (GTK_BOX (hbox), glade_xml_get_widget (ui->xml, "templates_configuration_box"), TRUE, TRUE, 0);
+	gtk_box_pack_start (GTK_BOX (hbox), e_builder_get_widget (ui->builder, "templates_configuration_box"), TRUE, TRUE, 0);
 
 	/* to let free data properly on destroy of configuration widget */
 	g_object_set_data_full (G_OBJECT (hbox), "myui-data", ui, destroy_ui_data);
diff --git a/shell/main.c b/shell/main.c
index f5c757a..6d6588a 100644
--- a/shell/main.c
+++ b/shell/main.c
@@ -573,7 +573,6 @@ main (gint argc, gchar **argv)
 			g_warning ("Could not set up debugging output file.");
 	}
 
-	glade_init ();
 	e_cursors_init ();
 	e_icon_factory_init ();
 	e_passwords_init ();
diff --git a/smime/gui/ca-trust-dialog.c b/smime/gui/ca-trust-dialog.c
index 664c1f2..f21288d 100644
--- a/smime/gui/ca-trust-dialog.c
+++ b/smime/gui/ca-trust-dialog.c
@@ -30,12 +30,11 @@
 
 #include <glib/gi18n.h>
 
+#include "e-util/e-util.h"
 #include "e-util/e-util-private.h"
 
-#define GLADE_FILE_NAME "smime-ui.glade"
-
 typedef struct {
-	GladeXML *gui;
+	GtkBuilder *builder;
 	GtkWidget *dialog;
 	GtkWidget *ssl_checkbutton;
 	GtkWidget *email_checkbutton;
@@ -50,7 +49,7 @@ free_data (gpointer data)
 	CATrustDialogData *ctd = data;
 
 	g_object_unref (ctd->cert);
-	g_object_unref (ctd->gui);
+	g_object_unref (ctd->builder);
 	g_free (ctd);
 }
 
@@ -75,17 +74,13 @@ ca_trust_dialog_show (ECert *cert, gboolean importing)
 	CATrustDialogData *ctd_data;
 	GtkWidget *w;
 	gchar *txt;
-	gchar *gladefile;
 
 	ctd_data = g_new0 (CATrustDialogData, 1);
 
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      GLADE_FILE_NAME,
-				      NULL);
-	ctd_data->gui = glade_xml_new (gladefile, NULL, NULL);
-	g_free (gladefile);
+	ctd_data->builder = gtk_builder_new ();
+	e_load_ui_builder_definition (ctd_data->builder, "smime-ui.ui");
 
-	ctd_data->dialog = glade_xml_get_widget (ctd_data->gui, "ca-trust-dialog");
+	ctd_data->dialog = e_builder_get_widget (ctd_data->builder, "ca-trust-dialog");
 
 	gtk_widget_ensure_style (ctd_data->dialog);
 	gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (ctd_data->dialog)->vbox), 0);
@@ -93,11 +88,11 @@ ca_trust_dialog_show (ECert *cert, gboolean importing)
 
 	ctd_data->cert = g_object_ref (cert);
 
-	ctd_data->ssl_checkbutton = glade_xml_get_widget (ctd_data->gui, "ssl_trust_checkbutton");
-	ctd_data->email_checkbutton = glade_xml_get_widget (ctd_data->gui, "email_trust_checkbutton");
-	ctd_data->objsign_checkbutton = glade_xml_get_widget (ctd_data->gui, "objsign_trust_checkbutton");
+	ctd_data->ssl_checkbutton = e_builder_get_widget (ctd_data->builder, "ssl_trust_checkbutton");
+	ctd_data->email_checkbutton = e_builder_get_widget (ctd_data->builder, "email_trust_checkbutton");
+	ctd_data->objsign_checkbutton = e_builder_get_widget (ctd_data->builder, "objsign_trust_checkbutton");
 
-	w = glade_xml_get_widget(ctd_data->gui, "ca-trust-label");
+	w = e_builder_get_widget(ctd_data->builder, "ca-trust-label");
 	txt = g_strdup_printf(_("Certificate '%s' is a CA certificate.\n\nEdit trust settings:"), e_cert_get_cn(cert));
 	gtk_label_set_text((GtkLabel *)w, txt);
 	g_free(txt);
diff --git a/smime/gui/cert-trust-dialog.c b/smime/gui/cert-trust-dialog.c
index 03c3ce6..9c87c66 100644
--- a/smime/gui/cert-trust-dialog.c
+++ b/smime/gui/cert-trust-dialog.c
@@ -35,12 +35,11 @@
 
 #include <glib/gi18n.h>
 
+#include "e-util/e-util.h"
 #include "e-util/e-util-private.h"
 
-#define GLADE_FILE_NAME "smime-ui.glade"
-
 typedef struct {
-	GladeXML *gui;
+	GtkBuilder *builder;
 	GtkWidget *dialog;
 	GtkWidget *trust_button;
 	GtkWidget *notrust_button;
@@ -56,7 +55,7 @@ free_data (gpointer data)
 
 	g_object_unref (ctd->cert);
 	g_object_unref (ctd->cacert);
-	g_object_unref (ctd->gui);
+	g_object_unref (ctd->builder);
 	g_free (ctd);
 }
 
@@ -115,23 +114,19 @@ cert_trust_dialog_show (ECert *cert)
 {
 	CertTrustDialogData *ctd_data;
 	CERTCertificate *icert;
-	gchar *gladefile;
 
 	ctd_data = g_new0 (CertTrustDialogData, 1);
 
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      GLADE_FILE_NAME,
-				      NULL);
-	ctd_data->gui = glade_xml_new (gladefile, NULL, NULL);
-	g_free (gladefile);
+	ctd_data->builder = gtk_builder_new ();
+	e_load_ui_builder_definition (ctd_data->builder, "smime-ui.ui");
 
-	ctd_data->dialog = glade_xml_get_widget (ctd_data->gui, "cert-trust-dialog");
+	ctd_data->dialog = e_builder_get_widget (ctd_data->builder, "cert-trust-dialog");
 	ctd_data->cert = g_object_ref (cert);
 	ctd_data->cacert = e_cert_get_ca_cert(cert);
-	ctd_data->trust_button = glade_xml_get_widget(ctd_data->gui, "cert-trust");
-	ctd_data->notrust_button = glade_xml_get_widget(ctd_data->gui, "cert-notrust");
+	ctd_data->trust_button = e_builder_get_widget(ctd_data->builder, "cert-trust");
+	ctd_data->notrust_button = e_builder_get_widget(ctd_data->builder, "cert-notrust");
 
-	ctd_data->label = glade_xml_get_widget(ctd_data->gui, "trust-label");
+	ctd_data->label = e_builder_get_widget(ctd_data->builder, "trust-label");
 
 	g_signal_connect(ctd_data->dialog, "response", G_CALLBACK(ctd_response), ctd_data);
 
diff --git a/smime/gui/certificate-manager.c b/smime/gui/certificate-manager.c
index d4ce9df..f3a175c 100644
--- a/smime/gui/certificate-manager.c
+++ b/smime/gui/certificate-manager.c
@@ -25,8 +25,6 @@
 #include <config.h>
 #endif
 
-#define GLADE_FILE_NAME "smime-ui.glade"
-
 #include <gtk/gtk.h>
 
 #include <glib/gi18n.h>
@@ -48,11 +46,12 @@
 #include <pk11func.h>
 
 #include "shell/e-shell.h"
+#include "e-util/e-util.h"
 #include "e-util/e-util-private.h"
 #include "widgets/misc/e-preferences-window.h"
 
 typedef struct {
-	GladeXML *gui;
+	GtkBuilder *builder;
 
 	GtkWidget *yourcerts_treeview;
 	GtkTreeStore *yourcerts_treemodel;
@@ -993,7 +992,6 @@ certificate_manager_config_init (EShell *shell)
 	CertificateManagerData *cfm_data;
 	GtkWidget *preferences_window;
 	GtkWidget *widget;
-	gchar *gladefile;
 
 	g_return_if_fail (E_IS_SHELL (shell));
 
@@ -1002,31 +1000,28 @@ certificate_manager_config_init (EShell *shell)
 
 	cfm_data = g_new0 (CertificateManagerData, 1);
 
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      GLADE_FILE_NAME,
-				      NULL);
-	cfm_data->gui = glade_xml_new (gladefile, NULL, NULL);
-	g_free (gladefile);
+	cfm_data->builder = gtk_builder_new ();
+	e_load_ui_builder_definition (cfm_data->builder, "smime-ui.ui");
 
-	cfm_data->yourcerts_treeview = glade_xml_get_widget (cfm_data->gui, "yourcerts-treeview");
-	cfm_data->contactcerts_treeview = glade_xml_get_widget (cfm_data->gui, "contactcerts-treeview");
-	cfm_data->authoritycerts_treeview = glade_xml_get_widget (cfm_data->gui, "authoritycerts-treeview");
+	cfm_data->yourcerts_treeview = e_builder_get_widget (cfm_data->builder, "yourcerts-treeview");
+	cfm_data->contactcerts_treeview = e_builder_get_widget (cfm_data->builder, "contactcerts-treeview");
+	cfm_data->authoritycerts_treeview = e_builder_get_widget (cfm_data->builder, "authoritycerts-treeview");
 
-	cfm_data->view_your_button = glade_xml_get_widget (cfm_data->gui, "your-view-button");
-	cfm_data->backup_your_button = glade_xml_get_widget (cfm_data->gui, "your-backup-button");
-	cfm_data->backup_all_your_button = glade_xml_get_widget (cfm_data->gui, "your-backup-all-button");
-	cfm_data->import_your_button = glade_xml_get_widget (cfm_data->gui, "your-import-button");
-	cfm_data->delete_your_button = glade_xml_get_widget (cfm_data->gui, "your-delete-button");
+	cfm_data->view_your_button = e_builder_get_widget (cfm_data->builder, "your-view-button");
+	cfm_data->backup_your_button = e_builder_get_widget (cfm_data->builder, "your-backup-button");
+	cfm_data->backup_all_your_button = e_builder_get_widget (cfm_data->builder, "your-backup-all-button");
+	cfm_data->import_your_button = e_builder_get_widget (cfm_data->builder, "your-import-button");
+	cfm_data->delete_your_button = e_builder_get_widget (cfm_data->builder, "your-delete-button");
 
-	cfm_data->view_contact_button = glade_xml_get_widget (cfm_data->gui, "contact-view-button");
-	cfm_data->edit_contact_button = glade_xml_get_widget (cfm_data->gui, "contact-edit-button");
-	cfm_data->import_contact_button = glade_xml_get_widget (cfm_data->gui, "contact-import-button");
-	cfm_data->delete_contact_button = glade_xml_get_widget (cfm_data->gui, "contact-delete-button");
+	cfm_data->view_contact_button = e_builder_get_widget (cfm_data->builder, "contact-view-button");
+	cfm_data->edit_contact_button = e_builder_get_widget (cfm_data->builder, "contact-edit-button");
+	cfm_data->import_contact_button = e_builder_get_widget (cfm_data->builder, "contact-import-button");
+	cfm_data->delete_contact_button = e_builder_get_widget (cfm_data->builder, "contact-delete-button");
 
-	cfm_data->view_ca_button = glade_xml_get_widget (cfm_data->gui, "authority-view-button");
-	cfm_data->edit_ca_button = glade_xml_get_widget (cfm_data->gui, "authority-edit-button");
-	cfm_data->import_ca_button = glade_xml_get_widget (cfm_data->gui, "authority-import-button");
-	cfm_data->delete_ca_button = glade_xml_get_widget (cfm_data->gui, "authority-delete-button");
+	cfm_data->view_ca_button = e_builder_get_widget (cfm_data->builder, "authority-view-button");
+	cfm_data->edit_ca_button = e_builder_get_widget (cfm_data->builder, "authority-edit-button");
+	cfm_data->import_ca_button = e_builder_get_widget (cfm_data->builder, "authority-import-button");
+	cfm_data->delete_ca_button = e_builder_get_widget (cfm_data->builder, "authority-delete-button");
 
 	initialize_yourcerts_ui(cfm_data);
 	initialize_contactcerts_ui(cfm_data);
@@ -1034,7 +1029,7 @@ certificate_manager_config_init (EShell *shell)
 
 	populate_ui (cfm_data);
 
-	widget = glade_xml_get_widget (cfm_data->gui, "cert-manager-notebook");
+	widget = e_builder_get_widget (cfm_data->builder, "cert-manager-notebook");
 	g_object_ref (widget);
 
 	gtk_container_remove (GTK_CONTAINER (widget->parent), widget);
diff --git a/smime/gui/certificate-viewer.c b/smime/gui/certificate-viewer.c
index 1733c74..f71993d 100644
--- a/smime/gui/certificate-viewer.c
+++ b/smime/gui/certificate-viewer.c
@@ -30,12 +30,11 @@
 
 #include <glib/gi18n.h>
 
+#include "e-util/e-util.h"
 #include "e-util/e-util-private.h"
 
-#define GLADE_FILE_NAME "smime-ui.glade"
-
 typedef struct {
-	GladeXML *gui;
+	GtkBuilder *builder;
 	GtkWidget *dialog;
 	GtkTreeStore *hierarchy_store, *fields_store;
 	GtkWidget *hierarchy_tree, *fields_tree;
@@ -53,7 +52,7 @@ free_data (gpointer data, GObject *where_the_object_was)
 	g_list_foreach (cvm->cert_chain, (GFunc)g_object_unref, NULL);
 	g_list_free (cvm->cert_chain);
 
-	g_object_unref (cvm->gui);
+	g_object_unref (cvm->builder);
 	g_free (cvm);
 }
 
@@ -67,7 +66,7 @@ fill_in_general (CertificateViewerData *cvm_data, ECert *cert)
 	gchar *markup;
 
 	/* issued to */
-	label = glade_xml_get_widget (cvm_data->gui, "issued-to-cn");
+	label = e_builder_get_widget (cvm_data->builder, "issued-to-cn");
 	if (e_cert_get_cn (cert)) {
 		gtk_label_set_text (GTK_LABEL (label), e_cert_get_cn (cert));
 	}
@@ -75,7 +74,7 @@ fill_in_general (CertificateViewerData *cvm_data, ECert *cert)
 		gtk_label_set_markup (GTK_LABEL (label), NOT_PART_OF_CERT_MARKUP);
 	}
 
-	label = glade_xml_get_widget (cvm_data->gui, "issued-to-o");
+	label = e_builder_get_widget (cvm_data->builder, "issued-to-o");
 	if (e_cert_get_org (cert)) {
 		gtk_label_set_text (GTK_LABEL (label), e_cert_get_org (cert));
 	}
@@ -83,7 +82,7 @@ fill_in_general (CertificateViewerData *cvm_data, ECert *cert)
 		gtk_label_set_markup (GTK_LABEL (label), NOT_PART_OF_CERT_MARKUP);
 	}
 
-	label = glade_xml_get_widget (cvm_data->gui, "issued-to-ou");
+	label = e_builder_get_widget (cvm_data->builder, "issued-to-ou");
 	if (e_cert_get_org_unit (cert)) {
 		gtk_label_set_text (GTK_LABEL (label), e_cert_get_org_unit (cert));
 	}
@@ -92,11 +91,11 @@ fill_in_general (CertificateViewerData *cvm_data, ECert *cert)
 	}
 
 	text = e_cert_get_serial_number (cert);
-	label = glade_xml_get_widget (cvm_data->gui, "issued-to-serial");
+	label = e_builder_get_widget (cvm_data->builder, "issued-to-serial");
 	gtk_label_set_text (GTK_LABEL (label), text);
 
 	/* issued by */
-	label = glade_xml_get_widget (cvm_data->gui, "issued-by-cn");
+	label = e_builder_get_widget (cvm_data->builder, "issued-by-cn");
 	if (e_cert_get_issuer_cn (cert)) {
 		gtk_label_set_text (GTK_LABEL (label), e_cert_get_issuer_cn (cert));
 	}
@@ -104,7 +103,7 @@ fill_in_general (CertificateViewerData *cvm_data, ECert *cert)
 		gtk_label_set_markup (GTK_LABEL (label), NOT_PART_OF_CERT_MARKUP);
 	}
 
-	label = glade_xml_get_widget (cvm_data->gui, "issued-by-o");
+	label = e_builder_get_widget (cvm_data->builder, "issued-by-o");
 	if (e_cert_get_issuer_org (cert)) {
 			gtk_label_set_text (GTK_LABEL (label), e_cert_get_issuer_org (cert));
 	}
@@ -112,7 +111,7 @@ fill_in_general (CertificateViewerData *cvm_data, ECert *cert)
 		gtk_label_set_markup (GTK_LABEL (label), NOT_PART_OF_CERT_MARKUP);
 	}
 
-	label = glade_xml_get_widget (cvm_data->gui, "issued-by-ou");
+	label = e_builder_get_widget (cvm_data->builder, "issued-by-ou");
 	if (e_cert_get_issuer_org_unit (cert)) {
 		gtk_label_set_text (GTK_LABEL (label), e_cert_get_issuer_org_unit (cert));
 	}
@@ -121,7 +120,7 @@ fill_in_general (CertificateViewerData *cvm_data, ECert *cert)
 	}
 
 	/* validity */
-	label = glade_xml_get_widget (cvm_data->gui, "validity-issued-on");
+	label = e_builder_get_widget (cvm_data->builder, "validity-issued-on");
 	if (e_cert_get_issued_on (cert)) {
 		gtk_label_set_text (GTK_LABEL (label), e_cert_get_issued_on (cert));
 	}
@@ -129,7 +128,7 @@ fill_in_general (CertificateViewerData *cvm_data, ECert *cert)
 		gtk_label_set_markup (GTK_LABEL (label), NOT_PART_OF_CERT_MARKUP);
 	}
 
-	label = glade_xml_get_widget (cvm_data->gui, "validity-expires-on");
+	label = e_builder_get_widget (cvm_data->builder, "validity-expires-on");
 	if (e_cert_get_expires_on (cert)) {
 		gtk_label_set_text (GTK_LABEL (label), e_cert_get_expires_on (cert));
 	}
@@ -139,12 +138,12 @@ fill_in_general (CertificateViewerData *cvm_data, ECert *cert)
 
 	/* fingerprints */
 	markup = g_strdup_printf ("<tt>%s</tt>", e_cert_get_sha1_fingerprint (cert));
-	label = glade_xml_get_widget (cvm_data->gui, "fingerprints-sha1");
+	label = e_builder_get_widget (cvm_data->builder, "fingerprints-sha1");
 	gtk_label_set_markup (GTK_LABEL (label), markup);
 	g_free (markup);
 
 	markup = g_strdup_printf ("<tt>%s</tt>", e_cert_get_md5_fingerprint (cert));
-	label = glade_xml_get_widget (cvm_data->gui, "fingerprints-md5");
+	label = e_builder_get_widget (cvm_data->builder, "fingerprints-md5");
 	gtk_label_set_markup (GTK_LABEL (label), markup);
 	g_free (markup);
 }
@@ -259,7 +258,7 @@ fill_in_details (CertificateViewerData *cvm_data, ECert *cert)
 
 	/* hook up all the hierarchy tree foo */
 	cvm_data->hierarchy_store = gtk_tree_store_new (2, G_TYPE_STRING, G_TYPE_OBJECT);
-	cvm_data->hierarchy_tree = glade_xml_get_widget (cvm_data->gui, "cert-hierarchy-treeview");
+	cvm_data->hierarchy_tree = e_builder_get_widget (cvm_data->builder, "cert-hierarchy-treeview");
 	gtk_tree_view_set_model (GTK_TREE_VIEW (cvm_data->hierarchy_tree),
 				 GTK_TREE_MODEL (cvm_data->hierarchy_store));
 
@@ -271,7 +270,7 @@ fill_in_details (CertificateViewerData *cvm_data, ECert *cert)
 	g_signal_connect (selection, "changed", G_CALLBACK (hierarchy_selection_changed), cvm_data);
 
 	/* hook up all the fields tree foo */
-	cvm_data->fields_tree = glade_xml_get_widget (cvm_data->gui, "cert-fields-treeview");
+	cvm_data->fields_tree = e_builder_get_widget (cvm_data->builder, "cert-fields-treeview");
 
 	gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (cvm_data->fields_tree),
 						     -1, "Field", gtk_cell_renderer_text_new(),
@@ -281,7 +280,7 @@ fill_in_details (CertificateViewerData *cvm_data, ECert *cert)
 	g_signal_connect (selection, "changed", G_CALLBACK (fields_selection_changed), cvm_data);
 
 	/* hook up all the field display foo */
-	cvm_data->field_text = glade_xml_get_widget (cvm_data->gui, "cert-field-value-textview");
+	cvm_data->field_text = e_builder_get_widget (cvm_data->builder, "cert-field-value-textview");
 
 	/* set the font of the field value viewer to be some fixed
 	   width font to the hex display doesn't look like ass. */
@@ -319,17 +318,13 @@ certificate_viewer_show (ECert *cert)
 {
 	CertificateViewerData *cvm_data;
 	gchar *title;
-	gchar *gladefile;
 
 	cvm_data = g_new0 (CertificateViewerData, 1);
 
-	gladefile = g_build_filename (EVOLUTION_UIDIR,
-				      GLADE_FILE_NAME,
-				      NULL);
-	cvm_data->gui = glade_xml_new (gladefile, NULL, NULL);
-	g_free (gladefile);
+	cvm_data->builder = gtk_builder_new ();
+	e_load_ui_builder_definition (cvm_data->builder, "smime-ui.ui");
 
-	cvm_data->dialog = glade_xml_get_widget (cvm_data->gui, "certificate-viewer-dialog");
+	cvm_data->dialog = e_builder_get_widget (cvm_data->builder, "certificate-viewer-dialog");
 
 	gtk_widget_realize (cvm_data->dialog);
 	gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (cvm_data->dialog)->action_area), 12);
diff --git a/smime/gui/e-cert-selector.c b/smime/gui/e-cert-selector.c
index 5676244..5d500f5 100644
--- a/smime/gui/e-cert-selector.c
+++ b/smime/gui/e-cert-selector.c
@@ -34,6 +34,7 @@
 
 #include "e-cert-selector.h"
 
+#include "e-util/e-util.h"
 #include "e-util/e-util-private.h"
 
 struct _ECertSelectorPrivate {
@@ -146,24 +147,20 @@ e_cert_selector_new(gint type, const gchar *currentid)
 	SECCertUsage usage;
 	CERTCertList *certlist;
 	CERTCertListNode *node;
-	GladeXML *gui;
+	GtkBuilder *builder;
 	GtkWidget *w;
 	gint n=0, active=0;
-	gchar *gladefile;
 
 	ecs = g_object_new(e_cert_selector_get_type(), NULL);
 	p = ecs->priv;
 
-	gladefile = g_build_filename(EVOLUTION_UIDIR,
-				     "smime-ui.glade",
-				     NULL);
-	gui = glade_xml_new(gladefile, "cert_selector_vbox", NULL);
-	g_free (gladefile);
+	builder = gtk_builder_new ();
+	e_load_ui_builder_definition (builder, "smime-ui.ui");
 
-	p->combobox = glade_xml_get_widget(gui, "cert_combobox");
-	p->description = glade_xml_get_widget(gui, "cert_description");
+	p->combobox = e_builder_get_widget(builder, "cert_combobox");
+	p->description = e_builder_get_widget(builder, "cert_description");
 
-	w = glade_xml_get_widget(gui, "cert_selector_vbox");
+	w = e_builder_get_widget(builder, "cert_selector_vbox");
 	gtk_box_pack_start((GtkBox *)((GtkDialog *)ecs)->vbox, w, TRUE, TRUE, 3);
 	gtk_window_set_title(GTK_WINDOW(ecs), _("Select certificate"));
 
@@ -203,7 +200,7 @@ e_cert_selector_new(gint type, const gchar *currentid)
 
 	g_signal_connect (p->combobox, "changed", G_CALLBACK(ecs_cert_changed), ecs);
 
-	g_object_unref(gui);
+	g_object_unref(builder);
 
 	ecs_cert_changed(p->combobox, ecs);
 
diff --git a/widgets/e-timezone-dialog/e-timezone-dialog.c b/widgets/e-timezone-dialog/e-timezone-dialog.c
index 3ed9628..a7ea43d 100644
--- a/widgets/e-timezone-dialog/e-timezone-dialog.c
+++ b/widgets/e-timezone-dialog/e-timezone-dialog.c
@@ -31,6 +31,7 @@
 #include <libecal/e-cal-time-util.h>
 #include <libecal/e-cal-system-timezone.h>
 
+#include "e-util/e-util.h"
 #include "e-util/e-util-private.h"
 
 #include "e-timezone-dialog.h"
@@ -57,8 +58,7 @@ struct _ETimezoneDialogPrivate {
 	   the displayed name is ""). */
 	icaltimezone *zone;
 
-	/* Glade XML data */
-	GladeXML *xml;
+	GtkBuilder *builder;
 
 	EMapPoint *point_selected;
 	EMapPoint *point_hover;
@@ -68,7 +68,7 @@ struct _ETimezoneDialogPrivate {
 	/* The timeout used to flash the nearest point. */
 	guint timeout_id;
 
-	/* Widgets from the Glade file */
+	/* Widgets from the UI file */
 	GtkWidget *app;
 	GtkWidget *table;
 	GtkWidget *map_window;
@@ -160,9 +160,9 @@ e_timezone_dialog_dispose (GObject *object)
 		priv->timeout_id = 0;
 	}
 
-	if (priv->xml) {
-		g_object_unref (priv->xml);
-		priv->xml = NULL;
+	if (priv->builder) {
+		g_object_unref (priv->builder);
+		priv->builder = NULL;
 	}
 
 	(* G_OBJECT_CLASS (e_timezone_dialog_parent_class)->dispose) (object);
@@ -260,7 +260,6 @@ e_timezone_dialog_construct (ETimezoneDialog *etd)
 {
 	ETimezoneDialogPrivate *priv;
 	GtkWidget *map;
-	gchar *filename;
 
 	g_return_val_if_fail (etd != NULL, NULL);
 	g_return_val_if_fail (E_IS_TIMEZONE_DIALOG (etd), NULL);
@@ -269,16 +268,8 @@ e_timezone_dialog_construct (ETimezoneDialog *etd)
 
 	/* Load the content widgets */
 
-	filename = g_build_filename (EVOLUTION_UIDIR,
-				     "e-timezone-dialog.glade",
-				     NULL);
-	priv->xml = glade_xml_new (filename, NULL, NULL);
-	g_free (filename);
-
-	if (!priv->xml) {
-		g_message ("e_timezone_dialog_construct(): Could not load the Glade XML file!");
-		goto error;
-	}
+	priv->builder = gtk_builder_new ();
+	e_load_ui_builder_definition (priv->builder, "e-timezone-dialog.ui");
 
 	if (!get_widgets (etd)) {
 		g_message ("e_timezone_dialog_construct(): Could not find all widgets in the XML file!");
@@ -363,16 +354,16 @@ static gboolean
 get_widgets (ETimezoneDialog *etd)
 {
 	ETimezoneDialogPrivate *priv;
+	GtkBuilder *builder;
 
 	priv = etd->priv;
+	builder = etd->priv->builder;
 
-#define GW(name) glade_xml_get_widget (priv->xml, name)
-
-	priv->app		= GW ("timezone-dialog");
-	priv->map_window	= GW ("map-window");
-	priv->timezone_combo	= GW ("timezone-combo");
-	priv->table             = GW ("timezone-table");
-	priv->preview_label     = GW ("preview-label");
+	priv->app = e_builder_get_widget (builder, "timezone-dialog");
+	priv->map_window = e_builder_get_widget (builder, "map-window");
+	priv->timezone_combo = e_builder_get_widget (builder, "timezone-combo");
+	priv->table = e_builder_get_widget (builder, "timezone-table");
+	priv->preview_label = e_builder_get_widget (builder, "preview-label");
 
 	return (priv->app
 		&& priv->map_window
diff --git a/widgets/menus/gal-define-views-dialog.c b/widgets/menus/gal-define-views-dialog.c
index c217a10..ade534b 100644
--- a/widgets/menus/gal-define-views-dialog.c
+++ b/widgets/menus/gal-define-views-dialog.c
@@ -186,7 +186,7 @@ gdvd_button_copy_callback(GtkWidget *widget, GalDefineViewsDialog *dialog)
 	GtkWidget *scrolled;
 	ETable *etable;
 
-	scrolled = glade_xml_get_widget(dialog->gui, "custom-table");
+	scrolled = e_builder_get_widget(dialog->builder, "custom-table");
 	etable = e_table_scrolled_get_table(E_TABLE_SCROLLED(scrolled));
 	row = e_table_get_cursor_row (E_TABLE(etable));
 
@@ -210,10 +210,10 @@ gdvd_cursor_changed_callback (GtkWidget *widget, GalDefineViewsDialog *dialog)
 					 &iter)) {
 		gtk_tree_model_get (dialog->model, &iter, COL_GALVIEW_DATA, &item, -1);
 
-		button = glade_xml_get_widget (dialog->gui, "button-delete");
+		button = e_builder_get_widget (dialog->builder, "button-delete");
 		gtk_widget_set_sensitive (GTK_WIDGET (button), !item->built_in);
 
-		button = glade_xml_get_widget (dialog->gui, "button-modify");
+		button = e_builder_get_widget (dialog->builder, "button-modify");
 		gtk_widget_set_sensitive (GTK_WIDGET (button), !item->built_in);
 	}
 }
@@ -223,7 +223,7 @@ gdvd_connect_signal(GalDefineViewsDialog *dialog, const gchar *widget_name, cons
 {
 	GtkWidget *widget;
 
-	widget = glade_xml_get_widget (dialog->gui, widget_name);
+	widget = e_builder_get_widget (dialog->builder, widget_name);
 
 	if (widget)
 		g_signal_connect (widget, signal, handler, dialog);
@@ -238,20 +238,14 @@ dialog_response (GalDefineViewsDialog *dialog, gint response_id, gpointer data)
 static void
 gal_define_views_dialog_init (GalDefineViewsDialog *dialog)
 {
-	GladeXML *gui;
 	GtkWidget *widget;
 
-	gchar *filename = g_build_filename (EVOLUTION_UIDIR,
-					    "gal-define-views.glade",
-					    NULL);
-
 	dialog->collection = NULL;
 
-	gui = glade_xml_new (filename, NULL, GETTEXT_PACKAGE);
-	g_free (filename);
-	dialog->gui = gui;
+	dialog->builder = gtk_builder_new ();
+	e_load_ui_builder_definition (dialog->builder, "gal-define-views.ui");
 
-	widget = glade_xml_get_widget (gui, "table-top");
+	widget = e_builder_get_widget (dialog->builder, "table-top");
 	if (!widget) {
 		return;
 	}
@@ -268,7 +262,7 @@ gal_define_views_dialog_init (GalDefineViewsDialog *dialog)
 				GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE,
 				NULL);
 
-	dialog->treeview = GTK_TREE_VIEW (glade_xml_get_widget (dialog->gui, "treeview1"));
+	dialog->treeview = GTK_TREE_VIEW (e_builder_get_widget (dialog->builder, "treeview1"));
         gtk_tree_view_set_reorderable (GTK_TREE_VIEW (dialog->treeview), FALSE);
 	gtk_tree_view_set_headers_visible (dialog->treeview, TRUE);
 
@@ -291,9 +285,9 @@ gal_define_views_dialog_dispose (GObject *object)
 {
 	GalDefineViewsDialog *gal_define_views_dialog = GAL_DEFINE_VIEWS_DIALOG(object);
 
-	if (gal_define_views_dialog->gui)
-		g_object_unref(gal_define_views_dialog->gui);
-	gal_define_views_dialog->gui = NULL;
+	if (gal_define_views_dialog->builder)
+		g_object_unref(gal_define_views_dialog->builder);
+	gal_define_views_dialog->builder = NULL;
 
 	if (G_OBJECT_CLASS (gal_define_views_dialog_parent_class)->dispose)
 		(* G_OBJECT_CLASS (gal_define_views_dialog_parent_class)->dispose) (object);
@@ -349,8 +343,8 @@ gal_define_views_dialog_set_collection(GalDefineViewsDialog *dialog,
 	gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (dialog->model),
 					      COL_GALVIEW_NAME, GTK_SORT_ASCENDING);
 
-	if (dialog->gui) {
-		GtkWidget *widget = glade_xml_get_widget(dialog->gui, "label-views");
+	if (dialog->builder) {
+		GtkWidget *widget = e_builder_get_widget(dialog->builder, "label-views");
 		if (widget && GTK_IS_LABEL (widget)) {
 			if (collection->title) {
 				gchar *text = g_strdup_printf (_("Define Views for %s"),
diff --git a/widgets/menus/gal-define-views-dialog.h b/widgets/menus/gal-define-views-dialog.h
index d6f618e..c4b79a7 100644
--- a/widgets/menus/gal-define-views-dialog.h
+++ b/widgets/menus/gal-define-views-dialog.h
@@ -51,7 +51,7 @@ struct _GalDefineViewsDialog
 	GtkDialog parent;
 
 	/* item specific fields */
-	GladeXML *gui;
+	GtkBuilder *builder;
 	GtkTreeView *treeview;
 	GtkTreeModel *model;
 
diff --git a/widgets/menus/gal-view-instance-save-as-dialog.c b/widgets/menus/gal-view-instance-save-as-dialog.c
index 9ad2654..37d903c 100644
--- a/widgets/menus/gal-view-instance-save-as-dialog.c
+++ b/widgets/menus/gal-view-instance-save-as-dialog.c
@@ -198,9 +198,9 @@ gal_view_instance_save_as_dialog_dispose (GObject *object)
 {
 	GalViewInstanceSaveAsDialog *gal_view_instance_save_as_dialog = GAL_VIEW_INSTANCE_SAVE_AS_DIALOG (object);
 
-	if (gal_view_instance_save_as_dialog->gui)
-		g_object_unref (gal_view_instance_save_as_dialog->gui);
-	gal_view_instance_save_as_dialog->gui = NULL;
+	if (gal_view_instance_save_as_dialog->builder)
+		g_object_unref (gal_view_instance_save_as_dialog->builder);
+	gal_view_instance_save_as_dialog->builder = NULL;
 
 	if (G_OBJECT_CLASS (gal_view_instance_save_as_dialog_parent_class)->dispose)
 		(* G_OBJECT_CLASS (gal_view_instance_save_as_dialog_parent_class)->dispose) (object);
@@ -229,22 +229,17 @@ gal_view_instance_save_as_dialog_class_init (GalViewInstanceSaveAsDialogClass *k
 static void
 gal_view_instance_save_as_dialog_init (GalViewInstanceSaveAsDialog *dialog)
 {
-	GladeXML *gui;
 	GtkWidget *widget;
 
-	gchar *filename = g_build_filename (EVOLUTION_UIDIR,
-					    "gal-view-instance-save-as-dialog.glade",
-					    NULL);
-
 	dialog->instance = NULL;
 	dialog->model = NULL;
 	dialog->collection = NULL;
 
-	gui = glade_xml_new_with_domain (filename , NULL, GETTEXT_PACKAGE);
-	g_free (filename);
-	dialog->gui = gui;
+	dialog->builder = gtk_builder_new ();
+	e_load_ui_builder_definition (
+		dialog->builder, "gal-view-instance-save-as-dialog.ui");
 
-	widget = glade_xml_get_widget (gui, "vbox-top");
+	widget = e_builder_get_widget (dialog->builder, "vbox-top");
 	if (!widget) {
 		return;
 	}
@@ -262,11 +257,11 @@ gal_view_instance_save_as_dialog_init (GalViewInstanceSaveAsDialog *dialog)
 				GTK_STOCK_OK, GTK_RESPONSE_OK,
 				NULL);
 
-	dialog->scrolledwindow = glade_xml_get_widget (dialog->gui, "scrolledwindow2");
-	dialog->treeview = GTK_TREE_VIEW (glade_xml_get_widget (dialog->gui, "custom-replace"));
-	dialog->entry_create = glade_xml_get_widget (dialog->gui, "entry-create");
-	dialog->radiobutton_replace = glade_xml_get_widget (dialog->gui, "radiobutton-replace");
-	dialog->radiobutton_create = glade_xml_get_widget (dialog->gui, "radiobutton-create");
+	dialog->scrolledwindow = e_builder_get_widget (dialog->builder, "scrolledwindow2");
+	dialog->treeview = GTK_TREE_VIEW (e_builder_get_widget (dialog->builder, "custom-replace"));
+	dialog->entry_create = e_builder_get_widget (dialog->builder, "entry-create");
+	dialog->radiobutton_replace = e_builder_get_widget (dialog->builder, "radiobutton-replace");
+	dialog->radiobutton_create = e_builder_get_widget (dialog->builder, "radiobutton-create");
 
 	gtk_tree_view_set_reorderable (GTK_TREE_VIEW (dialog->treeview), FALSE);
 	gtk_tree_view_set_headers_visible (dialog->treeview, FALSE);
diff --git a/widgets/menus/gal-view-instance-save-as-dialog.h b/widgets/menus/gal-view-instance-save-as-dialog.h
index 78ed07e..0f43666 100644
--- a/widgets/menus/gal-view-instance-save-as-dialog.h
+++ b/widgets/menus/gal-view-instance-save-as-dialog.h
@@ -56,7 +56,7 @@ struct _GalViewInstanceSaveAsDialog
 	GtkDialog parent;
 
 	/* item specific fields */
-	GladeXML *gui;
+	GtkBuilder *builder;
 	GtkTreeView *treeview;
 	GtkTreeModel *model;
 
diff --git a/widgets/menus/gal-view-new-dialog.c b/widgets/menus/gal-view-new-dialog.c
index ed1a168..328cc5e 100644
--- a/widgets/menus/gal-view-new-dialog.c
+++ b/widgets/menus/gal-view-new-dialog.c
@@ -74,17 +74,13 @@ gal_view_new_dialog_class_init (GalViewNewDialogClass *klass)
 static void
 gal_view_new_dialog_init (GalViewNewDialog *dialog)
 {
-	GladeXML *gui;
 	GtkWidget *widget;
-	gchar *filename = g_build_filename (EVOLUTION_UIDIR,
-					    "gal-view-new-dialog.glade",
-					    NULL);
 
-	gui = glade_xml_new (filename, NULL, GETTEXT_PACKAGE);
-	g_free (filename);
-	dialog->gui = gui;
+	dialog->builder = gtk_builder_new ();
+	e_load_ui_builder_definition (
+		dialog->builder, "gal-view-new-dialog.ui");
 
-	widget = glade_xml_get_widget (gui, "table-top");
+	widget = e_builder_get_widget (dialog->builder, "table-top");
 	if (!widget) {
 		return;
 	}
@@ -111,9 +107,9 @@ gal_view_new_dialog_dispose (GObject *object)
 {
 	GalViewNewDialog *gal_view_new_dialog = GAL_VIEW_NEW_DIALOG(object);
 
-	if (gal_view_new_dialog->gui)
-		g_object_unref(gal_view_new_dialog->gui);
-	gal_view_new_dialog->gui = NULL;
+	if (gal_view_new_dialog->builder)
+		g_object_unref(gal_view_new_dialog->builder);
+	gal_view_new_dialog->builder = NULL;
 
 	if (G_OBJECT_CLASS (gal_view_new_dialog_parent_class)->dispose)
 		(* G_OBJECT_CLASS (gal_view_new_dialog_parent_class)->dispose) (object);
@@ -191,8 +187,8 @@ gal_view_new_dialog_construct (GalViewNewDialog  *dialog,
 	GtkCellRenderer *rend;
 
 	dialog->collection = collection;
-	dialog->list = glade_xml_get_widget(dialog->gui,"list-type-list");
-	dialog->entry = glade_xml_get_widget(dialog->gui, "entry-name");
+	dialog->list = e_builder_get_widget(dialog->builder,"list-type-list");
+	dialog->entry = e_builder_get_widget(dialog->builder, "entry-name");
 	dialog->list_store = gtk_list_store_new (2,
 						 G_TYPE_STRING,
 						 G_TYPE_POINTER);
@@ -243,7 +239,7 @@ gal_view_new_dialog_set_property (GObject *object, guint prop_id, const GValue *
 
 	switch (prop_id) {
 	case PROP_NAME:
-		entry = glade_xml_get_widget(dialog->gui, "entry-name");
+		entry = e_builder_get_widget(dialog->builder, "entry-name");
 		if (entry && GTK_IS_ENTRY(entry)) {
 			gtk_entry_set_text(GTK_ENTRY(entry), g_value_get_string (value));
 		}
@@ -264,7 +260,7 @@ gal_view_new_dialog_get_property (GObject *object, guint prop_id, GValue *value,
 
 	switch (prop_id) {
 	case PROP_NAME:
-		entry = glade_xml_get_widget(dialog->gui, "entry-name");
+		entry = e_builder_get_widget(dialog->builder, "entry-name");
 		if (entry && GTK_IS_ENTRY(entry)) {
 			g_value_set_string (value, gtk_entry_get_text (GTK_ENTRY (entry)));
 		}
diff --git a/widgets/menus/gal-view-new-dialog.h b/widgets/menus/gal-view-new-dialog.h
index 5cd1bd6..6b7d2b0 100644
--- a/widgets/menus/gal-view-new-dialog.h
+++ b/widgets/menus/gal-view-new-dialog.h
@@ -50,7 +50,7 @@ struct _GalViewNewDialog
 	GtkDialog parent;
 
 	/* item specific fields */
-	GladeXML *gui;
+	GtkBuilder *builder;
 
 	GalViewCollection *collection;
 	GalViewFactory *selected_factory;
diff --git a/widgets/misc/Makefile.am b/widgets/misc/Makefile.am
index 0eb3e50..641cff2 100644
--- a/widgets/misc/Makefile.am
+++ b/widgets/misc/Makefile.am
@@ -2,6 +2,8 @@ if OS_WIN32
 WIN32_BOOTSTRAP_LIBS = $(top_builddir)/win32/libfilter.la
 endif
 
+privsolib_LTLIBRARIES = libemiscwidgets.la
+
 widgetsincludedir = $(privincludedir)/misc
 
 if ENABLE_PILOT_CONDUITS
diff --git a/widgets/misc/e-send-options.c b/widgets/misc/e-send-options.c
index b2f0c5f..21125c6 100644
--- a/widgets/misc/e-send-options.c
+++ b/widgets/misc/e-send-options.c
@@ -37,8 +37,7 @@
 #include "e-send-options.h"
 
 struct _ESendOptionsDialogPrivate {
-	/* Glade XML data */
-	GladeXML *xml;
+	GtkBuilder *builder;
 
 	gboolean gopts_needed;
 	gboolean global;
@@ -402,48 +401,46 @@ static gboolean
 get_widgets (ESendOptionsDialog *sod)
 {
 	ESendOptionsDialogPrivate *priv;
+	GtkBuilder *builder;
 
 	priv = sod->priv;
+	builder = sod->priv->builder;
 
-#define GW(name) glade_xml_get_widget (priv->xml, name)
-
-	priv->main = GW ("send-options-dialog");
+	priv->main = e_builder_get_widget (builder, "send-options-dialog");
 	if (!priv->main)
 		return FALSE;
 
-	priv->priority = GW ("combo-priority");
-	priv->status = GW ("status-tracking");
-	priv->security = GW ("security-combo");
-	priv->notebook = (GtkNotebook *)GW ("notebook");
-	priv->reply_request = GW ("reply-request-button");
-	priv->reply_convenient = GW ("reply-convinient");
-	priv->reply_within = GW ("reply-within");
-	priv->within_days = GW ("within-days");
-	priv->delay_delivery = GW ("delay-delivery-button");
-	priv->delay_until = GW ("until-date");
+	priv->priority = e_builder_get_widget (builder, "combo-priority");
+	priv->status = e_builder_get_widget (builder, "status-tracking");
+	priv->security = e_builder_get_widget (builder, "security-combo");
+	priv->notebook = (GtkNotebook *)e_builder_get_widget (builder, "notebook");
+	priv->reply_request = e_builder_get_widget (builder, "reply-request-button");
+	priv->reply_convenient = e_builder_get_widget (builder, "reply-convinient");
+	priv->reply_within = e_builder_get_widget (builder, "reply-within");
+	priv->within_days = e_builder_get_widget (builder, "within-days");
+	priv->delay_delivery = e_builder_get_widget (builder, "delay-delivery-button");
+	priv->delay_until = e_builder_get_widget (builder, "until-date");
 	gtk_widget_show (priv->delay_until);
-	priv->expiration = GW ("expiration-button");
-	priv->expire_after = GW ("expire-after");
-	priv->create_sent = GW ("create-sent-button");
-	priv->delivered = GW ("delivered");
-	priv->delivered_opened = GW ("delivered-opened");
-	priv->all_info = GW ("all-info");
-	priv->autodelete = GW ("autodelete");
-	priv->when_opened = GW ("open-combo");
-	priv->when_declined = GW ("delete-combo");
-	priv->when_accepted = GW ("accept-combo");
-	priv->when_completed = GW ("complete-combo");
-	priv->security_label = GW ("security-label");
-	priv->gopts_label = GW ("gopts-label");
-	priv->sopts_label = GW ("slabel");
-	priv->priority_label = GW ("priority-label");
-	priv->until_label = GW ("until-label");
-	priv->opened_label = GW ("opened-label");
-	priv->declined_label = GW ("declined-label");
-	priv->accepted_label = GW ("accepted-label");
-	priv->completed_label = GW ("completed-label");
-
-#undef GW
+	priv->expiration = e_builder_get_widget (builder, "expiration-button");
+	priv->expire_after = e_builder_get_widget (builder, "expire-after");
+	priv->create_sent = e_builder_get_widget (builder, "create-sent-button");
+	priv->delivered = e_builder_get_widget (builder, "delivered");
+	priv->delivered_opened = e_builder_get_widget (builder, "delivered-opened");
+	priv->all_info = e_builder_get_widget (builder, "all-info");
+	priv->autodelete = e_builder_get_widget (builder, "autodelete");
+	priv->when_opened = e_builder_get_widget (builder, "open-combo");
+	priv->when_declined = e_builder_get_widget (builder, "delete-combo");
+	priv->when_accepted = e_builder_get_widget (builder, "accept-combo");
+	priv->when_completed = e_builder_get_widget (builder, "complete-combo");
+	priv->security_label = e_builder_get_widget (builder, "security-label");
+	priv->gopts_label = e_builder_get_widget (builder, "gopts-label");
+	priv->sopts_label = e_builder_get_widget (builder, "slabel");
+	priv->priority_label = e_builder_get_widget (builder, "priority-label");
+	priv->until_label = e_builder_get_widget (builder, "until-label");
+	priv->opened_label = e_builder_get_widget (builder, "opened-label");
+	priv->declined_label = e_builder_get_widget (builder, "declined-label");
+	priv->accepted_label = e_builder_get_widget (builder, "accepted-label");
+	priv->completed_label = e_builder_get_widget (builder, "completed-label");
 
 	return (priv->priority
 		&& priv->security
@@ -596,7 +593,7 @@ static void e_send_options_cb (GtkDialog *dialog, gint state, gpointer func_data
 		case GTK_RESPONSE_CANCEL:
 			gtk_widget_hide (priv->main);
 			gtk_widget_destroy (priv->main);
-			g_object_unref (priv->xml);
+			g_object_unref (priv->builder);
 			break;
 		case GTK_RESPONSE_HELP:
 			e_display_help (
@@ -613,25 +610,16 @@ e_sendoptions_dialog_run (ESendOptionsDialog *sod, GtkWidget *parent, Item_type
 {
 	ESendOptionsDialogPrivate *priv;
 	GtkWidget *toplevel;
-	gchar *filename;
 
 	g_return_val_if_fail (sod != NULL || E_IS_SENDOPTIONS_DIALOG (sod), FALSE);
 
 	priv = sod->priv;
 
-	filename = g_build_filename (EVOLUTION_UIDIR,
-				     "e-send-options.glade",
-				     NULL);
-	priv->xml = glade_xml_new (filename, NULL, NULL);
-	g_free (filename);
-
-	if (!priv->xml) {
-		g_message ( G_STRLOC ": Could not load the Glade XML file ");
-		return FALSE;
-	}
+	priv->builder = gtk_builder_new ();
+	e_load_ui_builder_definition (priv->builder, "e-send-options.ui");
 
 	if (!get_widgets(sod)) {
-		g_object_unref (priv->xml);
+		g_object_unref (priv->builder);
 		g_message (G_STRLOC ": Could not get the Widgets \n");
 		return FALSE;
 	}
@@ -744,7 +732,7 @@ e_sendoptions_dialog_init (GObject *object)
 	sod->data->gopts->security = 0;
 
 	priv->gopts_needed = TRUE;
-	priv->xml = NULL;
+	priv->builder = NULL;
 
 	priv->main = NULL;
 	priv->notebook = NULL;
diff --git a/widgets/table/e-table-config.c b/widgets/table/e-table-config.c
index 2a2730b..1887b4c 100644
--- a/widgets/table/e-table-config.c
+++ b/widgets/table/e-table-config.c
@@ -152,8 +152,6 @@ e_table_config_class_init (ETableConfigClass *klass)
 							      /*_( */"XXX blurb" /*)*/,
 							      E_TABLE_STATE_TYPE,
 							      G_PARAM_READABLE));
-
-	glade_init ();
 }
 
 static void
@@ -704,7 +702,7 @@ dialog_response (GtkWidget *dialog, gint response_id, ETableConfig *config)
 }
 
 /*
- * Invoked by the Glade auto-connect code
+ * Invoked by the GtkBuilder auto-connect code
  */
 GtkWidget *e_table_proxy_gtk_combo_text_new (void);
 GtkWidget *
@@ -736,22 +734,10 @@ e_table_proxy_gtk_combo_text_new (void)
 	return combo_box;
 }
 
-#if 0
-static GtkWidget *
-configure_dialog (GladeXML *gui, const gchar *widget_name, ETableConfig *config)
-{
-	GtkWidget *w;
-
-	w = glade_xml_get_widget (gui, widget_name);
-
-	return w;
-}
-#endif
-
 static void
-connect_button (ETableConfig *config, GladeXML *gui, const gchar *widget_name, GCallback cback)
+connect_button (ETableConfig *config, GtkBuilder *builder, const gchar *widget_name, GCallback cback)
 {
-	GtkWidget *button = glade_xml_get_widget (gui, widget_name);
+	GtkWidget *button = e_builder_get_widget (builder, widget_name);
 
 	if (button) {
 		g_signal_connect (G_OBJECT (button), "clicked",
@@ -821,7 +807,7 @@ sort_ascending_toggled (GtkToggleButton *t, ETableConfigSortWidgets *sort)
 }
 
 static void
-configure_sort_dialog (ETableConfig *config, GladeXML *gui)
+configure_sort_dialog (ETableConfig *config, GtkBuilder *builder)
 {
 	GSList *l;
 	gint i;
@@ -830,26 +816,26 @@ configure_sort_dialog (ETableConfig *config, GladeXML *gui)
 		gchar buffer [80];
 
 		snprintf (buffer, sizeof (buffer), "sort-combo-%d", i + 1);
-		config->sort [i].combo = glade_xml_get_widget (gui, buffer);
+		config->sort [i].combo = e_builder_get_widget (builder, buffer);
 		gtk_widget_show (GTK_WIDGET (config->sort [i].combo));
 		configure_combo_box_add (
 			GTK_COMBO_BOX (config->sort[i].combo), "", "");
 
 		snprintf (buffer, sizeof (buffer), "frame-sort-%d", i + 1);
 		config->sort [i].frames =
-			glade_xml_get_widget (gui, buffer);
+			e_builder_get_widget (builder, buffer);
 
 		snprintf (
 			buffer, sizeof (buffer),
 			"radiobutton-ascending-sort-%d", i+1);
-		config->sort [i].radio_ascending = glade_xml_get_widget (
-			gui, buffer);
+		config->sort [i].radio_ascending = e_builder_get_widget (
+			builder, buffer);
 
 		snprintf (
 			buffer, sizeof (buffer),
 			"radiobutton-descending-sort-%d", i+1);
-		config->sort [i].radio_descending = glade_xml_get_widget (
-			gui, buffer);
+		config->sort [i].radio_descending = e_builder_get_widget (
+			builder, buffer);
 
 		config->sort [i].e_table_config = config;
 	}
@@ -931,7 +917,7 @@ group_ascending_toggled (GtkToggleButton *t, ETableConfigSortWidgets *group)
 }
 
 static void
-configure_group_dialog (ETableConfig *config, GladeXML *gui)
+configure_group_dialog (ETableConfig *config, GtkBuilder *builder)
 {
 	GSList *l;
 	gint i;
@@ -940,7 +926,7 @@ configure_group_dialog (ETableConfig *config, GladeXML *gui)
 		gchar buffer [80];
 
 		snprintf (buffer, sizeof (buffer), "group-combo-%d", i + 1);
-		config->group [i].combo = glade_xml_get_widget (gui, buffer);
+		config->group [i].combo = e_builder_get_widget (builder, buffer);
 		gtk_widget_show (GTK_WIDGET (config->group [i].combo));
 
 		configure_combo_box_add (
@@ -948,25 +934,25 @@ configure_group_dialog (ETableConfig *config, GladeXML *gui)
 
 		snprintf (buffer, sizeof (buffer), "frame-group-%d", i + 1);
 		config->group [i].frames =
-			glade_xml_get_widget (gui, buffer);
+			e_builder_get_widget (builder, buffer);
 
 		snprintf (
 			buffer, sizeof (buffer),
 			"radiobutton-ascending-group-%d", i+1);
-		config->group [i].radio_ascending = glade_xml_get_widget (
-			gui, buffer);
+		config->group [i].radio_ascending = e_builder_get_widget (
+			builder, buffer);
 
 		snprintf (
 			buffer, sizeof (buffer),
 			"radiobutton-descending-group-%d", i+1);
-		config->group [i].radio_descending = glade_xml_get_widget (
-			gui, buffer);
+		config->group [i].radio_descending = e_builder_get_widget (
+			builder, buffer);
 
 		snprintf (
 			buffer, sizeof (buffer),
 			"checkbutton-group-%d", i+1);
-		config->group [i].view_check = glade_xml_get_widget (
-			gui, buffer);
+		config->group [i].view_check = e_builder_get_widget (
+			builder, buffer);
 
 		config->group [i].e_table_config = config;
 	}
@@ -1164,28 +1150,28 @@ config_button_down (GtkWidget *widget, ETableConfig *config)
 }
 
 static void
-configure_fields_dialog (ETableConfig *config, GladeXML *gui)
+configure_fields_dialog (ETableConfig *config, GtkBuilder *builder)
 {
 	GtkWidget *scrolled;
 
-	scrolled = glade_xml_get_widget (gui, "custom-available");
+	scrolled = e_builder_get_widget (builder, "custom-available");
 	config->available = e_table_scrolled_get_table (E_TABLE_SCROLLED (scrolled));
 	g_object_get (config->available,
 		      "model", &config->available_model,
 		      NULL);
 	gtk_widget_show_all (scrolled);
 
-	scrolled = glade_xml_get_widget (gui, "custom-shown");
+	scrolled = e_builder_get_widget (builder, "custom-shown");
 	config->shown = e_table_scrolled_get_table (E_TABLE_SCROLLED (scrolled));
 	g_object_get (config->shown,
 		      "model", &config->shown_model,
 		      NULL);
 	gtk_widget_show_all (scrolled);
 
-	connect_button (config, gui, "button-add",    G_CALLBACK (config_button_add));
-	connect_button (config, gui, "button-remove", G_CALLBACK (config_button_remove));
-	connect_button (config, gui, "button-up",     G_CALLBACK (config_button_up));
-	connect_button (config, gui, "button-down",   G_CALLBACK (config_button_down));
+	connect_button (config, builder, "button-add",    G_CALLBACK (config_button_add));
+	connect_button (config, builder, "button-remove", G_CALLBACK (config_button_remove));
+	connect_button (config, builder, "button-up",     G_CALLBACK (config_button_up));
+	connect_button (config, builder, "button-down",   G_CALLBACK (config_button_down));
 
 	setup_fields (config);
 }
@@ -1193,53 +1179,49 @@ configure_fields_dialog (ETableConfig *config, GladeXML *gui)
 static void
 setup_gui (ETableConfig *config)
 {
-	GladeXML *gui;
+	GtkBuilder *builder;
 	gboolean can_group;
-	gchar *filename;
 
 	create_global_store (config);
 
 	can_group = e_table_sort_info_get_can_group (config->state->sort_info);
-	filename = g_build_filename (EVOLUTION_UIDIR,
-					  "e-table-config.glade",
-					  NULL);
-	gui = glade_xml_new (filename, NULL, GETTEXT_PACKAGE);
-	g_free (filename);
+	builder = gtk_builder_new ();
+	e_load_ui_builder_definition (builder, "e-table-config.ui");
 
 	g_object_unref (global_store);
 
-	config->dialog_toplevel = glade_xml_get_widget (
-		gui, "e-table-config");
+	config->dialog_toplevel = e_builder_get_widget (
+		builder, "e-table-config");
 
 	if (config->header)
 		gtk_window_set_title (GTK_WINDOW (config->dialog_toplevel), config->header);
 
-	config->dialog_show_fields = glade_xml_get_widget (
-		gui, "dialog-show-fields");
-	config->dialog_group_by =  glade_xml_get_widget (
-		gui, "dialog-group-by");
-	config->dialog_sort = glade_xml_get_widget (
-		gui, "dialog-sort");
+	config->dialog_show_fields = e_builder_get_widget (
+		builder, "dialog-show-fields");
+	config->dialog_group_by =  e_builder_get_widget (
+		builder, "dialog-group-by");
+	config->dialog_sort = e_builder_get_widget (
+		builder, "dialog-sort");
 
-	config->sort_label = glade_xml_get_widget (
-		gui, "label-sort");
-	config->group_label = glade_xml_get_widget (
-		gui, "label-group");
-	config->fields_label = glade_xml_get_widget (
-		gui, "label-fields");
+	config->sort_label = e_builder_get_widget (
+		builder, "label-sort");
+	config->group_label = e_builder_get_widget (
+		builder, "label-group");
+	config->fields_label = e_builder_get_widget (
+		builder, "label-fields");
 
-	connect_button (config, gui, "button-sort", G_CALLBACK (config_button_sort));
-	connect_button (config, gui, "button-group", G_CALLBACK (config_button_group));
-	connect_button (config, gui, "button-fields", G_CALLBACK (config_button_fields));
+	connect_button (config, builder, "button-sort", G_CALLBACK (config_button_sort));
+	connect_button (config, builder, "button-group", G_CALLBACK (config_button_group));
+	connect_button (config, builder, "button-fields", G_CALLBACK (config_button_fields));
 
 	if (!can_group) {
 		GtkWidget *w;
 
-		w = glade_xml_get_widget (gui, "button-group");
+		w = e_builder_get_widget (builder, "button-group");
 		if (w)
 			gtk_widget_hide (w);
 
-		w = glade_xml_get_widget (gui, "label3");
+		w = e_builder_get_widget (builder, "label3");
 		if (w)
 			gtk_widget_hide (w);
 
@@ -1248,9 +1230,9 @@ setup_gui (ETableConfig *config)
 			gtk_widget_hide (w);
 	}
 
-	configure_sort_dialog (config, gui);
-	configure_group_dialog (config, gui);
-	configure_fields_dialog (config, gui);
+	configure_sort_dialog (config, builder);
+	configure_group_dialog (config, builder);
+	configure_fields_dialog (config, builder);
 
 	g_object_weak_ref (G_OBJECT (config->dialog_toplevel),
 			   dialog_destroyed, config);
@@ -1258,7 +1240,7 @@ setup_gui (ETableConfig *config)
 	g_signal_connect (config->dialog_toplevel, "response",
 			  G_CALLBACK (dialog_response), config);
 
-	g_object_unref (gui);
+	g_object_unref (builder);
 }
 
 static void
diff --git a/widgets/table/e-table-field-chooser.c b/widgets/table/e-table-field-chooser.c
index 16f695e..8784a66 100644
--- a/widgets/table/e-table-field-chooser.c
+++ b/widgets/table/e-table-field-chooser.c
@@ -53,8 +53,6 @@ e_table_field_chooser_class_init (ETableFieldChooserClass *klass)
 
 	object_class = (GObjectClass*) klass;
 
-	glade_init();
-
 	object_class->set_property = e_table_field_chooser_set_property;
 	object_class->get_property = e_table_field_chooser_get_property;
 	object_class->dispose      = e_table_field_chooser_dispose;
@@ -138,16 +136,13 @@ static void resize(GnomeCanvas *canvas, ETableFieldChooser *etfc)
 static void
 e_table_field_chooser_init (ETableFieldChooser *etfc)
 {
-	GladeXML *gui;
 	GtkWidget *widget;
-	gchar *filename = g_build_filename (EVOLUTION_UIDIR,
-					    "e-table-field-chooser.glade",
-					    NULL);
-	gui = glade_xml_new (filename, NULL, GETTEXT_PACKAGE);
-	g_free (filename);
-	etfc->gui = gui;
-
-	widget = glade_xml_get_widget(gui, "vbox-top");
+
+	etfc->builder = gtk_builder_new ();
+	e_load_ui_builder_definition (
+		etfc->builder, "e-table-field-chooser.ui");
+
+	widget = e_builder_get_widget(etfc->builder, "vbox-top");
 	if (!widget) {
 		return;
 	}
@@ -156,7 +151,7 @@ e_table_field_chooser_init (ETableFieldChooser *etfc)
 
 	gtk_widget_push_colormap (gdk_rgb_get_colormap ());
 
-	etfc->canvas = GNOME_CANVAS(glade_xml_get_widget(gui, "canvas-buttons"));
+	etfc->canvas = GNOME_CANVAS(e_builder_get_widget(etfc->builder, "canvas-buttons"));
 
 	etfc->rect = gnome_canvas_item_new(gnome_canvas_root( GNOME_CANVAS( etfc->canvas ) ),
 					   gnome_canvas_rect_get_type(),
@@ -208,9 +203,9 @@ e_table_field_chooser_dispose (GObject *object)
 		g_object_unref (etfc->header);
 	etfc->header = NULL;
 
-	if (etfc->gui)
-		g_object_unref (etfc->gui);
-	etfc->gui = NULL;
+	if (etfc->builder)
+		g_object_unref (etfc->builder);
+	etfc->builder = NULL;
 
 	if (G_OBJECT_CLASS (e_table_field_chooser_parent_class)->dispose)
 		(* G_OBJECT_CLASS (e_table_field_chooser_parent_class)->dispose) (object);
diff --git a/widgets/table/e-table-field-chooser.h b/widgets/table/e-table-field-chooser.h
index 3bb4ecf..ddbec47 100644
--- a/widgets/table/e-table-field-chooser.h
+++ b/widgets/table/e-table-field-chooser.h
@@ -51,7 +51,7 @@ struct _ETableFieldChooser
 	GtkVBox parent;
 
 	/* item specific fields */
-	GladeXML *gui;
+	GtkBuilder *builder;
 	GnomeCanvas *canvas;
 	GnomeCanvasItem *item;
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]