[seahorse] Use GtkBuilder instead of libglade.



commit ce616ee6aa9027c818b06346404dcd08dcab11bb
Author: Stef Walter <stef memberwebs com>
Date:   Sat Jul 11 14:51:05 2009 +0000

    Use GtkBuilder instead of libglade.
    
    Automatic connecting of handlers is used. Handlers are exported via
    G_MODULE style exports. All handlers start with 'on_'.
    
    Most of the work done by  Andreas Brauchli. Fixes bug# 577875

 configure.in                                       |    2 +-
 daemon/Makefile.am                                 |    7 +-
 gkr/Makefile.am                                    |   14 +-
 gkr/seahorse-add-keyring.glade                     |  175 --
 gkr/seahorse-add-keyring.xml                       |  132 +
 gkr/seahorse-gkr-add-keyring.c                     |   14 +-
 gkr/seahorse-gkr-item-properties.c                 |   40 +-
 gkr/seahorse-gkr-item-properties.glade             |  919 -------
 gkr/seahorse-gkr-item-properties.xml               |  562 ++++
 gkr/seahorse-gkr-keyring-properties.c              |    9 +-
 gkr/seahorse-gkr-keyring.glade                     |  287 --
 gkr/seahorse-gkr-keyring.xml                       |  195 ++
 libcryptui/Makefile.am                             |    6 +-
 libseahorse/Makefile.am                            |   16 +-
 libseahorse/seahorse-add-keyserver.glade           |  263 --
 libseahorse/seahorse-add-keyserver.xml             |  201 ++
 libseahorse/seahorse-notify.glade                  |   98 -
 libseahorse/seahorse-notify.xml                    |   90 +
 libseahorse/seahorse-passphrase.c                  |    2 -
 libseahorse/seahorse-prefs.c                       |  112 +-
 libseahorse/seahorse-prefs.glade                   |  441 ---
 libseahorse/seahorse-prefs.xml                     |  312 +++
 libseahorse/seahorse-progress.c                    |   20 +-
 libseahorse/seahorse-progress.glade                |  189 --
 libseahorse/seahorse-progress.xml                  |  128 +
 libseahorse/seahorse-widget.c                      |  100 +-
 libseahorse/seahorse-widget.h                      |   13 +-
 pgp/Makefile.am                                    |   26 +-
 pgp/seahorse-add-subkey.glade                      |  298 --
 pgp/seahorse-add-subkey.xml                        |  220 ++
 pgp/seahorse-add-uid.glade                         |  263 --
 pgp/seahorse-add-uid.xml                           |  188 ++
 pgp/seahorse-expires.glade                         |  186 --
 pgp/seahorse-expires.xml                           |  142 +
 pgp/seahorse-gpgme-add-subkey.c                    |   34 +-
 pgp/seahorse-gpgme-add-uid.c                       |   33 +-
 pgp/seahorse-gpgme-expires.c                       |   28 +-
 pgp/seahorse-gpgme-generate.c                      |   33 +-
 pgp/seahorse-gpgme-revoke.c                        |   19 +-
 pgp/seahorse-gpgme-sign.c                          |   51 +-
 pgp/seahorse-pgp-generate.glade                    |  651 -----
 pgp/seahorse-pgp-generate.xml                      |  452 +++
 pgp/seahorse-pgp-key-properties.c                  |  403 ++--
 pgp/seahorse-pgp-private-key-properties.glade      | 2890 --------------------
 pgp/seahorse-pgp-private-key-properties.xml        | 1771 ++++++++++++
 pgp/seahorse-pgp-public-key-properties.glade       | 2393 ----------------
 pgp/seahorse-pgp-public-key-properties.xml         | 1435 ++++++++++
 pgp/{seahorse-revoke.glade => seahorse-revoke.xml} |  120 +-
 pgp/seahorse-sign.glade                            |  475 ----
 pgp/seahorse-sign.xml                              |  514 ++++
 pgp/seahorse-signer.c                              |    2 +-
 pgp/seahorse-signer.glade                          |   95 -
 pgp/seahorse-signer.xml                            |   96 +
 pkcs11/Makefile.am                                 |    8 +-
 src/Makefile.am                                    |   22 +-
 src/seahorse-change-passphrase.glade               |  194 --
 src/seahorse-change-passphrase.xml                 |  184 ++
 src/seahorse-generate-select.glade                 |  222 --
 src/seahorse-generate-select.xml                   |  207 ++
 src/seahorse-key-manager.c                         |   42 +-
 src/seahorse-key-manager.glade                     |  586 ----
 src/seahorse-key-manager.xml                       |  360 +++
 src/seahorse-keyserver-results.c                   |    4 +-
 src/seahorse-keyserver-results.glade               |  155 --
 src/seahorse-keyserver-results.xml                 |   97 +
 src/seahorse-keyserver-search.c                    |   57 +-
 src/seahorse-keyserver-search.glade                |  410 ---
 src/seahorse-keyserver-search.xml                  |  273 ++
 src/seahorse-keyserver-sync.c                      |   25 +-
 src/seahorse-keyserver-sync.glade                  |  346 ---
 src/seahorse-keyserver-sync.xml                    |  324 +++
 src/seahorse-viewer.c                              |    4 +-
 ssh/Makefile.am                                    |   14 +-
 ssh/seahorse-ssh-generate.c                        |    2 +-
 ssh/seahorse-ssh-generate.glade                    |  648 -----
 ssh/seahorse-ssh-generate.xml                      |  634 +++++
 ssh/seahorse-ssh-key-properties.c                  |   61 +-
 ssh/seahorse-ssh-key-properties.glade              | 1014 -------
 ssh/seahorse-ssh-key-properties.xml                |  613 +++++
 ssh/seahorse-ssh-upload.c                          |   25 +-
 ssh/seahorse-ssh-upload.glade                      |  351 ---
 ssh/seahorse-ssh-upload.xml                        |  331 +++
 82 files changed, 10041 insertions(+), 14337 deletions(-)
---
diff --git a/configure.in b/configure.in
index 9268753..6337161 100644
--- a/configure.in
+++ b/configure.in
@@ -49,7 +49,7 @@ AC_SUBST([GTK_LIBS])
 AC_SUBST([GTK_CFLAGS])
  
   AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
-PKG_CHECK_MODULES(SEAHORSE, libglade-2.0 gconf-2.0 gthread-2.0 gtk+-2.0 >= 2.10.0)
+PKG_CHECK_MODULES(SEAHORSE, gmodule-2.0 gconf-2.0 gthread-2.0 gtk+-2.0 >= 2.10.0)
 
 
 AC_MSG_CHECKING([for some Win32 platform])
diff --git a/daemon/Makefile.am b/daemon/Makefile.am
index 7a3e267..34e872f 100644
--- a/daemon/Makefile.am
+++ b/daemon/Makefile.am
@@ -1,5 +1,4 @@
 
-gladedir = $(datadir)/seahorse/glade/
 localedir = $(datadir)/locale
 pixmapsdir = $(datadir)/pixmaps/
 
@@ -10,7 +9,6 @@ INCLUDES = -I$(top_builddir) \
 	-I$(top_srcdir)/libseahorse \
 	$(SEAHORSE_CFLAGS) \
 	-DDATA_DIR=\""$(datadir)"\" \
-	-DSEAHORSE_GLADEDIR=\""$(gladedir)"\" \
 	-DLOCALEDIR=\""$(localedir)"\" \
 	-DPIXMAPSDIR=\""$(pixmapsdir)"\" \
 	-DLIBCRYPTUI_API_SUBJECT_TO_CHANGE \
@@ -63,8 +61,6 @@ seahorse_daemon_LDADD = \
 
 man_MANS = seahorse-daemon.1
 
-glade_DATA = 
-
 #autostart
 desktopdir = $(sysconfdir)/xdg/autostart
 desktop_in_files = seahorse-daemon.desktop.in 
@@ -73,7 +69,6 @@ desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
 
 EXTRA_DIST = \
     $(man_MANS) \
-    $(glade_DATA) \
     seahorse-daemon.desktop.in \
     seahorse-service.xml \
     seahorse-service-keyset.xml \
@@ -83,7 +78,7 @@ EXTRA_DIST = \
     seahorse-service-crypto-bindings.h \
     org.gnome.seahorse.service.in
 
-CLEANFILES = *.gladep* *.bak \
+CLEANFILES = *.bak \
     $(desktop_DATA) \
     seahorse-daemon.desktop.in \
     org.gnome.seahorse.service
diff --git a/gkr/Makefile.am b/gkr/Makefile.am
index a295fe6..12a9d8f 100644
--- a/gkr/Makefile.am
+++ b/gkr/Makefile.am
@@ -1,5 +1,5 @@
 
-gladedir = $(datadir)/seahorse/glade/
+uidir = $(datadir)/seahorse/ui/
 localedir = $(datadir)/locale
 seahorselibexecbindir = $(libdir)/seahorse/
 
@@ -9,7 +9,7 @@ INCLUDES = -I$(top_builddir) \
 	-I$(top_srcdir)/libseahorse \
 	$(SEAHORSE_CFLAGS) \
 	-DDATA_DIR=\""$(datadir)"\" \
-	-DSEAHORSE_GLADEDIR=\""$(gladedir)"\" \
+	-DSEAHORSE_UIDIR=\""$(uidir)"\" \
 	-DLOCALEDIR=\"$(localedir)\" \
 	-DEXECDIR=\""$(seahorselibexecbindir)"\" \
 	-DLIBCRYPTUI_API_SUBJECT_TO_CHANGE \
@@ -36,11 +36,11 @@ libseahorse_gkr_la_LIBADD = \
 	$(top_builddir)/common/libseahorse-common.la \
 	$(top_builddir)/libcryptui/libcryptui.la
 
-glade_DATA = \
-	seahorse-add-keyring.glade \
-	seahorse-gkr-item-properties.glade \
-	seahorse-gkr-keyring.glade
+ui_DATA = \
+	seahorse-add-keyring.xml \
+	seahorse-gkr-item-properties.xml \
+	seahorse-gkr-keyring.xml
 
 EXTRA_DIST = \
-	$(glade_DATA)
+	$(ui_DATA)
 
diff --git a/gkr/seahorse-add-keyring.xml b/gkr/seahorse-add-keyring.xml
new file mode 100644
index 0000000..fcf5f2b
--- /dev/null
+++ b/gkr/seahorse-add-keyring.xml
@@ -0,0 +1,132 @@
+<?xml version="1.0"?>
+<interface>
+  <requires lib="gtk+" version="2.16"/>
+  <!-- interface-naming-policy toplevel-contextual -->
+  <object class="GtkDialog" id="add-keyring">
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes">Add Password Keyring</property>
+    <property name="modal">True</property>
+    <property name="window_position">center-on-parent</property>
+    <property name="type_hint">dialog</property>
+    <property name="skip_taskbar_hint">True</property>
+    <property name="skip_pager_hint">True</property>
+    <property name="has_separator">False</property>
+    <signal name="response" handler="on_add_keyring_properties_response"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox1">
+        <property name="visible">True</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkVBox" id="vbox1">
+            <property name="visible">True</property>
+            <property name="border_width">5</property>
+            <property name="spacing">6</property>
+            <child>
+              <object class="GtkLabel" id="label4">
+                <property name="visible">True</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes">Please choose a name for the new keyring. You will be prompted for an unlock password.</property>
+                <property name="wrap">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkHBox" id="hbox1">
+                <property name="visible">True</property>
+                <property name="spacing">12</property>
+                <child>
+                  <object class="GtkLabel" id="label3">
+                    <property name="visible">True</property>
+                    <property name="xalign">0</property>
+                    <property name="label" translatable="yes">New Keyring Name:</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkEntry" id="keyring-name">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="has_focus">True</property>
+                    <property name="tooltip_text" translatable="yes">The host name or address of the server.</property>
+                    <property name="max_length">32</property>
+                    <property name="invisible_char">&#x25CF;</property>
+                    <property name="activates_default">True</property>
+                    <property name="width_chars">16</property>
+                    <signal name="changed" handler="on_add_keyring_name_changed"/>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area1">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="cancel">
+                <property name="label">gtk-cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+                <signal name="clicked" handler="on_widget_closed"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="ok">
+                <property name="label">gtk-add</property>
+                <property name="visible">True</property>
+                <property name="sensitive">False</property>
+                <property name="can_focus">True</property>
+                <property name="has_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-6">cancel</action-widget>
+      <action-widget response="-3">ok</action-widget>
+    </action-widgets>
+  </object>
+</interface>
diff --git a/gkr/seahorse-gkr-add-keyring.c b/gkr/seahorse-gkr-add-keyring.c
index 6a7c9a2..efb48e8 100644
--- a/gkr/seahorse-gkr-add-keyring.c
+++ b/gkr/seahorse-gkr-add-keyring.c
@@ -137,15 +137,15 @@ keyring_add_done (GnomeKeyringResult result, gpointer data)
 	seahorse_widget_destroy (swidget);
 }
 
-static void
-keyring_name_changed (GtkEntry *entry, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_add_keyring_name_changed (GtkEntry *entry, SeahorseWidget *swidget)
 {
 	const gchar *keyring = gtk_entry_get_text (entry);
 	seahorse_widget_set_sensitive (swidget, "ok", keyring && keyring[0]);
 }
 
-static void
-properties_response (GtkDialog *dialog, int response, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_add_keyring_properties_response (GtkDialog *dialog, int response, SeahorseWidget *swidget)
 {
 	GtkEntry *entry;
 	const gchar *keyring;
@@ -183,13 +183,9 @@ seahorse_gkr_add_keyring_show (GtkWindow *parent)
 
 	entry = GTK_ENTRY (seahorse_widget_get_widget (swidget, "keyring-name"));
 	g_return_if_fail (entry); 
-
-	glade_xml_signal_connect_data (swidget->xml, "keyring_name_changed", 
-	                               G_CALLBACK (keyring_name_changed), swidget);
-	keyring_name_changed (entry, swidget);
+	on_add_keyring_name_changed (entry, swidget);
 
 	widget = seahorse_widget_get_toplevel (swidget);
-	g_signal_connect (widget, "response", G_CALLBACK (properties_response), swidget);
 	
 	gtk_widget_show (widget);
 	gtk_window_present (GTK_WINDOW (widget));
diff --git a/gkr/seahorse-gkr-item-properties.c b/gkr/seahorse-gkr-item-properties.c
index 227564f..5cd215d 100644
--- a/gkr/seahorse-gkr-item-properties.c
+++ b/gkr/seahorse-gkr-item-properties.c
@@ -32,6 +32,7 @@
 #include "seahorse-secure-memory.h"
 #include "seahorse-secure-entry.h"
 #include "seahorse-util.h"
+#include "seahorse-widget.h"
 
 #include "common/seahorse-bind.h"
 
@@ -256,8 +257,8 @@ password_focus_out (SeahorseSecureEntry* entry, GdkEventFocus *event, SeahorseWi
     return FALSE;
 }
 
-static void 
-show_password_toggled (GtkToggleButton *button, SeahorseWidget *swidget)
+G_MODULE_EXPORT void 
+on_item_show_password_toggled (GtkToggleButton *button, SeahorseWidget *swidget)
 {
     GtkWidget *widget;
     
@@ -266,8 +267,8 @@ show_password_toggled (GtkToggleButton *button, SeahorseWidget *swidget)
                                           gtk_toggle_button_get_active (button));
 }
 
-static void
-password_expander_activate (GtkExpander *expander, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_item_password_expander_activate (GtkExpander *expander, SeahorseWidget *swidget)
 {
     SeahorseObject *object;
     SeahorseGkrItem *git;
@@ -290,8 +291,8 @@ password_expander_activate (GtkExpander *expander, SeahorseWidget *swidget)
     transfer_password (git, swidget);
 }
 
-static void
-description_activate (GtkWidget *entry, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_item_description_activate (GtkWidget *entry, SeahorseWidget *swidget)
 {
 	SeahorseObject *object;
 	SeahorseGkrItem *git;
@@ -351,10 +352,10 @@ description_activate (GtkWidget *entry, SeahorseWidget *swidget)
 	g_object_set_data (G_OBJECT (swidget), "updating-description", NULL);
 }
 
-static gboolean
-description_focus_out (GtkWidget* widget, GdkEventFocus *event, SeahorseWidget *swidget)
+G_MODULE_EXPORT gboolean
+on_item_description_focus_out (GtkWidget* widget, GdkEventFocus *event, SeahorseWidget *swidget)
 {
-	description_activate (widget, swidget);
+	on_item_description_activate (widget, swidget);
 	return FALSE;
 }
 
@@ -365,18 +366,6 @@ setup_main (SeahorseWidget *swidget)
 	SeahorseObject *object;
 	GtkWidget *widget;
 	GtkWidget *box;
-	
-	widget = seahorse_widget_get_widget (swidget, "password-expander");
-	g_return_if_fail (widget);
-	g_signal_connect_after (widget, "activate", G_CALLBACK (password_expander_activate), swidget);
-
-	glade_xml_signal_connect_data (swidget->xml, "show_password_toggled", 
-	                               G_CALLBACK (show_password_toggled), swidget);
-
-	widget = seahorse_widget_get_widget (swidget, "description-field");
-	g_return_if_fail (widget != NULL);
-	g_signal_connect (widget, "activate", G_CALLBACK (description_activate), swidget);
-	g_signal_connect (widget, "focus-out-event", G_CALLBACK (description_focus_out), swidget);
 
 	object = SEAHORSE_OBJECT_WIDGET (swidget)->object;
 
@@ -574,8 +563,8 @@ merge_toggle_button_access (SeahorseWidget *swidget, const gchar *identifier,
 		*access &= ~type;
 }
 
-static void
-application_access_toggled (GtkCheckButton *check, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_item_application_access_toggled (GtkCheckButton *check, SeahorseWidget *swidget)
 {
 	SeahorseObject *object;
 	SeahorseGkrItem *git;
@@ -755,7 +744,7 @@ seahorse_gkr_item_properties_show (SeahorseGkrItem *git, GtkWindow *parent)
 
     seahorse_object_refresh (object);
 
-    widget = glade_xml_get_widget (swidget->xml, swidget->name);
+    widget = GTK_WIDGET (seahorse_widget_get_widget (swidget, swidget->name));
     g_signal_connect (widget, "response", G_CALLBACK (properties_response), swidget);
 
     /* 
@@ -768,9 +757,6 @@ seahorse_gkr_item_properties_show (SeahorseGkrItem *git, GtkWindow *parent)
     setup_details (swidget);
     setup_application (swidget);
     
-    glade_xml_signal_connect_data (swidget->xml, "application_access_toggled", 
-                                   G_CALLBACK (application_access_toggled), swidget);
-
     widget = seahorse_widget_get_widget (swidget, "application-list");
     g_return_if_fail (GTK_IS_TREE_VIEW (widget));
     
diff --git a/gkr/seahorse-gkr-item-properties.xml b/gkr/seahorse-gkr-item-properties.xml
new file mode 100644
index 0000000..0288ba3
--- /dev/null
+++ b/gkr/seahorse-gkr-item-properties.xml
@@ -0,0 +1,562 @@
+<?xml version="1.0"?>
+<interface>
+  <requires lib="gtk+" version="2.16"/>
+  <!-- interface-naming-policy toplevel-contextual -->
+  <object class="GtkDialog" id="gkr-item-properties">
+    <property name="visible">True</property>
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes">Key Properties</property>
+    <property name="type_hint">dialog</property>
+    <property name="has_separator">False</property>
+    <signal name="delete_event" handler="on_widget_delete_event"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox1">
+        <property name="visible">True</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkNotebook" id="notebook">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="border_width">5</property>
+            <child>
+              <object class="GtkVBox" id="vbox7">
+                <property name="visible">True</property>
+                <property name="border_width">12</property>
+                <property name="spacing">18</property>
+                <child>
+                  <object class="GtkHBox" id="hbox61">
+                    <property name="visible">True</property>
+                    <property name="spacing">6</property>
+                    <child>
+                      <object class="GtkImage" id="key-image">
+                        <property name="visible">True</property>
+                        <property name="yalign">0</property>
+                        <property name="stock">gtk-missing-image</property>
+                        <property name="icon-size">6</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkTable" id="table9">
+                        <property name="visible">True</property>
+                        <property name="n_rows">5</property>
+                        <property name="n_columns">2</property>
+                        <property name="column_spacing">12</property>
+                        <property name="row_spacing">6</property>
+                        <child>
+                          <object class="GtkLabel" id="label72">
+                            <property name="visible">True</property>
+                            <property name="xalign">0</property>
+                            <property name="yalign">0</property>
+                            <property name="label" translatable="yes">_Description:</property>
+                            <property name="use_markup">True</property>
+                            <property name="use_underline">True</property>
+                            <property name="mnemonic_widget">description-field</property>
+                          </object>
+                          <packing>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options"></property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkEntry" id="description-field">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="activates_default">True</property>
+                            <signal name="focus_out_event" handler="on_item_description_focus_out"/>
+                            <signal name="activate" handler="on_item_description_activate"/>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                            <property name="y_options"></property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label22228">
+                            <property name="visible">True</property>
+                            <property name="xalign">0</property>
+                            <property name="yalign">1</property>
+                            <property name="label" translatable="yes" comments="To translators: This is the noun not the verb.">Use:</property>
+                          </object>
+                          <packing>
+                            <property name="top_attach">1</property>
+                            <property name="bottom_attach">2</property>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options"></property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="use-field">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="xalign">0</property>
+                            <property name="yalign">1</property>
+                            <property name="label">[Use here]</property>
+                            <property name="use_markup">True</property>
+                            <property name="selectable">True</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                            <property name="top_attach">1</property>
+                            <property name="bottom_attach">2</property>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options">GTK_FILL</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label93">
+                            <property name="visible">True</property>
+                            <property name="xalign">0</property>
+                            <property name="yalign">0</property>
+                            <property name="label" translatable="yes">Type:</property>
+                          </object>
+                          <packing>
+                            <property name="top_attach">2</property>
+                            <property name="bottom_attach">3</property>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options"></property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="server-label">
+                            <property name="visible">True</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Server:</property>
+                          </object>
+                          <packing>
+                            <property name="top_attach">3</property>
+                            <property name="bottom_attach">4</property>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options"></property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="login-label">
+                            <property name="visible">True</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Login:</property>
+                          </object>
+                          <packing>
+                            <property name="top_attach">4</property>
+                            <property name="bottom_attach">5</property>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options"></property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="server-field">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="xalign">0</property>
+                            <property name="label">[server]</property>
+                            <property name="selectable">True</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                            <property name="top_attach">3</property>
+                            <property name="bottom_attach">4</property>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options"></property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="type-field">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="xalign">0</property>
+                            <property name="label">[Type here]</property>
+                            <property name="selectable">True</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                            <property name="top_attach">2</property>
+                            <property name="bottom_attach">3</property>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options"></property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="login-field">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="xalign">0</property>
+                            <property name="label">[login]</property>
+                            <property name="selectable">True</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                            <property name="top_attach">4</property>
+                            <property name="bottom_attach">5</property>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options"></property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkExpander" id="password-expander">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <signal name="activate" handler="on_item_password_expander_activate" after="yes"/>
+                    <child>
+                      <object class="GtkAlignment" id="alignment45">
+                        <property name="visible">True</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <object class="GtkVBox" id="vbox9">
+                            <property name="visible">True</property>
+                            <property name="spacing">6</property>
+                            <child>
+                              <object class="GtkHBox" id="password-box-area">
+                                <property name="visible">True</property>
+                                <child>
+                                  <placeholder/>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkCheckButton" id="show-password-check">
+                                <property name="label" translatable="yes">Show pass_word</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="use_underline">True</property>
+                                <property name="draw_indicator">True</property>
+                                <signal name="toggled" handler="on_item_show_password_toggled"/>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                    <child type="label">
+                      <object class="GtkLabel" id="label22229">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Password:&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="label1">
+                <property name="visible">True</property>
+                <property name="xpad">3</property>
+                <property name="label" translatable="yes">Key</property>
+              </object>
+              <packing>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkVBox" id="vbox8">
+                <property name="visible">True</property>
+                <property name="border_width">8</property>
+                <child>
+                  <object class="GtkFrame" id="frame4">
+                    <property name="visible">True</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
+                    <child>
+                      <object class="GtkAlignment" id="alignment44">
+                        <property name="visible">True</property>
+                        <property name="top_padding">6</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <object class="GtkScrolledWindow" id="scrolledwindow1">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="hscrollbar_policy">automatic</property>
+                            <child>
+                              <object class="GtkViewport" id="viewport1">
+                                <property name="visible">True</property>
+                                <child>
+                                  <object class="GtkLabel" id="details-box">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="yalign">0</property>
+                                    <property name="label">[details]
+</property>
+                                    <property name="use_markup">True</property>
+                                    <property name="selectable">True</property>
+                                  </object>
+                                </child>
+                              </object>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                    <child type="label">
+                      <object class="GtkLabel" id="label108">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Technical Details:&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="label22222">
+                <property name="visible">True</property>
+                <property name="xpad">3</property>
+                <property name="label" translatable="yes">Details</property>
+              </object>
+              <packing>
+                <property name="position">1</property>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkVBox" id="vbox10">
+                <property name="visible">True</property>
+                <property name="border_width">12</property>
+                <property name="spacing">12</property>
+                <child>
+                  <object class="GtkScrolledWindow" id="scrolledwindow2">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="hscrollbar_policy">never</property>
+                    <property name="vscrollbar_policy">automatic</property>
+                    <property name="shadow_type">in</property>
+                    <child>
+                      <object class="GtkTreeView" id="application-list">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="headers_visible">False</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkTable" id="application-details">
+                    <property name="visible">True</property>
+                    <property name="n_rows">2</property>
+                    <property name="n_columns">2</property>
+                    <property name="column_spacing">6</property>
+                    <property name="row_spacing">6</property>
+                    <child>
+                      <object class="GtkLabel" id="label22231">
+                        <property name="visible">True</property>
+                        <property name="xalign">1</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Path:&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                      <packing>
+                        <property name="x_options">GTK_FILL</property>
+                        <property name="y_options"></property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="label22232">
+                        <property name="visible">True</property>
+                        <property name="xalign">1</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Permissions:&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                      <packing>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
+                        <property name="x_options">GTK_FILL</property>
+                        <property name="y_options"></property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="application-path">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="xalign">0</property>
+                        <property name="selectable">True</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="y_options"></property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkHBox" id="hbox62">
+                        <property name="visible">True</property>
+                        <property name="spacing">6</property>
+                        <child>
+                          <object class="GtkCheckButton" id="application-read">
+                            <property name="label" translatable="yes" comments="To translators: This is the infinitive not the imperative.">_Read</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="use_underline">True</property>
+                            <property name="draw_indicator">True</property>
+                            <signal name="toggled" handler="on_item_application_access_toggled"/>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkCheckButton" id="application-write">
+                            <property name="label" translatable="yes" comments="To translators: This is the infinitive not the imperative.">_Write</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="use_underline">True</property>
+                            <property name="draw_indicator">True</property>
+                            <signal name="toggled" handler="on_item_application_access_toggled"/>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkCheckButton" id="application-delete">
+                            <property name="label" translatable="yes" comments="To translators: This is the infinitive not the imperative.  This string refers to the ability of an application to delete this secret from its key ring.">_Delete</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="use_underline">True</property>
+                            <property name="draw_indicator">True</property>
+                            <signal name="toggled" handler="on_item_application_access_toggled"/>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
+                        <property name="x_options">GTK_FILL</property>
+                        <property name="y_options">GTK_FILL</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="label22230">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">Applications</property>
+              </object>
+              <packing>
+                <property name="position">2</property>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area1">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="helpbutton1">
+                <property name="label">gtk-help</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+                <signal name="clicked" handler="on_widget_help"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="closebutton1">
+                <property name="label">gtk-close</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+                <signal name="clicked" handler="on_widget_closed"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-11">helpbutton1</action-widget>
+      <action-widget response="-7">closebutton1</action-widget>
+    </action-widgets>
+  </object>
+</interface>
diff --git a/gkr/seahorse-gkr-keyring-properties.c b/gkr/seahorse-gkr-keyring-properties.c
index e2b8af7..a960148 100644
--- a/gkr/seahorse-gkr-keyring-properties.c
+++ b/gkr/seahorse-gkr-keyring-properties.c
@@ -82,8 +82,8 @@ setup_main (SeahorseWidget *swidget)
  * GENERAL
  */
 
-static void
-properties_response (GtkDialog *dialog, int response, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_keyring_properties_response (GtkDialog *dialog, int response, SeahorseWidget *swidget)
 {
 	if (response == GTK_RESPONSE_HELP) {
 		seahorse_widget_show_help (swidget);
@@ -98,16 +98,11 @@ seahorse_gkr_keyring_properties_show (SeahorseGkrKeyring *gkr, GtkWindow *parent
 {
 	SeahorseObject *object = SEAHORSE_OBJECT (gkr);
 	SeahorseWidget *swidget = NULL;
-	GtkWidget *widget;
 	
 	swidget = seahorse_object_widget_new ("gkr-keyring", parent, object);
     
 	/* This happens if the window is already open */
 	if (swidget == NULL)
 		return;
-
-	widget = glade_xml_get_widget (swidget->xml, swidget->name);
-	g_signal_connect (widget, "response", G_CALLBACK (properties_response), swidget);
-
 	setup_main (swidget);
 }
diff --git a/gkr/seahorse-gkr-keyring.xml b/gkr/seahorse-gkr-keyring.xml
new file mode 100644
index 0000000..c982af5
--- /dev/null
+++ b/gkr/seahorse-gkr-keyring.xml
@@ -0,0 +1,195 @@
+<?xml version="1.0"?>
+<interface>
+  <requires lib="gtk+" version="2.16"/>
+  <!-- interface-naming-policy toplevel-contextual -->
+  <object class="GtkDialog" id="gkr-keyring">
+    <property name="visible">True</property>
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes">Keyring Properties</property>
+    <property name="type_hint">dialog</property>
+    <property name="has_separator">False</property>
+    <signal name="response" handler="on_keyring_properties_response"/>
+    <signal name="delete_event" handler="on_widget_delete_event"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox1">
+        <property name="visible">True</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkNotebook" id="notebook">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="border_width">5</property>
+            <child>
+              <object class="GtkVBox" id="vbox7">
+                <property name="visible">True</property>
+                <property name="border_width">12</property>
+                <property name="spacing">18</property>
+                <child>
+                  <object class="GtkHBox" id="hbox61">
+                    <property name="visible">True</property>
+                    <property name="spacing">12</property>
+                    <child>
+                      <object class="GtkImage" id="keyring-image">
+                        <property name="visible">True</property>
+                        <property name="yalign">0</property>
+                        <property name="stock">gtk-missing-image</property>
+                        <property name="icon-size">6</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkTable" id="table9">
+                        <property name="visible">True</property>
+                        <property name="n_rows">2</property>
+                        <property name="n_columns">2</property>
+                        <property name="column_spacing">12</property>
+                        <property name="row_spacing">6</property>
+                        <child>
+                          <object class="GtkLabel" id="label72">
+                            <property name="visible">True</property>
+                            <property name="xalign">0</property>
+                            <property name="yalign">0</property>
+                            <property name="label" translatable="yes">_Name:</property>
+                            <property name="use_markup">True</property>
+                            <property name="use_underline">True</property>
+                          </object>
+                          <packing>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options"></property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label22228">
+                            <property name="visible">True</property>
+                            <property name="xalign">0</property>
+                            <property name="yalign">1</property>
+                            <property name="label" translatable="yes" comments="To translators: This is the noun not the verb.">Created:</property>
+                          </object>
+                          <packing>
+                            <property name="top_attach">1</property>
+                            <property name="bottom_attach">2</property>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options"></property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="created-field">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="xalign">0</property>
+                            <property name="yalign">1</property>
+                            <property name="label">date</property>
+                            <property name="use_markup">True</property>
+                            <property name="selectable">True</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                            <property name="top_attach">1</property>
+                            <property name="bottom_attach">2</property>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options">GTK_FILL</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="name-field">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="xalign">0</property>
+                            <property name="yalign">1</property>
+                            <property name="label">keyring name</property>
+                            <property name="use_markup">True</property>
+                            <property name="selectable">True</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options"></property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="label1">
+                <property name="visible">True</property>
+                <property name="xpad">3</property>
+                <property name="label" translatable="yes">Keyring</property>
+              </object>
+              <packing>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area1">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="helpbutton1">
+                <property name="label">gtk-help</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+                <signal name="clicked" handler="on_widget_help"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="closebutton1">
+                <property name="label">gtk-close</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+                <signal name="clicked" handler="on_widget_closed"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-11">helpbutton1</action-widget>
+      <action-widget response="-7">closebutton1</action-widget>
+    </action-widgets>
+  </object>
+</interface>
diff --git a/libcryptui/Makefile.am b/libcryptui/Makefile.am
index 4d868d0..231b8c9 100644
--- a/libcryptui/Makefile.am
+++ b/libcryptui/Makefile.am
@@ -72,13 +72,11 @@ INCLUDES = -I$(top_builddir) \
 	-I$(top_srcdir) \
 	$(LIBCRYPTUI_CFLAGS) \
 	-DLIBCRYPTUI_BUILD=1 \
-	-DLIBCRYPTUI_API_SUBJECT_TO_CHANGE \
-	-DUIDIR=\""$(uidir)"\"
+	-DLIBCRYPTUI_API_SUBJECT_TO_CHANGE
 
 EXTRA_DIST = \
 	cryptui-marshal.list \
-	cryptui.pc.in \
-	$(GLADE_FILES)
+	cryptui.pc.in
     
 CLEANFILES = \
 	cryptui-marshal.h \
diff --git a/libseahorse/Makefile.am b/libseahorse/Makefile.am
index bf9e131..817d44c 100644
--- a/libseahorse/Makefile.am
+++ b/libseahorse/Makefile.am
@@ -1,5 +1,5 @@
 
-gladedir = $(datadir)/seahorse/glade/
+uidir = $(datadir)/seahorse/ui/
 localedir = $(datadir)/locale
 pixmapsdir = $(datadir)/pixmaps/seahorse/
 seahorselibexecbindir = $(libdir)/seahorse/
@@ -9,7 +9,7 @@ INCLUDES = -I$(top_builddir) \
 	-I$(top_srcdir)/libcryptui \
 	$(SEAHORSE_CFLAGS) \
 	-DDATA_DIR=\""$(datadir)"\" \
-	-DSEAHORSE_GLADEDIR=\""$(gladedir)"\" \
+	-DSEAHORSE_UIDIR=\""$(uidir)"\" \
 	-DLOCALEDIR=\"$(localedir)\" \
 	-DPIXMAPSDIR=\""$(pixmapsdir)"\" \
 	-DEXECDIR=\""$(seahorselibexecbindir)"\" \
@@ -75,11 +75,11 @@ seahorse-marshal.c: seahorse-marshal.list $(GLIB_GENMARSHAL)
 	echo "#include \"seahorse-marshal.h\"" > $@ && \
 	$(GLIB_GENMARSHAL) $< --body --prefix=seahorse_marshal >> $@
 
-glade_DATA = \
-	seahorse-prefs.glade \
-	seahorse-add-keyserver.glade \
-	seahorse-progress.glade \
-	seahorse-notify.glade
+ui_DATA = \
+	seahorse-prefs.xml \
+	seahorse-add-keyserver.xml \
+	seahorse-progress.xml \
+	seahorse-notify.xml
 
-EXTRA_DIST = $(glade_DATA) \
+EXTRA_DIST = $(ui_DATA) \
 	seahorse-marshal.list
diff --git a/libseahorse/seahorse-add-keyserver.xml b/libseahorse/seahorse-add-keyserver.xml
new file mode 100644
index 0000000..808e0c4
--- /dev/null
+++ b/libseahorse/seahorse-add-keyserver.xml
@@ -0,0 +1,201 @@
+<?xml version="1.0"?>
+<interface>
+  <requires lib="gtk+" version="2.16"/>
+  <!-- interface-naming-policy toplevel-contextual -->
+  <object class="GtkListStore" id="model1">
+    <columns>
+      <!-- column-name gchararray -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0" translatable="yes">initial temporary item</col>
+      </row>
+    </data>
+  </object>
+  <object class="GtkDialog" id="add-keyserver">
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes">Add Key Server</property>
+    <property name="modal">True</property>
+    <property name="window_position">center-on-parent</property>
+    <property name="default_width">400</property>
+    <property name="type_hint">dialog</property>
+    <property name="skip_taskbar_hint">True</property>
+    <property name="skip_pager_hint">True</property>
+    <property name="has_separator">False</property>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox1">
+        <property name="visible">True</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkTable" id="table1">
+            <property name="visible">True</property>
+            <property name="border_width">5</property>
+            <property name="n_rows">2</property>
+            <property name="n_columns">2</property>
+            <property name="column_spacing">12</property>
+            <property name="row_spacing">6</property>
+            <child>
+              <object class="GtkLabel" id="label2">
+                <property name="visible">True</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes">Key Server Type:</property>
+              </object>
+              <packing>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkComboBox" id="keyserver-type">
+                <property name="visible">True</property>
+                <property name="model">model1</property>
+                <signal name="changed" handler="on_prefs_add_keyserver_uri_changed"/>
+                <child>
+                  <object class="GtkCellRendererText" id="renderer1"/>
+                  <attributes>
+                    <attribute name="text">0</attribute>
+                  </attributes>
+                </child>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="y_options">GTK_FILL</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="label3">
+                <property name="visible">True</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes">Host:</property>
+              </object>
+              <packing>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkHBox" id="hbox1">
+                <property name="visible">True</property>
+                <property name="spacing">6</property>
+                <child>
+                  <object class="GtkEntry" id="keyserver-host">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="has_focus">True</property>
+                    <property name="tooltip_text" translatable="yes">The host name or address of the server.</property>
+                    <property name="activates_default">True</property>
+                    <signal name="changed" handler="on_prefs_add_keyserver_uri_changed"/>
+                  </object>
+                  <packing>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkHBox" id="port-block">
+                    <property name="visible">True</property>
+                    <property name="spacing">6</property>
+                    <child>
+                      <object class="GtkLabel" id="label4">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">:</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" id="keyserver-port">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="tooltip_text" translatable="yes">The port to access the server on.</property>
+                        <property name="activates_default">True</property>
+                        <property name="width_chars">5</property>
+                        <signal name="changed" handler="on_prefs_add_keyserver_uri_changed"/>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options">GTK_FILL</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area1">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="cancel">
+                <property name="label">gtk-cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+                <signal name="clicked" handler="on_widget_closed"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="ok">
+                <property name="label">gtk-ok</property>
+                <property name="visible">True</property>
+                <property name="sensitive">False</property>
+                <property name="can_focus">True</property>
+                <property name="has_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-6">cancel</action-widget>
+      <action-widget response="-3">ok</action-widget>
+    </action-widgets>
+  </object>
+</interface>
diff --git a/libseahorse/seahorse-notify.xml b/libseahorse/seahorse-notify.xml
new file mode 100644
index 0000000..991356f
--- /dev/null
+++ b/libseahorse/seahorse-notify.xml
@@ -0,0 +1,90 @@
+<?xml version="1.0"?>
+<!--*- mode: xml -*-->
+<interface>
+  <object class="GtkDialog" id="notify">
+    <property name="visible">True</property>
+    <property name="title" translatable="yes">Notification Messages</property>
+    <property name="type">GTK_WINDOW_TOPLEVEL</property>
+    <property name="window_position">GTK_WIN_POS_NONE</property>
+    <property name="modal">False</property>
+    <property name="resizable">True</property>
+    <property name="destroy_with_parent">False</property>
+    <property name="decorated">True</property>
+    <property name="skip_taskbar_hint">False</property>
+    <property name="skip_pager_hint">False</property>
+    <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+    <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+    <property name="focus_on_map">True</property>
+    <property name="urgency_hint">False</property>
+    <property name="has_separator">False</property>
+    <signal handler="on_widget_delete_event" last_modification_time="Tue, 18 Jul 2006 17:38:58 GMT" name="delete_event"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox1">
+        <property name="visible">True</property>
+        <property name="homogeneous">False</property>
+        <property name="spacing">0</property>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area1">
+            <property name="visible">True</property>
+            <property name="layout_style">GTK_BUTTONBOX_END</property>
+            <child>
+              <object class="GtkButton" id="closebutton1">
+                <property name="visible">True</property>
+                <property name="can_default">True</property>
+                <property name="can_focus">True</property>
+                <property name="label">gtk-close</property>
+                <property name="use_stock">True</property>
+                <property name="relief">GTK_RELIEF_NORMAL</property>
+                <property name="focus_on_click">True</property>
+                <signal handler="on_widget_closed" last_modification_time="Tue, 18 Jul 2006 02:25:42 GMT" name="clicked"/>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="padding">0</property>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="pack_type">GTK_PACK_END</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkScrolledWindow" id="scrolledwindow1">
+            <property name="border_width">6</property>
+            <property name="width_request">400</property>
+            <property name="height_request">190</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+            <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+            <property name="shadow_type">GTK_SHADOW_NONE</property>
+            <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+            <child>
+              <object class="GtkViewport" id="viewport1">
+                <property name="visible">True</property>
+                <property name="shadow_type">GTK_SHADOW_NONE</property>
+                <child>
+                  <object class="GtkVBox" id="message-area">
+                    <property name="visible">True</property>
+                    <property name="homogeneous">False</property>
+                    <property name="spacing">12</property>
+                    <child>
+                      <placeholder/>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="padding">0</property>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-7">closebutton1</action-widget>
+    </action-widgets>
+  </object>
+</interface>
diff --git a/libseahorse/seahorse-passphrase.c b/libseahorse/seahorse-passphrase.c
index 85a60a5..8f1e9a0 100644
--- a/libseahorse/seahorse-passphrase.c
+++ b/libseahorse/seahorse-passphrase.c
@@ -43,8 +43,6 @@
 
 #include <gdk/gdkkeysyms.h>
 
-#include <glade/glade-xml.h>
-
 #include "seahorse-libdialogs.h"
 #include "seahorse-widget.h"
 #include "seahorse-util.h"
diff --git a/libseahorse/seahorse-prefs.c b/libseahorse/seahorse-prefs.c
index fc1d2f4..6588207 100644
--- a/libseahorse/seahorse-prefs.c
+++ b/libseahorse/seahorse-prefs.c
@@ -31,6 +31,7 @@
 #include "seahorse-secure-entry.h"
 #include "seahorse-servers.h"
 #include "seahorse-util.h"
+#include "seahorse-widget.h"
 
 #include "common/seahorse-registry.h"
 
@@ -73,9 +74,7 @@ keyserver_cell_edited (GtkCellRendererText *cell, gchar *path, gchar *text,
 static void
 keyserver_sel_changed (GtkTreeSelection *selection, SeahorseWidget *swidget)
 {
-    GtkWidget *widget;
-    
-    widget = glade_xml_get_widget (swidget->xml, "keyserver_remove");
+    GtkWidget *widget = seahorse_widget_get_widget (swidget, "keyserver_remove");
     gtk_widget_set_sensitive (widget, (gtk_tree_selection_count_selected_rows (selection) > 0));
 }
 
@@ -87,13 +86,13 @@ remove_row (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer
 }
 
 /* User wants to remove selected rows */
-static void
-keyserver_remove_clicked (GtkWidget *button, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_prefs_keyserver_remove_clicked (GtkWidget *button, SeahorseWidget *swidget)
 {
     GtkTreeView *treeview;
     GtkTreeSelection *selection;
     
-    treeview = GTK_TREE_VIEW (glade_xml_get_widget (swidget->xml, "keyservers"));
+    treeview = GTK_TREE_VIEW (seahorse_widget_get_widget (swidget, "keyservers"));
     selection = gtk_tree_view_get_selection (treeview);
     gtk_tree_selection_selected_foreach (selection, remove_row, NULL);
 }
@@ -156,7 +155,7 @@ populate_keyservers (SeahorseWidget *swidget, GSList *ks)
     gboolean cont;
     gchar *v;
         
-    treeview = GTK_TREE_VIEW (glade_xml_get_widget (swidget->xml, "keyservers"));
+    treeview = GTK_TREE_VIEW (seahorse_widget_get_widget (swidget, "keyservers"));
     model = gtk_tree_view_get_model (treeview);
     store = GTK_TREE_STORE (model);
     
@@ -246,21 +245,20 @@ calculate_keyserver_uri (SeahorseWidget *swidget)
     gchar *uri;
 
     /* Figure out the scheme */
-    widget = glade_xml_get_widget (swidget->xml, "keyserver-type");
+    widget = GTK_WIDGET (seahorse_widget_get_widget (swidget, "keyserver-type"));
     g_return_val_if_fail (widget != NULL, NULL);
 
     active = gtk_combo_box_get_active (GTK_COMBO_BOX (widget));
-    g_return_val_if_fail (active >= 0, NULL);
-    
-    types = g_object_get_data (G_OBJECT (swidget), "keyserver-types");
-    g_return_val_if_fail (types != NULL, NULL);
-    
-    scheme = (const gchar*)g_slist_nth_data (types, active);
-    if (scheme && !scheme[0])
-        scheme = NULL;
+    if (active >= 0) {
+	    types = g_object_get_data (G_OBJECT (swidget), "keyserver-types");
+	    g_return_val_if_fail (types != NULL, NULL);
+	    scheme = (const gchar*)g_slist_nth_data (types, active);
+	    if (scheme && !scheme[0])
+		    scheme = NULL;
+    }
     
     /* The host */
-    widget = glade_xml_get_widget (swidget->xml, "keyserver-host");
+    widget = GTK_WIDGET (seahorse_widget_get_widget (swidget, "keyserver-host"));
     g_return_val_if_fail (widget != NULL, NULL);
     
     host = gtk_entry_get_text (GTK_ENTRY (widget));
@@ -274,7 +272,7 @@ calculate_keyserver_uri (SeahorseWidget *swidget)
     }
     
     /* The port */
-    widget = glade_xml_get_widget (swidget->xml, "keyserver-port");
+    widget = GTK_WIDGET (seahorse_widget_get_widget (swidget, "keyserver-port"));
     g_return_val_if_fail (widget != NULL, NULL);
     
     port = gtk_entry_get_text (GTK_ENTRY (widget));
@@ -290,34 +288,33 @@ calculate_keyserver_uri (SeahorseWidget *swidget)
     return uri; 
 }
 
-static void
-uri_changed (GtkWidget *button, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_prefs_add_keyserver_uri_changed (GtkWidget *button, SeahorseWidget *swidget)
 {
     GtkWidget *widget;
     GSList *types;
     gchar *t;
     gint active;
 
-    widget = glade_xml_get_widget (swidget->xml, "ok");
+    widget = GTK_WIDGET (seahorse_widget_get_widget (swidget, "ok"));
     g_return_if_fail (widget != NULL);
     
     t = calculate_keyserver_uri (swidget);
     gtk_widget_set_sensitive (widget, t != NULL);
     g_free (t);
 
-    widget = glade_xml_get_widget (swidget->xml, "keyserver-type");
+    widget = GTK_WIDGET (seahorse_widget_get_widget (swidget, "keyserver-type"));
     g_return_if_fail (widget != NULL);
 
     /* Show or hide the port section based on whether 'custom' is selected */    
     active = gtk_combo_box_get_active (GTK_COMBO_BOX (widget));
     if (active > -1) {
-        
         types = g_object_get_data (G_OBJECT (swidget), "keyserver-types");
         g_return_if_fail (types != NULL);
-        
-        widget = glade_xml_get_widget (swidget->xml, "port-block");
+
+        widget = GTK_WIDGET (seahorse_widget_get_widget (swidget, "port-block"));
         g_return_if_fail (widget != NULL);
-        
+
         t = (gchar*)g_slist_nth_data (types, active);
         if (t && t[0])
             gtk_widget_show (widget);
@@ -326,8 +323,8 @@ uri_changed (GtkWidget *button, SeahorseWidget *swidget)
     }
 }
 
-static void
-keyserver_add_clicked (GtkButton *button, SeahorseWidget *sw)
+G_MODULE_EXPORT void
+on_prefs_keyserver_add_clicked (GtkButton *button, SeahorseWidget *sw)
 {
     SeahorseWidget *swidget;
     GSList *types, *descriptions, *l;
@@ -340,10 +337,10 @@ keyserver_add_clicked (GtkButton *button, SeahorseWidget *sw)
     GtkTreeIter iter;
     
     swidget = seahorse_widget_new_allow_multiple ("add-keyserver",
-                                                  GTK_WINDOW (glade_xml_get_widget (sw->xml, sw->name)));
+                                                  GTK_WINDOW (seahorse_widget_get_widget (sw, sw->name)));
     g_return_if_fail (swidget != NULL);
     
-    widget = glade_xml_get_widget (swidget->xml, "keyserver-type");
+    widget = GTK_WIDGET (seahorse_widget_get_widget (swidget, "keyserver-type"));
     g_return_if_fail (widget != NULL);
     
     /* The list of types */
@@ -366,16 +363,12 @@ keyserver_add_clicked (GtkButton *button, SeahorseWidget *sw)
     g_object_set_data_full (G_OBJECT (swidget), "keyserver-types", types, 
                             (GDestroyNotify)seahorse_util_string_slist_free);
 
-    glade_xml_signal_connect_data (swidget->xml, "on_uri_changed", 
-                                   G_CALLBACK (uri_changed), swidget);
-
     response = gtk_dialog_run (GTK_DIALOG (seahorse_widget_get_toplevel (swidget)));
     if (response == GTK_RESPONSE_ACCEPT) {
-        
         result = calculate_keyserver_uri (swidget);
         if (result != NULL) {        
             
-            treeview = GTK_TREE_VIEW (glade_xml_get_widget (sw->xml, "keyservers"));
+            treeview = GTK_TREE_VIEW (seahorse_widget_get_widget (sw, "keyservers"));
             g_return_if_fail (treeview != NULL);
             
             store = GTK_TREE_STORE (gtk_tree_view_get_model (treeview));
@@ -400,48 +393,45 @@ setup_keyservers (SeahorseWidget *swidget)
     GtkWidget *w;
     GSList *ks;
     guint notify_id;
-    
+
     ks = seahorse_servers_get_uris ();
     populate_keyservers (swidget, ks);
     seahorse_util_string_slist_free (ks);
-    
-    treeview = GTK_TREE_VIEW (glade_xml_get_widget (swidget->xml, "keyservers"));
+
+    treeview = GTK_TREE_VIEW (seahorse_widget_get_widget (swidget, "keyservers"));
     model = gtk_tree_view_get_model (treeview);
     g_signal_connect (model, "row-changed", G_CALLBACK (keyserver_row_changed), swidget);
     g_signal_connect (model, "row-deleted", G_CALLBACK (keyserver_row_deleted), swidget);
-    
+
     selection = gtk_tree_view_get_selection (treeview);
     gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
     g_signal_connect (selection, "changed", G_CALLBACK (keyserver_sel_changed), swidget);
 
-    glade_xml_signal_connect_data (swidget->xml, "keyserver_remove_clicked",
-            G_CALLBACK (keyserver_remove_clicked), swidget);
-    glade_xml_signal_connect_data (swidget->xml, "keyserver_add_clicked",
-            G_CALLBACK (keyserver_add_clicked), swidget);
-            
+    gtk_builder_connect_signals (swidget->gtkbuilder, swidget);
+
     notify_id = seahorse_gconf_notify (KEYSERVER_KEY, (GConfClientNotifyFunc)gconf_notify, 
                                        swidget);
     g_signal_connect (seahorse_widget_get_toplevel (swidget), "destroy", 
                         G_CALLBACK (gconf_unnotify), GINT_TO_POINTER (notify_id));
-                        
-    w = glade_xml_get_widget (swidget->xml, "keyserver-publish");
+
+    w = GTK_WIDGET (seahorse_widget_get_widget (swidget, "keyserver-publish"));
     g_return_if_fail (w != NULL);
-    
+
     skc = seahorse_keyserver_control_new (PUBLISH_TO_KEY, _("None: Don't publish keys"));
     gtk_container_add (GTK_CONTAINER (w), GTK_WIDGET (skc));
     gtk_widget_show_all (w);
 
-    w = glade_xml_get_widget (swidget->xml, "keyserver-publish-to-label");
+    w = GTK_WIDGET (seahorse_widget_get_widget (swidget, "keyserver-publish-to-label"));
     gtk_label_set_mnemonic_widget (GTK_LABEL (w), GTK_WIDGET (skc));
-    
-    w = glade_xml_get_widget(swidget->xml, "auto_retrieve");
+
+    w = GTK_WIDGET (seahorse_widget_get_widget (swidget, "auto_retrieve"));
     g_return_if_fail (w != NULL);
-    
+
     seahorse_check_button_gconf_attach (GTK_CHECK_BUTTON(w), AUTORETRIEVE_KEY);
-    
-    w = glade_xml_get_widget(swidget->xml, "auto_sync");
+
+    w = GTK_WIDGET (seahorse_widget_get_widget (swidget, "auto_sync"));
     g_return_if_fail (w != NULL);
-    
+
     seahorse_check_button_gconf_attach (GTK_CHECK_BUTTON(w), AUTOSYNC_KEY);
 }
 
@@ -487,7 +477,7 @@ seahorse_prefs_new (GtkWindow *parent)
 #ifdef WITH_KEYSERVER
         setup_keyservers (swidget);
 #else
-        widget = glade_xml_get_widget (swidget->xml, "keyserver-tab");
+        widget = GTK_WIDGET (seahorse_widget_get_widget (swidget, "keyserver-tab"));
         g_return_val_if_fail (GTK_IS_WIDGET (widget), swidget);
         seahorse_prefs_remove_tab (swidget, widget);
 #endif
@@ -495,7 +485,7 @@ seahorse_prefs_new (GtkWindow *parent)
 #ifdef WITH_SHARING
         setup_sharing (swidget);
 #else
-        widget = glade_xml_get_widget (swidget->xml, "sharing-tab");
+        widget = GTK_WIDGET (seahorse_widget_get_widget (swidget, "sharing-tab"));
         g_return_val_if_fail (GTK_IS_WIDGET (widget), swidget);
         seahorse_prefs_remove_tab (swidget, widget);
 #endif    
@@ -503,7 +493,7 @@ seahorse_prefs_new (GtkWindow *parent)
         seahorse_widget_show (swidget);
     } else {
         swidget = seahorse_widget_find ("prefs");
-        gtk_window_present (GTK_WINDOW (glade_xml_get_widget (swidget->xml, swidget->name)));
+        gtk_window_present (GTK_WINDOW (seahorse_widget_get_widget (swidget, swidget->name)));
     }
     
     return swidget;
@@ -519,7 +509,7 @@ void
 seahorse_prefs_add_tab (SeahorseWidget *swidget, GtkWidget *label, GtkWidget *tab)
 {
     GtkWidget *widget;
-    widget = glade_xml_get_widget (swidget->xml, "notebook");
+    widget = GTK_WIDGET (seahorse_widget_get_widget (swidget, "notebook"));
     gtk_widget_show (label);
     gtk_notebook_prepend_page (GTK_NOTEBOOK (widget), tab, label);
 }
@@ -532,13 +522,13 @@ seahorse_prefs_select_tab (SeahorseWidget *swidget, GtkWidget *tab)
     
     g_return_if_fail (GTK_IS_WIDGET (tab));
     
-    tabs = glade_xml_get_widget (swidget->xml, "notebook");
+    tabs = GTK_WIDGET (seahorse_widget_get_widget (swidget, "notebook"));
     g_return_if_fail (GTK_IS_NOTEBOOK (tabs));
     
     pos = gtk_notebook_page_num (GTK_NOTEBOOK (tabs), tab);
     if (pos != -1)
         gtk_notebook_set_current_page (GTK_NOTEBOOK (tabs), pos);
-}    
+}
 
 void 
 seahorse_prefs_remove_tab (SeahorseWidget *swidget, GtkWidget *tab)
@@ -548,7 +538,7 @@ seahorse_prefs_remove_tab (SeahorseWidget *swidget, GtkWidget *tab)
     
     g_return_if_fail (GTK_IS_WIDGET (tab));
     
-    tabs = glade_xml_get_widget (swidget->xml, "notebook");
+    tabs = GTK_WIDGET (seahorse_widget_get_widget (swidget, "notebook"));
     g_return_if_fail (GTK_IS_NOTEBOOK (tabs));
     
     pos = gtk_notebook_page_num (GTK_NOTEBOOK (tabs), tab);
diff --git a/libseahorse/seahorse-prefs.xml b/libseahorse/seahorse-prefs.xml
new file mode 100644
index 0000000..1ffa81a
--- /dev/null
+++ b/libseahorse/seahorse-prefs.xml
@@ -0,0 +1,312 @@
+<?xml version="1.0"?>
+<interface>
+  <requires lib="gtk+" version="2.16"/>
+  <!-- interface-naming-policy toplevel-contextual -->
+  <object class="GtkDialog" id="prefs">
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes">Preferences</property>
+    <property name="type_hint">dialog</property>
+    <property name="has_separator">False</property>
+    <signal name="delete_event" handler="on_widget_delete_event"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="mainbox">
+        <property name="visible">True</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkNotebook" id="notebook">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="border_width">5</property>
+            <child>
+              <object class="GtkTable" id="keyserver-tab">
+                <property name="visible">True</property>
+                <property name="border_width">12</property>
+                <property name="n_rows">4</property>
+                <property name="n_columns">2</property>
+                <property name="column_spacing">12</property>
+                <property name="row_spacing">12</property>
+                <child>
+                  <object class="GtkVBox" id="keyserver-publish">
+                    <property name="visible">True</property>
+                    <child>
+                      <placeholder/>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="right_attach">2</property>
+                    <property name="top_attach">1</property>
+                    <property name="bottom_attach">2</property>
+                    <property name="y_options"></property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkVBox" id="vbox2">
+                    <property name="visible">True</property>
+                    <property name="spacing">11</property>
+                    <child>
+                      <object class="GtkLabel" id="label8">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">_Find keys via:</property>
+                        <property name="use_underline">True</property>
+                        <property name="mnemonic_widget">scrolledwindow1</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkButton" id="keyserver_add">
+                        <property name="label">gtk-add</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="use_stock">True</property>
+                        <signal name="clicked" handler="on_prefs_keyserver_add_clicked"/>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkButton" id="keyserver_remove">
+                        <property name="label">gtk-remove</property>
+                        <property name="visible">True</property>
+                        <property name="sensitive">False</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="use_stock">True</property>
+                        <signal name="clicked" handler="on_prefs_keyserver_remove_clicked"/>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="x_options"></property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkScrolledWindow" id="scrolledwindow1">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="hscrollbar_policy">never</property>
+                    <property name="vscrollbar_policy">automatic</property>
+                    <property name="shadow_type">in</property>
+                    <child>
+                      <object class="GtkTreeView" id="keyservers">
+                        <property name="height_request">130</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="headers_visible">False</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="right_attach">2</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkLabel" id="keyserver-publish-to-label">
+                    <property name="visible">True</property>
+                    <property name="xalign">0</property>
+                    <property name="label" translatable="yes">_Publish keys to:</property>
+                    <property name="use_underline">True</property>
+                  </object>
+                  <packing>
+                    <property name="top_attach">1</property>
+                    <property name="bottom_attach">2</property>
+                    <property name="x_options"></property>
+                    <property name="y_options"></property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkCheckButton" id="auto_retrieve">
+                    <property name="label" translatable="yes">Automatically retrieve keys from _key servers</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="use_underline">True</property>
+                    <property name="draw_indicator">True</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="right_attach">2</property>
+                    <property name="top_attach">2</property>
+                    <property name="bottom_attach">3</property>
+                    <property name="y_options"></property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkCheckButton" id="auto_sync">
+                    <property name="label" translatable="yes">Automatically synchronize _modified keys with key servers</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="use_underline">True</property>
+                    <property name="draw_indicator">True</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="right_attach">2</property>
+                    <property name="top_attach">3</property>
+                    <property name="bottom_attach">4</property>
+                    <property name="y_options"></property>
+                  </packing>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+              </object>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="label7b">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">Key Servers</property>
+              </object>
+              <packing>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkVBox" id="sharing-tab">
+                <property name="visible">True</property>
+                <property name="border_width">12</property>
+                <property name="spacing">12</property>
+                <child>
+                  <object class="GtkCheckButton" id="enable-sharing">
+                    <property name="label" translatable="yes">_Share my keys with others on my network</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="use_underline">True</property>
+                    <property name="draw_indicator">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkHBox" id="hbox6">
+                    <property name="visible">True</property>
+                    <property name="spacing">12</property>
+                    <child>
+                      <object class="GtkImage" id="key-sharing-image">
+                        <property name="visible">True</property>
+                        <property name="yalign">0</property>
+                        <property name="icon_name">seahorse-share-keys</property>
+                        <property name="icon-size">6</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="label14">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">Sharing your keys allows other people on your network to use the keys you've collected. This means they can automatically encrypt things for you or those you know, without you having to send them your key.
+
+&lt;b&gt;Note:&lt;/b&gt; Your personal keys will not be compromised.</property>
+                        <property name="use_markup">True</property>
+                        <property name="wrap">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="label12">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">Key Sharing</property>
+              </object>
+              <packing>
+                <property name="position">1</property>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area1">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="helpbutton1">
+                <property name="label">gtk-help</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+                <signal name="clicked" handler="on_widget_help"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="closebutton1">
+                <property name="label">gtk-close</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+                <signal name="clicked" handler="on_widget_closed"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-11">helpbutton1</action-widget>
+      <action-widget response="-7">closebutton1</action-widget>
+    </action-widgets>
+  </object>
+</interface>
diff --git a/libseahorse/seahorse-progress.c b/libseahorse/seahorse-progress.c
index 853af73..8a98f53 100644
--- a/libseahorse/seahorse-progress.c
+++ b/libseahorse/seahorse-progress.c
@@ -197,13 +197,13 @@ progress_operation_update (SeahorseOperation *operation, const gchar *message,
     GtkWidget *w;
     const gchar *t;
     
-    w = glade_xml_get_widget (swidget->xml, "operation-details");
+    w = GTK_WIDGET (seahorse_widget_get_widget (swidget, "operation-details"));
     g_return_if_fail (w != NULL);
     
     t = seahorse_operation_get_message (operation);
     gtk_label_set_text (GTK_LABEL (w), t ? t : "");
     
-    progress = GTK_PROGRESS_BAR (glade_xml_get_widget (swidget->xml, "operation-bar"));
+    progress = GTK_PROGRESS_BAR (seahorse_widget_get_widget (swidget, "operation-bar"));
     g_return_if_fail (w != NULL);
     
     if (fract >= 0.0) {
@@ -214,8 +214,8 @@ progress_operation_update (SeahorseOperation *operation, const gchar *message,
     }
 }
 
-static void
-progress_operation_cancel (GtkButton *button, SeahorseOperation *operation)
+G_MODULE_EXPORT void
+on_progress_operation_cancel (GtkButton *button, SeahorseOperation *operation)
 {
     if (seahorse_operation_is_running (operation))
         seahorse_operation_cancel (operation);
@@ -232,7 +232,7 @@ progress_delete_event (GtkWidget *widget, GdkEvent *event,
                        SeahorseOperation *operation)
 {
     /* When window close we simulate a cancel */
-    progress_operation_cancel (NULL, operation);
+    on_progress_operation_cancel (NULL, operation);
     
     /* Allow window to close regardless of outcome */
     return TRUE;
@@ -271,7 +271,7 @@ progress_show (SeahorseOperation *operation)
     g_object_set_data_full (G_OBJECT (swidget), "operation", operation, 
                             (GDestroyNotify)g_object_unref);    
 
-    w = glade_xml_get_widget (swidget->xml, swidget->name);
+    w = GTK_WIDGET (seahorse_widget_get_widget (swidget, swidget->name));
     gtk_window_move (GTK_WINDOW (w), 10, 10);
 
     /* Setup the title */
@@ -279,12 +279,12 @@ progress_show (SeahorseOperation *operation)
     if (title) {
             
         /* The window title */
-        w = glade_xml_get_widget (swidget->xml, swidget->name);
+        w = GTK_WIDGET (seahorse_widget_get_widget (swidget, swidget->name));
         g_return_val_if_fail (w != NULL, FALSE);
         gtk_window_set_title (GTK_WINDOW (w), title);
             
         /* The main message title */
-        w = glade_xml_get_widget (swidget->xml, "operation-title");
+        w = GTK_WIDGET (seahorse_widget_get_widget (swidget, "operation-title"));
         g_return_val_if_fail (w != NULL, FALSE);
         t = g_strdup_printf ("<b>%s</b>", title);
         gtk_label_set_markup (GTK_LABEL (w), t);
@@ -298,13 +298,11 @@ progress_show (SeahorseOperation *operation)
                       G_CALLBACK (progress_operation_update), swidget);
 
     /* Cancel events */
-    glade_xml_signal_connect_data (swidget->xml, "cancel_clicked",
-                                   G_CALLBACK (progress_operation_cancel), operation);
     g_signal_connect (seahorse_widget_get_toplevel (swidget), "delete_event",
                       G_CALLBACK (progress_delete_event), operation);
     
     /* Done and cleanup */
-    w = glade_xml_get_widget (swidget->xml, swidget->name);
+    w = GTK_WIDGET (seahorse_widget_get_widget (swidget, swidget->name));
     g_signal_connect (w, "destroy", G_CALLBACK (progress_destroy), operation);
     g_signal_connect (operation, "done", G_CALLBACK (progress_operation_done), swidget);
 
diff --git a/libseahorse/seahorse-progress.xml b/libseahorse/seahorse-progress.xml
new file mode 100644
index 0000000..df04bdb
--- /dev/null
+++ b/libseahorse/seahorse-progress.xml
@@ -0,0 +1,128 @@
+<?xml version="1.0"?>
+<interface>
+  <requires lib="gtk+" version="2.16"/>
+  <!-- interface-naming-policy toplevel-contextual -->
+  <object class="GtkDialog" id="progress">
+    <property name="visible">True</property>
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes">Progress Title</property>
+    <property name="window_position">center-on-parent</property>
+    <property name="default_width">400</property>
+    <property name="type_hint">dialog</property>
+    <property name="has_separator">False</property>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox1">
+        <property name="visible">True</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkVBox" id="vbox1">
+            <property name="visible">True</property>
+            <property name="border_width">5</property>
+            <property name="spacing">12</property>
+            <child>
+              <object class="GtkHBox" id="hbox1">
+                <property name="visible">True</property>
+                <property name="spacing">12</property>
+                <child>
+                  <object class="GtkImage" id="image1">
+                    <property name="visible">True</property>
+                    <property name="stock">gtk-dialog-authentication</property>
+                    <property name="icon-size">6</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkVBox" id="vbox2">
+                    <property name="visible">True</property>
+                    <child>
+                      <object class="GtkLabel" id="operation-title">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label">&lt;b&gt;Progress Message&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="operation-details">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label">Progress Status</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkProgressBar" id="operation-bar">
+                <property name="visible">True</property>
+                <property name="pulse_step">0.10000000149</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area1">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="cancel">
+                <property name="label">gtk-cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+                <signal name="clicked" handler="on_progress_operation_cancel"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-6">cancel</action-widget>
+    </action-widgets>
+  </object>
+</interface>
diff --git a/libseahorse/seahorse-widget.c b/libseahorse/seahorse-widget.c
index 135eeb9..f55e396 100644
--- a/libseahorse/seahorse-widget.c
+++ b/libseahorse/seahorse-widget.c
@@ -26,9 +26,6 @@
 
 #include <glib/gi18n.h>
 
-#include <glade/glade.h>
-#include <glade/glade-build.h>
-
 #include "seahorse-widget.h"
 #include "seahorse-gconf.h"
 #include "seahorse-gtkstock.h"
@@ -60,15 +57,15 @@ static GObject* seahorse_widget_constructor (GType                  type,
                                              GObjectConstructParam* props);                    
 
 /* signal functions */
-static void     widget_closed        (GtkWidget             *widget,
-                                      SeahorseWidget        *swidget);
+G_MODULE_EXPORT void on_widget_closed   (GtkWidget             *widget,
+                                              SeahorseWidget        *swidget);
 
-static void     widget_help          (GtkWidget             *widget, 
-                                      SeahorseWidget        *swidget);
+G_MODULE_EXPORT void on_widget_help     (GtkWidget             *widget,
+                                              SeahorseWidget        *swidget);
 
-static gboolean widget_delete_event  (GtkWidget             *widget,
-                                      GdkEvent              *event,
-                                      SeahorseWidget        *swidget);
+G_MODULE_EXPORT gboolean on_widget_delete_event  (GtkWidget             *widget,
+                                                       GdkEvent              *event,
+                                                       SeahorseWidget        *swidget);
 
 static void     context_destroyed    (GtkObject             *object,
                                       SeahorseWidget        *swidget);
@@ -111,7 +108,7 @@ class_init (SeahorseWidgetClass *klass)
 	gobject_class->get_property = object_get_property;
 	
     g_object_class_install_property (gobject_class, PROP_NAME,
-        g_param_spec_string ("name", "Widget name", "Name of glade file and main widget",
+        g_param_spec_string ("name", "Widget name", "Name of gtkbuilder file and main widget",
                              NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
 }
 
@@ -180,11 +177,11 @@ object_finalize (GObject *gobject)
     }
 
 	g_signal_handlers_disconnect_by_func (SCTX_APP (), context_destroyed, swidget);
-    if (glade_xml_get_widget (swidget->xml, swidget->name))
-	    gtk_widget_destroy (glade_xml_get_widget (swidget->xml, swidget->name));
+    if (seahorse_widget_get_widget (swidget, swidget->name))
+        gtk_widget_destroy (GTK_WIDGET (seahorse_widget_get_widget (swidget, swidget->name)));
 	
-	g_object_unref (swidget->xml);
-	swidget->xml = NULL;
+	g_object_unref (swidget->gtkbuilder);
+	swidget->gtkbuilder = NULL;
 	
 	g_free (swidget->name);
 	
@@ -201,26 +198,22 @@ object_set_property (GObject *object, guint prop_id, const GValue *value, GParam
     swidget = SEAHORSE_WIDGET (object);
     
     switch (prop_id) {
-    /* Loads xml definition from name, connects common callbacks */
+    /* Loads gtkbuilder xml definition from name, connects common callbacks */
     case PROP_NAME:
         g_return_if_fail (swidget->name == NULL);
         swidget->name = g_value_dup_string (value);
-        path = g_strdup_printf ("%sseahorse-%s.glade",
-                                SEAHORSE_GLADEDIR, swidget->name);
-        swidget->xml = glade_xml_new (path, swidget->name, NULL);
+        path = g_strdup_printf ("%sseahorse-%s.xml",
+                                SEAHORSE_UIDIR, swidget->name);
+        swidget->gtkbuilder = gtk_builder_new ();
+        gtk_builder_add_from_file (swidget->gtkbuilder, path, NULL);
         g_free (path);
-        g_return_if_fail (swidget->xml != NULL);
+        g_return_if_fail (swidget->gtkbuilder != NULL);
         
-        glade_xml_signal_connect_data (swidget->xml, "closed",
-                                       G_CALLBACK (widget_closed), swidget);
-        glade_xml_signal_connect_data (swidget->xml, "delete_event",
-                                       G_CALLBACK (widget_delete_event), swidget);
-        glade_xml_signal_connect_data (swidget->xml, "help",
-                                       G_CALLBACK (widget_help), swidget);
+        gtk_builder_connect_signals (swidget->gtkbuilder, swidget);
         
-        w = glade_xml_get_widget (swidget->xml, swidget->name);
-        glade_xml_set_toplevel (swidget->xml, GTK_WINDOW (w));
-        glade_xml_ensure_accel (swidget->xml);
+        w = GTK_WIDGET (seahorse_widget_get_widget (swidget, swidget->name));
+		GTK_WIDGET_SET_FLAGS (GTK_WINDOW (w), GTK_TOPLEVEL);
+        /*TODO: glade_xml_ensure_accel (swidget->gtkbuilder);*/
         
         gtk_window_set_icon_name (GTK_WINDOW (w), "seahorse");
         break;
@@ -242,30 +235,30 @@ object_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *
 	}
 }
 
-static void 
-widget_help (GtkWidget *widget, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_widget_help (GtkWidget *widget, SeahorseWidget *swidget)
 {
     seahorse_widget_show_help (swidget);
 }
 
 /* Destroys widget */
-static void
-widget_closed (GtkWidget *widget, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_widget_closed (GtkWidget *widget, SeahorseWidget *swidget)
 {
 	seahorse_widget_destroy (swidget);
 }
 
 /* Closed widget */
-static gboolean
-widget_delete_event (GtkWidget *widget, GdkEvent *event, SeahorseWidget *swidget)
+G_MODULE_EXPORT gboolean
+on_widget_delete_event (GtkWidget *widget, GdkEvent *event, SeahorseWidget *swidget)
 {
-	widget_closed (widget, swidget);
+	on_widget_closed (widget, swidget);
     return FALSE; /* propogate event */
 }
 
 /**
  * seahorse_widget_new:
- * @name: Name of widget, filename part of glade file, and name of main window
+ * @name: Name of widget, filename part of gtkbuilder file, and name of main window
  * @parent: GtkWindow to make the parent of the new swidget
  *
  * Creates a new #SeahorseWidget.
@@ -281,7 +274,7 @@ seahorse_widget_new (const gchar *name, GtkWindow *parent)
     
     /* If widget already exists, present */
     if (swidget != NULL) {
-        gtk_window_present (GTK_WINDOW (glade_xml_get_widget (swidget->xml, swidget->name)));
+        gtk_window_present (GTK_WINDOW (seahorse_widget_get_widget (swidget, swidget->name)));
         return NULL;
     }
 
@@ -292,7 +285,7 @@ seahorse_widget_new (const gchar *name, GtkWindow *parent)
     g_hash_table_insert (widgets, g_strdup (name), swidget);
     
     if (parent != NULL) {
-        window = GTK_WINDOW (glade_xml_get_widget (swidget->xml, swidget->name));
+        window = GTK_WINDOW (seahorse_widget_get_widget (swidget, swidget->name));
         gtk_window_set_transient_for (window, parent);
     }
 
@@ -306,7 +299,7 @@ seahorse_widget_new (const gchar *name, GtkWindow *parent)
 
 /**
  * seahorse_widget_new_allow_multiple:
- * @name: Name of widget, filename part of glade file, and name of main window
+ * @name: Name of widget, filename part of gtkbuilder file, and name of main window
  * @parent: GtkWindow to make the parent of the new swidget
  *
  * Creates a new #SeahorseWidget without checking if it already exists.
@@ -320,9 +313,11 @@ seahorse_widget_new_allow_multiple (const gchar *name, GtkWindow *parent)
     SeahorseWidget *swidget = g_object_new (SEAHORSE_TYPE_WIDGET, "name", name,  NULL);
     
     if (parent != NULL) {
-        window = GTK_WINDOW (glade_xml_get_widget (swidget->xml, swidget->name));
+        window = GTK_WINDOW (seahorse_widget_get_widget (swidget, swidget->name));
         gtk_window_set_transient_for (window, parent);
     }
+
+	gtk_builder_connect_signals (swidget->gtkbuilder, NULL);
     
     /* We don't care about this floating business */
     g_object_ref (GTK_OBJECT (swidget));
@@ -393,7 +388,7 @@ seahorse_widget_get_name (SeahorseWidget   *swidget)
 GtkWidget*      
 seahorse_widget_get_toplevel (SeahorseWidget     *swidget)
 {
-    GtkWidget *widget = glade_xml_get_widget (swidget->xml, swidget->name);
+    GtkWidget *widget = GTK_WIDGET (seahorse_widget_get_widget (swidget, swidget->name));
     g_return_val_if_fail (widget != NULL, NULL);
     return widget;
 }
@@ -401,8 +396,9 @@ seahorse_widget_get_toplevel (SeahorseWidget     *swidget)
 GtkWidget*
 seahorse_widget_get_widget (SeahorseWidget *swidget, const char *identifier)
 {
-    GtkWidget *widget = glade_xml_get_widget (swidget->xml, identifier);
-    g_return_val_if_fail (widget != NULL, NULL);
+    GtkWidget *widget = GTK_WIDGET (gtk_builder_get_object (swidget->gtkbuilder, identifier));
+    if (widget == NULL)
+	    g_warning ("could not find widget %s for seahorse-%s.xml", identifier, swidget->name);
     return widget;
 }
 
@@ -410,14 +406,14 @@ seahorse_widget_get_widget (SeahorseWidget *swidget, const char *identifier)
  * seahorse_widget_show:
  * @swidget: #SeahorseWidget to show
  * 
- * Show the toplevel widget in the glade file.
+ * Show the toplevel widget in the gtkbuilder file.
  **/
 void
 seahorse_widget_show (SeahorseWidget *swidget)
 {
     GtkWidget *widget;
 
-    widget = glade_xml_get_widget (swidget->xml, swidget->name);
+    widget = GTK_WIDGET (seahorse_widget_get_widget (swidget, swidget->name));
     g_return_if_fail (widget != NULL);
     gtk_widget_show (widget);
 }
@@ -426,7 +422,7 @@ void
 seahorse_widget_set_visible (SeahorseWidget *swidget, const char *identifier,
                              gboolean visible)
 {
-    GtkWidget *widget = glade_xml_get_widget (swidget->xml, identifier);
+    GtkWidget *widget = GTK_WIDGET (seahorse_widget_get_widget (swidget, identifier));
     g_return_if_fail (widget != NULL);
     
     if (visible)
@@ -439,7 +435,7 @@ void
 seahorse_widget_set_sensitive (SeahorseWidget *swidget, const char *identifier,
                                gboolean sensitive)
 {
-    GtkWidget *widget = glade_xml_get_widget (swidget->xml, identifier);
+    GtkWidget *widget = GTK_WIDGET (seahorse_widget_get_widget (swidget, identifier));
     g_return_if_fail (widget != NULL);
     gtk_widget_set_sensitive (widget, sensitive);
 }
@@ -482,11 +478,3 @@ seahorse_widget_destroy (SeahorseWidget *swidget)
         g_object_unref (swidget);
     }
 }
-
-void
-seahorse_widget_connect_glade_signal (SeahorseWidget *swidget, const char *event, 
-                                      GtkCallback callback, gpointer userdata)
-{
-	g_return_if_fail (SEAHORSE_IS_WIDGET (swidget));
-	glade_xml_signal_connect_data (swidget->xml, event, G_CALLBACK (callback), userdata);
-}
diff --git a/libseahorse/seahorse-widget.h b/libseahorse/seahorse-widget.h
index af15706..fb4cdbc 100644
--- a/libseahorse/seahorse-widget.h
+++ b/libseahorse/seahorse-widget.h
@@ -21,7 +21,7 @@
  */
 
 /**
- * SeahorseWidget: A window created from a glade file.
+ * SeahorseWidget: A window created from a gtkbuilder file.
  * 
  * - All SeahorseWidget objects are destroyed when the SeahorseContext 
  *   goes bye-bye.
@@ -31,14 +31,14 @@
  *   destroy: The window was destroyed.
  *
  * Properties: 
- *   name: (gchar*) The name of the glade file to load. 
+ *   name: (gchar*) The name of the gtkbuilder file to load.
  */
  
 #ifndef __SEAHORSE_WIDGET_H__
 #define __SEAHORSE_WIDGET_H__
 
 #include <glib.h>
-#include <glade/glade-xml.h>
+#include <gtk/gtkbuilder.h>
 
 #include "seahorse-context.h"
 
@@ -56,7 +56,7 @@ struct _SeahorseWidget {
     GtkObject parent;
 
     /*< public >*/
-    GladeXML *xml;
+    GtkBuilder *gtkbuilder;
     gchar *name;
     
     /*< private >*/
@@ -96,11 +96,6 @@ void             seahorse_widget_set_sensitive      (SeahorseWidget   *swidget,
                                                      const char       *identifier,
                                                      gboolean         sensitive);
 
-void             seahorse_widget_connect_glade_signal (SeahorseWidget *swidget, 
-                                                       const char     *event,
-                                                       GtkCallback    callback,
-                                                       gpointer       userdata);
-
 void             seahorse_widget_destroy            (SeahorseWidget   *swidget);
 
 #endif /* __SEAHORSE_WIDGET_H__ */
diff --git a/pgp/Makefile.am b/pgp/Makefile.am
index 3259f65..a8dac98 100644
--- a/pgp/Makefile.am
+++ b/pgp/Makefile.am
@@ -1,5 +1,5 @@
 
-gladedir = $(datadir)/seahorse/glade/
+uidir = $(datadir)/seahorse/ui/
 localedir = $(datadir)/locale
 seahorselibexecbindir = $(libdir)/seahorse/
 
@@ -10,7 +10,7 @@ INCLUDES = -I$(top_builddir) \
 	-I$(top_srcdir)/libseahorse \
 	$(SEAHORSE_CFLAGS) \
 	-DDATA_DIR=\""$(datadir)"\" \
-	-DSEAHORSE_GLADEDIR=\""$(gladedir)"\" \
+	-DSEAHORSE_UIDIR=\""$(uidir)"\" \
 	-DLOCALEDIR=\"$(localedir)\" \
 	-DEXECDIR=\""$(seahorselibexecbindir)"\" \
 	-DLDAP_DEPRECATED \
@@ -82,17 +82,17 @@ seahorselibexecbin_PROGRAMS = xloadimage
 
 xloadimage_SOURCES = seahorse-xloadimage.c
 
-glade_DATA = \
-	seahorse-add-subkey.glade \
-	seahorse-add-uid.glade \
-	seahorse-expires.glade \
-	seahorse-pgp-public-key-properties.glade \
-	seahorse-pgp-private-key-properties.glade \
-	seahorse-pgp-generate.glade \
-	seahorse-revoke.glade \
-	seahorse-sign.glade \
-	seahorse-signer.glade
+ui_DATA = \
+	seahorse-add-subkey.xml \
+	seahorse-add-uid.xml \
+	seahorse-expires.xml \
+	seahorse-pgp-public-key-properties.xml \
+	seahorse-pgp-private-key-properties.xml \
+	seahorse-pgp-generate.xml \
+	seahorse-revoke.xml \
+	seahorse-sign.xml \
+	seahorse-signer.xml
 
 EXTRA_DIST = \
-	$(glade_DATA)
+	$(ui_DATA)
 
diff --git a/pgp/seahorse-add-subkey.xml b/pgp/seahorse-add-subkey.xml
new file mode 100644
index 0000000..f11c6ff
--- /dev/null
+++ b/pgp/seahorse-add-subkey.xml
@@ -0,0 +1,220 @@
+<?xml version="1.0"?>
+<interface>
+  <requires lib="gtk+" version="2.16"/>
+  <!-- interface-naming-policy toplevel-contextual -->
+  <object class="GtkAdjustment" id="adjustment1">
+    <property name="value">1024</property>
+    <property name="lower">768</property>
+    <property name="upper">1024</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">128</property>
+  </object>
+  <object class="GtkDialog" id="add-subkey">
+    <property name="visible">True</property>
+    <property name="border_width">5</property>
+    <property name="type_hint">dialog</property>
+    <property name="has_separator">False</property>
+    <signal name="delete_event" handler="on_widget_delete_event"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox1">
+        <property name="visible">True</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkTable" id="table1">
+            <property name="visible">True</property>
+            <property name="border_width">5</property>
+            <property name="n_rows">3</property>
+            <property name="n_columns">3</property>
+            <property name="column_spacing">12</property>
+            <property name="row_spacing">6</property>
+            <child>
+              <object class="GtkCheckButton" id="never_expires">
+                <property name="label" translatable="yes">Never E_xpires</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="tooltip_text" translatable="yes">If key never expires</property>
+                <property name="use_underline">True</property>
+                <property name="active">True</property>
+                <property name="draw_indicator">True</property>
+                <signal name="toggled" handler="on_gpgme_add_subkey_never_expires_toggled"/>
+              </object>
+              <packing>
+                <property name="left_attach">2</property>
+                <property name="right_attach">3</property>
+                <property name="top_attach">2</property>
+                <property name="bottom_attach">3</property>
+                <property name="x_options"></property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkComboBox" id="type">
+                <property name="visible">True</property>
+                <signal name="changed" handler="hanlder_gpgme_add_subkey_type_changed"/>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">3</property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="label1">
+                <property name="visible">True</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes">Key _Type:</property>
+                <property name="use_underline">True</property>
+                <property name="mnemonic_widget">type</property>
+              </object>
+              <packing>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="label2">
+                <property name="visible">True</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes">Key _Length:</property>
+                <property name="use_underline">True</property>
+                <property name="mnemonic_widget">length</property>
+              </object>
+              <packing>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="label3">
+                <property name="visible">True</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes">Expiration Date:</property>
+              </object>
+              <packing>
+                <property name="top_attach">2</property>
+                <property name="bottom_attach">3</property>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkAlignment" id="alignment1">
+                <property name="visible">True</property>
+                <property name="xalign">0</property>
+                <property name="xscale">0</property>
+                <child>
+                  <object class="GtkSpinButton" id="length">
+                    <property name="width_request">80</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="tooltip_text" translatable="yes">Length of Key</property>
+                    <property name="adjustment">adjustment1</property>
+                    <property name="climb_rate">128</property>
+                    <property name="snap_to_ticks">True</property>
+                    <property name="numeric">True</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">3</property>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options">GTK_FILL</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkAlignment" id="datetime-placeholder">
+                <property name="visible">True</property>
+                <child>
+                  <placeholder/>
+                </child>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="top_attach">2</property>
+                <property name="bottom_attach">3</property>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options">GTK_FILL</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area1">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="helpbutton1">
+                <property name="label">gtk-help</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+                <signal name="clicked" handler="on_widget_help"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="cancelbutton1">
+                <property name="label">gtk-cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+                <signal name="clicked" handler="on_widget_closed"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="okbutton1">
+                <property name="label">gtk-ok</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="tooltip_text" translatable="yes">Generate a new subkey</property>
+                <property name="use_stock">True</property>
+                <signal name="clicked" handler="on_gpgme_add_subkey_ok_clicked"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-11">helpbutton1</action-widget>
+      <action-widget response="-6">cancelbutton1</action-widget>
+      <action-widget response="-5">okbutton1</action-widget>
+    </action-widgets>
+  </object>
+</interface>
diff --git a/pgp/seahorse-add-uid.xml b/pgp/seahorse-add-uid.xml
new file mode 100644
index 0000000..839c592
--- /dev/null
+++ b/pgp/seahorse-add-uid.xml
@@ -0,0 +1,188 @@
+<?xml version="1.0"?>
+<interface>
+  <requires lib="gtk+" version="2.16"/>
+  <!-- interface-naming-policy toplevel-contextual -->
+  <object class="GtkDialog" id="add-uid">
+    <property name="visible">True</property>
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes">Add User ID</property>
+    <property name="type_hint">dialog</property>
+    <property name="has_separator">False</property>
+    <signal name="delete_event" handler="on_widget_delete_event"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox1">
+        <property name="visible">True</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkTable" id="table1">
+            <property name="visible">True</property>
+            <property name="border_width">5</property>
+            <property name="n_rows">3</property>
+            <property name="n_columns">2</property>
+            <property name="column_spacing">12</property>
+            <property name="row_spacing">6</property>
+            <child>
+              <object class="GtkEntry" id="name">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="has_focus">True</property>
+                <property name="tooltip_text" translatable="yes">Must be at least 5 characters long</property>
+                <property name="activates_default">True</property>
+                <signal name="changed" handler="on_gpgme_add_uid_name_changed"/>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkEntry" id="email">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="tooltip_text" translatable="yes">Optional email address</property>
+                <property name="activates_default">True</property>
+                <signal name="changed" handler="on_gpgme_add_uid_email_changed"/>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkEntry" id="comment">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="tooltip_text" translatable="yes">Optional comment describing key</property>
+                <property name="activates_default">True</property>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="top_attach">2</property>
+                <property name="bottom_attach">3</property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="label1">
+                <property name="visible">True</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes">Full _Name:</property>
+                <property name="use_underline">True</property>
+                <property name="mnemonic_widget">name</property>
+              </object>
+              <packing>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="label2">
+                <property name="visible">True</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes">_Email Address:</property>
+                <property name="use_underline">True</property>
+                <property name="mnemonic_widget">email</property>
+              </object>
+              <packing>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="label3">
+                <property name="visible">True</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes">Key Co_mment:</property>
+                <property name="use_underline">True</property>
+                <property name="mnemonic_widget">comment</property>
+              </object>
+              <packing>
+                <property name="top_attach">2</property>
+                <property name="bottom_attach">3</property>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area1">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="helpbutton1">
+                <property name="label">gtk-help</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+                <signal name="clicked" handler="on_widget_help"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="cancelbutton1">
+                <property name="label">gtk-cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+                <signal name="clicked" handler="on_widget_closed"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="ok">
+                <property name="label">gtk-ok</property>
+                <property name="visible">True</property>
+                <property name="sensitive">False</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="tooltip_text" translatable="yes">Create the new user ID</property>
+                <property name="use_stock">True</property>
+                <signal name="clicked" handler="on_gpgme_add_uid_ok_clicked"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-11">helpbutton1</action-widget>
+      <action-widget response="-6">cancelbutton1</action-widget>
+      <action-widget response="-5">ok</action-widget>
+    </action-widgets>
+  </object>
+</interface>
diff --git a/pgp/seahorse-expires.xml b/pgp/seahorse-expires.xml
new file mode 100644
index 0000000..62cc3d2
--- /dev/null
+++ b/pgp/seahorse-expires.xml
@@ -0,0 +1,142 @@
+<?xml version="1.0"?>
+<interface>
+  <requires lib="gtk+" version="2.16"/>
+  <!-- interface-naming-policy toplevel-contextual -->
+  <object class="GtkDialog" id="expires">
+    <property name="visible">True</property>
+    <property name="border_width">5</property>
+    <property name="modal">True</property>
+    <property name="type_hint">dialog</property>
+    <property name="has_separator">False</property>
+    <signal name="delete_event" handler="on_widget_delete_event"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="all-controls">
+        <property name="visible">True</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkVBox" id="vbox1">
+            <property name="visible">True</property>
+            <property name="border_width">5</property>
+            <property name="spacing">6</property>
+            <child>
+              <object class="GtkCheckButton" id="expire">
+                <property name="label" translatable="yes">_Never expires</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_underline">True</property>
+                <property name="draw_indicator">True</property>
+                <signal name="toggled" handler="on_gpgme_expire_toggled"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkCalendar" id="calendar">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area1">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="cancelbutton1">
+                <property name="label">gtk-cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+                <signal name="clicked" handler="on_widget_closed"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="okbutton1">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="tooltip_text" translatable="yes">Revoke key</property>
+                <signal name="clicked" handler="on_gpgme_expire_ok_clicked"/>
+                <child>
+                  <object class="GtkAlignment" id="alignment1">
+                    <property name="visible">True</property>
+                    <property name="xscale">0</property>
+                    <property name="yscale">0</property>
+                    <child>
+                      <object class="GtkHBox" id="hbox1">
+                        <property name="visible">True</property>
+                        <property name="spacing">2</property>
+                        <child>
+                          <object class="GtkImage" id="image1">
+                            <property name="visible">True</property>
+                            <property name="stock">gtk-ok</property>
+                            <property name="icon-size">4</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label3">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">C_hange</property>
+                            <property name="use_underline">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-6">cancelbutton1</action-widget>
+      <action-widget response="-5">okbutton1</action-widget>
+    </action-widgets>
+  </object>
+</interface>
diff --git a/pgp/seahorse-gpgme-add-subkey.c b/pgp/seahorse-gpgme-add-subkey.c
index 1d04e30..d8b5301 100644
--- a/pgp/seahorse-gpgme-add-subkey.c
+++ b/pgp/seahorse-gpgme-add-subkey.c
@@ -39,15 +39,15 @@ enum {
   N_COLUMNS
 };
 
-static void
-type_changed (GtkComboBox *combo, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+hanlder_gpgme_add_subkey_type_changed (GtkComboBox *combo, SeahorseWidget *swidget)
 {
 	gint type;
 	GtkSpinButton *length;
     GtkTreeModel *model;
     GtkTreeIter iter;
     	
-	length = GTK_SPIN_BUTTON (glade_xml_get_widget (swidget->xml, LENGTH));
+	length = GTK_SPIN_BUTTON (seahorse_widget_get_widget (swidget, LENGTH));
 	
 	model = gtk_combo_box_get_model (combo);
 	gtk_combo_box_get_active_iter (combo, &iter);
@@ -71,8 +71,8 @@ type_changed (GtkComboBox *combo, SeahorseWidget *swidget)
 	}
 }
 
-static void
-never_expires_toggled (GtkToggleButton *togglebutton, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_gpgme_add_subkey_never_expires_toggled (GtkToggleButton *togglebutton, SeahorseWidget *swidget)
 {
     GtkWidget *widget;
 
@@ -83,8 +83,8 @@ never_expires_toggled (GtkToggleButton *togglebutton, SeahorseWidget *swidget)
                               !gtk_toggle_button_get_active (togglebutton));
 }
 
-static void
-ok_clicked (GtkButton *button, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_gpgme_add_subkey_ok_clicked (GtkButton *button, SeahorseWidget *swidget)
 {
 	SeahorseObjectWidget *skwidget;
 	SeahorseKeyEncType real_type;
@@ -99,7 +99,7 @@ ok_clicked (GtkButton *button, SeahorseWidget *swidget)
 	
 	skwidget = SEAHORSE_OBJECT_WIDGET (swidget);
 	
-	combo = GTK_COMBO_BOX (glade_xml_get_widget (swidget->xml, "type"));
+	combo = GTK_COMBO_BOX (seahorse_widget_get_widget (swidget, "type"));
 	gtk_combo_box_get_active_iter (combo, &iter);
 	model = gtk_combo_box_get_model (combo);
 	gtk_tree_model_get (model, &iter,
@@ -107,10 +107,10 @@ ok_clicked (GtkButton *button, SeahorseWidget *swidget)
                         -1);	
 		
 	length = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (
-		glade_xml_get_widget (swidget->xml, LENGTH)));
+		seahorse_widget_get_widget (swidget, LENGTH)));
 	
 	if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (
-	glade_xml_get_widget (swidget->xml, "never_expires"))))
+	seahorse_widget_get_widget (swidget, "never_expires"))))
 		expires = 0;
 	else {
         widget = GTK_WIDGET (g_object_get_data (G_OBJECT (swidget), "expires-datetime"));
@@ -134,7 +134,7 @@ ok_clicked (GtkButton *button, SeahorseWidget *swidget)
 			break;
 	}
 	
-	widget = glade_xml_get_widget (swidget->xml, swidget->name);
+	widget = GTK_WIDGET (seahorse_widget_get_widget (swidget, swidget->name));
 	gtk_widget_set_sensitive (widget, FALSE);
 	err = seahorse_gpgme_key_op_add_subkey (SEAHORSE_GPGME_KEY (skwidget->object), 
 	                                        real_type, length, expires);
@@ -159,10 +159,10 @@ seahorse_gpgme_add_subkey_new (SeahorseGpgmeKey *pkey, GtkWindow *parent)
 	swidget = seahorse_object_widget_new ("add-subkey", parent, SEAHORSE_OBJECT (pkey));
 	g_return_if_fail (swidget != NULL);
 	
-	gtk_window_set_title (GTK_WINDOW (glade_xml_get_widget (swidget->xml, swidget->name)),
+	gtk_window_set_title (GTK_WINDOW (seahorse_widget_get_widget (swidget, swidget->name)),
 		g_strdup_printf (_("Add subkey to %s"), seahorse_object_get_label (SEAHORSE_OBJECT (pkey))));
     
-    combo = GTK_COMBO_BOX (glade_xml_get_widget (swidget->xml, "type"));
+    combo = GTK_COMBO_BOX (seahorse_widget_get_widget (swidget, "type"));
     model = GTK_TREE_MODEL (gtk_list_store_new (N_COLUMNS, G_TYPE_STRING, G_TYPE_INT));
     
     gtk_combo_box_set_model (combo, model);
@@ -200,14 +200,6 @@ seahorse_gpgme_add_subkey_new (SeahorseGpgmeKey *pkey, GtkWindow *parent)
                         COMBO_INT, 3,
                         -1);
     
-    glade_xml_signal_connect_data (swidget->xml, "ok_clicked",
-		G_CALLBACK (ok_clicked), swidget);
-	glade_xml_signal_connect_data (swidget->xml, "never_expires_toggled",
-		G_CALLBACK (never_expires_toggled), swidget);
-	glade_xml_signal_connect_data (swidget->xml, "type_changed",
-		G_CALLBACK (type_changed), swidget);
-
-	
 	widget = seahorse_widget_get_widget (swidget, "datetime-placeholder");
 	g_return_if_fail (widget != NULL);
 
diff --git a/pgp/seahorse-gpgme-add-uid.c b/pgp/seahorse-gpgme-add-uid.c
index 31a4685..86ce3e0 100644
--- a/pgp/seahorse-gpgme-add-uid.c
+++ b/pgp/seahorse-gpgme-add-uid.c
@@ -41,30 +41,30 @@ check_ok (SeahorseWidget *swidget)
 	
 	/* must be at least 5 characters */
 	name = gtk_entry_get_text (GTK_ENTRY (
-		glade_xml_get_widget (swidget->xml, NAME)));
+		seahorse_widget_get_widget (swidget, NAME)));
 	/* must be empty or be * * */
 	email = gtk_entry_get_text (GTK_ENTRY (
-		glade_xml_get_widget (swidget->xml, EMAIL)));
+		seahorse_widget_get_widget (swidget, EMAIL)));
 	
-	gtk_widget_set_sensitive (glade_xml_get_widget (swidget->xml, "ok"),
+	gtk_widget_set_sensitive (GTK_WIDGET (seahorse_widget_get_widget (swidget, "ok")),
 		strlen (name) >= 5 && (strlen (email) == 0  ||
 		(g_pattern_match_simple ("?* ?*", email))));
 }
 
-static void
-name_changed (GtkEditable *editable, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_gpgme_add_uid_name_changed (GtkEditable *editable, SeahorseWidget *swidget)
 {
 	check_ok (swidget);
 }
 
-static void
-email_changed (GtkEditable *editable, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_gpgme_add_uid_email_changed (GtkEditable *editable, SeahorseWidget *swidget)
 {
 	check_ok (swidget);
 }
 
-static void
-ok_clicked (GtkButton *button, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_gpgme_add_uid_ok_clicked (GtkButton *button, SeahorseWidget *swidget)
 {
 	SeahorseObject *object;
 	const gchar *name, *email, *comment;
@@ -73,11 +73,11 @@ ok_clicked (GtkButton *button, SeahorseWidget *swidget)
 	object = SEAHORSE_OBJECT_WIDGET (swidget)->object;
 	
 	name = gtk_entry_get_text (GTK_ENTRY (
-		glade_xml_get_widget (swidget->xml, NAME)));
+		seahorse_widget_get_widget (swidget, NAME)));
 	email = gtk_entry_get_text (GTK_ENTRY (
-		glade_xml_get_widget (swidget->xml, EMAIL)));
+		seahorse_widget_get_widget (swidget, EMAIL)));
 	comment = gtk_entry_get_text (GTK_ENTRY (
-		glade_xml_get_widget (swidget->xml, "comment")));
+		seahorse_widget_get_widget (swidget, "comment")));
 	
 	err = seahorse_gpgme_key_op_add_uid (SEAHORSE_GPGME_KEY (object),
 	                                     name, email, comment);
@@ -103,13 +103,6 @@ seahorse_gpgme_add_uid_new (SeahorseGpgmeKey *pkey, GtkWindow *parent)
 	g_return_if_fail (swidget != NULL);
 	
 	userid = seahorse_object_get_label (SEAHORSE_OBJECT (pkey));
-	gtk_window_set_title (GTK_WINDOW (glade_xml_get_widget (swidget->xml, swidget->name)),
+	gtk_window_set_title (GTK_WINDOW (seahorse_widget_get_widget (swidget, swidget->name)),
 		g_strdup_printf (_("Add user ID to %s"), userid));
-  
-	glade_xml_signal_connect_data (swidget->xml, "ok_clicked",
-		G_CALLBACK (ok_clicked), swidget);
-	glade_xml_signal_connect_data (swidget->xml, "name_changed",
-		G_CALLBACK (name_changed), swidget);
-	glade_xml_signal_connect_data (swidget->xml, "email_changed",
-		G_CALLBACK (email_changed), swidget);
 }
diff --git a/pgp/seahorse-gpgme-expires.c b/pgp/seahorse-gpgme-expires.c
index 5656657..8b16a7c 100644
--- a/pgp/seahorse-gpgme-expires.c
+++ b/pgp/seahorse-gpgme-expires.c
@@ -33,8 +33,8 @@
 #include "seahorse-gpgme-key-op.h"
 #include "seahorse-gpgme-subkey.h"
 
-static void
-ok_clicked (GtkButton *button, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_gpgme_expire_ok_clicked (GtkButton *button, SeahorseWidget *swidget)
 {
 	GtkWidget *widget; 
 	SeahorseGpgmeSubkey *subkey;
@@ -44,11 +44,11 @@ ok_clicked (GtkButton *button, SeahorseWidget *swidget)
 	
 	subkey = SEAHORSE_GPGME_SUBKEY (g_object_get_data (G_OBJECT (swidget), "subkey"));
 	
-	widget = glade_xml_get_widget (swidget->xml, "expire");
+	widget = GTK_WIDGET (seahorse_widget_get_widget (swidget, "expire"));
 	if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget))) {
 		
 		memset (&when, 0, sizeof (when));            
-		widget = glade_xml_get_widget (swidget->xml, "calendar");
+		widget = GTK_WIDGET (seahorse_widget_get_widget (swidget, "calendar"));
 		gtk_calendar_get_date (GTK_CALENDAR (widget), (guint*)&(when.tm_year), 
 		                       (guint*)&(when.tm_mon), (guint*)&(when.tm_mday));
 		when.tm_year -= 1900;
@@ -77,14 +77,14 @@ ok_clicked (GtkButton *button, SeahorseWidget *swidget)
 	seahorse_widget_destroy (swidget);
 }
 
-void
-expires_toggled (GtkWidget *widget, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_gpgme_expire_toggled (GtkWidget *widget, SeahorseWidget *swidget)
 {
 	GtkWidget *expire;
 	GtkWidget *cal;
 	
-	expire = glade_xml_get_widget (swidget->xml, "expire");
-	cal = glade_xml_get_widget (swidget->xml, "calendar");
+	expire = GTK_WIDGET (seahorse_widget_get_widget (swidget, "expire"));
+	cal = GTK_WIDGET (seahorse_widget_get_widget (swidget, "calendar"));
 
 	gtk_widget_set_sensitive (cal, !gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (expire)));
 }
@@ -105,16 +105,10 @@ seahorse_gpgme_expires_new (SeahorseGpgmeSubkey *subkey, GtkWindow *parent)
 	g_object_set_data_full (G_OBJECT (swidget), "subkey", 
 	                        g_object_ref (subkey), g_object_unref);
 	
-	glade_xml_signal_connect_data (swidget->xml, "on_calendar_change_button_clicked",
-	                               G_CALLBACK (ok_clicked), swidget);
-    
-	date = glade_xml_get_widget (swidget->xml, "calendar");    
+	date = GTK_WIDGET (seahorse_widget_get_widget (swidget, "calendar"));
 	g_return_if_fail (date != NULL);
 
-	expire = glade_xml_get_widget (swidget->xml, "expire");
-	glade_xml_signal_connect_data (swidget->xml, "on_expire_toggled",
-	                               G_CALLBACK (expires_toggled), swidget);
-	
+	expire = GTK_WIDGET (seahorse_widget_get_widget (swidget, "expire"));
 	expires = seahorse_pgp_subkey_get_expires (SEAHORSE_PGP_SUBKEY (subkey)); 
 	if (!expires) {
 		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (expire), TRUE);
@@ -135,6 +129,6 @@ seahorse_gpgme_expires_new (SeahorseGpgmeSubkey *subkey, GtkWindow *parent)
 	
 	label = seahorse_pgp_subkey_get_description (SEAHORSE_PGP_SUBKEY (subkey));
 	title = g_strdup_printf (_("Expiry: %s"), label);
-	gtk_window_set_title (GTK_WINDOW (glade_xml_get_widget (swidget->xml, swidget->name)), title);
+	gtk_window_set_title (GTK_WINDOW (seahorse_widget_get_widget (swidget, swidget->name)), title);
 	g_free (title);
 }
diff --git a/pgp/seahorse-gpgme-generate.c b/pgp/seahorse-gpgme-generate.c
index 4abe8c4..50639e5 100644
--- a/pgp/seahorse-gpgme-generate.c
+++ b/pgp/seahorse-gpgme-generate.c
@@ -130,8 +130,8 @@ get_expiry_date (SeahorseWidget *swidget)
     return widget;
 }
 
-static void
-on_response (GtkDialog *dialog, guint response, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_gpgme_generate_response (GtkDialog *dialog, guint response, SeahorseWidget *swidget)
 {
     SeahorseGpgmeSource *sksrc;
     SeahorseOperation *op;
@@ -233,8 +233,8 @@ on_response (GtkDialog *dialog, guint response, SeahorseWidget *swidget)
     g_free (name);
 }
 
-static void
-entry_changed(GtkEditable *editable, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_gpgme_generate_entry_changed (GtkEditable *editable, SeahorseWidget *swidget)
 {
     GtkWidget *widget;
     gchar *name;
@@ -251,8 +251,8 @@ entry_changed(GtkEditable *editable, SeahorseWidget *swidget)
     g_free (name);
 }
 
-static void
-expires_toggled (GtkToggleButton *button, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_gpgme_generate_expires_toggled (GtkToggleButton *button, SeahorseWidget *swidget)
 {
     GtkWidget *widget;
     
@@ -262,14 +262,14 @@ expires_toggled (GtkToggleButton *button, SeahorseWidget *swidget)
     gtk_widget_set_sensitive (widget, !gtk_toggle_button_get_active (button));
 }
 
-static void
-algorithm_changed (GtkComboBox *combo, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_gpgme_generate_algorithm_changed (GtkComboBox *combo, SeahorseWidget *swidget)
 {
     GtkWidget *widget;
     gint idx;
     
     idx = gtk_combo_box_get_active (combo);
-    g_assert (idx < G_N_ELEMENTS (available_algorithms));
+    g_assert (idx < (int)G_N_ELEMENTS (available_algorithms));
     
     widget = seahorse_widget_get_widget (swidget, "bits-entry");
     g_return_if_fail (widget != NULL);
@@ -305,7 +305,7 @@ seahorse_gpgme_generate_show (SeahorseGpgmeSource *sksrc, GtkWindow *parent)
     for(i = 0; i < G_N_ELEMENTS(available_algorithms); i++)
         gtk_combo_box_append_text (GTK_COMBO_BOX (widget), _(available_algorithms[i].desc));
     gtk_combo_box_set_active (GTK_COMBO_BOX (widget), 0);
-    algorithm_changed (GTK_COMBO_BOX (widget), swidget);
+    on_gpgme_generate_algorithm_changed (GTK_COMBO_BOX (widget), swidget);
     
     expires = time (NULL);
     expires += (60 * 60 * 24 * 365); /* Seconds in a year */
@@ -320,15 +320,6 @@ seahorse_gpgme_generate_show (SeahorseGpgmeSource *sksrc, GtkWindow *parent)
     
     g_object_ref (sksrc);
     g_object_set_data_full (G_OBJECT (swidget), "source", sksrc, g_object_unref);
-    
-    glade_xml_signal_connect_data (swidget->xml, "on_entry_changed",
-                                   G_CALLBACK (entry_changed), swidget);
-    glade_xml_signal_connect_data (swidget->xml, "on_expires_toggled",
-                                   G_CALLBACK (expires_toggled), swidget);
-    glade_xml_signal_connect_data (swidget->xml, "on_algorithm_changed", 
-                                   G_CALLBACK (algorithm_changed), swidget);
-    entry_changed (NULL, swidget);
-
-    g_signal_connect (seahorse_widget_get_toplevel (swidget), "response", 
-                      G_CALLBACK (on_response), swidget);
+	
+    on_gpgme_generate_entry_changed (NULL, swidget);
 }
diff --git a/pgp/seahorse-gpgme-revoke.c b/pgp/seahorse-gpgme-revoke.c
index a1ee27d..7217bb0 100644
--- a/pgp/seahorse-gpgme-revoke.c
+++ b/pgp/seahorse-gpgme-revoke.c
@@ -40,8 +40,8 @@ enum {
   N_COLUMNS
 };
 
-static void
-ok_clicked (GtkButton *button, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_gpgme_revoke_ok_clicked (GtkButton *button, SeahorseWidget *swidget)
 {
 	SeahorseRevokeReason reason;
 	SeahorseGpgmeSubkey *subkey;
@@ -52,16 +52,16 @@ ok_clicked (GtkButton *button, SeahorseWidget *swidget)
 	GtkTreeIter iter;
 	GValue value;
 	
-	widget = glade_xml_get_widget (swidget->xml, "reason");
+	widget = GTK_WIDGET (seahorse_widget_get_widget (swidget, "reason"));
 	model = gtk_combo_box_get_model (GTK_COMBO_BOX (widget));
 	gtk_combo_box_get_active_iter (GTK_COMBO_BOX (widget), &iter);
 	
-	memset(&value, 0, sizeof(value));
+	memset (&value, 0, sizeof(value));
 	gtk_tree_model_get_value (model, &iter, COLUMN_INT, &value);
 	reason = g_value_get_int (&value);
 	g_value_unset (&value);
 	
-	description = gtk_entry_get_text (GTK_ENTRY (glade_xml_get_widget (swidget->xml, "description")));
+	description = gtk_entry_get_text (GTK_ENTRY (seahorse_widget_get_widget (swidget, "description")));
 	subkey = g_object_get_data (G_OBJECT (swidget), "subkey");
 	g_return_if_fail (SEAHORSE_IS_GPGME_SUBKEY (subkey));
 	
@@ -87,13 +87,10 @@ seahorse_gpgme_revoke_new (SeahorseGpgmeSubkey *subkey, GtkWindow *parent)
 	swidget = seahorse_widget_new ("revoke", parent);
 	g_return_if_fail (swidget != NULL);
 	
-	glade_xml_signal_connect_data (swidget->xml, "ok_clicked",
-		G_CALLBACK (ok_clicked), swidget);
-	
 	label = seahorse_pgp_subkey_get_description (SEAHORSE_PGP_SUBKEY (subkey));
 	title = g_strdup_printf (_("Revoke: %s"), label);
-	gtk_window_set_title (GTK_WINDOW (glade_xml_get_widget (swidget->xml, swidget->name)), title);
-	g_free (title);;
+	gtk_window_set_title (GTK_WINDOW (seahorse_widget_get_widget (swidget, swidget->name)), title);
+	g_free (title);
 	
 	g_object_set_data (G_OBJECT (swidget), "subkey", subkey);
 
@@ -129,7 +126,7 @@ seahorse_gpgme_revoke_new (SeahorseGpgmeSubkey *subkey, GtkWindow *parent)
 	                    -1);
                         
 	/* Finish Setting Up Combo Box */
-	widget = glade_xml_get_widget (swidget->xml, "reason");
+	widget = GTK_WIDGET (seahorse_widget_get_widget (swidget, "reason"));
     
 	gtk_combo_box_set_model (GTK_COMBO_BOX (widget), GTK_TREE_MODEL (store));
 	gtk_combo_box_set_active (GTK_COMBO_BOX (widget), 0);
diff --git a/pgp/seahorse-gpgme-sign.c b/pgp/seahorse-gpgme-sign.c
index 2b7b7dd..4272898 100644
--- a/pgp/seahorse-gpgme-sign.c
+++ b/pgp/seahorse-gpgme-sign.c
@@ -35,8 +35,8 @@
 
 #include <glib/gi18n.h>
 
-static gboolean
-ok_clicked (SeahorseWidget *swidget)
+G_MODULE_EXPORT gboolean
+on_gpgme_sign_ok_clicked (SeahorseWidget *swidget)
 {
     SeahorseSignCheck check;
     SeahorseSignOptions options = 0;
@@ -47,17 +47,17 @@ ok_clicked (SeahorseWidget *swidget)
     
     /* Figure out choice */
     check = SIGN_CHECK_NO_ANSWER;
-    w = glade_xml_get_widget (swidget->xml, "sign-choice-not");
+    w = GTK_WIDGET (seahorse_widget_get_widget (swidget, "sign-choice-not"));
     g_return_val_if_fail (w != NULL, FALSE);
     if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w)))
         check = SIGN_CHECK_NONE;
     else {
-        w = glade_xml_get_widget (swidget->xml, "sign-choice-casual");
+        w = GTK_WIDGET (seahorse_widget_get_widget (swidget, "sign-choice-casual"));
         g_return_val_if_fail (w != NULL, FALSE);
         if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w)))
             check = SIGN_CHECK_CASUAL;
         else {
-            w = glade_xml_get_widget (swidget->xml, "sign-choice-careful");
+            w = GTK_WIDGET (seahorse_widget_get_widget (swidget, "sign-choice-careful"));
             g_return_val_if_fail (w != NULL, FALSE);
             if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w)))
                 check = SIGN_CHECK_CAREFUL;
@@ -65,19 +65,19 @@ ok_clicked (SeahorseWidget *swidget)
     }
     
     /* Local signature */
-    w = glade_xml_get_widget (swidget->xml, "sign-option-local");
+    w = GTK_WIDGET (seahorse_widget_get_widget (swidget, "sign-option-local"));
     g_return_val_if_fail (w != NULL, FALSE);
     if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w)))
         options |= SIGN_LOCAL;
     
     /* Revocable signature */
-    w = glade_xml_get_widget (swidget->xml, "sign-option-revocable");
+    w = GTK_WIDGET (seahorse_widget_get_widget (swidget, "sign-option-revocable"));
     g_return_val_if_fail (w != NULL, FALSE);
     if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w))) 
         options |= SIGN_NO_REVOKE;
     
     /* Signer */
-    w = glade_xml_get_widget (swidget->xml, "signer-select");
+    w = GTK_WIDGET (seahorse_widget_get_widget (swidget, "signer-select"));
     g_return_val_if_fail (w != NULL, FALSE);
     signer = seahorse_combo_keys_get_active (GTK_COMBO_BOX (w));
     
@@ -109,21 +109,21 @@ keyset_changed (SeahorseSet *skset, GtkWidget *widget)
         gtk_widget_show (widget);
 }
 
-static void
-choice_toggled (GtkToggleButton *toggle, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_gpgme_sign_choice_toggled (GtkToggleButton *toggle, SeahorseWidget *swidget)
 {
     GtkWidget *w;
     
     /* Figure out choice */
-    w = glade_xml_get_widget (swidget->xml, "sign-choice-not");
+    w = GTK_WIDGET (seahorse_widget_get_widget (swidget, "sign-choice-not"));
     g_return_if_fail (w != NULL);
     seahorse_widget_set_visible (swidget, "sign-display-not", 
                              gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w)));
-    w = glade_xml_get_widget (swidget->xml, "sign-choice-casual");
+    w = GTK_WIDGET (seahorse_widget_get_widget (swidget, "sign-choice-casual"));
     g_return_if_fail (w != NULL);
     seahorse_widget_set_visible (swidget, "sign-display-casual", 
                              gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w)));
-    w = glade_xml_get_widget (swidget->xml, "sign-choice-careful");
+    w = GTK_WIDGET (seahorse_widget_get_widget (swidget, "sign-choice-careful"));
     g_return_if_fail (w != NULL);
     seahorse_widget_set_visible (swidget, "sign-display-careful", 
                              gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w)));
@@ -157,7 +157,7 @@ sign_internal (SeahorseObject *to_sign, GtkWindow *parent)
     g_object_set_data_full (G_OBJECT (swidget), "to-sign", g_object_ref (to_sign), g_object_unref);
 
     /* ... Except for when calling this, which is messed up */
-    w = glade_xml_get_widget (swidget->xml, "sign-uid-text");
+    w = GTK_WIDGET (seahorse_widget_get_widget (swidget, "sign-uid-text"));
     g_return_if_fail (w != NULL);
 
     userid = g_markup_printf_escaped("<i>%s</i>", seahorse_object_get_label (to_sign));
@@ -165,43 +165,40 @@ sign_internal (SeahorseObject *to_sign, GtkWindow *parent)
     g_free (userid);
     
     /* Uncheck all selections */
-    w = glade_xml_get_widget (swidget->xml, "sign-choice-not");
+    w = GTK_WIDGET (seahorse_widget_get_widget (swidget, "sign-choice-not"));
     g_return_if_fail (w != NULL);
     gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), FALSE);
-    g_signal_connect (w, "toggled", G_CALLBACK (choice_toggled), swidget);
-    w = glade_xml_get_widget (swidget->xml, "sign-choice-casual");
+    w = GTK_WIDGET (seahorse_widget_get_widget (swidget, "sign-choice-casual"));
     g_return_if_fail (w != NULL);
-    g_signal_connect (w, "toggled", G_CALLBACK (choice_toggled), swidget);
     gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), FALSE);
-    w = glade_xml_get_widget (swidget->xml, "sign-choice-careful");
+    w = GTK_WIDGET (seahorse_widget_get_widget (swidget, "sign-choice-careful"));
     g_return_if_fail (w != NULL);
-    g_signal_connect (w, "toggled", G_CALLBACK (choice_toggled), swidget);
     gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), FALSE);
     
     /* Initial choice */
-    choice_toggled(NULL, swidget);
+    on_gpgme_sign_choice_toggled (NULL, swidget);
     
     /* Other question's default state */
-    w = glade_xml_get_widget (swidget->xml, "sign-option-local");
+    w = GTK_WIDGET (seahorse_widget_get_widget (swidget, "sign-option-local"));
     g_return_if_fail (w != NULL);
     gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), FALSE);
-    w = glade_xml_get_widget (swidget->xml, "sign-option-revocable");
+    w = GTK_WIDGET (seahorse_widget_get_widget (swidget, "sign-option-revocable"));
     g_return_if_fail (w != NULL);
     gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), TRUE);
     
     /* Signature area */
-    w = glade_xml_get_widget (swidget->xml, "signer-frame");
+    w = GTK_WIDGET (seahorse_widget_get_widget (swidget, "signer-frame"));
     g_return_if_fail (w != NULL);
     g_signal_connect (skset, "set-changed", G_CALLBACK (keyset_changed), w);
     keyset_changed (skset, w);
 
     /* Signer box */
-    w = glade_xml_get_widget (swidget->xml, "signer-select");
+    w = GTK_WIDGET (seahorse_widget_get_widget (swidget, "signer-select"));
     g_return_if_fail (w != NULL);
     seahorse_combo_keys_attach (GTK_COMBO_BOX (w), skset, NULL);
 
     /* Image */
-    w = glade_xml_get_widget (swidget->xml, "sign-image");
+    w = GTK_WIDGET (seahorse_widget_get_widget (swidget, "sign-image"));
     g_return_if_fail (w != NULL);
     gtk_image_set_from_stock (GTK_IMAGE (w), SEAHORSE_STOCK_SIGN, GTK_ICON_SIZE_DIALOG);
     
@@ -214,7 +211,7 @@ sign_internal (SeahorseObject *to_sign, GtkWindow *parent)
         case GTK_RESPONSE_HELP:
             break;
         case GTK_RESPONSE_OK:
-            do_sign = !ok_clicked (swidget);
+            do_sign = !on_gpgme_sign_ok_clicked (swidget);
             break;
         default:
             do_sign = FALSE;
diff --git a/pgp/seahorse-pgp-generate.xml b/pgp/seahorse-pgp-generate.xml
new file mode 100644
index 0000000..0c162b6
--- /dev/null
+++ b/pgp/seahorse-pgp-generate.xml
@@ -0,0 +1,452 @@
+<?xml version="1.0"?>
+<interface>
+  <requires lib="gtk+" version="2.16"/>
+  <!-- interface-naming-policy toplevel-contextual -->
+  <object class="GtkAdjustment" id="adjustment1">
+    <property name="value">2048</property>
+    <property name="lower">512</property>
+    <property name="upper">8192</property>
+    <property name="step_increment">512</property>
+    <property name="page_increment">1</property>
+  </object>
+  <object class="GtkListStore" id="model1">
+    <columns>
+      <!-- column-name gchararray -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0" translatable="yes">Algorithms here</col>
+      </row>
+    </data>
+  </object>
+  <object class="GtkDialog" id="pgp-generate">
+    <property name="visible">True</property>
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes">New PGP Key</property>
+    <property name="resizable">False</property>
+    <property name="type_hint">dialog</property>
+    <property name="has_separator">False</property>
+    <signal name="response" handler="on_gpgme_generate_response"/>
+    <signal name="delete_event" handler="on_widget_delete_event"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox1">
+        <property name="visible">True</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkHBox" id="hbox2">
+            <property name="visible">True</property>
+            <property name="border_width">7</property>
+            <property name="spacing">12</property>
+            <child>
+              <object class="GtkImage" id="pgp-image">
+                <property name="visible">True</property>
+                <property name="yalign">0</property>
+                <property name="stock">gtk-missing-image</property>
+                <property name="icon-size">4</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkVBox" id="vbox1">
+                <property name="visible">True</property>
+                <property name="spacing">12</property>
+                <child>
+                  <object class="GtkLabel" id="label45">
+                    <property name="visible">True</property>
+                    <property name="xalign">0</property>
+                    <property name="yalign">0</property>
+                    <property name="label" translatable="yes">A PGP key allows you to encrypt email or files to other people.</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkTable" id="table12">
+                    <property name="visible">True</property>
+                    <property name="n_rows">3</property>
+                    <property name="n_columns">2</property>
+                    <property name="column_spacing">12</property>
+                    <property name="row_spacing">6</property>
+                    <child>
+                      <object class="GtkEntry" id="comment-entry">
+                        <property name="width_request">180</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="invisible_char">&#x25CF;</property>
+                        <property name="activates_default">True</property>
+                        <signal name="changed" handler="on_gpgme_generate_entry_changed"/>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="top_attach">2</property>
+                        <property name="bottom_attach">3</property>
+                        <property name="y_options"></property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" id="name-entry">
+                        <property name="width_request">180</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="invisible_char">&#x25CF;</property>
+                        <property name="activates_default">True</property>
+                        <signal name="changed" handler="on_gpgme_generate_entry_changed"/>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="y_options"></property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" id="email-entry">
+                        <property name="width_request">180</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="invisible_char">&#x25CF;</property>
+                        <property name="activates_default">True</property>
+                        <signal name="changed" handler="on_gpgme_generate_entry_changed"/>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
+                        <property name="y_options"></property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="label53">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="yalign">0</property>
+                        <property name="label" translatable="yes">Full _Name:</property>
+                        <property name="use_underline">True</property>
+                        <property name="mnemonic_widget">name-entry</property>
+                      </object>
+                      <packing>
+                        <property name="x_options">GTK_FILL</property>
+                        <property name="y_options"></property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="label46">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">_Email Address:</property>
+                        <property name="use_underline">True</property>
+                        <property name="mnemonic_widget">email-entry</property>
+                      </object>
+                      <packing>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
+                        <property name="x_options">GTK_FILL</property>
+                        <property name="y_options"></property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="label54">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">_Comment:</property>
+                        <property name="use_underline">True</property>
+                        <property name="mnemonic_widget">comment-entry</property>
+                      </object>
+                      <packing>
+                        <property name="top_attach">2</property>
+                        <property name="bottom_attach">3</property>
+                        <property name="x_options">GTK_FILL</property>
+                        <property name="y_options"></property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkExpander" id="expander1">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <child>
+                      <object class="GtkAlignment" id="alignment2">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="yalign">0</property>
+                        <property name="xscale">0</property>
+                        <property name="yscale">0</property>
+                        <property name="top_padding">12</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <object class="GtkTable" id="table11">
+                            <property name="visible">True</property>
+                            <property name="n_rows">3</property>
+                            <property name="n_columns">2</property>
+                            <property name="column_spacing">12</property>
+                            <property name="row_spacing">6</property>
+                            <child>
+                              <object class="GtkHBox" id="expiry-date-container">
+                                <property name="visible">True</property>
+                                <property name="spacing">12</property>
+                                <child>
+                                  <placeholder/>
+                                </child>
+                                <child>
+                                  <object class="GtkCheckButton" id="expires-check">
+                                    <property name="label" translatable="yes">Ne_ver Expires</property>
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">False</property>
+                                    <property name="use_underline">True</property>
+                                    <property name="active">True</property>
+                                    <property name="draw_indicator">True</property>
+                                    <signal name="toggled" handler="on_gpgme_generate_expires_toggled"/>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="pack_type">end</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
+                                <property name="x_options"></property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkAlignment" id="alignment5">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="yalign">0</property>
+                                <property name="xscale">0</property>
+                                <property name="yscale">0</property>
+                                <child>
+                                  <object class="GtkSpinButton" id="bits-entry">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="adjustment">adjustment1</property>
+                                    <property name="climb_rate">1</property>
+                                    <property name="numeric">True</property>
+                                  </object>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkAlignment" id="alignment4">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="yalign">0</property>
+                                <property name="xscale">0</property>
+                                <child>
+                                  <object class="GtkComboBox" id="algorithm-choice">
+                                    <property name="visible">True</property>
+                                    <property name="model">model1</property>
+                                    <signal name="changed" handler="on_gpgme_generate_algorithm_changed"/>
+                                    <child>
+                                      <object class="GtkCellRendererText" id="renderer1"/>
+                                      <attributes>
+                                        <attribute name="text">0</attribute>
+                                      </attributes>
+                                    </child>
+                                  </object>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label49">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="label" translatable="yes">Encryption _Type:</property>
+                                <property name="use_underline">True</property>
+                              </object>
+                              <packing>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label50">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="label" translatable="yes">Key _Strength (bits):</property>
+                                <property name="use_underline">True</property>
+                              </object>
+                              <packing>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label55">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="label" translatable="yes">E_xpiration Date:</property>
+                                <property name="use_underline">True</property>
+                              </object>
+                              <packing>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                    <child type="label">
+                      <object class="GtkLabel" id="label48">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">&lt;b&gt;_Advanced key options&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                        <property name="use_underline">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area1">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="helpbutton1">
+                <property name="label">gtk-help</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+                <signal name="clicked" handler="on_widget_help"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="cancelbutton1">
+                <property name="label">gtk-cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="ok">
+                <property name="visible">True</property>
+                <property name="sensitive">False</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="tooltip_text" translatable="yes">Generate a new key</property>
+                <child>
+                  <object class="GtkAlignment" id="alignment1">
+                    <property name="visible">True</property>
+                    <property name="xscale">0</property>
+                    <property name="yscale">0</property>
+                    <child>
+                      <object class="GtkHBox" id="hbox1">
+                        <property name="visible">True</property>
+                        <property name="spacing">2</property>
+                        <child>
+                          <object class="GtkImage" id="image1">
+                            <property name="visible">True</property>
+                            <property name="stock">gtk-ok</property>
+                            <property name="icon-size">4</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label44">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">C_reate</property>
+                            <property name="use_underline">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-11">helpbutton1</action-widget>
+      <action-widget response="-6">cancelbutton1</action-widget>
+      <action-widget response="-5">ok</action-widget>
+    </action-widgets>
+  </object>
+</interface>
diff --git a/pgp/seahorse-pgp-key-properties.c b/pgp/seahorse-pgp-key-properties.c
index f961d13..0db53fd 100644
--- a/pgp/seahorse-pgp-key-properties.c
+++ b/pgp/seahorse-pgp-key-properties.c
@@ -56,17 +56,17 @@
 static void properties_response (GtkDialog *dialog, int response, SeahorseWidget *swidget);
 
 static void 
-show_glade_widget (SeahorseWidget *swidget, const gchar *name, gboolean show)
+show_gtkbuilder_widget (SeahorseWidget *swidget, const gchar *name, gboolean show)
 {
-    GtkWidget *widget = glade_xml_get_widget (swidget->xml, name);
+    GtkWidget *widget = GTK_WIDGET (gtk_builder_get_object (swidget->gtkbuilder, name));
     if (widget != NULL)
         seahorse_widget_set_visible (swidget, name, show);
 }
 
 static void
-set_glade_image (SeahorseWidget *swidget, const gchar *name, const gchar *stock)
+set_gtkbuilder_image (SeahorseWidget *swidget, const gchar *name, const gchar *stock)
 {
-    GtkWidget *widget = glade_xml_get_widget (swidget->xml, name);
+    GtkWidget *widget = GTK_WIDGET (gtk_builder_get_object (swidget->gtkbuilder, name));
     
     if (!widget)
         return;
@@ -75,21 +75,21 @@ set_glade_image (SeahorseWidget *swidget, const gchar *name, const gchar *stock)
 }
 
 static void
-sensitive_glade_widget (SeahorseWidget *swidget, const gchar *name, gboolean sens)
+sensitive_gtkbuilder_widget (SeahorseWidget *swidget, const gchar *name, gboolean sens)
 {
-    GtkWidget *widget = glade_xml_get_widget (swidget->xml, name);
+    GtkWidget *widget = GTK_WIDGET (gtk_builder_get_object (swidget->gtkbuilder, name));
     if (widget)
         gtk_widget_set_sensitive (widget, sens);
 }
 
 static void
-printf_glade_widget (SeahorseWidget *swidget, const gchar *name, const gchar *str)
+printf_gtkbuilder_widget (SeahorseWidget *swidget, const gchar *name, const gchar *str)
 {
     GtkWidget *widget;
     const gchar *label;
     gchar *text;
     
-    widget = glade_xml_get_widget (swidget->xml, name);
+    widget = GTK_WIDGET (gtk_builder_get_object (swidget->gtkbuilder, name));
     if (!widget)
         return; 
 
@@ -109,7 +109,7 @@ printf_glade_widget (SeahorseWidget *swidget, const gchar *name, const gchar *st
 }
 
 static gpointer
-get_selected_object (SeahorseWidget *swidget, const gchar *gladeid, guint column)
+get_selected_object (SeahorseWidget *swidget, const gchar *objectid, guint column)
 {
 	GtkTreeSelection *selection;
 	GtkWidget *widget;
@@ -118,7 +118,7 @@ get_selected_object (SeahorseWidget *swidget, const gchar *gladeid, guint column
 	GList *rows;
 	gpointer object = NULL;
 
-	widget = glade_xml_get_widget (swidget->xml, gladeid);
+	widget = GTK_WIDGET (seahorse_widget_get_widget (swidget, objectid));
 	model = gtk_tree_view_get_model (GTK_TREE_VIEW (widget));
 
 	selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (widget));
@@ -139,9 +139,9 @@ get_selected_object (SeahorseWidget *swidget, const gchar *gladeid, guint column
 	return object;
 }
 
-static void
-signature_row_activated(GtkTreeView *treeview, GtkTreePath *path, GtkTreeViewColumn *arg2, 
-                        SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_pgp_signature_row_activated (GtkTreeView *treeview, GtkTreePath *path, GtkTreeViewColumn *arg2,
+                                     SeahorseWidget *swidget)
 {
 	SeahorseObject *object = NULL;
 	GtkTreeModel *model;
@@ -201,17 +201,17 @@ names_get_selected_uid (SeahorseWidget *swidget)
 	return get_selected_object (swidget, "names-tree", UIDSIG_OBJECT);
 }
 
-static void
-names_add_clicked (GtkWidget *widget, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_pgp_names_add_clicked (GtkWidget *widget, SeahorseWidget *swidget)
 {
 	SeahorseObject *obj = SEAHORSE_OBJECT_WIDGET (swidget)->object;
 	g_return_if_fail (SEAHORSE_IS_GPGME_KEY (obj));
 	seahorse_gpgme_add_uid_new (SEAHORSE_GPGME_KEY (obj), 
-	                            GTK_WINDOW (glade_xml_get_widget (swidget->xml, swidget->name)));
+	                            GTK_WINDOW (seahorse_widget_get_widget (swidget, swidget->name)));
 }
 
-static void 
-names_primary_clicked (GtkWidget *widget, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_pgp_names_primary_clicked (GtkWidget *widget, SeahorseWidget *swidget)
 {
 	SeahorsePgpUid *uid;
 	gpgme_error_t err;
@@ -225,8 +225,8 @@ names_primary_clicked (GtkWidget *widget, SeahorseWidget *swidget)
 	}
 }
 
-static void 
-names_delete_clicked (GtkWidget *widget, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_pgp_names_delete_clicked (GtkWidget *widget, SeahorseWidget *swidget)
 {
 	SeahorsePgpUid *uid;
 	gboolean ret;
@@ -251,8 +251,8 @@ names_delete_clicked (GtkWidget *widget, SeahorseWidget *swidget)
 		seahorse_gpgme_handle_error (gerr, _("Couldn't delete user ID"));
 }
 
-static void 
-names_sign_clicked (GtkWidget *widget, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_pgp_names_sign_clicked (GtkWidget *widget, SeahorseWidget *swidget)
 {
 	SeahorsePgpUid *uid;
 
@@ -260,12 +260,12 @@ names_sign_clicked (GtkWidget *widget, SeahorseWidget *swidget)
 	if (uid != NULL) {
 		g_return_if_fail (SEAHORSE_IS_GPGME_UID (uid));
 		seahorse_gpgme_sign_prompt_uid (SEAHORSE_GPGME_UID (uid), 
-		                                GTK_WINDOW (glade_xml_get_widget (swidget->xml, swidget->name)));
+		                                GTK_WINDOW (seahorse_widget_get_widget (swidget, swidget->name)));
 	}
 }
 
-static void 
-names_revoke_clicked (GtkWidget *widget, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_pgp_names_revoke_clicked (GtkWidget *widget, SeahorseWidget *swidget)
 {
     /* TODO: */
 /*    SeahorseObject *skey;
@@ -297,10 +297,10 @@ update_names (GtkTreeSelection *selection, SeahorseWidget *swidget)
 	if (uid && SEAHORSE_IS_GPGME_UID (uid))
 		index = seahorse_gpgme_uid_get_gpgme_index (SEAHORSE_GPGME_UID (uid));
 
-	sensitive_glade_widget (swidget, "names-primary-button", index > 0);
-	sensitive_glade_widget (swidget, "names-delete-button", index >= 0);
-	sensitive_glade_widget (swidget, "names-sign-button", index >= 0);
-	show_glade_widget (swidget, "names-revoke-button", FALSE);
+	sensitive_gtkbuilder_widget (swidget, "names-primary-button", index > 0);
+	sensitive_gtkbuilder_widget (swidget, "names-delete-button", index >= 0);
+	sensitive_gtkbuilder_widget (swidget, "names-sign-button", index >= 0);
+	show_gtkbuilder_widget (swidget, "names-revoke-button", FALSE);
 }
 
 /* Is called whenever a signature key changes, to update row */
@@ -451,20 +451,6 @@ do_names_signals (SeahorseWidget *swidget)
     
     if (seahorse_object_get_usage (object) != SEAHORSE_USAGE_PRIVATE_KEY)
         return;
-
-    glade_xml_signal_connect_data (swidget->xml, "on_names_add",
-            G_CALLBACK (names_add_clicked), swidget);
-    glade_xml_signal_connect_data (swidget->xml, "on_names_primary",
-            G_CALLBACK (names_primary_clicked), swidget);
-    glade_xml_signal_connect_data (swidget->xml, "on_names_sign",
-            G_CALLBACK (names_sign_clicked), swidget);
-    glade_xml_signal_connect_data (swidget->xml, "on_names_delete",
-            G_CALLBACK (names_delete_clicked), swidget);
-    glade_xml_signal_connect_data (swidget->xml, "on_names_revoke",
-            G_CALLBACK (names_revoke_clicked), swidget);
-    glade_xml_signal_connect_data (swidget->xml, "on_names_tree_row_activated",
-                                   G_CALLBACK (signature_row_activated), swidget);
-    
     widget = seahorse_widget_get_widget (swidget, "names-tree");
     g_return_if_fail (widget != NULL);
     selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (widget));
@@ -485,10 +471,10 @@ static GtkTargetEntry target_list[] = {
 
 static guint n_targets = G_N_ELEMENTS (target_list);
 
-static void
-owner_photo_drag_received (GtkWidget *widget, GdkDragContext *context, gint x, gint y,
-                           GtkSelectionData *sel_data, guint target_type, guint time,
-                           SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_pgp_owner_photo_drag_received (GtkWidget *widget, GdkDragContext *context, gint x, gint y,
+                                       GtkSelectionData *sel_data, guint target_type, guint time,
+                                       SeahorseWidget *swidget)
 {       
     gboolean dnd_success = FALSE;
     SeahorseGpgmeKey *pkey;
@@ -528,8 +514,8 @@ owner_photo_drag_received (GtkWidget *widget, GdkDragContext *context, gint x, g
     gtk_drag_finish (context, dnd_success, FALSE, time);
 }
 
-static void
-owner_photo_add_button_clicked (GtkWidget *widget, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_pgp_owner_photo_add_button (GtkWidget *widget, SeahorseWidget *swidget)
 {
 	SeahorsePgpKey *pkey;
 
@@ -540,8 +526,8 @@ owner_photo_add_button_clicked (GtkWidget *widget, SeahorseWidget *swidget)
 		g_object_set_data (G_OBJECT (swidget), "current-photoid", NULL);
 }
  
-static void
-owner_photo_delete_button_clicked (GtkWidget *widget, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_pgp_owner_photo_delete_button (GtkWidget *widget, SeahorseWidget *swidget)
 {
 	SeahorseGpgmePhoto *photo;
 
@@ -552,8 +538,8 @@ owner_photo_delete_button_clicked (GtkWidget *widget, SeahorseWidget *swidget)
 		g_object_set_data (G_OBJECT (swidget), "current-photoid", NULL);
 }
 
-static void
-owner_photo_primary_button_clicked (GtkWidget *widget, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_pgp_owner_photo_primary_button (GtkWidget *widget, SeahorseWidget *swidget)
 {
 	gpgme_error_t gerr;
 	SeahorseGpgmePhoto *photo;
@@ -567,7 +553,7 @@ owner_photo_primary_button_clicked (GtkWidget *widget, SeahorseWidget *swidget)
 }
 
 static void
-set_photoid_state(SeahorseWidget *swidget, SeahorsePgpKey *pkey)
+set_photoid_state (SeahorseWidget *swidget, SeahorsePgpKey *pkey)
 {
 	SeahorseUsage etype; 
 	GtkWidget *photo_image;
@@ -584,33 +570,33 @@ set_photoid_state(SeahorseWidget *swidget, SeahorsePgpKey *pkey)
 	is_gpgme = SEAHORSE_IS_GPGME_KEY (pkey);
 
 	/* Show when adding a photo is possible */
-	show_glade_widget (swidget, "owner-photo-add-button", 
+	show_gtkbuilder_widget (swidget, "owner-photo-add-button",
 	                   is_gpgme && etype == SEAHORSE_USAGE_PRIVATE_KEY);
 
 	/* Show when we have a photo to set as primary */
-	show_glade_widget (swidget, "owner-photo-primary-button", 
+	show_gtkbuilder_widget (swidget, "owner-photo-primary-button",
 	                   is_gpgme && etype == SEAHORSE_USAGE_PRIVATE_KEY && photos && photos->next);
 
 	/* Display this when there are any photo ids */
-	show_glade_widget (swidget, "owner-photo-delete-button", 
+	show_gtkbuilder_widget (swidget, "owner-photo-delete-button",
 	                   is_gpgme && etype == SEAHORSE_USAGE_PRIVATE_KEY && photo);
 
 	/* Sensitive when not the first photo id */
-	sensitive_glade_widget (swidget, "owner-photo-previous-button", 
+	sensitive_gtkbuilder_widget (swidget, "owner-photo-previous-button",
 	                        photo && photos && photo != g_list_first (photos)->data);
     
 	/* Sensitive when not the last photo id */
-	sensitive_glade_widget (swidget, "owner-photo-next-button", 
+	sensitive_gtkbuilder_widget (swidget, "owner-photo-next-button",
 	                        photo && photos && photo != g_list_last (photos)->data);
     
 	/* Display *both* of these when there are more than one photo id */
-	show_glade_widget (swidget, "owner-photo-previous-button", 
+	show_gtkbuilder_widget (swidget, "owner-photo-previous-button",
 	                   photos && g_list_next (photos));
                        
-	show_glade_widget (swidget, "owner-photo-next-button", 
+	show_gtkbuilder_widget (swidget, "owner-photo-next-button",
 	                   photos && g_list_next (photos));
                        
-	photo_image = glade_xml_get_widget (swidget->xml, "photoid");
+	photo_image = GTK_WIDGET (seahorse_widget_get_widget (swidget, "photoid"));
 	g_return_if_fail (photo_image);
 	
 	pixbuf = photo ? seahorse_pgp_photo_get_pixbuf (photo) : NULL;
@@ -640,8 +626,8 @@ do_photo_id (SeahorseWidget *swidget)
 	set_photoid_state (swidget, pkey);
 }
 
-static void
-photoid_next_clicked (GtkWidget *widget, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_pgp_owner_photoid_next (GtkWidget *widget, SeahorseWidget *swidget)
 {
 	SeahorsePgpKey *pkey;
 	SeahorsePgpPhoto *photo;
@@ -663,8 +649,8 @@ photoid_next_clicked (GtkWidget *widget, SeahorseWidget *swidget)
 	set_photoid_state (swidget, pkey);
 }
 
-static void
-photoid_prev_clicked (GtkWidget *widget, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_pgp_owner_photoid_prev (GtkWidget *widget, SeahorseWidget *swidget)
 {
 	SeahorsePgpKey *pkey;
 	SeahorsePgpPhoto *photo;
@@ -686,18 +672,18 @@ photoid_prev_clicked (GtkWidget *widget, SeahorseWidget *swidget)
 	set_photoid_state (swidget, pkey);
 }
 
-static void
-photoid_button_pressed(GtkWidget *widget, GdkEvent *event, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_pgp_owner_photoid_button (GtkWidget *widget, GdkEvent *event, SeahorseWidget *swidget)
 {
     GdkEventScroll *event_scroll;
     
-    if(event->type == GDK_SCROLL){
+    if(event->type == GDK_SCROLL) {
         event_scroll = (GdkEventScroll *) event;
         
-        if(event_scroll->direction == GDK_SCROLL_UP)
-            photoid_prev_clicked (widget, swidget);
-        else if(event_scroll->direction == GDK_SCROLL_DOWN)
-            photoid_next_clicked(widget, swidget);
+        if (event_scroll->direction == GDK_SCROLL_UP)
+            on_pgp_owner_photoid_prev (widget, swidget);
+        else if (event_scroll->direction == GDK_SCROLL_DOWN)
+            on_pgp_owner_photoid_next (widget, swidget);
     }
 }
 
@@ -721,26 +707,8 @@ const GType uid_columns[] = {
     G_TYPE_STRING   /* comment */
 };
 
-static SeahorsePgpUid*
-owner_get_selected_uid (SeahorseWidget *swidget)
-{
-	return get_selected_object (swidget, "owner-userid-tree", UID_OBJECT);
-}
-
-static void 
-owner_sign_button_clicked (GtkWidget *widget, SeahorseWidget *swidget)
-{
-	SeahorsePgpUid *uid;
-
-	uid = owner_get_selected_uid (swidget);
-	if (uid != NULL) {
-		g_return_if_fail (SEAHORSE_IS_GPGME_UID (uid));
-		seahorse_gpgme_sign_prompt_uid (SEAHORSE_GPGME_UID (uid), GTK_WINDOW (glade_xml_get_widget (swidget->xml, swidget->name)));
-	}
-}
-
-static void
-owner_passphrase_button_clicked (GtkWidget *widget, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_pgp_owner_passphrase_button_clicked (GtkWidget *widget, SeahorseWidget *swidget)
 {
 	SeahorseObject *object = SEAHORSE_OBJECT_WIDGET (swidget)->object;
 	if (seahorse_object_get_usage (object) == SEAHORSE_USAGE_PRIVATE_KEY && 
@@ -757,35 +725,16 @@ do_owner_signals (SeahorseWidget *swidget)
     
     object = SEAHORSE_OBJECT_WIDGET (swidget)->object;
     etype = seahorse_object_get_usage (object);
-    
-    glade_xml_signal_connect_data (swidget->xml, "on_owner_sign_button_clicked",
-                                G_CALLBACK (owner_sign_button_clicked), swidget);
-    glade_xml_signal_connect_data (swidget->xml, "on_owner_photo_next_clicked",
-                                G_CALLBACK (photoid_next_clicked), swidget);
-    glade_xml_signal_connect_data (swidget->xml, "on_owner_photo_previous_clicked",
-                                G_CALLBACK (photoid_prev_clicked), swidget);
-    glade_xml_signal_connect_data(swidget->xml, "on_image_eventbox_scroll_event", 
-                                G_CALLBACK(photoid_button_pressed), swidget);
-    
+
     if (etype == SEAHORSE_USAGE_PRIVATE_KEY ) {
-        glade_xml_signal_connect_data (swidget->xml, "on_owner_photo_primary_button_clicked",
-                G_CALLBACK (owner_photo_primary_button_clicked), swidget);
-        glade_xml_signal_connect_data (swidget->xml, "on_owner_photo_add_button_clicked",
-                G_CALLBACK (owner_photo_add_button_clicked), swidget);
-        glade_xml_signal_connect_data (swidget->xml, "on_owner_photo_delete_button_clicked",
-                G_CALLBACK (owner_photo_delete_button_clicked), swidget);
-        glade_xml_signal_connect_data (swidget->xml, "on_passphrase_button",
-                G_CALLBACK (owner_passphrase_button_clicked), swidget);
-        glade_xml_signal_connect_data (swidget->xml, "on_owner_photo_drag_received",
-                G_CALLBACK (owner_photo_drag_received), swidget);
-        frame = glade_xml_get_widget (swidget->xml, "owner-photo-frame");
+        frame = GTK_WIDGET (seahorse_widget_get_widget (swidget, "owner-photo-frame"));
         gtk_drag_dest_set (frame, GTK_DEST_DEFAULT_MOTION | GTK_DEST_DEFAULT_HIGHLIGHT |
                            GTK_DEST_DEFAULT_DROP, target_list, n_targets, GDK_ACTION_COPY);
     } else {
-        show_glade_widget (swidget, "owner-photo-add-button", FALSE);
-        show_glade_widget (swidget, "owner-photo-delete-button", FALSE);
-        show_glade_widget (swidget, "owner-photo-primary-button", FALSE);
-        show_glade_widget (swidget, "passphrase-button", FALSE);
+        show_gtkbuilder_widget (swidget, "owner-photo-add-button", FALSE);
+        show_gtkbuilder_widget (swidget, "owner-photo-delete-button", FALSE);
+        show_gtkbuilder_widget (swidget, "owner-photo-primary-button", FALSE);
+        show_gtkbuilder_widget (swidget, "passphrase-button", FALSE);
     }
 }
 
@@ -812,13 +761,13 @@ do_owner (SeahorseWidget *swidget)
 	flags = seahorse_object_get_flags (object);
     
 	/* Display appropriate warnings */    
-	show_glade_widget (swidget, "expired-area", flags & SEAHORSE_FLAG_EXPIRED);
-	show_glade_widget (swidget, "revoked-area", flags & SEAHORSE_FLAG_REVOKED);
-	show_glade_widget (swidget, "disabled-area", flags & SEAHORSE_FLAG_DISABLED);
+	show_gtkbuilder_widget (swidget, "expired-area", flags & SEAHORSE_FLAG_EXPIRED);
+	show_gtkbuilder_widget (swidget, "revoked-area", flags & SEAHORSE_FLAG_REVOKED);
+	show_gtkbuilder_widget (swidget, "disabled-area", flags & SEAHORSE_FLAG_DISABLED);
     
 	/* Update the expired message */
 	if (flags & SEAHORSE_FLAG_EXPIRED) {
-		widget = glade_xml_get_widget (swidget->xml, "expired-message");
+		widget = GTK_WIDGET (gtk_builder_get_object (swidget->gtkbuilder, "expired-message"));
 		if (widget) {
             
 			expires_date = seahorse_pgp_key_get_expires (pkey);
@@ -836,30 +785,30 @@ do_owner (SeahorseWidget *swidget)
 	}
         
 	/* Hide trust page when above */
-	show_glade_widget (swidget, "trust-page", !((flags & SEAHORSE_FLAG_EXPIRED) ||
+	show_gtkbuilder_widget (swidget, "trust-page", !((flags & SEAHORSE_FLAG_EXPIRED) ||
 			   (flags & SEAHORSE_FLAG_REVOKED) || (flags & SEAHORSE_FLAG_DISABLED)));
 
 	/* Hide or show the uids area */
 	uids = seahorse_pgp_key_get_uids (pkey);
-	show_glade_widget (swidget, "uids-area", uids != NULL);
+	show_gtkbuilder_widget (swidget, "uids-area", uids != NULL);
 	if (uids != NULL) {
 		uid = SEAHORSE_PGP_UID (uids->data);
     
 		label = seahorse_pgp_uid_get_name (uid);
-		widget = glade_xml_get_widget (swidget->xml, "owner-name-label");
+		widget = GTK_WIDGET (seahorse_widget_get_widget (swidget, "owner-name-label"));
 		gtk_label_set_text (GTK_LABEL (widget), label); 
-		widget = glade_xml_get_widget (swidget->xml, swidget->name);
+		widget = GTK_WIDGET (seahorse_widget_get_widget (swidget, swidget->name));
 		gtk_window_set_title (GTK_WINDOW (widget), label);
 
 		label = seahorse_pgp_uid_get_email (uid);
-		widget = glade_xml_get_widget (swidget->xml, "owner-email-label");
+		widget = GTK_WIDGET (seahorse_widget_get_widget (swidget, "owner-email-label"));
 		gtk_label_set_text (GTK_LABEL (widget), label); 
 
 		label = seahorse_pgp_uid_get_comment (uid);
-		widget = glade_xml_get_widget (swidget->xml, "owner-comment-label");
+		widget = GTK_WIDGET (seahorse_widget_get_widget (swidget, "owner-comment-label"));
 		gtk_label_set_text (GTK_LABEL (widget), label); 
     
-		widget = glade_xml_get_widget (swidget->xml, "owner-keyid-label");
+		widget = GTK_WIDGET (gtk_builder_get_object (swidget->gtkbuilder, "owner-keyid-label"));
 		if (widget) {
 			label = seahorse_object_get_identifier (object); 
 			gtk_label_set_text (GTK_LABEL (widget), label);
@@ -867,7 +816,7 @@ do_owner (SeahorseWidget *swidget)
 	}
     
 	/* Clear/create table store */
-	widget = glade_xml_get_widget (swidget->xml, "owner-userid-tree");
+	widget = GTK_WIDGET (gtk_builder_get_object (swidget->gtkbuilder, "owner-userid-tree"));
 	if (widget) {
 		store = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (widget)));
     
@@ -961,21 +910,21 @@ details_subkey_selected (GtkTreeSelection *selection, SeahorseWidget *swidget)
 	if (subkey)
 		flags = seahorse_pgp_subkey_get_flags (subkey);
 	
-	sensitive_glade_widget (swidget, "details-date-button", subkey != NULL);
-	sensitive_glade_widget (swidget, "details-revoke-button", subkey != NULL && !(flags & SEAHORSE_FLAG_REVOKED));
-	sensitive_glade_widget (swidget, "details-delete-button", subkey != NULL);
+	sensitive_gtkbuilder_widget (swidget, "details-date-button", subkey != NULL);
+	sensitive_gtkbuilder_widget (swidget, "details-revoke-button", subkey != NULL && !(flags & SEAHORSE_FLAG_REVOKED));
+	sensitive_gtkbuilder_widget (swidget, "details-delete-button", subkey != NULL);
 }
 
-static void
-details_add_subkey_button_clicked (GtkButton *button, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_pgp_details_add_subkey_button (GtkButton *button, SeahorseWidget *swidget)
 {
 	SeahorseObject *object = SEAHORSE_OBJECT_WIDGET (swidget)->object;
 	g_return_if_fail (SEAHORSE_IS_GPGME_KEY (object));
-	seahorse_gpgme_add_subkey_new (SEAHORSE_GPGME_KEY (object), GTK_WINDOW (glade_xml_get_widget (swidget->xml, swidget->name)));
+	seahorse_gpgme_add_subkey_new (SEAHORSE_GPGME_KEY (object), GTK_WINDOW (seahorse_widget_get_widget (swidget, swidget->name)));
 }
 
-static void
-details_del_subkey_button_clicked (GtkButton *button, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_pgp_details_del_subkey_button (GtkButton *button, SeahorseWidget *swidget)
 {
 	SeahorsePgpSubkey *subkey; 
 	SeahorsePgpKey *pkey; 
@@ -1006,18 +955,18 @@ details_del_subkey_button_clicked (GtkButton *button, SeahorseWidget *swidget)
 		seahorse_gpgme_handle_error (err, _("Couldn't delete subkey"));
 }
 
-static void
-details_revoke_subkey_button_clicked (GtkButton *button, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_pgp_details_revoke_subkey_button (GtkButton *button, SeahorseWidget *swidget)
 {
 	SeahorsePgpSubkey *subkey = get_selected_subkey (swidget);
 	if (subkey != NULL) {
 		g_return_if_fail (SEAHORSE_IS_GPGME_SUBKEY (subkey));
-		seahorse_gpgme_revoke_new (SEAHORSE_GPGME_SUBKEY (subkey), GTK_WINDOW (glade_xml_get_widget (swidget->xml, swidget->name)));
+		seahorse_gpgme_revoke_new (SEAHORSE_GPGME_SUBKEY (subkey), GTK_WINDOW (seahorse_widget_get_widget (swidget, swidget->name)));
 	}
 }
 
-static void
-trust_changed (GtkComboBox *selection, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_pgp_details_trust_changed (GtkComboBox *selection, SeahorseWidget *swidget)
 {
 	SeahorseObject *object;
 	gint trust;
@@ -1060,8 +1009,8 @@ export_complete (GFile *file, GAsyncResult *result, gchar *contents)
 	}
 }
 
-static void
-details_export_button_clicked (GtkWidget *widget, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_pgp_details_export_button (GtkWidget *widget, SeahorseWidget *swidget)
 {
 	SeahorseObject *object;
 	GtkDialog *dialog;
@@ -1113,8 +1062,8 @@ details_export_button_clicked (GtkWidget *widget, SeahorseWidget *swidget)
 	g_free (uri);
 }
 
-static void
-details_expires_button_clicked (GtkWidget *widget, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_pgp_details_expires_button (GtkWidget *widget, SeahorseWidget *swidget)
 {
 	GList *subkeys;
 	SeahorsePgpKey *pkey;
@@ -1124,11 +1073,11 @@ details_expires_button_clicked (GtkWidget *widget, SeahorseWidget *swidget)
 	g_return_if_fail (subkeys);
 	
 	seahorse_gpgme_expires_new (SEAHORSE_GPGME_SUBKEY (subkeys->data), 
-	                            GTK_WINDOW (glade_xml_get_widget (swidget->xml, swidget->name)));
+	                            GTK_WINDOW (seahorse_widget_get_widget (swidget, swidget->name)));
 }
 
-static void
-details_expires_subkey_clicked (GtkWidget *widget, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_pgp_details_expires_subkey (GtkWidget *widget, SeahorseWidget *swidget)
 {
 	SeahorsePgpSubkey *subkey;
 	SeahorsePgpKey *pkey;
@@ -1146,7 +1095,7 @@ details_expires_subkey_clicked (GtkWidget *widget, SeahorseWidget *swidget)
 
 	if (subkey != NULL)
 		seahorse_gpgme_expires_new (SEAHORSE_GPGME_SUBKEY (subkey), 
-		                            GTK_WINDOW (glade_xml_get_widget (swidget->xml, swidget->name)));
+		                            GTK_WINDOW (seahorse_widget_get_widget (swidget, swidget->name)));
 }
 
 static void
@@ -1164,7 +1113,7 @@ setup_details_trust (SeahorseWidget *swidget)
     object = SEAHORSE_OBJECT_WIDGET (swidget)->object;
     etype = seahorse_object_get_usage (object);
     
-    widget = glade_xml_get_widget (swidget->xml, "details-trust-combobox");
+    widget = GTK_WIDGET (seahorse_widget_get_widget (swidget, "details-trust-combobox"));
     
     gtk_cell_layout_clear(GTK_CELL_LAYOUT (widget));
     
@@ -1229,36 +1178,21 @@ do_details_signals (SeahorseWidget *swidget)
      * if key owner, add the callbacks to the subkey buttons
      */
      if (etype == SEAHORSE_USAGE_PUBLIC_KEY) {
-         show_glade_widget (swidget, "details-actions-label", FALSE);
-         show_glade_widget (swidget, "details-export-button", FALSE);
-         show_glade_widget (swidget, "details-add-button", FALSE);
-         show_glade_widget (swidget, "details-date-button", FALSE);
-         show_glade_widget (swidget, "details-revoke-button", FALSE);
-         show_glade_widget (swidget, "details-delete-button", FALSE);
-         show_glade_widget (swidget, "details-calendar-button", FALSE);
+         show_gtkbuilder_widget (swidget, "details-actions-label", FALSE);
+         show_gtkbuilder_widget (swidget, "details-export-button", FALSE);
+         show_gtkbuilder_widget (swidget, "details-add-button", FALSE);
+         show_gtkbuilder_widget (swidget, "details-date-button", FALSE);
+         show_gtkbuilder_widget (swidget, "details-revoke-button", FALSE);
+         show_gtkbuilder_widget (swidget, "details-delete-button", FALSE);
+         show_gtkbuilder_widget (swidget, "details-calendar-button", FALSE);
     } else {
 
-        glade_xml_signal_connect_data (swidget->xml, "on_details_add_button_clicked", 
-                                        G_CALLBACK (details_add_subkey_button_clicked), swidget);
-        glade_xml_signal_connect_data (swidget->xml, "on_details_calendar1_button_clicked",
-                                        G_CALLBACK (details_expires_button_clicked), swidget);
-        glade_xml_signal_connect_data (swidget->xml, "on_details_calendar2_button_clicked",
-                                        G_CALLBACK (details_expires_subkey_clicked), swidget);
-        glade_xml_signal_connect_data (swidget->xml, "on_details_revoke_button_clicked",
-                                        G_CALLBACK (details_revoke_subkey_button_clicked), swidget);
-        glade_xml_signal_connect_data (swidget->xml, "on_details_delete_button_clicked",
-                                        G_CALLBACK (details_del_subkey_button_clicked), swidget);
-        glade_xml_signal_connect_data (swidget->xml, "on_details_export_button_clicked",
-                                        G_CALLBACK (details_export_button_clicked), swidget);
-        
         /* Connect so we can enable and disable buttons as subkeys are selected */
-        widget = glade_xml_get_widget (swidget->xml, "details-subkey-tree");
+        widget = GTK_WIDGET (seahorse_widget_get_widget (swidget, "details-subkey-tree"));
         g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (widget)),
                           "changed", G_CALLBACK (details_subkey_selected), swidget);
         details_subkey_selected (NULL, swidget);
     }
-    glade_xml_signal_connect_data (swidget->xml, "on_details_trust_changed",
-                                   G_CALLBACK (trust_changed), swidget);
 }
 
 static void 
@@ -1288,13 +1222,13 @@ do_details (SeahorseWidget *swidget)
     
     keyloc = seahorse_object_get_location (object);
 
-    widget = glade_xml_get_widget (swidget->xml, "details-id-label");
+    widget = GTK_WIDGET (gtk_builder_get_object (swidget->gtkbuilder, "details-id-label"));
     if (widget) {
         label = seahorse_object_get_identifier (object); 
         gtk_label_set_text (GTK_LABEL (widget), label);
     }
 
-    widget = glade_xml_get_widget (swidget->xml, "details-fingerprint-label");
+    widget = GTK_WIDGET (gtk_builder_get_object (swidget->gtkbuilder, "details-fingerprint-label"));
     if (widget) {
         fp_label = g_strdup (seahorse_pgp_key_get_fingerprint (pkey)); 
         if (strlen (fp_label) > 24)
@@ -1303,26 +1237,26 @@ do_details (SeahorseWidget *swidget)
         g_free (fp_label);
     }
 
-    widget = glade_xml_get_widget (swidget->xml, "details-algo-label");
+    widget = GTK_WIDGET (gtk_builder_get_object (swidget->gtkbuilder, "details-algo-label"));
     if (widget) {
         label = seahorse_pgp_key_get_algo (pkey);
         gtk_label_set_text (GTK_LABEL (widget), label);
     }
 
-    widget = glade_xml_get_widget (swidget->xml, "details-created-label");
+    widget = GTK_WIDGET (gtk_builder_get_object (swidget->gtkbuilder, "details-created-label"));
     if (widget) {
         fp_label = seahorse_util_get_display_date_string (seahorse_pgp_subkey_get_created (subkey));
         gtk_label_set_text (GTK_LABEL (widget), fp_label);
         g_free (fp_label);
     }
 
-    widget = glade_xml_get_widget (swidget->xml, "details-strength-label");
+    widget = GTK_WIDGET (gtk_builder_get_object (swidget->gtkbuilder, "details-strength-label"));
     if (widget) {
         g_ascii_dtostr (dbuffer, G_ASCII_DTOSTR_BUF_SIZE, seahorse_pgp_subkey_get_length (subkey));
         gtk_label_set_text (GTK_LABEL (widget), dbuffer);
     }
 
-    widget = glade_xml_get_widget (swidget->xml, "details-expires-label");
+    widget = GTK_WIDGET (gtk_builder_get_object (swidget->gtkbuilder, "details-expires-label"));
     if (widget) {
         gulong expires = seahorse_pgp_subkey_get_expires (subkey);
         if (seahorse_object_get_location (object) == SEAHORSE_LOCATION_REMOTE)
@@ -1335,8 +1269,8 @@ do_details (SeahorseWidget *swidget)
         g_free (fp_label);
     }
 
-    show_glade_widget (swidget, "details-trust-combobox", keyloc == SEAHORSE_LOCATION_LOCAL);
-    widget = glade_xml_get_widget (swidget->xml, "details-trust-combobox");
+    show_gtkbuilder_widget (swidget, "details-trust-combobox", keyloc == SEAHORSE_LOCATION_LOCAL);
+    widget = GTK_WIDGET (gtk_builder_get_object (swidget->gtkbuilder, "details-trust-combobox"));
     
     if (widget) {
         gtk_widget_set_sensitive (widget, !(seahorse_object_get_flags (object) & SEAHORSE_FLAG_DISABLED));
@@ -1350,9 +1284,9 @@ do_details (SeahorseWidget *swidget)
                                 -1);
             
             if (trust == seahorse_pgp_key_get_trust (pkey)) {
-                g_signal_handlers_block_by_func (widget, trust_changed, swidget);       	    
+                g_signal_handlers_block_by_func (widget, on_pgp_details_trust_changed, swidget);
                 gtk_combo_box_set_active_iter (GTK_COMBO_BOX (widget),  &iter);
-                g_signal_handlers_unblock_by_func (widget, trust_changed, swidget);       	    
+                g_signal_handlers_unblock_by_func (widget, on_pgp_details_trust_changed, swidget);
                 break;
             }
             
@@ -1361,7 +1295,7 @@ do_details (SeahorseWidget *swidget)
     }
 
     /* Clear/create table store */
-    widget = glade_xml_get_widget (swidget->xml, "details-subkey-tree");
+    widget = GTK_WIDGET (seahorse_widget_get_widget (swidget, "details-subkey-tree"));
     store = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (widget)));
 
     if (store) {
@@ -1458,20 +1392,22 @@ const GType sign_columns[] = {
     G_TYPE_BOOLEAN
 };
 
-static void
-signatures_delete_button_clicked (GtkWidget *widget, SeahorseWidget *skey) 
+G_MODULE_EXPORT void
+seahorse_pgp_details_signatures_delete_button (GtkWidget *widget, SeahorseWidget *skey)
 {
     /* TODO: */
+	g_assert (FALSE);
 }
 
-static void
-signatures_revoke_button_clicked (GtkWidget *widget, SeahorseWidget *skey)
+G_MODULE_EXPORT void
+on_pgp_details_signatures_revoke_button (GtkWidget *widget, SeahorseWidget *skey)
 {
     /* TODO: */
+	g_assert (FALSE);
 }
 
-static void
-trust_marginal_toggled (GtkToggleButton *toggle, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_pgp_trust_marginal_toggled (GtkToggleButton *toggle, SeahorseWidget *swidget)
 {
     SeahorseObject *object;
     guint trust;
@@ -1542,7 +1478,7 @@ signatures_populate_model (SeahorseWidget *swidget, SeahorseObjectModel *skmodel
 	GList *sigs, *s;
 
 	pkey = SEAHORSE_PGP_KEY (SEAHORSE_OBJECT_WIDGET (swidget)->object);
-	widget = glade_xml_get_widget (swidget->xml, "signatures-tree");
+	widget = GTK_WIDGET (seahorse_widget_get_widget (swidget, "signatures-tree"));
 	if (!widget)
 		return;
     
@@ -1585,8 +1521,8 @@ signatures_populate_model (SeahorseWidget *swidget, SeahorseObjectModel *skmodel
 }
 
 /* Refilter when the user toggles the 'only show trusted' checkbox */
-static void
-trusted_toggled (GtkToggleButton *toggle, GtkTreeModelFilter *filter)
+G_MODULE_EXPORT void
+on_pgp_trusted_toggled (GtkToggleButton *toggle, GtkTreeModelFilter *filter)
 {
     /* Set flag on the store */
     GtkTreeModel *model = gtk_tree_model_filter_get_model (filter);
@@ -1596,13 +1532,13 @@ trusted_toggled (GtkToggleButton *toggle, GtkTreeModelFilter *filter)
 }
 
 /* Add a signature */
-static void 
-trust_sign_clicked (GtkWidget *widget, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_pgp_trust_sign (GtkWidget *widget, SeahorseWidget *swidget)
 {
 	SeahorseObject *object;
 	object = SEAHORSE_OBJECT_WIDGET (swidget)->object;
 	g_return_if_fail (SEAHORSE_IS_GPGME_KEY (object));
-	seahorse_gpgme_sign_prompt (SEAHORSE_GPGME_KEY (object), GTK_WINDOW (glade_xml_get_widget (swidget->xml, swidget->name)));
+	seahorse_gpgme_sign_prompt (SEAHORSE_GPGME_KEY (object), GTK_WINDOW (seahorse_widget_get_widget (swidget, swidget->name)));
 }
 
 static void
@@ -1618,39 +1554,23 @@ do_trust_signals (SeahorseWidget *swidget)
     if (etype != SEAHORSE_USAGE_PUBLIC_KEY)
         return;
     
-    set_glade_image (swidget, "image-good1", "seahorse-sign-ok");
-    set_glade_image (swidget, "image-good2", "seahorse-sign-ok");
+    set_gtkbuilder_image (swidget, "image-good1", "seahorse-sign-ok");
+    set_gtkbuilder_image (swidget, "image-good2", "seahorse-sign-ok");
     
-    glade_xml_signal_connect_data (swidget->xml, "trust_sign_clicked", 
-                                   G_CALLBACK (trust_sign_clicked), swidget);
     /* TODO: Hookup revoke handler */
     
     if (etype == SEAHORSE_USAGE_PUBLIC_KEY ) {
         
-        show_glade_widget (swidget, "signatures-revoke-button", FALSE);
-        show_glade_widget (swidget, "signatures-delete-button", FALSE);
-        show_glade_widget (swidget, "signatures-empty-label", FALSE);
+        show_gtkbuilder_widget (swidget, "signatures-revoke-button", FALSE);
+        show_gtkbuilder_widget (swidget, "signatures-delete-button", FALSE);
+        show_gtkbuilder_widget (swidget, "signatures-empty-label", FALSE);
         
         /* Fill in trust labels with name .This only happens once, so it sits here. */
         user = seahorse_object_get_label (object);
-        printf_glade_widget (swidget, "trust-marginal-check", user);
-        printf_glade_widget (swidget, "trust-sign-label", user);
-        printf_glade_widget (swidget, "trust-revoke-label", user);
-        
-    } else {
-        
-        glade_xml_signal_connect_data (swidget->xml, "signatures_revoke_button_clicked",
-                                       G_CALLBACK (signatures_revoke_button_clicked), swidget);
-        glade_xml_signal_connect_data (swidget->xml, "signatures_delete_button_clicked",
-                                       G_CALLBACK (signatures_delete_button_clicked), swidget);
-        
+        printf_gtkbuilder_widget (swidget, "trust-marginal-check", user);
+        printf_gtkbuilder_widget (swidget, "trust-sign-label", user);
+        printf_gtkbuilder_widget (swidget, "trust-revoke-label", user);
     }
-
-    glade_xml_signal_connect_data (swidget->xml, "trust_marginal_toggled",
-                                   G_CALLBACK (trust_marginal_toggled), swidget);
-                                   
-    glade_xml_signal_connect_data (swidget->xml, "on_signatures_tree_row_activated",
-                                   G_CALLBACK (signature_row_activated), swidget);
 }
 
 /* When the 'only display trusted' check is checked, hide untrusted rows */
@@ -1703,12 +1623,12 @@ do_trust (SeahorseWidget *swidget)
     /* Remote keys */
     if (keyloc < SEAHORSE_LOCATION_LOCAL) {
         
-        show_glade_widget (swidget, "manual-trust-area", FALSE);
-        show_glade_widget (swidget, "manage-trust-area", TRUE);
-        show_glade_widget (swidget, "sign-area", FALSE);
-        show_glade_widget (swidget, "revoke-area", FALSE);
-        sensitive_glade_widget (swidget, "trust-marginal-check", FALSE);
-        set_glade_image (swidget, "sign-image", SEAHORSE_STOCK_SIGN_UNKNOWN);
+        show_gtkbuilder_widget (swidget, "manual-trust-area", FALSE);
+        show_gtkbuilder_widget (swidget, "manage-trust-area", TRUE);
+        show_gtkbuilder_widget (swidget, "sign-area", FALSE);
+        show_gtkbuilder_widget (swidget, "revoke-area", FALSE);
+        sensitive_gtkbuilder_widget (swidget, "trust-marginal-check", FALSE);
+        set_gtkbuilder_image (swidget, "sign-image", SEAHORSE_STOCK_SIGN_UNKNOWN);
         
     /* Local keys */
     } else {
@@ -1765,32 +1685,32 @@ do_trust (SeahorseWidget *swidget)
         
         
         /* Managed and unmanaged areas */
-        show_glade_widget (swidget, "manual-trust-area", !managed);
-        show_glade_widget (swidget, "manage-trust-area", managed);
+        show_gtkbuilder_widget (swidget, "manual-trust-area", !managed);
+        show_gtkbuilder_widget (swidget, "manage-trust-area", managed);
     
         /* Managed check boxes */
         if (managed) {
-            widget = glade_xml_get_widget (swidget->xml, "trust-marginal-check");
+            widget = GTK_WIDGET (seahorse_widget_get_widget (swidget, "trust-marginal-check"));
             if (widget != NULL) {
                 gtk_widget_set_sensitive (widget, TRUE);
             
-                g_signal_handlers_block_by_func (widget, trust_marginal_toggled, swidget);
+                g_signal_handlers_block_by_func (widget, on_pgp_trust_marginal_toggled, swidget);
                 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), trust != SEAHORSE_VALIDITY_UNKNOWN);
-                g_signal_handlers_unblock_by_func (widget, trust_marginal_toggled, swidget);
+                g_signal_handlers_unblock_by_func (widget, on_pgp_trust_marginal_toggled, swidget);
             }
         }
     
         /* Signing and revoking */
         sigpersonal = key_have_signatures (pkey, SKEY_PGPSIG_PERSONAL);
-        show_glade_widget (swidget, "sign-area", !sigpersonal);
-        show_glade_widget (swidget, "revoke-area", sigpersonal);
+        show_gtkbuilder_widget (swidget, "sign-area", !sigpersonal);
+        show_gtkbuilder_widget (swidget, "revoke-area", sigpersonal);
         
         /* The image */
-        set_glade_image (swidget, "sign-image", icon);
+        set_gtkbuilder_image (swidget, "sign-image", icon);
     }
     
 	/* The actual signatures listing */
-	widget = glade_xml_get_widget (swidget->xml, "signatures-tree");
+	widget = GTK_WIDGET (seahorse_widget_get_widget (swidget, "signatures-tree"));
 	if(widget) {
 		filter = GTK_TREE_MODEL_FILTER (gtk_tree_view_get_model (GTK_TREE_VIEW (widget)));
     
@@ -1824,12 +1744,9 @@ do_trust (SeahorseWidget *swidget)
 			                                             "text", SIGN_KEYID, NULL);
 			
 			gtk_tree_view_set_model (GTK_TREE_VIEW (widget), GTK_TREE_MODEL(filter));
-        
-			glade_xml_signal_connect_data (swidget->xml, "on_signatures_toggle_toggled",
-			                               G_CALLBACK (trusted_toggled), filter);
-			widget = glade_xml_get_widget (swidget->xml, "signatures-toggle");
+			widget = GTK_WIDGET (seahorse_widget_get_widget (swidget, "signatures-toggle"));
 			gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), TRUE);
-			trusted_toggled (GTK_TOGGLE_BUTTON (widget), filter);
+			on_pgp_trusted_toggled (GTK_TOGGLE_BUTTON (widget), filter);
 		}
 	}
 
@@ -1923,7 +1840,7 @@ setup_private_properties (SeahorsePgpKey *pkey, GtkWindow *parent)
     do_details (swidget);
     do_details_signals (swidget);
 
-    widget = glade_xml_get_widget (swidget->xml, swidget->name);
+    widget = GTK_WIDGET (seahorse_widget_get_widget (swidget, swidget->name));
     g_signal_connect (widget, "response", G_CALLBACK (properties_response), swidget);
     seahorse_bind_objects (NULL, pkey, (SeahorseTransfer)key_notify, swidget);
     
diff --git a/pgp/seahorse-pgp-private-key-properties.xml b/pgp/seahorse-pgp-private-key-properties.xml
new file mode 100644
index 0000000..dcd8538
--- /dev/null
+++ b/pgp/seahorse-pgp-private-key-properties.xml
@@ -0,0 +1,1771 @@
+<?xml version="1.0"?>
+<interface>
+  <requires lib="gtk+" version="2.16"/>
+  <!-- interface-naming-policy toplevel-contextual -->
+  <object class="GtkListStore" id="model1">
+    <columns>
+      <!-- column-name gchararray -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0" translatable="yes">Unknown</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Never</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Marginal</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Full</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Ultimate</col>
+      </row>
+    </data>
+  </object>
+  <object class="GtkDialog" id="pgp-private-key-properties">
+    <property name="visible">True</property>
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes">Key Properties</property>
+    <property name="type_hint">dialog</property>
+    <property name="has_separator">False</property>
+    <signal name="delete_event" handler="on_widget_delete_event"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox1">
+        <property name="visible">True</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkNotebook" id="notebook">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="border_width">5</property>
+            <child>
+              <object class="GtkVBox" id="vbox7">
+                <property name="visible">True</property>
+                <property name="border_width">12</property>
+                <property name="spacing">12</property>
+                <child>
+                  <object class="GtkHBox" id="revoked-area">
+                    <property name="spacing">12</property>
+                    <child>
+                      <object class="GtkImage" id="image40">
+                        <property name="visible">True</property>
+                        <property name="stock">gtk-dialog-error</property>
+                        <property name="icon-size">6</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkVBox" id="vbox31">
+                        <property name="visible">True</property>
+                        <property name="spacing">6</property>
+                        <child>
+                          <object class="GtkLabel" id="label22225">
+                            <property name="visible">True</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">&lt;b&gt;This key has been revoked&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkAlignment" id="alignment43">
+                            <property name="visible">True</property>
+                            <property name="left_padding">12</property>
+                            <child>
+                              <object class="GtkLabel" id="label22226">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="label" translatable="yes">The owner of the key revoked the key. It can no longer be used.</property>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkHBox" id="expired-area">
+                    <property name="spacing">12</property>
+                    <child>
+                      <object class="GtkImage" id="image41">
+                        <property name="visible">True</property>
+                        <property name="stock">gtk-dialog-error</property>
+                        <property name="icon-size">6</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkVBox" id="vbox32">
+                        <property name="visible">True</property>
+                        <property name="spacing">6</property>
+                        <child>
+                          <object class="GtkLabel" id="label22227">
+                            <property name="visible">True</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">&lt;b&gt;This key has expired&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkAlignment" id="alignment44">
+                            <property name="visible">True</property>
+                            <property name="left_padding">12</property>
+                            <child>
+                              <object class="GtkLabel" id="expired-message">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="label">This key expired on: (placeholder)</property>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkHBox" id="hbox5">
+                    <property name="visible">True</property>
+                    <property name="spacing">12</property>
+                    <child>
+                      <object class="GtkHBox" id="hbox31">
+                        <property name="visible">True</property>
+                        <child>
+                          <object class="GtkFrame" id="owner-photo-frame">
+                            <property name="visible">True</property>
+                            <property name="label_xalign">0</property>
+                            <property name="shadow_type">none</property>
+                            <signal name="drag_data_received" handler="on_pgp_owner_photo_drag_received"/>
+                            <child>
+                              <object class="GtkAlignment" id="alignment45">
+                                <property name="visible">True</property>
+                                <property name="bottom_padding">6</property>
+                                <property name="left_padding">6</property>
+                                <property name="right_padding">6</property>
+                                <child>
+                                  <object class="GtkVBox" id="vbox33">
+                                    <property name="visible">True</property>
+                                    <property name="spacing">6</property>
+                                    <child>
+                                      <object class="GtkEventBox" id="image_eventbox">
+                                        <property name="visible">True</property>
+                                        <signal name="scroll_event" handler="on_pgp_owner_photoid_button"/>
+                                        <child>
+                                          <object class="GtkImage" id="photoid">
+                                            <property name="width_request">150</property>
+                                            <property name="height_request">160</property>
+                                            <property name="visible">True</property>
+                                          </object>
+                                        </child>
+                                      </object>
+                                      <packing>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkHBox" id="hbox61">
+                                        <property name="visible">True</property>
+                                        <property name="spacing">6</property>
+                                        <child>
+                                          <object class="GtkButton" id="owner-photo-add-button">
+                                            <property name="visible">True</property>
+                                            <property name="can_focus">True</property>
+                                            <property name="receives_default">False</property>
+                                            <child internal-child="accessible">
+                                              <object class="AtkObject" id="dummy">
+                                                <property name="AtkObject::accessible-description" translatable="yes">Add a photo to this key</property>
+                                              </object>
+                                            </child>
+                                            <signal name="clicked" handler="on_pgp_owner_photo_add_button"/>
+                                            <child>
+                                              <object class="GtkImage" id="image46">
+                                                <property name="visible">True</property>
+                                                <property name="stock">gtk-add</property>
+                                                <property name="icon-size">4</property>
+                                              </object>
+                                            </child>
+                                          </object>
+                                          <packing>
+                                            <property name="expand">False</property>
+                                            <property name="fill">False</property>
+                                            <property name="position">0</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkButton" id="owner-photo-delete-button">
+                                            <property name="visible">True</property>
+                                            <property name="can_focus">True</property>
+                                            <property name="receives_default">False</property>
+                                            <child internal-child="accessible">
+                                              <object class="AtkObject" id="dummy">
+                                                <property name="AtkObject::accessible-description" translatable="yes">Remove this photo from this key</property>
+                                              </object>
+                                            </child>
+                                            <signal name="clicked" handler="on_pgp_owner_photo_delete_button"/>
+                                            <child>
+                                              <object class="GtkImage" id="image45">
+                                                <property name="visible">True</property>
+                                                <property name="stock">gtk-delete</property>
+                                                <property name="icon-size">4</property>
+                                              </object>
+                                            </child>
+                                          </object>
+                                          <packing>
+                                            <property name="expand">False</property>
+                                            <property name="fill">False</property>
+                                            <property name="position">1</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkButton" id="owner-photo-primary-button">
+                                            <property name="visible">True</property>
+                                            <property name="can_focus">True</property>
+                                            <property name="receives_default">False</property>
+                                            <child internal-child="accessible">
+                                              <object class="AtkObject" id="dummy">
+                                                <property name="AtkObject::accessible-description" translatable="yes">Make this photo the primary photo</property>
+                                              </object>
+                                            </child>
+                                            <signal name="clicked" handler="on_pgp_owner_photo_primary_button"/>
+                                            <child>
+                                              <object class="GtkImage" id="image47">
+                                                <property name="visible">True</property>
+                                                <property name="stock">gtk-go-up</property>
+                                                <property name="icon-size">4</property>
+                                              </object>
+                                            </child>
+                                          </object>
+                                          <packing>
+                                            <property name="expand">False</property>
+                                            <property name="fill">False</property>
+                                            <property name="position">2</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkLabel" id="label22232">
+                                            <property name="visible">True</property>
+                                          </object>
+                                          <packing>
+                                            <property name="position">3</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkButton" id="owner-photo-previous-button">
+                                            <property name="visible">True</property>
+                                            <property name="can_focus">True</property>
+                                            <property name="receives_default">False</property>
+                                            <property name="focus_on_click">False</property>
+                                            <child internal-child="accessible">
+                                              <object class="AtkObject" id="dummy">
+                                                <property name="AtkObject::accessible-description" translatable="yes">Go to previous photo</property>
+                                              </object>
+                                            </child>
+                                            <signal name="clicked" handler="on_pgp_owner_photoid_prev"/>
+                                            <child>
+                                              <object class="GtkImage" id="image43">
+                                                <property name="visible">True</property>
+                                                <property name="stock">gtk-go-back</property>
+                                                <property name="icon-size">4</property>
+                                              </object>
+                                            </child>
+                                          </object>
+                                          <packing>
+                                            <property name="expand">False</property>
+                                            <property name="fill">False</property>
+                                            <property name="position">4</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkButton" id="owner-photo-next-button">
+                                            <property name="visible">True</property>
+                                            <property name="can_focus">True</property>
+                                            <property name="receives_default">False</property>
+                                            <child internal-child="accessible">
+                                              <object class="AtkObject" id="dummy">
+                                                <property name="AtkObject::accessible-description" translatable="yes">Go to next photo</property>
+                                              </object>
+                                            </child>
+                                            <signal name="clicked" handler="on_pgp_owner_photoid_next"/>
+                                            <child>
+                                              <object class="GtkAlignment" id="alignment46">
+                                                <property name="visible">True</property>
+                                                <property name="xscale">0</property>
+                                                <property name="yscale">0</property>
+                                                <child>
+                                                  <object class="GtkHBox" id="hbox62">
+                                                    <property name="visible">True</property>
+                                                    <property name="spacing">2</property>
+                                                    <child>
+                                                      <object class="GtkImage" id="image48">
+                                                        <property name="visible">True</property>
+                                                        <property name="stock">gtk-go-forward</property>
+                                                        <property name="icon-size">4</property>
+                                                      </object>
+                                                      <packing>
+                                                        <property name="expand">False</property>
+                                                        <property name="fill">False</property>
+                                                        <property name="position">0</property>
+                                                      </packing>
+                                                    </child>
+                                                    <child>
+                                                      <object class="GtkLabel" id="label22233">
+                                                        <property name="visible">True</property>
+                                                        <property name="use_underline">True</property>
+                                                      </object>
+                                                      <packing>
+                                                        <property name="expand">False</property>
+                                                        <property name="fill">False</property>
+                                                        <property name="position">1</property>
+                                                      </packing>
+                                                    </child>
+                                                  </object>
+                                                </child>
+                                              </object>
+                                            </child>
+                                          </object>
+                                          <packing>
+                                            <property name="expand">False</property>
+                                            <property name="fill">False</property>
+                                            <property name="position">5</property>
+                                          </packing>
+                                        </child>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                </child>
+                              </object>
+                            </child>
+                            <child type="label">
+                              <object class="GtkLabel" id="label22231">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="yalign">0</property>
+                                <property name="label" translatable="yes">&lt;b&gt;Photo &lt;/b&gt;</property>
+                                <property name="use_markup">True</property>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="padding">12</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkVBox" id="vbox36">
+                        <property name="visible">True</property>
+                        <property name="spacing">12</property>
+                        <child>
+                          <object class="GtkTable" id="table12">
+                            <property name="visible">True</property>
+                            <property name="border_width">3</property>
+                            <property name="n_rows">6</property>
+                            <property name="n_columns">2</property>
+                            <property name="column_spacing">12</property>
+                            <property name="row_spacing">6</property>
+                            <child>
+                              <object class="GtkLabel" id="label22240">
+                                <property name="visible">True</property>
+                                <property name="xalign">1</property>
+                                <property name="yalign">0</property>
+                                <property name="label" translatable="yes">&lt;b&gt;Key ID:&lt;/b&gt;</property>
+                                <property name="use_markup">True</property>
+                              </object>
+                              <packing>
+                                <property name="top_attach">5</property>
+                                <property name="bottom_attach">6</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label22234">
+                                <property name="visible">True</property>
+                                <property name="xalign">1</property>
+                                <property name="yalign">0</property>
+                                <property name="label" translatable="yes">&lt;b&gt;Name:&lt;/b&gt;</property>
+                                <property name="use_markup">True</property>
+                              </object>
+                              <packing>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label22235">
+                                <property name="visible">True</property>
+                                <property name="xalign">1</property>
+                                <property name="label" translatable="yes">&lt;b&gt;Email:&lt;/b&gt;</property>
+                                <property name="use_markup">True</property>
+                              </object>
+                              <packing>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label22238">
+                                <property name="visible">True</property>
+                                <property name="xalign">1</property>
+                                <property name="label" translatable="yes">&lt;b&gt;Comment:&lt;/b&gt;</property>
+                                <property name="use_markup">True</property>
+                              </object>
+                              <packing>
+                                <property name="top_attach">3</property>
+                                <property name="bottom_attach">4</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="owner-keyid-label">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="xalign">0</property>
+                                <property name="selectable">True</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">5</property>
+                                <property name="bottom_attach">6</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="owner-comment-label">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="xalign">0</property>
+                                <property name="selectable">True</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">3</property>
+                                <property name="bottom_attach">4</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="owner-email-label">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="xalign">0</property>
+                                <property name="selectable">True</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="owner-name-label">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="xalign">0</property>
+                                <property name="selectable">True</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label22263">
+                                <property name="visible">True</property>
+                                <property name="xalign">1</property>
+                                <property name="label" translatable="yes" comments="To translators: This is the noun not the verb.">&lt;b&gt;Use:&lt;/b&gt;</property>
+                                <property name="use_markup">True</property>
+                              </object>
+                              <packing>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label22264">
+                                <property name="visible">True</property>
+                                <property name="xalign">1</property>
+                                <property name="label" translatable="yes">&lt;b&gt;Type:&lt;/b&gt;</property>
+                                <property name="use_markup">True</property>
+                              </object>
+                              <packing>
+                                <property name="top_attach">4</property>
+                                <property name="bottom_attach">5</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label22265">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="label" translatable="yes">Decrypt files and email sent to you.</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label22266">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="label" translatable="yes">Private PGP Key</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">4</property>
+                                <property name="bottom_attach">5</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkAlignment" id="alignment51">
+                            <property name="visible">True</property>
+                            <property name="xalign">1</property>
+                            <property name="yalign">1</property>
+                            <property name="xscale">0</property>
+                            <property name="yscale">0</property>
+                            <child>
+                              <object class="GtkButton" id="passphrase-button">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <signal name="clicked" handler="on_pgp_owner_passphrase_button_clicked"/>
+                                <child>
+                                  <object class="GtkAlignment" id="alignment9">
+                                    <property name="visible">True</property>
+                                    <property name="xscale">0</property>
+                                    <property name="yscale">0</property>
+                                    <child>
+                                      <object class="GtkHBox" id="hbox20">
+                                        <property name="visible">True</property>
+                                        <property name="spacing">2</property>
+                                        <child>
+                                          <object class="GtkImage" id="image11">
+                                            <property name="visible">True</property>
+                                            <property name="stock">gtk-edit</property>
+                                            <property name="icon-size">4</property>
+                                          </object>
+                                          <packing>
+                                            <property name="expand">False</property>
+                                            <property name="fill">False</property>
+                                            <property name="position">0</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkLabel" id="label47">
+                                            <property name="visible">True</property>
+                                            <property name="label" translatable="yes">Change _Passphrase</property>
+                                            <property name="use_underline">True</property>
+                                          </object>
+                                          <packing>
+                                            <property name="expand">False</property>
+                                            <property name="fill">False</property>
+                                            <property name="position">1</property>
+                                          </packing>
+                                        </child>
+                                      </object>
+                                    </child>
+                                  </object>
+                                </child>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="padding">6</property>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="label1">
+                <property name="visible">True</property>
+                <property name="xpad">3</property>
+                <property name="label" translatable="yes">Owner</property>
+              </object>
+              <packing>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkVBox" id="vbox10">
+                <property name="visible">True</property>
+                <property name="border_width">12</property>
+                <property name="spacing">6</property>
+                <child>
+                  <object class="GtkLabel" id="label22261">
+                    <property name="visible">True</property>
+                    <property name="xalign">0</property>
+                    <property name="label" translatable="yes">&lt;b&gt;Key Names and Signatures&lt;/b&gt;</property>
+                    <property name="use_markup">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkAlignment" id="alignment52">
+                    <property name="visible">True</property>
+                    <child>
+                      <object class="GtkHBox" id="hbox8">
+                        <property name="visible">True</property>
+                        <property name="border_width">6</property>
+                        <child>
+                          <object class="GtkTable" id="table5">
+                            <property name="visible">True</property>
+                            <property name="n_rows">5</property>
+                            <child>
+                              <object class="GtkButton" id="names-primary-button">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="border_width">6</property>
+                                <signal name="clicked" handler="on_pgp_names_primary_clicked"/>
+                                <child>
+                                  <object class="GtkAlignment" id="alignment5">
+                                    <property name="visible">True</property>
+                                    <property name="xscale">0</property>
+                                    <property name="yscale">0</property>
+                                    <child>
+                                      <object class="GtkHBox" id="hbox13">
+                                        <property name="visible">True</property>
+                                        <property name="spacing">2</property>
+                                        <child>
+                                          <object class="GtkImage" id="image7">
+                                            <property name="visible">True</property>
+                                            <property name="stock">gtk-go-up</property>
+                                            <property name="icon-size">4</property>
+                                          </object>
+                                          <packing>
+                                            <property name="expand">False</property>
+                                            <property name="fill">False</property>
+                                            <property name="position">0</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkLabel" id="label36">
+                                            <property name="visible">True</property>
+                                            <property name="label" translatable="yes">Primary</property>
+                                            <property name="use_underline">True</property>
+                                          </object>
+                                          <packing>
+                                            <property name="expand">False</property>
+                                            <property name="fill">False</property>
+                                            <property name="position">1</property>
+                                          </packing>
+                                        </child>
+                                      </object>
+                                    </child>
+                                  </object>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkButton" id="names-sign-button">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="border_width">6</property>
+                                <signal name="clicked" handler="on_pgp_names_sign_clicked"/>
+                                <child>
+                                  <object class="GtkAlignment" id="alignment6">
+                                    <property name="visible">True</property>
+                                    <property name="xscale">0</property>
+                                    <property name="yscale">0</property>
+                                    <child>
+                                      <object class="GtkHBox" id="hbox14">
+                                        <property name="visible">True</property>
+                                        <property name="spacing">2</property>
+                                        <child>
+                                          <object class="GtkImage" id="image8">
+                                            <property name="visible">True</property>
+                                            <property name="stock">gtk-index</property>
+                                            <property name="icon-size">4</property>
+                                          </object>
+                                          <packing>
+                                            <property name="expand">False</property>
+                                            <property name="fill">False</property>
+                                            <property name="position">0</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkLabel" id="label37">
+                                            <property name="visible">True</property>
+                                            <property name="label" translatable="yes">Sign</property>
+                                            <property name="use_underline">True</property>
+                                          </object>
+                                          <packing>
+                                            <property name="expand">False</property>
+                                            <property name="fill">False</property>
+                                            <property name="position">1</property>
+                                          </packing>
+                                        </child>
+                                      </object>
+                                    </child>
+                                  </object>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkButton" id="names-delete-button">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="border_width">6</property>
+                                <signal name="clicked" handler="on_pgp_names_delete_clicked"/>
+                                <child>
+                                  <object class="GtkAlignment" id="alignment2">
+                                    <property name="visible">True</property>
+                                    <property name="xscale">0</property>
+                                    <property name="yscale">0</property>
+                                    <child>
+                                      <object class="GtkHBox" id="hbox9">
+                                        <property name="visible">True</property>
+                                        <property name="spacing">2</property>
+                                        <child>
+                                          <object class="GtkImage" id="image4">
+                                            <property name="visible">True</property>
+                                            <property name="stock">gtk-delete</property>
+                                            <property name="icon-size">4</property>
+                                          </object>
+                                          <packing>
+                                            <property name="expand">False</property>
+                                            <property name="fill">False</property>
+                                            <property name="position">0</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkLabel" id="label32">
+                                            <property name="visible">True</property>
+                                            <property name="label" translatable="yes">Delete</property>
+                                            <property name="use_underline">True</property>
+                                          </object>
+                                          <packing>
+                                            <property name="expand">False</property>
+                                            <property name="fill">False</property>
+                                            <property name="position">1</property>
+                                          </packing>
+                                        </child>
+                                      </object>
+                                    </child>
+                                  </object>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="top_attach">3</property>
+                                <property name="bottom_attach">4</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkButton" id="names-add-button">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="border_width">6</property>
+                                <signal name="clicked" handler="on_pgp_names_add_clicked"/>
+                                <child>
+                                  <object class="GtkAlignment" id="alignment53">
+                                    <property name="visible">True</property>
+                                    <property name="xscale">0</property>
+                                    <property name="yscale">0</property>
+                                    <child>
+                                      <object class="GtkHBox" id="hbox66">
+                                        <property name="visible">True</property>
+                                        <property name="spacing">2</property>
+                                        <child>
+                                          <object class="GtkImage" id="image50">
+                                            <property name="visible">True</property>
+                                            <property name="stock">gtk-add</property>
+                                            <property name="icon-size">4</property>
+                                          </object>
+                                          <packing>
+                                            <property name="expand">False</property>
+                                            <property name="fill">False</property>
+                                            <property name="position">0</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkLabel" id="label22262">
+                                            <property name="visible">True</property>
+                                            <property name="label" translatable="yes">_Add Name</property>
+                                            <property name="use_underline">True</property>
+                                          </object>
+                                          <packing>
+                                            <property name="expand">False</property>
+                                            <property name="fill">False</property>
+                                            <property name="position">1</property>
+                                          </packing>
+                                        </child>
+                                      </object>
+                                    </child>
+                                  </object>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkButton" id="names-revoke-button">
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="border_width">6</property>
+                                <signal name="clicked" handler="on_pgp_names_revoke_clicked"/>
+                                <child>
+                                  <object class="GtkAlignment" id="alignment13">
+                                    <property name="visible">True</property>
+                                    <property name="xscale">0</property>
+                                    <property name="yscale">0</property>
+                                    <child>
+                                      <object class="GtkHBox" id="hbox29">
+                                        <property name="visible">True</property>
+                                        <property name="spacing">2</property>
+                                        <child>
+                                          <object class="GtkImage" id="image15">
+                                            <property name="visible">True</property>
+                                            <property name="stock">gtk-cancel</property>
+                                            <property name="icon-size">4</property>
+                                          </object>
+                                          <packing>
+                                            <property name="expand">False</property>
+                                            <property name="fill">False</property>
+                                            <property name="position">0</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkLabel" id="label58">
+                                            <property name="visible">True</property>
+                                            <property name="label" translatable="yes">Revoke</property>
+                                            <property name="use_underline">True</property>
+                                          </object>
+                                          <packing>
+                                            <property name="expand">False</property>
+                                            <property name="fill">False</property>
+                                            <property name="position">1</property>
+                                          </packing>
+                                        </child>
+                                      </object>
+                                    </child>
+                                  </object>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="top_attach">4</property>
+                                <property name="bottom_attach">5</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkScrolledWindow" id="scrolledwindow1">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="hscrollbar_policy">automatic</property>
+                            <property name="vscrollbar_policy">automatic</property>
+                            <property name="shadow_type">in</property>
+                            <child>
+                              <object class="GtkTreeView" id="names-tree">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="padding">6</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="padding">6</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="labelsig">
+                <property name="visible">True</property>
+                <property name="xpad">3</property>
+                <property name="label" translatable="yes">Names and Signatures</property>
+              </object>
+              <packing>
+                <property name="position">1</property>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkVBox" id="vbox8">
+                <property name="visible">True</property>
+                <property name="border_width">12</property>
+                <property name="spacing">12</property>
+                <child>
+                  <object class="GtkHBox" id="hbox63">
+                    <property name="visible">True</property>
+                    <property name="spacing">12</property>
+                    <property name="homogeneous">True</property>
+                    <child>
+                      <object class="GtkVBox" id="vbox34">
+                        <property name="visible">True</property>
+                        <property name="spacing">12</property>
+                        <child>
+                          <object class="GtkFrame" id="frame9">
+                            <property name="visible">True</property>
+                            <property name="label_xalign">0</property>
+                            <property name="shadow_type">none</property>
+                            <child>
+                              <object class="GtkAlignment" id="alignment47">
+                                <property name="visible">True</property>
+                                <property name="top_padding">6</property>
+                                <property name="left_padding">12</property>
+                                <child>
+                                  <object class="GtkTable" id="table13">
+                                    <property name="visible">True</property>
+                                    <property name="n_rows">3</property>
+                                    <property name="n_columns">2</property>
+                                    <property name="column_spacing">12</property>
+                                    <property name="row_spacing">6</property>
+                                    <child>
+                                      <object class="GtkLabel" id="label22242">
+                                        <property name="visible">True</property>
+                                        <property name="xalign">0</property>
+                                        <property name="yalign">0</property>
+                                        <property name="label" translatable="yes">Key ID:</property>
+                                      </object>
+                                      <packing>
+                                        <property name="x_options">GTK_FILL</property>
+                                        <property name="y_options"></property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkLabel" id="details-id-label">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="xalign">0</property>
+                                        <property name="yalign">0</property>
+                                        <property name="selectable">True</property>
+                                      </object>
+                                      <packing>
+                                        <property name="left_attach">1</property>
+                                        <property name="right_attach">2</property>
+                                        <property name="y_options"></property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkLabel" id="label22244">
+                                        <property name="visible">True</property>
+                                        <property name="xalign">0</property>
+                                        <property name="yalign">0</property>
+                                        <property name="label" translatable="yes">Strength:</property>
+                                      </object>
+                                      <packing>
+                                        <property name="top_attach">2</property>
+                                        <property name="bottom_attach">3</property>
+                                        <property name="x_options">GTK_FILL</property>
+                                        <property name="y_options"></property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkLabel" id="label22245">
+                                        <property name="visible">True</property>
+                                        <property name="xalign">0</property>
+                                        <property name="yalign">0</property>
+                                        <property name="label" translatable="yes">Type:</property>
+                                      </object>
+                                      <packing>
+                                        <property name="top_attach">1</property>
+                                        <property name="bottom_attach">2</property>
+                                        <property name="x_options">GTK_FILL</property>
+                                        <property name="y_options"></property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkLabel" id="details-algo-label">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="xalign">0</property>
+                                        <property name="yalign">0</property>
+                                        <property name="selectable">True</property>
+                                      </object>
+                                      <packing>
+                                        <property name="left_attach">1</property>
+                                        <property name="right_attach">2</property>
+                                        <property name="top_attach">1</property>
+                                        <property name="bottom_attach">2</property>
+                                        <property name="y_options"></property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkLabel" id="details-strength-label">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="xalign">0</property>
+                                        <property name="yalign">0</property>
+                                        <property name="selectable">True</property>
+                                      </object>
+                                      <packing>
+                                        <property name="left_attach">1</property>
+                                        <property name="right_attach">2</property>
+                                        <property name="top_attach">2</property>
+                                        <property name="bottom_attach">3</property>
+                                        <property name="y_options"></property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                </child>
+                              </object>
+                            </child>
+                            <child type="label">
+                              <object class="GtkLabel" id="label22248">
+                                <property name="visible">True</property>
+                                <property name="label" translatable="yes">&lt;b&gt;Technical Details&lt;/b&gt;</property>
+                                <property name="use_markup">True</property>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkFrame" id="frame10">
+                            <property name="visible">True</property>
+                            <property name="label_xalign">0</property>
+                            <property name="shadow_type">none</property>
+                            <child>
+                              <object class="GtkAlignment" id="alignment48">
+                                <property name="visible">True</property>
+                                <property name="top_padding">6</property>
+                                <property name="left_padding">12</property>
+                                <child>
+                                  <object class="GtkLabel" id="details-fingerprint-label">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="yalign">0</property>
+                                    <property name="use_markup">True</property>
+                                    <property name="selectable">True</property>
+                                  </object>
+                                </child>
+                              </object>
+                            </child>
+                            <child type="label">
+                              <object class="GtkLabel" id="label22250">
+                                <property name="visible">True</property>
+                                <property name="label" translatable="yes">&lt;b&gt;Fingerprint&lt;/b&gt;</property>
+                                <property name="use_markup">True</property>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkVBox" id="vbox35">
+                        <property name="visible">True</property>
+                        <property name="spacing">12</property>
+                        <child>
+                          <object class="GtkFrame" id="frame11">
+                            <property name="visible">True</property>
+                            <property name="label_xalign">0</property>
+                            <property name="shadow_type">none</property>
+                            <child>
+                              <object class="GtkAlignment" id="alignment49">
+                                <property name="visible">True</property>
+                                <property name="top_padding">6</property>
+                                <property name="left_padding">12</property>
+                                <child>
+                                  <object class="GtkTable" id="table14">
+                                    <property name="visible">True</property>
+                                    <property name="n_rows">2</property>
+                                    <property name="n_columns">2</property>
+                                    <property name="column_spacing">12</property>
+                                    <property name="row_spacing">6</property>
+                                    <child>
+                                      <object class="GtkLabel" id="label22251">
+                                        <property name="visible">True</property>
+                                        <property name="xalign">0</property>
+                                        <property name="yalign">0</property>
+                                        <property name="label" translatable="yes">Created:</property>
+                                      </object>
+                                      <packing>
+                                        <property name="x_options">GTK_FILL</property>
+                                        <property name="y_options"></property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkLabel" id="details-created-label">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="xalign">0</property>
+                                        <property name="selectable">True</property>
+                                      </object>
+                                      <packing>
+                                        <property name="left_attach">1</property>
+                                        <property name="right_attach">2</property>
+                                        <property name="y_options"></property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkHBox" id="hbox65">
+                                        <property name="visible">True</property>
+                                        <property name="spacing">6</property>
+                                        <child>
+                                          <object class="GtkLabel" id="details-expires-label">
+                                            <property name="visible">True</property>
+                                            <property name="can_focus">True</property>
+                                            <property name="xalign">0</property>
+                                            <property name="yalign">0.25</property>
+                                            <property name="selectable">True</property>
+                                          </object>
+                                          <packing>
+                                            <property name="expand">False</property>
+                                            <property name="fill">False</property>
+                                            <property name="position">0</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkButton" id="details_expires_button">
+                                            <property name="visible">True</property>
+                                            <property name="can_focus">True</property>
+                                            <property name="receives_default">False</property>
+                                            <signal name="clicked" handler="on_pgp_details_expires_button"/>
+                                            <child>
+                                              <object class="GtkImage" id="image49">
+                                                <property name="visible">True</property>
+                                                <property name="icon_name">stock_calendar</property>
+                                                <property name="icon-size">4</property>
+                                              </object>
+                                            </child>
+                                          </object>
+                                          <packing>
+                                            <property name="expand">False</property>
+                                            <property name="fill">False</property>
+                                            <property name="position">1</property>
+                                          </packing>
+                                        </child>
+                                      </object>
+                                      <packing>
+                                        <property name="left_attach">1</property>
+                                        <property name="right_attach">2</property>
+                                        <property name="top_attach">1</property>
+                                        <property name="bottom_attach">2</property>
+                                        <property name="x_options">GTK_FILL</property>
+                                        <property name="y_options">GTK_FILL</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkLabel" id="label22252">
+                                        <property name="visible">True</property>
+                                        <property name="xalign">0</property>
+                                        <property name="yalign">0.25</property>
+                                        <property name="label" translatable="yes">Expires:</property>
+                                      </object>
+                                      <packing>
+                                        <property name="top_attach">1</property>
+                                        <property name="bottom_attach">2</property>
+                                        <property name="x_options">GTK_FILL</property>
+                                        <property name="y_options">GTK_FILL</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                </child>
+                              </object>
+                            </child>
+                            <child type="label">
+                              <object class="GtkLabel" id="label22255">
+                                <property name="visible">True</property>
+                                <property name="label" translatable="yes">&lt;b&gt;Dates&lt;/b&gt;</property>
+                                <property name="use_markup">True</property>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkFrame" id="frame12">
+                            <property name="visible">True</property>
+                            <property name="label_xalign">0</property>
+                            <property name="shadow_type">none</property>
+                            <child>
+                              <object class="GtkAlignment" id="alignment50">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="yalign">0</property>
+                                <property name="xscale">0</property>
+                                <property name="yscale">0</property>
+                                <property name="top_padding">6</property>
+                                <property name="left_padding">12</property>
+                                <child>
+                                  <object class="GtkTable" id="table15">
+                                    <property name="visible">True</property>
+                                    <property name="n_rows">2</property>
+                                    <property name="n_columns">2</property>
+                                    <property name="column_spacing">12</property>
+                                    <property name="row_spacing">6</property>
+                                    <child>
+                                      <object class="GtkComboBox" id="details-trust-combobox">
+                                        <property name="visible">True</property>
+                                        <property name="model">model1</property>
+                                        <signal name="changed" handler="on_pgp_details_trust_changed"/>
+                                        <child>
+                                          <object class="GtkCellRendererText" id="renderer1"/>
+                                          <attributes>
+                                            <attribute name="text">0</attribute>
+                                          </attributes>
+                                        </child>
+                                      </object>
+                                      <packing>
+                                        <property name="left_attach">1</property>
+                                        <property name="right_attach">2</property>
+                                        <property name="y_options">GTK_FILL</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkLabel" id="label22256">
+                                        <property name="visible">True</property>
+                                        <property name="label" translatable="yes">Override Owner _Trust:</property>
+                                        <property name="use_underline">True</property>
+                                      </object>
+                                      <packing>
+                                        <property name="x_options">GTK_FILL</property>
+                                        <property name="y_options"></property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkLabel" id="label22260">
+                                        <property name="visible">True</property>
+                                        <property name="xalign">0</property>
+                                        <property name="label" translatable="yes">_Export Complete Key:</property>
+                                        <property name="use_underline">True</property>
+                                        <property name="mnemonic_widget">details-export-button</property>
+                                      </object>
+                                      <packing>
+                                        <property name="top_attach">1</property>
+                                        <property name="bottom_attach">2</property>
+                                        <property name="x_options">GTK_FILL</property>
+                                        <property name="y_options"></property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkButton" id="details-export-button">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="receives_default">False</property>
+                                        <signal name="clicked" handler="on_pgp_details_export_button"/>
+                                        <child>
+                                          <object class="GtkAlignment" id="alignment8">
+                                            <property name="visible">True</property>
+                                            <property name="xscale">0</property>
+                                            <property name="yscale">0</property>
+                                            <child>
+                                              <object class="GtkHBox" id="hbox19">
+                                                <property name="visible">True</property>
+                                                <property name="spacing">2</property>
+                                                <child>
+                                                  <object class="GtkImage" id="image10">
+                                                    <property name="visible">True</property>
+                                                    <property name="stock">gtk-save</property>
+                                                    <property name="icon-size">4</property>
+                                                  </object>
+                                                  <packing>
+                                                    <property name="expand">False</property>
+                                                    <property name="fill">False</property>
+                                                    <property name="position">0</property>
+                                                  </packing>
+                                                </child>
+                                                <child>
+                                                  <object class="GtkLabel" id="label46">
+                                                    <property name="visible">True</property>
+                                                    <property name="label" translatable="yes">Export</property>
+                                                    <property name="use_underline">True</property>
+                                                  </object>
+                                                  <packing>
+                                                    <property name="expand">False</property>
+                                                    <property name="fill">False</property>
+                                                    <property name="position">1</property>
+                                                  </packing>
+                                                </child>
+                                              </object>
+                                            </child>
+                                          </object>
+                                        </child>
+                                      </object>
+                                      <packing>
+                                        <property name="left_attach">1</property>
+                                        <property name="right_attach">2</property>
+                                        <property name="top_attach">1</property>
+                                        <property name="bottom_attach">2</property>
+                                        <property name="x_options">GTK_FILL</property>
+                                        <property name="y_options"></property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                </child>
+                              </object>
+                            </child>
+                            <child type="label">
+                              <object class="GtkLabel" id="label22257">
+                                <property name="visible">True</property>
+                                <property name="label" translatable="yes">&lt;b&gt;Actions&lt;/b&gt;</property>
+                                <property name="use_markup">True</property>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkHSeparator" id="hseparator2">
+                    <property name="visible">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkExpander" id="subkey-expander">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="expanded">True</property>
+                    <child>
+                      <object class="GtkHBox" id="hbox10">
+                        <property name="visible">True</property>
+                        <child>
+                          <object class="GtkTable" id="table6">
+                            <property name="visible">True</property>
+                            <property name="n_rows">4</property>
+                            <child>
+                              <object class="GtkButton" id="details-add-button">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="border_width">6</property>
+                                <signal name="clicked" handler="on_pgp_details_add_subkey_button"/>
+                                <child>
+                                  <object class="GtkAlignment" id="alignment3">
+                                    <property name="visible">True</property>
+                                    <property name="xscale">0</property>
+                                    <property name="yscale">0</property>
+                                    <child>
+                                      <object class="GtkHBox" id="hbox11">
+                                        <property name="visible">True</property>
+                                        <property name="spacing">2</property>
+                                        <child>
+                                          <object class="GtkImage" id="image5">
+                                            <property name="visible">True</property>
+                                            <property name="stock">gtk-add</property>
+                                            <property name="icon-size">4</property>
+                                          </object>
+                                          <packing>
+                                            <property name="expand">False</property>
+                                            <property name="fill">False</property>
+                                            <property name="position">0</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkLabel" id="label34">
+                                            <property name="visible">True</property>
+                                            <property name="label" translatable="yes">Add</property>
+                                            <property name="use_underline">True</property>
+                                          </object>
+                                          <packing>
+                                            <property name="expand">False</property>
+                                            <property name="fill">False</property>
+                                            <property name="position">1</property>
+                                          </packing>
+                                        </child>
+                                      </object>
+                                    </child>
+                                  </object>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkButton" id="details-date-button">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="border_width">6</property>
+                                <signal name="clicked" handler="on_pgp_details_expires_subkey"/>
+                                <child>
+                                  <object class="GtkAlignment" id="alignment18">
+                                    <property name="visible">True</property>
+                                    <property name="xscale">0</property>
+                                    <property name="yscale">0</property>
+                                    <child>
+                                      <object class="GtkHBox" id="hbox48">
+                                        <property name="visible">True</property>
+                                        <property name="spacing">2</property>
+                                        <child>
+                                          <object class="GtkImage" id="image30">
+                                            <property name="visible">True</property>
+                                            <property name="icon_name">stock_calendar</property>
+                                            <property name="icon-size">4</property>
+                                          </object>
+                                          <packing>
+                                            <property name="expand">False</property>
+                                            <property name="fill">False</property>
+                                            <property name="position">0</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkLabel" id="label89">
+                                            <property name="visible">True</property>
+                                            <property name="label" translatable="yes">Expire</property>
+                                            <property name="use_underline">True</property>
+                                          </object>
+                                          <packing>
+                                            <property name="expand">False</property>
+                                            <property name="fill">False</property>
+                                            <property name="position">1</property>
+                                          </packing>
+                                        </child>
+                                      </object>
+                                    </child>
+                                  </object>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkButton" id="details-delete-button">
+                                <property name="label">gtk-delete</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="border_width">6</property>
+                                <property name="use_stock">True</property>
+                                <signal name="clicked" handler="on_pgp_details_del_subkey_button"/>
+                              </object>
+                              <packing>
+                                <property name="top_attach">3</property>
+                                <property name="bottom_attach">4</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkButton" id="details-revoke-button">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="border_width">6</property>
+                                <signal name="clicked" handler="on_pgp_details_revoke_subkey_button"/>
+                                <child>
+                                  <object class="GtkAlignment" id="alignment14">
+                                    <property name="visible">True</property>
+                                    <property name="xscale">0</property>
+                                    <property name="yscale">0</property>
+                                    <child>
+                                      <object class="GtkHBox" id="hbox30">
+                                        <property name="visible">True</property>
+                                        <property name="spacing">2</property>
+                                        <child>
+                                          <object class="GtkImage" id="image16">
+                                            <property name="visible">True</property>
+                                            <property name="stock">gtk-close</property>
+                                            <property name="icon-size">4</property>
+                                          </object>
+                                          <packing>
+                                            <property name="expand">False</property>
+                                            <property name="fill">False</property>
+                                            <property name="position">0</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkLabel" id="label59">
+                                            <property name="visible">True</property>
+                                            <property name="label" translatable="yes">Revoke</property>
+                                            <property name="use_underline">True</property>
+                                          </object>
+                                          <packing>
+                                            <property name="expand">False</property>
+                                            <property name="fill">False</property>
+                                            <property name="position">1</property>
+                                          </packing>
+                                        </child>
+                                      </object>
+                                    </child>
+                                  </object>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="padding">12</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkScrolledWindow" id="scrolledwindow2">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="hscrollbar_policy">automatic</property>
+                            <property name="vscrollbar_policy">automatic</property>
+                            <property name="shadow_type">in</property>
+                            <child>
+                              <object class="GtkTreeView" id="details-subkey-tree">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                    <child type="label">
+                      <object class="GtkLabel" id="label33">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">&lt;b&gt;_Subkeys&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                        <property name="use_underline">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="label2">
+                <property name="visible">True</property>
+                <property name="xpad">3</property>
+                <property name="label" translatable="yes">Details</property>
+              </object>
+              <packing>
+                <property name="position">2</property>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area1">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="helpbutton1">
+                <property name="label">gtk-help</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+                <signal name="clicked" handler="on_widget_help"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="closebutton1">
+                <property name="label">gtk-close</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+                <signal name="clicked" handler="on_widget_closed"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-11">helpbutton1</action-widget>
+      <action-widget response="-7">closebutton1</action-widget>
+    </action-widgets>
+  </object>
+</interface>
diff --git a/pgp/seahorse-pgp-public-key-properties.xml b/pgp/seahorse-pgp-public-key-properties.xml
new file mode 100644
index 0000000..d3f381e
--- /dev/null
+++ b/pgp/seahorse-pgp-public-key-properties.xml
@@ -0,0 +1,1435 @@
+<?xml version="1.0"?>
+<interface>
+  <requires lib="gtk+" version="2.16"/>
+  <!-- interface-naming-policy toplevel-contextual -->
+  <object class="GtkListStore" id="model1">
+    <columns>
+      <!-- column-name gchararray -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0" translatable="yes">Unknown</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Never</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Marginally</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Fully</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Ultimately</col>
+      </row>
+    </data>
+  </object>
+  <object class="GtkDialog" id="pgp-public-key-properties">
+    <property name="visible">True</property>
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes">Key Properties</property>
+    <property name="type_hint">dialog</property>
+    <property name="has_separator">False</property>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox1">
+        <property name="visible">True</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkNotebook" id="notebook">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="border_width">5</property>
+            <child>
+              <object class="GtkVBox" id="vbox7">
+                <property name="visible">True</property>
+                <property name="border_width">12</property>
+                <property name="spacing">12</property>
+                <child>
+                  <object class="GtkHBox" id="revoked-area">
+                    <property name="spacing">12</property>
+                    <child>
+                      <object class="GtkImage" id="image36">
+                        <property name="visible">True</property>
+                        <property name="stock">gtk-dialog-error</property>
+                        <property name="icon-size">6</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkVBox" id="vbox28">
+                        <property name="visible">True</property>
+                        <property name="spacing">6</property>
+                        <child>
+                          <object class="GtkLabel" id="label114">
+                            <property name="visible">True</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">&lt;b&gt;This key has been revoked&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkAlignment" id="alignment39">
+                            <property name="visible">True</property>
+                            <property name="left_padding">12</property>
+                            <child>
+                              <object class="GtkLabel" id="label115">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="label" translatable="yes">The owner of the key revoked the key. It can no longer be used.</property>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkHBox" id="expired-area">
+                    <property name="spacing">12</property>
+                    <child>
+                      <object class="GtkImage" id="image37">
+                        <property name="visible">True</property>
+                        <property name="stock">gtk-dialog-error</property>
+                        <property name="icon-size">6</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkVBox" id="vbox29">
+                        <property name="visible">True</property>
+                        <property name="spacing">6</property>
+                        <child>
+                          <object class="GtkLabel" id="label116">
+                            <property name="visible">True</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">&lt;b&gt;This key has expired&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkAlignment" id="alignment40">
+                            <property name="visible">True</property>
+                            <property name="left_padding">12</property>
+                            <child>
+                              <object class="GtkLabel" id="expired-message">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="label">This key expired on: (placeholder)</property>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkHBox" id="hbox5">
+                    <property name="visible">True</property>
+                    <property name="spacing">6</property>
+                    <child>
+                      <object class="GtkHBox" id="hbox31">
+                        <property name="visible">True</property>
+                        <child>
+                          <object class="GtkVBox" id="vbox12">
+                            <property name="visible">True</property>
+                            <child>
+                              <object class="GtkFrame" id="photo-id">
+                                <property name="visible">True</property>
+                                <property name="label_xalign">0</property>
+                                <property name="shadow_type">none</property>
+                                <child>
+                                  <object class="GtkAlignment" id="alignment18">
+                                    <property name="visible">True</property>
+                                    <property name="bottom_padding">6</property>
+                                    <property name="left_padding">6</property>
+                                    <property name="right_padding">6</property>
+                                    <child>
+                                      <object class="GtkVBox" id="vbox19">
+                                        <property name="visible">True</property>
+                                        <property name="spacing">6</property>
+                                        <child>
+                                          <object class="GtkEventBox" id="image_eventbox">
+                                            <property name="visible">True</property>
+                                            <signal name="scroll_event" handler="on_pgp_owner_photoid_button"/>
+                                            <child>
+                                              <object class="GtkImage" id="photoid">
+                                                <property name="width_request">150</property>
+                                                <property name="height_request">160</property>
+                                                <property name="visible">True</property>
+                                              </object>
+                                            </child>
+                                          </object>
+                                          <packing>
+                                            <property name="position">0</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkHBox" id="key-controls">
+                                            <property name="visible">True</property>
+                                            <property name="spacing">6</property>
+                                            <child>
+                                              <object class="GtkLabel" id="add-photo-help">
+                                                <property name="visible">True</property>
+                                                <property name="xalign">1</property>
+                                              </object>
+                                              <packing>
+                                                <property name="position">0</property>
+                                              </packing>
+                                            </child>
+                                            <child>
+                                              <object class="GtkButton" id="owner-photo-previous-button">
+                                                <property name="visible">True</property>
+                                                <property name="can_focus">True</property>
+                                                <property name="receives_default">False</property>
+                                                <property name="focus_on_click">False</property>
+                                                <signal name="clicked" handler="on_pgp_owner_photoid_prev"/>
+                                                <child>
+                                                  <object class="GtkImage" id="image27">
+                                                    <property name="visible">True</property>
+                                                    <property name="stock">gtk-go-back</property>
+                                                    <property name="icon-size">4</property>
+                                                  </object>
+                                                </child>
+                                              </object>
+                                              <packing>
+                                                <property name="expand">False</property>
+                                                <property name="fill">False</property>
+                                                <property name="position">1</property>
+                                              </packing>
+                                            </child>
+                                            <child>
+                                              <object class="GtkButton" id="owner-photo-next-button">
+                                                <property name="visible">True</property>
+                                                <property name="can_focus">True</property>
+                                                <property name="receives_default">False</property>
+                                                <signal name="clicked" handler="on_pgp_owner_photoid_next"/>
+                                                <child>
+                                                  <object class="GtkAlignment" id="alignment17">
+                                                    <property name="visible">True</property>
+                                                    <property name="xscale">0</property>
+                                                    <property name="yscale">0</property>
+                                                    <child>
+                                                      <object class="GtkHBox" id="hbox44">
+                                                        <property name="visible">True</property>
+                                                        <property name="spacing">2</property>
+                                                        <child>
+                                                          <object class="GtkImage" id="image24">
+                                                            <property name="visible">True</property>
+                                                            <property name="stock">gtk-go-forward</property>
+                                                            <property name="icon-size">4</property>
+                                                          </object>
+                                                          <packing>
+                                                            <property name="expand">False</property>
+                                                            <property name="fill">False</property>
+                                                            <property name="position">0</property>
+                                                          </packing>
+                                                        </child>
+                                                        <child>
+                                                          <object class="GtkLabel" id="label85">
+                                                            <property name="visible">True</property>
+                                                            <property name="use_underline">True</property>
+                                                          </object>
+                                                          <packing>
+                                                            <property name="expand">False</property>
+                                                            <property name="fill">False</property>
+                                                            <property name="position">1</property>
+                                                          </packing>
+                                                        </child>
+                                                      </object>
+                                                    </child>
+                                                  </object>
+                                                </child>
+                                              </object>
+                                              <packing>
+                                                <property name="expand">False</property>
+                                                <property name="fill">False</property>
+                                                <property name="position">2</property>
+                                              </packing>
+                                            </child>
+                                          </object>
+                                          <packing>
+                                            <property name="expand">False</property>
+                                            <property name="fill">False</property>
+                                            <property name="position">1</property>
+                                          </packing>
+                                        </child>
+                                      </object>
+                                    </child>
+                                  </object>
+                                </child>
+                                <child type="label">
+                                  <object class="GtkLabel" id="label89">
+                                    <property name="visible">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="yalign">0</property>
+                                    <property name="label" translatable="yes">&lt;b&gt;Photo &lt;/b&gt;</property>
+                                    <property name="use_markup">True</property>
+                                  </object>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="padding">12</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkVBox" id="vbox38">
+                        <property name="visible">True</property>
+                        <property name="spacing">6</property>
+                        <child>
+                          <object class="GtkTable" id="table9">
+                            <property name="visible">True</property>
+                            <property name="border_width">3</property>
+                            <property name="n_rows">6</property>
+                            <property name="n_columns">2</property>
+                            <property name="column_spacing">12</property>
+                            <property name="row_spacing">6</property>
+                            <child>
+                              <object class="GtkLabel" id="label22227">
+                                <property name="visible">True</property>
+                                <property name="xalign">1</property>
+                                <property name="label" translatable="yes" comments="To translators: This is the noun not the verb.">&lt;b&gt;Use:&lt;/b&gt;</property>
+                                <property name="use_markup">True</property>
+                              </object>
+                              <packing>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label22228">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="label" translatable="yes">Encrypt files and email to the key's owner </property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label93">
+                                <property name="visible">True</property>
+                                <property name="xalign">1</property>
+                                <property name="yalign">0</property>
+                                <property name="label" translatable="yes">&lt;b&gt;Key ID:&lt;/b&gt;</property>
+                                <property name="use_markup">True</property>
+                              </object>
+                              <packing>
+                                <property name="top_attach">5</property>
+                                <property name="bottom_attach">6</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="owner-keyid-label">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="xalign">0</property>
+                                <property name="selectable">True</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">5</property>
+                                <property name="bottom_attach">6</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label72">
+                                <property name="visible">True</property>
+                                <property name="xalign">1</property>
+                                <property name="yalign">0</property>
+                                <property name="label" translatable="yes">&lt;b&gt;Name:&lt;/b&gt;</property>
+                                <property name="use_markup">True</property>
+                              </object>
+                              <packing>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label74">
+                                <property name="visible">True</property>
+                                <property name="xalign">1</property>
+                                <property name="label" translatable="yes">&lt;b&gt;Email:&lt;/b&gt;</property>
+                                <property name="use_markup">True</property>
+                              </object>
+                              <packing>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label91">
+                                <property name="visible">True</property>
+                                <property name="xalign">1</property>
+                                <property name="label" translatable="yes">&lt;b&gt;Comment:&lt;/b&gt;</property>
+                                <property name="use_markup">True</property>
+                              </object>
+                              <packing>
+                                <property name="top_attach">3</property>
+                                <property name="bottom_attach">4</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label22229">
+                                <property name="visible">True</property>
+                                <property name="xalign">1</property>
+                                <property name="label" translatable="yes">&lt;b&gt;Type:&lt;/b&gt;</property>
+                                <property name="use_markup">True</property>
+                              </object>
+                              <packing>
+                                <property name="top_attach">4</property>
+                                <property name="bottom_attach">5</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="owner-name-label">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="xalign">0</property>
+                                <property name="selectable">True</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="owner-email-label">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="xalign">0</property>
+                                <property name="selectable">True</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="owner-comment-label">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="xalign">0</property>
+                                <property name="selectable">True</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">3</property>
+                                <property name="bottom_attach">4</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label22230">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="label" translatable="yes">Public PGP Key</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">4</property>
+                                <property name="bottom_attach">5</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkExpander" id="uids-area">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <child>
+                              <object class="GtkAlignment" id="alignment23">
+                                <property name="visible">True</property>
+                                <property name="top_padding">3</property>
+                                <child>
+                                  <object class="GtkScrolledWindow" id="scrolledwindow1">
+                                    <property name="height_request">130</property>
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="hscrollbar_policy">never</property>
+                                    <property name="vscrollbar_policy">automatic</property>
+                                    <property name="shadow_type">in</property>
+                                    <child>
+                                      <object class="GtkTreeView" id="owner-userid-tree">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="headers_visible">False</property>
+                                      </object>
+                                    </child>
+                                  </object>
+                                </child>
+                              </object>
+                            </child>
+                            <child type="label">
+                              <object class="GtkLabel" id="label28">
+                                <property name="visible">True</property>
+                                <property name="label" translatable="yes">&lt;b&gt;_Other Names:&lt;/b&gt;</property>
+                                <property name="use_markup">True</property>
+                                <property name="use_underline">True</property>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="label1">
+                <property name="visible">True</property>
+                <property name="xpad">3</property>
+                <property name="label" translatable="yes">Owner</property>
+              </object>
+              <packing>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkVBox" id="trust-page">
+                <property name="visible">True</property>
+                <property name="border_width">12</property>
+                <property name="spacing">12</property>
+                <child>
+                  <object class="GtkHBox" id="hbox59">
+                    <property name="visible">True</property>
+                    <property name="spacing">12</property>
+                    <child>
+                      <object class="GtkImage" id="sign-image">
+                        <property name="visible">True</property>
+                        <property name="yalign">0</property>
+                        <property name="stock">gtk-dialog-info</property>
+                        <property name="icon-size">6</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkVBox" id="vbox36">
+                        <property name="visible">True</property>
+                        <property name="spacing">6</property>
+                        <child>
+                          <object class="GtkLabel" id="label22225">
+                            <property name="visible">True</property>
+                            <property name="xalign">0</property>
+                            <property name="yalign">0</property>
+                            <property name="label" translatable="yes">&lt;b&gt;Your trust of this key&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkAlignment" id="alignment43">
+                            <property name="visible">True</property>
+                            <property name="left_padding">12</property>
+                            <child>
+                              <object class="GtkVBox" id="vbox37">
+                                <property name="visible">True</property>
+                                <property name="spacing">6</property>
+                                <child>
+                                  <object class="GtkLabel" id="manual-trust-area">
+                                    <property name="visible">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="xpad">4</property>
+                                    <property name="label" translatable="yes">Your trust is manually specified on the &lt;i&gt;Details&lt;/i&gt; tab.</property>
+                                    <property name="use_markup">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkVBox" id="manage-trust-area">
+                                    <property name="visible">True</property>
+                                    <property name="spacing">6</property>
+                                    <child>
+                                      <object class="GtkCheckButton" id="trust-marginal-check">
+                                        <property name="label" translatable="yes">I trust signatures from '%s' on other keys</property>
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="receives_default">False</property>
+                                        <property name="use_underline">True</property>
+                                        <property name="draw_indicator">True</property>
+                                        <signal name="toggled" handler="on_pgp_trust_marginal_toggled"/>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkHBox" id="sign-area">
+                                    <property name="visible">True</property>
+                                    <property name="spacing">12</property>
+                                    <child>
+                                      <object class="GtkLabel" id="trust-sign-label">
+                                        <property name="width_request">270</property>
+                                        <property name="visible">True</property>
+                                        <property name="xalign">0</property>
+                                        <property name="label" translatable="yes">If you believe that the person that owns this key is '%s', &lt;i&gt;sign&lt;/i&gt; this key:</property>
+                                        <property name="use_markup">True</property>
+                                        <property name="wrap">True</property>
+                                      </object>
+                                      <packing>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkAlignment" id="alignment45">
+                                        <property name="visible">True</property>
+                                        <property name="xalign">1</property>
+                                        <property name="yalign">0</property>
+                                        <property name="xscale">0</property>
+                                        <property name="yscale">0</property>
+                                        <child>
+                                          <object class="GtkButton" id="sign-button">
+                                            <property name="visible">True</property>
+                                            <property name="can_focus">True</property>
+                                            <property name="receives_default">False</property>
+                                            <signal name="clicked" handler="on_pgp_trust_sign"/>
+                                            <child>
+                                              <object class="GtkAlignment" id="alignment22">
+                                                <property name="visible">True</property>
+                                                <property name="xscale">0</property>
+                                                <property name="yscale">0</property>
+                                                <child>
+                                                  <object class="GtkHBox" id="hbox49">
+                                                    <property name="visible">True</property>
+                                                    <property name="spacing">2</property>
+                                                    <child>
+                                                      <object class="GtkImage" id="image30">
+                                                        <property name="visible">True</property>
+                                                        <property name="stock">gtk-index</property>
+                                                        <property name="icon-size">4</property>
+                                                      </object>
+                                                      <packing>
+                                                        <property name="expand">False</property>
+                                                        <property name="fill">False</property>
+                                                        <property name="position">0</property>
+                                                      </packing>
+                                                    </child>
+                                                    <child>
+                                                      <object class="GtkLabel" id="label101">
+                                                        <property name="visible">True</property>
+                                                        <property name="label" translatable="yes">_Sign this Key</property>
+                                                        <property name="use_underline">True</property>
+                                                      </object>
+                                                      <packing>
+                                                        <property name="expand">False</property>
+                                                        <property name="fill">False</property>
+                                                        <property name="position">1</property>
+                                                      </packing>
+                                                    </child>
+                                                  </object>
+                                                </child>
+                                              </object>
+                                            </child>
+                                          </object>
+                                        </child>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="position">2</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkHBox" id="revoke-area">
+                                    <property name="visible">True</property>
+                                    <property name="spacing">12</property>
+                                    <child>
+                                      <object class="GtkLabel" id="trust-revoke-label">
+                                        <property name="width_request">270</property>
+                                        <property name="visible">True</property>
+                                        <property name="xalign">0</property>
+                                        <property name="label" translatable="yes">If you no longer trust that '%s' owns this key, &lt;i&gt;revoke&lt;/i&gt; your signature:</property>
+                                        <property name="use_markup">True</property>
+                                        <property name="wrap">True</property>
+                                      </object>
+                                      <packing>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkAlignment" id="alignment44">
+                                        <property name="visible">True</property>
+                                        <property name="xalign">1</property>
+                                        <property name="yalign">0</property>
+                                        <property name="xscale">0</property>
+                                        <property name="yscale">0</property>
+                                        <child>
+                                          <object class="GtkButton" id="revoke-button">
+                                            <property name="visible">True</property>
+                                            <property name="sensitive">False</property>
+                                            <property name="can_focus">True</property>
+                                            <property name="receives_default">False</property>
+                                            <child>
+                                              <object class="GtkAlignment" id="alignment25">
+                                                <property name="visible">True</property>
+                                                <property name="xscale">0</property>
+                                                <property name="yscale">0</property>
+                                                <child>
+                                                  <object class="GtkHBox" id="hbox51">
+                                                    <property name="visible">True</property>
+                                                    <property name="spacing">2</property>
+                                                    <child>
+                                                      <object class="GtkImage" id="image32">
+                                                        <property name="visible">True</property>
+                                                        <property name="stock">gtk-remove</property>
+                                                        <property name="icon-size">4</property>
+                                                      </object>
+                                                      <packing>
+                                                        <property name="expand">False</property>
+                                                        <property name="fill">False</property>
+                                                        <property name="position">0</property>
+                                                      </packing>
+                                                    </child>
+                                                    <child>
+                                                      <object class="GtkLabel" id="label104">
+                                                        <property name="visible">True</property>
+                                                        <property name="label" translatable="yes">_Revoke Signature</property>
+                                                        <property name="use_underline">True</property>
+                                                      </object>
+                                                      <packing>
+                                                        <property name="expand">False</property>
+                                                        <property name="fill">False</property>
+                                                        <property name="position">1</property>
+                                                      </packing>
+                                                    </child>
+                                                  </object>
+                                                </child>
+                                              </object>
+                                            </child>
+                                          </object>
+                                        </child>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">3</property>
+                                  </packing>
+                                </child>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkVBox" id="signatures-area">
+                    <property name="spacing">6</property>
+                    <child>
+                      <object class="GtkLabel" id="label99">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">&lt;b&gt;_People who have signed this key:&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                        <property name="use_underline">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkAlignment" id="alignment20">
+                        <property name="visible">True</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <object class="GtkVBox" id="vbox22">
+                            <property name="visible">True</property>
+                            <property name="spacing">6</property>
+                            <child>
+                              <object class="GtkScrolledWindow" id="scrolledwindow4">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="hscrollbar_policy">automatic</property>
+                                <property name="vscrollbar_policy">automatic</property>
+                                <property name="shadow_type">in</property>
+                                <child>
+                                  <object class="GtkTreeView" id="signatures-tree">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <signal name="row_activated" handler="on_pgp_signature_row_activated"/>
+                                  </object>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkCheckButton" id="signatures-toggle">
+                                <property name="label" translatable="yes">_Only display the signatures of people I trust</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="use_underline">True</property>
+                                <property name="draw_indicator">True</property>
+                                <signal name="toggled" handler="on_pgp_trusted_toggled"/>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="label96">
+                <property name="visible">True</property>
+                <property name="xpad">3</property>
+                <property name="label" translatable="yes">Trust</property>
+              </object>
+              <packing>
+                <property name="position">1</property>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkVBox" id="vbox8">
+                <property name="visible">True</property>
+                <property name="border_width">12</property>
+                <property name="spacing">12</property>
+                <child>
+                  <object class="GtkHBox" id="hbox53">
+                    <property name="visible">True</property>
+                    <property name="spacing">12</property>
+                    <property name="homogeneous">True</property>
+                    <child>
+                      <object class="GtkVBox" id="vbox27">
+                        <property name="visible">True</property>
+                        <property name="spacing">18</property>
+                        <child>
+                          <object class="GtkVBox" id="vbox32">
+                            <property name="visible">True</property>
+                            <property name="spacing">6</property>
+                            <child>
+                              <object class="GtkLabel" id="label108">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="label" translatable="yes">&lt;b&gt;Technical Details:&lt;/b&gt;</property>
+                                <property name="use_markup">True</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkAlignment" id="alignment29">
+                                <property name="visible">True</property>
+                                <property name="left_padding">12</property>
+                                <child>
+                                  <object class="GtkTable" id="table10">
+                                    <property name="visible">True</property>
+                                    <property name="n_rows">3</property>
+                                    <property name="n_columns">2</property>
+                                    <property name="column_spacing">12</property>
+                                    <property name="row_spacing">6</property>
+                                    <child>
+                                      <object class="GtkLabel" id="label24">
+                                        <property name="visible">True</property>
+                                        <property name="xalign">0</property>
+                                        <property name="yalign">0</property>
+                                        <property name="label" translatable="yes">Key ID:</property>
+                                      </object>
+                                      <packing>
+                                        <property name="x_options">GTK_FILL</property>
+                                        <property name="y_options"></property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkLabel" id="details-id-label">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="xalign">0</property>
+                                        <property name="yalign">0</property>
+                                        <property name="selectable">True</property>
+                                      </object>
+                                      <packing>
+                                        <property name="left_attach">1</property>
+                                        <property name="right_attach">2</property>
+                                        <property name="y_options"></property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkLabel" id="label25">
+                                        <property name="visible">True</property>
+                                        <property name="xalign">0</property>
+                                        <property name="yalign">0</property>
+                                        <property name="label" translatable="yes">Strength:</property>
+                                      </object>
+                                      <packing>
+                                        <property name="top_attach">2</property>
+                                        <property name="bottom_attach">3</property>
+                                        <property name="x_options">GTK_FILL</property>
+                                        <property name="y_options"></property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkLabel" id="label109">
+                                        <property name="visible">True</property>
+                                        <property name="xalign">0</property>
+                                        <property name="yalign">0</property>
+                                        <property name="label" translatable="yes">Type:</property>
+                                      </object>
+                                      <packing>
+                                        <property name="top_attach">1</property>
+                                        <property name="bottom_attach">2</property>
+                                        <property name="x_options">GTK_FILL</property>
+                                        <property name="y_options"></property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkLabel" id="details-algo-label">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="xalign">0</property>
+                                        <property name="yalign">0</property>
+                                        <property name="selectable">True</property>
+                                      </object>
+                                      <packing>
+                                        <property name="left_attach">1</property>
+                                        <property name="right_attach">2</property>
+                                        <property name="top_attach">1</property>
+                                        <property name="bottom_attach">2</property>
+                                        <property name="y_options"></property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkLabel" id="details-strength-label">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="xalign">0</property>
+                                        <property name="yalign">0</property>
+                                        <property name="selectable">True</property>
+                                      </object>
+                                      <packing>
+                                        <property name="left_attach">1</property>
+                                        <property name="right_attach">2</property>
+                                        <property name="top_attach">2</property>
+                                        <property name="bottom_attach">3</property>
+                                        <property name="y_options"></property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkVBox" id="vbox33">
+                            <property name="visible">True</property>
+                            <property name="spacing">6</property>
+                            <child>
+                              <object class="GtkLabel" id="label113">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="label" translatable="yes">&lt;b&gt;Fingerprint:&lt;/b&gt;</property>
+                                <property name="use_markup">True</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkAlignment" id="alignment32">
+                                <property name="visible">True</property>
+                                <property name="left_padding">12</property>
+                                <child>
+                                  <object class="GtkLabel" id="details-fingerprint-label">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="yalign">0</property>
+                                    <property name="label">PLAC EHOL DER0 9023 435F
+B4C3 4349 0932 7854 3452</property>
+                                    <property name="use_markup">True</property>
+                                    <property name="selectable">True</property>
+                                  </object>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkVBox" id="vbox26">
+                        <property name="visible">True</property>
+                        <property name="spacing">18</property>
+                        <child>
+                          <object class="GtkVBox" id="vbox34">
+                            <property name="visible">True</property>
+                            <property name="spacing">6</property>
+                            <child>
+                              <object class="GtkLabel" id="label110">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="label" translatable="yes">&lt;b&gt;Dates:&lt;/b&gt;</property>
+                                <property name="use_markup">True</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkAlignment" id="alignment30">
+                                <property name="visible">True</property>
+                                <property name="left_padding">12</property>
+                                <child>
+                                  <object class="GtkTable" id="table11">
+                                    <property name="visible">True</property>
+                                    <property name="n_rows">2</property>
+                                    <property name="n_columns">2</property>
+                                    <property name="column_spacing">12</property>
+                                    <property name="row_spacing">6</property>
+                                    <child>
+                                      <object class="GtkLabel" id="label17">
+                                        <property name="visible">True</property>
+                                        <property name="xalign">0</property>
+                                        <property name="yalign">0</property>
+                                        <property name="label" translatable="yes">Created:</property>
+                                      </object>
+                                      <packing>
+                                        <property name="x_options">GTK_FILL</property>
+                                        <property name="y_options"></property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkLabel" id="label18">
+                                        <property name="visible">True</property>
+                                        <property name="xalign">0</property>
+                                        <property name="yalign">0</property>
+                                        <property name="label" translatable="yes">Expires:</property>
+                                      </object>
+                                      <packing>
+                                        <property name="top_attach">1</property>
+                                        <property name="bottom_attach">2</property>
+                                        <property name="x_options">GTK_FILL</property>
+                                        <property name="y_options"></property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkLabel" id="details-created-label">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="xalign">0</property>
+                                        <property name="selectable">True</property>
+                                      </object>
+                                      <packing>
+                                        <property name="left_attach">1</property>
+                                        <property name="right_attach">2</property>
+                                        <property name="y_options"></property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkLabel" id="details-expires-label">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="xalign">0</property>
+                                        <property name="selectable">True</property>
+                                      </object>
+                                      <packing>
+                                        <property name="left_attach">1</property>
+                                        <property name="right_attach">2</property>
+                                        <property name="top_attach">1</property>
+                                        <property name="bottom_attach">2</property>
+                                        <property name="y_options"></property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkVBox" id="vbox35">
+                            <property name="visible">True</property>
+                            <property name="spacing">6</property>
+                            <child>
+                              <object class="GtkLabel" id="label111">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="label" translatable="yes">&lt;b&gt;Indicate Trust:&lt;/b&gt;</property>
+                                <property name="use_markup">True</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkAlignment" id="alignment31">
+                                <property name="visible">True</property>
+                                <property name="left_padding">12</property>
+                                <child>
+                                  <object class="GtkHBox" id="hbox54">
+                                    <property name="visible">True</property>
+                                    <property name="spacing">12</property>
+                                    <child>
+                                      <object class="GtkLabel" id="label112">
+                                        <property name="visible">True</property>
+                                        <property name="label" translatable="yes">You _Trust the Owner:</property>
+                                        <property name="use_underline">True</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkComboBox" id="details-trust-combobox">
+                                        <property name="visible">True</property>
+                                        <property name="model">model1</property>
+                                        <signal name="changed" handler="on_pgp_details_trust_changed"/>
+                                        <child>
+                                          <object class="GtkCellRendererText" id="renderer1"/>
+                                          <attributes>
+                                            <attribute name="text">0</attribute>
+                                          </attributes>
+                                        </child>
+                                      </object>
+                                      <packing>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkExpander" id="subkey-expander">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <child>
+                      <object class="GtkHBox" id="hbox10">
+                        <property name="visible">True</property>
+                        <child>
+                          <object class="GtkAlignment" id="alignment28">
+                            <property name="visible">True</property>
+                            <property name="top_padding">6</property>
+                            <property name="left_padding">12</property>
+                            <child>
+                              <object class="GtkScrolledWindow" id="scrolledwindow2">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="hscrollbar_policy">automatic</property>
+                                <property name="vscrollbar_policy">automatic</property>
+                                <property name="shadow_type">in</property>
+                                <child>
+                                  <object class="GtkTreeView" id="details-subkey-tree">
+                                    <property name="height_request">100</property>
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                  </object>
+                                </child>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                    <child type="label">
+                      <object class="GtkLabel" id="label33">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">&lt;b&gt;_Subkeys&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                        <property name="use_underline">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="label22222">
+                <property name="visible">True</property>
+                <property name="xpad">3</property>
+                <property name="label" translatable="yes">Details</property>
+              </object>
+              <packing>
+                <property name="position">2</property>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area1">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="helpbutton1">
+                <property name="label">gtk-help</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="closebutton1">
+                <property name="label">gtk-close</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-11">helpbutton1</action-widget>
+      <action-widget response="-7">closebutton1</action-widget>
+    </action-widgets>
+  </object>
+</interface>
diff --git a/pgp/seahorse-revoke.glade b/pgp/seahorse-revoke.xml
similarity index 64%
rename from pgp/seahorse-revoke.glade
rename to pgp/seahorse-revoke.xml
index 3026eec..e4e1378 100644
--- a/pgp/seahorse-revoke.glade
+++ b/pgp/seahorse-revoke.xml
@@ -1,19 +1,19 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
-<!--*- mode: xml -*-->
-<glade-interface>
-  <widget class="GtkDialog" id="revoke">
+<?xml version="1.0"?>
+<interface>
+  <requires lib="gtk+" version="2.16"/>
+  <!-- interface-naming-policy toplevel-contextual -->
+  <object class="GtkDialog" id="revoke">
     <property name="visible">True</property>
     <property name="border_width">5</property>
-    <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+    <property name="type_hint">dialog</property>
     <property name="has_separator">False</property>
-    <signal name="delete_event" handler="delete_event"/>
+    <signal name="delete_event" handler="on_widget_delete_event"/>
     <child internal-child="vbox">
-      <widget class="GtkVBox" id="dialog-vbox1">
+      <object class="GtkVBox" id="dialog-vbox1">
         <property name="visible">True</property>
         <property name="spacing">2</property>
         <child>
-          <widget class="GtkTable" id="table1">
+          <object class="GtkTable" id="table1">
             <property name="visible">True</property>
             <property name="border_width">5</property>
             <property name="n_rows">2</property>
@@ -21,9 +21,9 @@
             <property name="column_spacing">12</property>
             <property name="row_spacing">6</property>
             <child>
-              <widget class="GtkComboBox" id="reason">
+              <object class="GtkComboBox" id="reason">
                 <property name="visible">True</property>
-              </widget>
+              </object>
               <packing>
                 <property name="left_attach">1</property>
                 <property name="right_attach">2</property>
@@ -31,32 +31,32 @@
               </packing>
             </child>
             <child>
-              <widget class="GtkEventBox" id="eventbox1">
+              <object class="GtkEventBox" id="eventbox1">
                 <property name="visible">True</property>
-                <property name="tooltip" translatable="yes">Reason for revoking the key</property>
+                <property name="tooltip_text" translatable="yes">Reason for revoking the key</property>
                 <child>
-                  <widget class="GtkLabel" id="label1">
+                  <object class="GtkLabel" id="label1">
                     <property name="visible">True</property>
                     <property name="xalign">0</property>
                     <property name="label" translatable="yes">_Reason:</property>
                     <property name="use_underline">True</property>
                     <property name="mnemonic_widget">reason</property>
-                  </widget>
+                  </object>
                 </child>
-              </widget>
+              </object>
               <packing>
                 <property name="x_options">GTK_FILL</property>
                 <property name="y_options"></property>
               </packing>
             </child>
             <child>
-              <widget class="GtkLabel" id="label2">
+              <object class="GtkLabel" id="label2">
                 <property name="visible">True</property>
                 <property name="xalign">0</property>
                 <property name="label" translatable="yes">_Description:</property>
                 <property name="use_underline">True</property>
                 <property name="mnemonic_widget">description</property>
-              </widget>
+              </object>
               <packing>
                 <property name="top_attach">1</property>
                 <property name="bottom_attach">2</property>
@@ -65,12 +65,12 @@
               </packing>
             </child>
             <child>
-              <widget class="GtkEntry" id="description">
+              <object class="GtkEntry" id="description">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
+                <property name="tooltip_text" translatable="yes">Optional description of revocation</property>
                 <property name="activates_default">True</property>
-                <property name="tooltip" translatable="yes">Optional description of revocation</property>
-              </widget>
+              </object>
               <packing>
                 <property name="left_attach">1</property>
                 <property name="right_attach">2</property>
@@ -79,96 +79,112 @@
                 <property name="y_options"></property>
               </packing>
             </child>
-          </widget>
+          </object>
           <packing>
             <property name="position">1</property>
           </packing>
         </child>
         <child internal-child="action_area">
-          <widget class="GtkHButtonBox" id="dialog-action_area1">
+          <object class="GtkHButtonBox" id="dialog-action_area1">
             <property name="visible">True</property>
-            <property name="layout_style">GTK_BUTTONBOX_END</property>
+            <property name="layout_style">end</property>
             <child>
-              <widget class="GtkButton" id="helpbutton1">
+              <object class="GtkButton" id="helpbutton1">
+                <property name="label">gtk-help</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="can_default">True</property>
-                <property name="label">gtk-help</property>
+                <property name="receives_default">False</property>
                 <property name="use_stock">True</property>
-                <property name="response_id">-11</property>
-                <signal name="clicked" handler="help"/>
-              </widget>
+                <signal name="clicked" handler="on_widget_help"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
             </child>
             <child>
-              <widget class="GtkButton" id="cancelbutton1">
+              <object class="GtkButton" id="cancelbutton1">
+                <property name="label">gtk-cancel</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="can_default">True</property>
-                <property name="label">gtk-cancel</property>
+                <property name="receives_default">False</property>
                 <property name="use_stock">True</property>
-                <property name="response_id">-6</property>
-                <signal name="clicked" handler="closed"/>
-              </widget>
+                <signal name="clicked" handler="on_widget_closed"/>
+              </object>
               <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
                 <property name="position">1</property>
               </packing>
             </child>
             <child>
-              <widget class="GtkButton" id="okbutton1">
+              <object class="GtkButton" id="okbutton1">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="can_default">True</property>
                 <property name="has_default">True</property>
-                <property name="tooltip" translatable="yes">Revoke key</property>
-                <property name="response_id">-5</property>
-                <signal name="clicked" handler="ok_clicked"/>
+                <property name="receives_default">False</property>
+                <property name="tooltip_text" translatable="yes">Revoke key</property>
+                <signal name="clicked" handler="on_gpgme_revoke_ok_clicked"/>
                 <child>
-                  <widget class="GtkAlignment" id="alignment1">
+                  <object class="GtkAlignment" id="alignment1">
                     <property name="visible">True</property>
                     <property name="xscale">0</property>
                     <property name="yscale">0</property>
                     <child>
-                      <widget class="GtkHBox" id="hbox1">
+                      <object class="GtkHBox" id="hbox1">
                         <property name="visible">True</property>
                         <property name="spacing">2</property>
                         <child>
-                          <widget class="GtkImage" id="image1">
+                          <object class="GtkImage" id="image1">
                             <property name="visible">True</property>
                             <property name="stock">gtk-ok</property>
-                          </widget>
+                          </object>
                           <packing>
                             <property name="expand">False</property>
                             <property name="fill">False</property>
+                            <property name="position">0</property>
                           </packing>
                         </child>
                         <child>
-                          <widget class="GtkLabel" id="label3">
+                          <object class="GtkLabel" id="label3">
                             <property name="visible">True</property>
                             <property name="label" translatable="yes">Re_voke</property>
                             <property name="use_underline">True</property>
-                          </widget>
+                          </object>
                           <packing>
                             <property name="expand">False</property>
                             <property name="fill">False</property>
                             <property name="position">1</property>
                           </packing>
                         </child>
-                      </widget>
+                      </object>
                     </child>
-                  </widget>
+                  </object>
                 </child>
-              </widget>
+              </object>
               <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
                 <property name="position">2</property>
               </packing>
             </child>
-          </widget>
+          </object>
           <packing>
             <property name="expand">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
           </packing>
         </child>
-      </widget>
+      </object>
     </child>
-  </widget>
-</glade-interface>
+    <action-widgets>
+      <action-widget response="-11">helpbutton1</action-widget>
+      <action-widget response="-6">cancelbutton1</action-widget>
+      <action-widget response="-5">okbutton1</action-widget>
+    </action-widgets>
+  </object>
+</interface>
diff --git a/pgp/seahorse-sign.xml b/pgp/seahorse-sign.xml
new file mode 100644
index 0000000..4316bf4
--- /dev/null
+++ b/pgp/seahorse-sign.xml
@@ -0,0 +1,514 @@
+<?xml version="1.0"?>
+<interface>
+  <requires lib="gtk+" version="2.16"/>
+  <!-- interface-naming-policy toplevel-contextual -->
+  <object class="GtkDialog" id="sign">
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes">Sign Key</property>
+    <property name="resizable">False</property>
+    <property name="window_position">center</property>
+    <property name="type_hint">dialog</property>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox1">
+        <property name="visible">True</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkVBox" id="vbox1">
+            <property name="visible">True</property>
+            <property name="border_width">5</property>
+            <property name="spacing">18</property>
+            <child>
+              <object class="GtkHBox" id="hbox3">
+                <property name="visible">True</property>
+                <property name="spacing">12</property>
+                <child>
+                  <object class="GtkImage" id="sign-image">
+                    <property name="visible">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkVBox" id="vbox11">
+                    <property name="visible">True</property>
+                    <property name="spacing">6</property>
+                    <child>
+                      <object class="GtkLabel" id="label13">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="yalign">0</property>
+                        <property name="label" translatable="yes">By signing you indicate your trust that this key belongs to:</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="sign-uid-text">
+                        <property name="visible">True</property>
+                        <property name="yalign">0</property>
+                        <property name="label" translatable="yes">&lt;i&gt;Key Name&lt;/i&gt;</property>
+                        <property name="use_markup">True</property>
+                        <property name="justify">center</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkVBox" id="vbox6">
+                <property name="visible">True</property>
+                <property name="spacing">12</property>
+                <child>
+                  <object class="GtkLabel" id="label8">
+                    <property name="visible">True</property>
+                    <property name="xalign">0</property>
+                    <property name="yalign">0</property>
+                    <property name="label" translatable="yes">&lt;b&gt;How carefully have you checked this key?&lt;/b&gt;</property>
+                    <property name="use_markup">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkAlignment" id="alignment5">
+                    <property name="visible">True</property>
+                    <property name="xalign">1</property>
+                    <property name="yalign">1</property>
+                    <property name="left_padding">12</property>
+                    <child>
+                      <object class="GtkVBox" id="vbox2">
+                        <property name="visible">True</property>
+                        <property name="spacing">6</property>
+                        <child>
+                          <object class="GtkVBox" id="vbox3">
+                            <property name="visible">True</property>
+                            <property name="spacing">6</property>
+                            <child>
+                              <object class="GtkHBox" id="hbox4">
+                                <property name="visible">True</property>
+                                <property name="spacing">12</property>
+                                <property name="homogeneous">True</property>
+                                <child>
+                                  <object class="GtkRadioButton" id="sign-choice-not">
+                                    <property name="label" translatable="yes">_Not at all</property>
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">False</property>
+                                    <property name="use_underline">True</property>
+                                    <property name="draw_indicator">True</property>
+                                    <signal name="group_changed" handler="on_gpgme_sign_choice_toggled"/>
+                                  </object>
+                                  <packing>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkRadioButton" id="sign-choice-casual">
+                                    <property name="label" translatable="yes">_Casually</property>
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">False</property>
+                                    <property name="use_underline">True</property>
+                                    <property name="draw_indicator">True</property>
+                                    <property name="group">sign-choice-not</property>
+                                    <signal name="group_changed" handler="on_gpgme_sign_choice_toggled"/>
+                                  </object>
+                                  <packing>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkRadioButton" id="sign-choice-careful">
+                                    <property name="label" translatable="yes">_Very Carefully</property>
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">False</property>
+                                    <property name="use_underline">True</property>
+                                    <property name="draw_indicator">True</property>
+                                    <property name="group">sign-choice-not</property>
+                                    <signal name="group_changed" handler="on_gpgme_sign_choice_toggled"/>
+                                  </object>
+                                  <packing>
+                                    <property name="position">2</property>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="fill">False</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkAlignment" id="alignment2">
+                                <property name="visible">True</property>
+                                <property name="xalign">1</property>
+                                <property name="yalign">1</property>
+                                <property name="left_padding">18</property>
+                                <child>
+                                  <object class="GtkVBox" id="vbox12">
+                                    <property name="visible">True</property>
+                                    <child>
+                                      <object class="GtkLabel" id="sign-display-not">
+                                        <property name="can_focus">True</property>
+                                        <property name="xalign">0</property>
+                                        <property name="yalign">0</property>
+                                        <property name="label" translatable="yes">&lt;i&gt;Not at all:&lt;/i&gt; means you believe the key is owned by the person who claims to own it, but you could not or did not verify this to be a fact.</property>
+                                        <property name="use_markup">True</property>
+                                        <property name="justify">fill</property>
+                                        <property name="wrap">True</property>
+                                        <property name="selectable">True</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkLabel" id="sign-display-casual">
+                                        <property name="can_focus">True</property>
+                                        <property name="xalign">0</property>
+                                        <property name="yalign">0</property>
+                                        <property name="label" translatable="yes">&lt;i&gt;Casually:&lt;/i&gt; means you have done a casual verification that the key is owned by the person who claims to own it. For example, you could read the key fingerprint to the owner over the phone. </property>
+                                        <property name="use_markup">True</property>
+                                        <property name="justify">fill</property>
+                                        <property name="wrap">True</property>
+                                        <property name="selectable">True</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkVBox" id="sign-display-careful">
+                                        <property name="spacing">6</property>
+                                        <child>
+                                          <object class="GtkEventBox" id="eventbox1">
+                                            <property name="visible">True</property>
+                                            <child>
+                                              <object class="GtkLabel" id="label7">
+                                                <property name="visible">True</property>
+                                                <property name="can_focus">True</property>
+                                                <property name="xalign">0</property>
+                                                <property name="yalign">0</property>
+                                                <property name="label" translatable="yes">&lt;i&gt;Very Carefully:&lt;/i&gt; Select this only if you are absolutely sure that this key is genuine.</property>
+                                                <property name="use_markup">True</property>
+                                                <property name="justify">fill</property>
+                                                <property name="wrap">True</property>
+                                                <property name="selectable">True</property>
+                                              </object>
+                                            </child>
+                                          </object>
+                                          <packing>
+                                            <property name="expand">False</property>
+                                            <property name="position">0</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkLabel" id="label12">
+                                            <property name="visible">True</property>
+                                            <property name="can_focus">True</property>
+                                            <property name="xalign">0</property>
+                                            <property name="yalign">0</property>
+                                            <property name="label" translatable="yes">You could use a hard to forge photo identification (such as a passport) to personally check that the name on the key is correct. You should have also used email to check that the email address belongs to the owner.</property>
+                                            <property name="use_markup">True</property>
+                                            <property name="justify">fill</property>
+                                            <property name="wrap">True</property>
+                                            <property name="selectable">True</property>
+                                          </object>
+                                          <packing>
+                                            <property name="expand">False</property>
+                                            <property name="position">1</property>
+                                          </packing>
+                                        </child>
+                                      </object>
+                                      <packing>
+                                        <property name="position">2</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkVBox" id="vbox8">
+                <property name="visible">True</property>
+                <property name="spacing">12</property>
+                <child>
+                  <object class="GtkLabel" id="label9">
+                    <property name="visible">True</property>
+                    <property name="xalign">0</property>
+                    <property name="label" translatable="yes">&lt;b&gt;How others will see this signature:&lt;/b&gt;</property>
+                    <property name="use_markup">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkAlignment" id="alignment6">
+                    <property name="visible">True</property>
+                    <property name="left_padding">12</property>
+                    <child>
+                      <object class="GtkVBox" id="vbox7">
+                        <property name="visible">True</property>
+                        <property name="spacing">12</property>
+                        <child>
+                          <object class="GtkCheckButton" id="sign-option-local">
+                            <property name="label" translatable="yes">_Others may not see this signature</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="tooltip_text">If signature is local to the key ring and won't be exported with the key</property>
+                            <property name="use_underline">True</property>
+                            <property name="draw_indicator">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkCheckButton" id="sign-option-revocable">
+                            <property name="label" translatable="yes">I can _revoke this signature at a later date.</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="tooltip_text">If signature can be revoked</property>
+                            <property name="use_underline">True</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkVBox" id="signer-frame">
+                <property name="visible">True</property>
+                <property name="spacing">12</property>
+                <child>
+                  <object class="GtkLabel" id="label10">
+                    <property name="visible">True</property>
+                    <property name="xalign">0</property>
+                    <property name="label" translatable="yes">&lt;b&gt;Sign key as:&lt;/b&gt;</property>
+                    <property name="use_markup">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkAlignment" id="alignment7">
+                    <property name="visible">True</property>
+                    <property name="left_padding">12</property>
+                    <child>
+                      <object class="GtkHBox" id="hbox2">
+                        <property name="visible">True</property>
+                        <property name="spacing">6</property>
+                        <child>
+                          <object class="GtkLabel" id="label11">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">_Signer:</property>
+                            <property name="use_underline">True</property>
+                            <property name="mnemonic_widget">signer-select</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkComboBox" id="signer-select">
+                            <property name="visible">True</property>
+                          </object>
+                          <packing>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">3</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area1">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="helpbutton1">
+                <property name="label">gtk-help</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+                <signal name="clicked" handler="on_widget_help"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="cancelbutton1">
+                <property name="label">gtk-cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+                <signal name="clicked" handler="on_widget_closed"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="okbutton1">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="receives_default">False</property>
+                <child>
+                  <object class="GtkAlignment" id="alignment1">
+                    <property name="visible">True</property>
+                    <property name="xscale">0</property>
+                    <property name="yscale">0</property>
+                    <child>
+                      <object class="GtkHBox" id="hbox1">
+                        <property name="visible">True</property>
+                        <property name="spacing">2</property>
+                        <child>
+                          <object class="GtkImage" id="image1">
+                            <property name="visible">True</property>
+                            <property name="stock">gtk-ok</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label4">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">_Sign</property>
+                            <property name="use_underline">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-11">helpbutton1</action-widget>
+      <action-widget response="-6">cancelbutton1</action-widget>
+      <action-widget response="-5">okbutton1</action-widget>
+    </action-widgets>
+  </object>
+</interface>
diff --git a/pgp/seahorse-signer.c b/pgp/seahorse-signer.c
index 6f114a2..2bc706c 100755
--- a/pgp/seahorse-signer.c
+++ b/pgp/seahorse-signer.c
@@ -78,7 +78,7 @@ seahorse_signer_get (GtkWindow *parent)
     swidget = seahorse_widget_new ("signer", parent);
     g_return_val_if_fail (swidget != NULL, NULL);
             
-    combo = glade_xml_get_widget (swidget->xml, "signer-select");
+    combo = GTK_WIDGET (seahorse_widget_get_widget (swidget, "signer-select"));
     g_return_val_if_fail (combo != NULL, NULL);
     seahorse_combo_keys_attach (GTK_COMBO_BOX (combo), skset, NULL);
     g_object_unref (skset);
diff --git a/pgp/seahorse-signer.xml b/pgp/seahorse-signer.xml
new file mode 100644
index 0000000..4da27fa
--- /dev/null
+++ b/pgp/seahorse-signer.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0"?>
+<!-- Generated with glade3
+	Version: 3.0.1
+	Date: Thu Dec 28 22:27:44 2006
+	User: sadam
+	Host: merseine
+-->
+<interface>
+  <object class="GtkDialog" id="signer">
+    <property name="border_width">5</property>
+    <property name="title">Choose Signing Key</property>
+    <property name="resizable">False</property>
+    <property name="modal">True</property>
+    <property name="default_width">400</property>
+    <property name="has_separator">False</property>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox1">
+        <property name="visible">True</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkVBox" id="vbox1">
+            <property name="visible">True</property>
+            <property name="border_width">5</property>
+            <property name="spacing">12</property>
+            <child>
+              <object class="GtkLabel" id="label2">
+                <property name="visible">True</property>
+                <property name="xalign">0.000000</property>
+                <property name="label" translatable="yes">_Sign message with key:</property>
+                <property name="use_underline">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkHBox" id="sign_key_place">
+                <property name="visible">True</property>
+                <child>
+                  <object class="GtkComboBox" id="signer-select">
+                    <property name="visible">True</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area1">
+            <property name="visible">True</property>
+            <property name="layout_style">GTK_BUTTONBOX_END</property>
+            <child>
+              <object class="GtkButton" id="cancel">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="label">gtk-cancel</property>
+                <property name="use_stock">True</property>
+              </object>
+            </child>
+            <child>
+              <object class="GtkButton" id="ok">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="has_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="label">gtk-ok</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">GTK_PACK_END</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-6">cancel</action-widget>
+      <action-widget response="-5">ok</action-widget>
+    </action-widgets>
+  </object>
+</interface>
diff --git a/pkcs11/Makefile.am b/pkcs11/Makefile.am
index f468635..6dc0457 100644
--- a/pkcs11/Makefile.am
+++ b/pkcs11/Makefile.am
@@ -1,5 +1,5 @@
 
-gladedir = $(datadir)/seahorse/glade/
+uidir = $(datadir)/seahorse/ui/
 localedir = $(datadir)/locale
 seahorselibexecbindir = $(libdir)/seahorse/
 
@@ -9,7 +9,7 @@ INCLUDES = -I$(top_builddir) \
 	-I$(top_srcdir)/libseahorse \
 	$(SEAHORSE_CFLAGS) \
 	-DDATA_DIR=\""$(datadir)"\" \
-	-DSEAHORSE_GLADEDIR=\""$(gladedir)"\" \
+	-DSEAHORSE_UIDIR=\""$(uidir)"\" \
 	-DLOCALEDIR=\"$(localedir)\" \
 	-DEXECDIR=\""$(seahorselibexecbindir)"\" \
 	-DLIBCRYPTUI_API_SUBJECT_TO_CHANGE \
@@ -33,7 +33,7 @@ libseahorse_pkcs11_la_LIBADD = \
 	$(top_builddir)/libseahorse/libseahorse.la \
 	$(top_builddir)/libcryptui/libcryptui.la
 
-glade_DATA = 
+ui_DATA =
 
 EXTRA_DIST = \
-	$(glade_DATA) 
+	$(ui_DATA)
diff --git a/src/Makefile.am b/src/Makefile.am
index a2ae133..370b0da 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,5 +1,5 @@
 
-gladedir = $(datadir)/seahorse/glade/
+uidir = $(datadir)/seahorse/ui/
 localedir = $(datadir)/locale
 pixmapsdir = $(datadir)/pixmaps/
 
@@ -10,7 +10,7 @@ INCLUDES = -I$(top_builddir) \
 	-I$(top_srcdir)/libseahorse \
 	$(SEAHORSE_CFLAGS) \
 	-DDATA_DIR=\""$(datadir)"\" \
-	-DSEAHORSE_GLADEDIR=\""$(gladedir)"\" \
+	-DSEAHORSE_UIDIR=\""$(uidir)"\" \
 	-DLOCALEDIR=\"$(localedir)\" \
 	-DPIXMAPSDIR=\""$(pixmapsdir)"\" \
 	-DLIBCRYPTUI_API_SUBJECT_TO_CHANGE \
@@ -65,15 +65,15 @@ seahorse_LDADD = \
 	$(top_builddir)/libegg/libeggdatetime.la \
 	$(SEAHORSE_LIBS)
 
-glade_DATA = \
-	seahorse-key-manager.glade \
+ui_DATA = \
 	seahorse-key-manager.ui \
-	seahorse-change-passphrase.glade \
-	seahorse-generate-select.glade \
-	seahorse-keyserver-search.glade \
-	seahorse-keyserver-results.glade \
+	seahorse-key-manager.xml \
+	seahorse-change-passphrase.xml \
+	seahorse-generate-select.xml \
+	seahorse-keyserver-search.xml \
 	seahorse-keyserver-results.ui \
-	seahorse-keyserver-sync.glade 
+	seahorse-keyserver-results.xml \
+	seahorse-keyserver-sync.xml
 
 desktopdir = $(datadir)/applications
 desktop_in_files = seahorse.desktop.in 
@@ -81,9 +81,9 @@ desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
 @INTLTOOL_DESKTOP_RULE@
 
 EXTRA_DIST = \
-	$(glade_DATA) \
+	$(ui_DATA) \
 	seahorse.desktop.in.in
 
-CLEANFILES = *.gladep* *.bak \
+CLEANFILES = *.xmlp* *.bak \
     $(desktop_DATA) \
     seahorse.desktop.in 
diff --git a/src/seahorse-change-passphrase.xml b/src/seahorse-change-passphrase.xml
new file mode 100644
index 0000000..053ef1c
--- /dev/null
+++ b/src/seahorse-change-passphrase.xml
@@ -0,0 +1,184 @@
+<?xml version="1.0"?>
+<!--*- mode: xml -*-->
+<interface>
+  <object class="GtkDialog" id="change-passphrase">
+    <property name="border_width">5</property>
+    <property name="visible">True</property>
+    <property name="title" translatable="yes">Change Passphrase</property>
+    <property name="type">GTK_WINDOW_TOPLEVEL</property>
+    <property name="window_position">GTK_WIN_POS_NONE</property>
+    <property name="modal">True</property>
+    <property name="resizable">True</property>
+    <property name="destroy_with_parent">False</property>
+    <property name="decorated">True</property>
+    <property name="skip_taskbar_hint">False</property>
+    <property name="skip_pager_hint">False</property>
+    <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+    <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+    <property name="focus_on_map">True</property>
+    <property name="urgency_hint">False</property>
+    <property name="has_separator">False</property>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox1">
+        <property name="visible">True</property>
+        <property name="homogeneous">False</property>
+        <property name="spacing">2</property>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area1">
+            <property name="visible">True</property>
+            <property name="layout_style">GTK_BUTTONBOX_END</property>
+            <child>
+              <object class="GtkButton" id="cancelbutton1">
+                <property name="visible">True</property>
+                <property name="can_default">True</property>
+                <property name="can_focus">True</property>
+                <property name="label">gtk-cancel</property>
+                <property name="use_stock">True</property>
+                <property name="relief">GTK_RELIEF_NORMAL</property>
+                <property name="focus_on_click">True</property>
+              </object>
+            </child>
+            <child>
+              <object class="GtkButton" id="ok">
+                <property name="visible">True</property>
+                <property name="sensitive">False</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="can_focus">True</property>
+                <property name="label">gtk-ok</property>
+                <property name="use_stock">True</property>
+                <property name="relief">GTK_RELIEF_NORMAL</property>
+                <property name="focus_on_click">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="padding">0</property>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="pack_type">GTK_PACK_END</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkTable" id="table1">
+            <property name="border_width">5</property>
+            <property name="visible">True</property>
+            <property name="n_rows">2</property>
+            <property name="n_columns">2</property>
+            <property name="homogeneous">False</property>
+            <property name="row_spacing">6</property>
+            <property name="column_spacing">12</property>
+            <child>
+              <object class="GtkEntry" id="pass">
+                <property name="visible">True</property>
+                <property name="tooltip-text" translatable="yes">Enter new passphrase</property>
+                <property name="can_focus">True</property>
+                <property name="has_focus">True</property>
+                <property name="editable">True</property>
+                <property name="visibility">False</property>
+                <property name="max_length">0</property>
+                <property name="text" translatable="yes"/>
+                <property name="has_frame">True</property>
+                <property name="activates_default">True</property>
+                <signal handler="entry_changed" last_modification_time="Thu, 13 Mar 2003 01:41:21 GMT" name="changed"/>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="top_attach">0</property>
+                <property name="bottom_attach">1</property>
+                <property name="y_options"/>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="label1">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">New _Passphrase:</property>
+                <property name="use_underline">True</property>
+                <property name="use_markup">False</property>
+                <property name="justify">GTK_JUSTIFY_LEFT</property>
+                <property name="wrap">False</property>
+                <property name="selectable">False</property>
+                <property name="xalign">0</property>
+                <property name="yalign">0.5</property>
+                <property name="xpad">0</property>
+                <property name="ypad">0</property>
+                <property name="mnemonic_widget">pass</property>
+                <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                <property name="width_chars">-1</property>
+                <property name="single_line_mode">False</property>
+                <property name="angle">0</property>
+              </object>
+              <packing>
+                <property name="left_attach">0</property>
+                <property name="right_attach">1</property>
+                <property name="top_attach">0</property>
+                <property name="bottom_attach">1</property>
+                <property name="x_options">fill</property>
+                <property name="y_options"/>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkEntry" id="confirm">
+                <property name="visible">True</property>
+                <property name="tooltip-text" translatable="yes">Confirm new passphrase</property>
+                <property name="can_focus">True</property>
+                <property name="editable">True</property>
+                <property name="visibility">False</property>
+                <property name="max_length">0</property>
+                <property name="text" translatable="yes"/>
+                <property name="has_frame">True</property>
+                <property name="activates_default">True</property>
+                <signal handler="entry_changed" last_modification_time="Thu, 13 Mar 2003 01:41:14 GMT" name="changed"/>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+                <property name="y_options"/>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="label2">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">Con_firm Passphrase:</property>
+                <property name="use_underline">True</property>
+                <property name="use_markup">False</property>
+                <property name="justify">GTK_JUSTIFY_LEFT</property>
+                <property name="wrap">False</property>
+                <property name="selectable">False</property>
+                <property name="xalign">0</property>
+                <property name="yalign">0.5</property>
+                <property name="xpad">0</property>
+                <property name="ypad">0</property>
+                <property name="mnemonic_widget">confirm</property>
+                <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                <property name="width_chars">-1</property>
+                <property name="single_line_mode">False</property>
+                <property name="angle">0</property>
+              </object>
+              <packing>
+                <property name="left_attach">0</property>
+                <property name="right_attach">1</property>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+                <property name="x_options">fill</property>
+                <property name="y_options"/>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="padding">0</property>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-6">cancelbutton1</action-widget>
+      <action-widget response="-5">ok</action-widget>
+    </action-widgets>
+  </object>
+</interface>
diff --git a/src/seahorse-generate-select.xml b/src/seahorse-generate-select.xml
new file mode 100644
index 0000000..a8faf95
--- /dev/null
+++ b/src/seahorse-generate-select.xml
@@ -0,0 +1,207 @@
+<?xml version="1.0"?>
+<!--*- mode: xml -*-->
+<interface>
+  <object class="GtkDialog" id="generate-select">
+    <property name="border_width">6</property>
+    <property name="visible">True</property>
+    <property name="title" translatable="yes">Create New ...</property>
+    <property name="type">GTK_WINDOW_TOPLEVEL</property>
+    <property name="window_position">GTK_WIN_POS_CENTER</property>
+    <property name="modal">False</property>
+    <property name="resizable">True</property>
+    <property name="destroy_with_parent">False</property>
+    <property name="decorated">True</property>
+    <property name="skip_taskbar_hint">False</property>
+    <property name="skip_pager_hint">False</property>
+    <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+    <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+    <property name="focus_on_map">True</property>
+    <property name="urgency_hint">False</property>
+    <property name="has_separator">False</property>
+    <accelerator key="Return" modifiers="0" signal="activate_default"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox1">
+        <property name="visible">True</property>
+        <property name="homogeneous">False</property>
+        <property name="spacing">2</property>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area1">
+            <property name="visible">True</property>
+            <property name="layout_style">GTK_BUTTONBOX_END</property>
+            <child>
+              <object class="GtkButton" id="button1">
+                <property name="visible">True</property>
+                <property name="can_default">True</property>
+                <property name="can_focus">True</property>
+                <property name="label">gtk-cancel</property>
+                <property name="use_stock">True</property>
+                <property name="relief">GTK_RELIEF_NORMAL</property>
+                <property name="focus_on_click">True</property>
+              </object>
+            </child>
+            <child>
+              <object class="GtkButton" id="button2">
+                <property name="visible">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="can_focus">True</property>
+                <property name="relief">GTK_RELIEF_NORMAL</property>
+                <property name="focus_on_click">True</property>
+                <child>
+                  <object class="GtkAlignment" id="alignment2">
+                    <property name="visible">True</property>
+                    <property name="xalign">0.5</property>
+                    <property name="yalign">0.5</property>
+                    <property name="xscale">0</property>
+                    <property name="yscale">0</property>
+                    <property name="top_padding">0</property>
+                    <property name="bottom_padding">0</property>
+                    <property name="left_padding">0</property>
+                    <property name="right_padding">0</property>
+                    <child>
+                      <object class="GtkHBox" id="hbox2">
+                        <property name="visible">True</property>
+                        <property name="homogeneous">False</property>
+                        <property name="spacing">2</property>
+                        <child>
+                          <object class="GtkImage" id="image2">
+                            <property name="visible">True</property>
+                            <property name="stock">gtk-go-forward</property>
+                            <property name="icon_size">4</property>
+                            <property name="xalign">0.5</property>
+                            <property name="yalign">0.5</property>
+                            <property name="xpad">0</property>
+                            <property name="ypad">0</property>
+                          </object>
+                          <packing>
+                            <property name="padding">0</property>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label3">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">C_ontinue</property>
+                            <property name="use_underline">True</property>
+                            <property name="use_markup">False</property>
+                            <property name="justify">GTK_JUSTIFY_LEFT</property>
+                            <property name="wrap">False</property>
+                            <property name="selectable">False</property>
+                            <property name="xalign">0.5</property>
+                            <property name="yalign">0.5</property>
+                            <property name="xpad">0</property>
+                            <property name="ypad">0</property>
+                            <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                            <property name="width_chars">-1</property>
+                            <property name="single_line_mode">False</property>
+                            <property name="angle">0</property>
+                          </object>
+                          <packing>
+                            <property name="padding">0</property>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="padding">0</property>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="pack_type">GTK_PACK_END</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkVBox" id="vbox1">
+            <property name="border_width">5</property>
+            <property name="visible">True</property>
+            <property name="homogeneous">False</property>
+            <property name="spacing">12</property>
+            <child>
+              <object class="GtkLabel" id="label4">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">&lt;b&gt;_Select the type of item to create:&lt;/b&gt;</property>
+                <property name="use_underline">True</property>
+                <property name="use_markup">True</property>
+                <property name="justify">GTK_JUSTIFY_LEFT</property>
+                <property name="wrap">False</property>
+                <property name="selectable">False</property>
+                <property name="xalign">0</property>
+                <property name="yalign">0</property>
+                <property name="xpad">0</property>
+                <property name="ypad">0</property>
+                <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                <property name="width_chars">-1</property>
+                <property name="single_line_mode">False</property>
+                <property name="angle">0</property>
+              </object>
+              <packing>
+                <property name="padding">0</property>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkAlignment" id="alignment3">
+                <property name="visible">True</property>
+                <property name="xalign">0.5</property>
+                <property name="yalign">0.5</property>
+                <property name="xscale">1</property>
+                <property name="yscale">1</property>
+                <property name="top_padding">0</property>
+                <property name="bottom_padding">0</property>
+                <property name="left_padding">12</property>
+                <property name="right_padding">0</property>
+                <child>
+                  <object class="GtkScrolledWindow" id="scrolledwindow1">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+                    <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                    <property name="shadow_type">GTK_SHADOW_IN</property>
+                    <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+                    <child>
+                      <object class="GtkTreeView" id="keytype-tree">
+                        <property name="height_request">210</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="has_focus">True</property>
+                        <property name="headers_visible">False</property>
+                        <property name="rules_hint">False</property>
+                        <property name="reorderable">False</property>
+                        <property name="enable_search">False</property>
+                        <property name="fixed_height_mode">False</property>
+                        <property name="hover_selection">False</property>
+                        <property name="hover_expand">False</property>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="padding">0</property>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="padding">0</property>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-6">button1</action-widget>
+      <action-widget response="-5">button2</action-widget>
+    </action-widgets>
+  </object>
+</interface>
diff --git a/src/seahorse-key-manager.c b/src/seahorse-key-manager.c
index 52fe669..bc72762 100644
--- a/src/seahorse-key-manager.c
+++ b/src/seahorse-key-manager.c
@@ -261,17 +261,6 @@ on_tab_changed (GtkNotebook* notebook, void* unused, guint page_num, SeahorseKey
 }
 
 static void 
-on_help_show (GtkButton* button, SeahorseKeyManager* self) 
-{
-	g_return_if_fail (SEAHORSE_IS_KEY_MANAGER (self));
-	g_return_if_fail (GTK_IS_BUTTON (button));
-	seahorse_widget_show_help (SEAHORSE_WIDGET (self));
-}
-
-
-
-
-static void 
 on_view_selection_changed (GtkTreeSelection* selection, SeahorseKeyManager* self) 
 {
 	g_return_if_fail (SEAHORSE_IS_KEY_MANAGER (self));
@@ -279,9 +268,9 @@ on_view_selection_changed (GtkTreeSelection* selection, SeahorseKeyManager* self
 	g_idle_add ((GSourceFunc)fire_selection_changed, self);
 }
 
-static void 
-on_row_activated (GtkTreeView* view, GtkTreePath* path, 
-                  GtkTreeViewColumn* column, SeahorseKeyManager* self) 
+G_MODULE_EXPORT void
+on_keymanager_row_activated (GtkTreeView* view, GtkTreePath* path, 
+                                  GtkTreeViewColumn* column, SeahorseKeyManager* self) 
 {
 	SeahorseObject* obj;
 
@@ -295,8 +284,8 @@ on_row_activated (GtkTreeView* view, GtkTreePath* path,
 		seahorse_viewer_show_properties (SEAHORSE_VIEWER (self), obj);
 }
 
-static gboolean 
-on_key_list_button_pressed (GtkTreeView* view, GdkEventButton* event, SeahorseKeyManager* self) 
+G_MODULE_EXPORT gboolean
+on_keymanager_key_list_button_pressed (GtkTreeView* view, GdkEventButton* event, SeahorseKeyManager* self) 
 {
 	g_return_val_if_fail (SEAHORSE_IS_KEY_MANAGER (self), FALSE);
 	g_return_val_if_fail (GTK_IS_TREE_VIEW (view), FALSE);
@@ -307,8 +296,8 @@ on_key_list_button_pressed (GtkTreeView* view, GdkEventButton* event, SeahorseKe
 	return FALSE;
 }
 
-static gboolean 
-on_key_list_popup_menu (GtkTreeView* view, SeahorseKeyManager* self) 
+G_MODULE_EXPORT gboolean
+on_keymanager_key_list_popup_menu (GtkTreeView* view, SeahorseKeyManager* self) 
 {
 	SeahorseObject* obj;
 
@@ -329,8 +318,8 @@ on_file_new (GtkAction* action, SeahorseKeyManager* self)
 	seahorse_generate_select_show (seahorse_viewer_get_window (SEAHORSE_VIEWER (self)));
 }
 
-static void 
-on_new_button_clicked (GtkButton* button, SeahorseKeyManager* self) 
+G_MODULE_EXPORT void 
+on_keymanager_new_button (GtkButton* button, SeahorseKeyManager* self) 
 {
 	g_return_if_fail (SEAHORSE_IS_KEY_MANAGER (self));
 	g_return_if_fail (GTK_IS_BUTTON (button));
@@ -365,9 +354,6 @@ initialize_tab (SeahorseKeyManager* self, const char* tabwidget, guint tabid, co
 	selection = gtk_tree_view_get_selection (view);
 	gtk_tree_selection_set_mode (selection, GTK_SELECTION_MULTIPLE);
 	g_signal_connect (selection, "changed", G_CALLBACK (on_view_selection_changed), self);
-	g_signal_connect (view, "row-activated", G_CALLBACK (on_row_activated), self);
-	g_signal_connect (view, "button-press-event", G_CALLBACK (on_key_list_button_pressed), self);
-	g_signal_connect (view, "popup-menu", G_CALLBACK (on_key_list_popup_menu), self);
 	gtk_widget_realize (GTK_WIDGET (view));
 
 	/* Add new key store and associate it */
@@ -514,8 +500,8 @@ on_key_import_file (GtkAction* action, SeahorseKeyManager* self)
 	import_prompt (self);
 }
 
-static void 
-on_import_button_clicked (GtkButton* button, SeahorseKeyManager* self) 
+G_MODULE_EXPORT void 
+on_keymanager_import_button (GtkButton* button, SeahorseKeyManager* self) 
 {
 	g_return_if_fail (SEAHORSE_IS_KEY_MANAGER (self));
 	g_return_if_fail (GTK_IS_BUTTON (button));
@@ -899,12 +885,10 @@ seahorse_key_manager_constructor (GType type, guint n_props, GObjectConstructPar
 	                         "delete-event", G_CALLBACK (on_delete_event), self, 0);
 	
 	/* first time signals */
-	g_signal_connect_object (seahorse_widget_get_widget (SEAHORSE_WIDGET (self), "help-button"), 
-	                         "clicked", G_CALLBACK (on_help_show), self, 0);
 	g_signal_connect_object (seahorse_widget_get_widget (SEAHORSE_WIDGET (self), "import-button"), 
-	                         "clicked", G_CALLBACK (on_import_button_clicked), self, 0);
+	                         "clicked", G_CALLBACK (on_keymanager_import_button), self, 0);
 	g_signal_connect_object (seahorse_widget_get_widget (SEAHORSE_WIDGET (self), "new-button"), 
-	                         "clicked", G_CALLBACK (on_new_button_clicked), self, 0);
+	                         "clicked", G_CALLBACK (on_keymanager_new_button), self, 0);
 	
 	/* The notebook */
 	g_signal_connect_object (self->pv->notebook, "switch-page", G_CALLBACK (on_tab_changed), self, G_CONNECT_AFTER);
diff --git a/src/seahorse-key-manager.xml b/src/seahorse-key-manager.xml
new file mode 100644
index 0000000..6fb07c6
--- /dev/null
+++ b/src/seahorse-key-manager.xml
@@ -0,0 +1,360 @@
+<?xml version="1.0"?>
+<interface>
+  <requires lib="gtk+" version="2.16"/>
+  <!-- interface-naming-policy toplevel-contextual -->
+  <object class="GtkWindow" id="key-manager">
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <property name="default_width">640</property>
+    <property name="default_height">476</property>
+    <child>
+      <object class="GtkVBox" id="vbox1">
+        <property name="visible">True</property>
+        <child>
+          <object class="GtkVBox" id="menu-placeholder">
+            <property name="visible">True</property>
+            <child>
+              <placeholder/>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkVBox" id="toolbar-placeholder">
+            <property name="visible">True</property>
+            <child>
+              <placeholder/>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkNotebook" id="notebook">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="border_width">3</property>
+            <child>
+              <object class="GtkScrolledWindow" id="sec-key-tab">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="border_width">3</property>
+                <property name="hscrollbar_policy">automatic</property>
+                <child>
+                  <object class="GtkTreeView" id="sec-key-list">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="border_width">12</property>
+                    <property name="rules_hint">True</property>
+                    <signal name="button_press_event" handler="on_keymanager_key_list_button_pressed"/>
+                    <signal name="row_activated" handler="on_keymanager_row_activated"/>
+                    <signal name="popup_menu" handler="on_keymanager_key_list_popup_menu"/>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="label26">
+                <property name="visible">True</property>
+                <property name="xpad">3</property>
+                <property name="label" translatable="yes">My _Personal Keys</property>
+                <property name="use_underline">True</property>
+              </object>
+              <packing>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkScrolledWindow" id="pub-key-tab">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="border_width">3</property>
+                <property name="hscrollbar_policy">automatic</property>
+                <child>
+                  <object class="GtkTreeView" id="pub-key-list">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="border_width">12</property>
+                    <property name="rules_hint">True</property>
+                    <signal name="button_press_event" handler="on_keymanager_key_list_button_pressed"/>
+                    <signal name="row_activated" handler="on_keymanager_row_activated"/>
+                    <signal name="popup_menu" handler="on_keymanager_key_list_popup_menu"/>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="label28">
+                <property name="visible">True</property>
+                <property name="xpad">3</property>
+                <property name="label" translatable="yes">Other _Collected Keys</property>
+                <property name="use_underline">True</property>
+              </object>
+              <packing>
+                <property name="position">2</property>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkScrolledWindow" id="password-tab">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="border_width">3</property>
+                <property name="hscrollbar_policy">automatic</property>
+                <child>
+                  <object class="GtkTreeView" id="password-list">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="border_width">12</property>
+                    <property name="rules_hint">True</property>
+                    <signal name="button_press_event" handler="on_keymanager_key_list_button_pressed"/>
+                    <signal name="row_activated" handler="on_keymanager_row_activated"/>
+                    <signal name="popup_menu" handler="on_keymanager_key_list_popup_menu"/>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="position">3</property>
+              </packing>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="label29">
+                <property name="visible">True</property>
+                <property name="xpad">3</property>
+                <property name="label" translatable="yes">_Passwords</property>
+                <property name="use_underline">True</property>
+              </object>
+              <packing>
+                <property name="position">3</property>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkAlignment" id="alignment5">
+            <property name="visible">True</property>
+            <property name="xalign">0</property>
+            <property name="yscale">0</property>
+            <child>
+              <object class="GtkVBox" id="first-time-box">
+                <property name="border_width">12</property>
+                <property name="spacing">6</property>
+                <child>
+                  <object class="GtkLabel" id="label17">
+                    <property name="visible">True</property>
+                    <property name="xalign">0</property>
+                    <property name="xpad">6</property>
+                    <property name="label" translatable="yes">&lt;big&gt;&lt;b&gt;First time options:&lt;/b&gt;&lt;/big&gt;</property>
+                    <property name="use_markup">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkHSeparator" id="hseparator3">
+                    <property name="visible">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkTable" id="table2">
+                    <property name="visible">True</property>
+                    <property name="border_width">6</property>
+                    <property name="n_rows">3</property>
+                    <property name="n_columns">2</property>
+                    <property name="column_spacing">12</property>
+                    <property name="row_spacing">6</property>
+                    <child>
+                      <object class="GtkButton" id="new-button">
+                        <property name="label">gtk-new</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="use_stock">True</property>
+                        <signal name="clicked" handler="on_keymanager_new_button"/>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="top_attach">2</property>
+                        <property name="bottom_attach">3</property>
+                        <property name="x_options"></property>
+                        <property name="y_options"></property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="label21">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Generate a new key of your own: </property>
+                      </object>
+                      <packing>
+                        <property name="top_attach">2</property>
+                        <property name="bottom_attach">3</property>
+                        <property name="x_options"></property>
+                        <property name="y_options"></property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkButton" id="import-button">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="has_focus">True</property>
+                        <property name="can_default">True</property>
+                        <property name="has_default">True</property>
+                        <property name="receives_default">False</property>
+                        <signal name="clicked" handler="on_keymanager_import_button"/>
+                        <child>
+                          <object class="GtkAlignment" id="alignment6">
+                            <property name="visible">True</property>
+                            <property name="xscale">0</property>
+                            <property name="yscale">0</property>
+                            <child>
+                              <object class="GtkHBox" id="hbox4">
+                                <property name="visible">True</property>
+                                <property name="spacing">2</property>
+                                <child>
+                                  <object class="GtkImage" id="image2">
+                                    <property name="visible">True</property>
+                                    <property name="stock">gtk-open</property>
+                                    <property name="icon-size">4</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkLabel" id="label20">
+                                    <property name="visible">True</property>
+                                    <property name="label" translatable="yes">_Import</property>
+                                    <property name="use_underline">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </object>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
+                        <property name="x_options"></property>
+                        <property name="y_options"></property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="label19">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Import existing keys from a file:</property>
+                      </object>
+                      <packing>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
+                        <property name="x_options"></property>
+                        <property name="y_options"></property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkButton" id="help-button">
+                        <property name="label">gtk-help</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="has_focus">True</property>
+                        <property name="can_default">True</property>
+                        <property name="has_default">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="use_stock">True</property>
+                        <signal name="clicked" handler="on_widget_help"/>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="x_options"></property>
+                        <property name="y_options"></property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="label18">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">To get started with encryption you will need keys.</property>
+                        <property name="wrap">True</property>
+                      </object>
+                      <packing>
+                        <property name="x_options"></property>
+                        <property name="y_options"></property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkHBox" id="status-bar-area">
+            <property name="visible">True</property>
+            <child>
+              <object class="GtkProgressBar" id="progress">
+                <property name="visible">True</property>
+                <property name="pulse_step">0.10000000149</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkStatusbar" id="status">
+                <property name="visible">True</property>
+              </object>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="position">4</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>
diff --git a/src/seahorse-keyserver-results.c b/src/seahorse-keyserver-results.c
index b67c962..b985afb 100644
--- a/src/seahorse-keyserver-results.c
+++ b/src/seahorse-keyserver-results.c
@@ -134,7 +134,7 @@ on_row_activated (GtkTreeView *view, GtkTreePath *path, GtkTreeViewColumn *colum
 		seahorse_viewer_show_properties (SEAHORSE_VIEWER (self), obj);
 }
 
-static gboolean 
+G_MODULE_EXPORT gboolean 
 on_key_list_button_pressed (GtkTreeView* view, GdkEventButton* event, SeahorseKeyserverResults* self) 
 {
 	g_return_val_if_fail (SEAHORSE_IS_KEYSERVER_RESULTS (self), FALSE);
@@ -144,7 +144,7 @@ on_key_list_button_pressed (GtkTreeView* view, GdkEventButton* event, SeahorseKe
 	return FALSE;
 }
 
-static gboolean 
+G_MODULE_EXPORT gboolean 
 on_key_list_popup_menu (GtkTreeView* view, SeahorseKeyserverResults* self) 
 {
 	SeahorseObject* key;
diff --git a/src/seahorse-keyserver-results.xml b/src/seahorse-keyserver-results.xml
new file mode 100644
index 0000000..73561fa
--- /dev/null
+++ b/src/seahorse-keyserver-results.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0"?>
+<interface>
+  <requires lib="gtk+" version="2.16"/>
+  <!-- interface-naming-policy toplevel-contextual -->
+  <object class="GtkWindow" id="keyserver-results">
+    <property name="visible">True</property>
+    <property name="title" translatable="yes">window1</property>
+    <property name="default_width">640</property>
+    <property name="default_height">476</property>
+    <child>
+      <object class="GtkVBox" id="vbox2">
+        <property name="visible">True</property>
+        <child>
+          <object class="GtkVBox" id="menu-placeholder">
+            <property name="visible">True</property>
+            <child>
+              <placeholder/>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkVBox" id="toolbar-placeholder">
+            <property name="visible">True</property>
+            <child>
+              <placeholder/>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkVBox" id="vbox1">
+            <property name="visible">True</property>
+            <property name="spacing">1</property>
+            <child>
+              <object class="GtkScrolledWindow" id="scrolledwindow1">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="hscrollbar_policy">automatic</property>
+                <child>
+                  <object class="GtkTreeView" id="key_list">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="border_width">12</property>
+                    <property name="rules_hint">True</property>
+                    <signal name="button_press_event" handler="on_key_list_button_pressed"/>
+                    <signal name="popup_menu" handler="on_key_list_popup_menu"/>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkHBox" id="hbox1">
+                <property name="visible">True</property>
+                <child>
+                  <object class="GtkProgressBar" id="progress">
+                    <property name="visible">True</property>
+                    <property name="pulse_step">0.10000000149</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkStatusbar" id="status">
+                    <property name="visible">True</property>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">2</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>
diff --git a/src/seahorse-keyserver-search.c b/src/seahorse-keyserver-search.c
index cbde988..7ac3491 100644
--- a/src/seahorse-keyserver-search.c
+++ b/src/seahorse-keyserver-search.c
@@ -64,12 +64,12 @@ get_keyserver_selection (SeahorseWidget *swidget)
     selection->all = TRUE;
     
     /* Key servers */
-    w = glade_xml_get_widget (swidget->xml, "key-server-list");
+    w = GTK_WIDGET (seahorse_widget_get_widget (swidget, "key-server-list"));
     g_return_val_if_fail (w != NULL, selection);
     gtk_container_foreach (GTK_CONTAINER (w), (GtkCallback)get_checks, selection);
 
     /* Shared Key */
-    w = glade_xml_get_widget (swidget->xml, "shared-keys-list");
+    w = GTK_WIDGET (seahorse_widget_get_widget (swidget, "shared-keys-list"));
     g_return_val_if_fail (w != NULL, selection);
     gtk_container_foreach (GTK_CONTAINER (w), (GtkCallback)get_checks, selection);    
     
@@ -102,20 +102,20 @@ have_keyserver_selection (SeahorseWidget *swidget)
     gboolean checked = FALSE;
     
     /* Key servers */
-    w = glade_xml_get_widget (swidget->xml, "key-server-list");
+    w = GTK_WIDGET (seahorse_widget_get_widget (swidget, "key-server-list"));
     g_return_val_if_fail (w != NULL, FALSE);
     gtk_container_foreach (GTK_CONTAINER (w), (GtkCallback)have_checks, &checked);
 
     /* Shared keys */
-    w = glade_xml_get_widget (swidget->xml, "shared-keys-list");
+    w = GTK_WIDGET (seahorse_widget_get_widget (swidget, "shared-keys-list"));
     g_return_val_if_fail (w != NULL, FALSE);
     gtk_container_foreach (GTK_CONTAINER (w), (GtkCallback)have_checks, &checked);        
     
     return checked;
 }
 
-static void
-control_changed (GtkWidget *widget, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_keyserver_search_control_changed (GtkWidget *widget, SeahorseWidget *swidget)
 {
     gboolean enabled = TRUE;
     GtkWidget *w;
@@ -127,14 +127,14 @@ control_changed (GtkWidget *widget, SeahorseWidget *swidget)
     
     /* ... and some search text */
     else {
-        w = glade_xml_get_widget (swidget->xml, "search-text");
+        w = GTK_WIDGET (seahorse_widget_get_widget (swidget, "search-text"));
         text = gtk_editable_get_chars (GTK_EDITABLE (w), 0, -1);
         if (!text || !text[0])
             enabled = FALSE;
         g_free (text);
     }
         
-    w = glade_xml_get_widget (swidget->xml, "search");
+    w = GTK_WIDGET (seahorse_widget_get_widget (swidget, "search"));
     gtk_widget_set_sensitive (w, enabled);
 }
 
@@ -163,7 +163,7 @@ select_inital_keyservers (SeahorseWidget *swidget)
     names = seahorse_gconf_get_string_list (LASTSERVERS_KEY);
 
     /* Close the expander if all servers are selected */
-    w = glade_xml_get_widget (swidget->xml, "search-where");
+    w = GTK_WIDGET (seahorse_widget_get_widget (swidget, "search-where"));
     g_return_if_fail (w != NULL);
     gtk_expander_set_expanded (GTK_EXPANDER (w), names != NULL);
     
@@ -174,11 +174,11 @@ select_inital_keyservers (SeahorseWidget *swidget)
         l->data = t;
     }
     
-    w = glade_xml_get_widget (swidget->xml, "key-server-list");
+    w = GTK_WIDGET (seahorse_widget_get_widget (swidget, "key-server-list"));
     g_return_if_fail (w != NULL);
     gtk_container_foreach (GTK_CONTAINER (w), (GtkCallback)select_checks, names);
 
-    w = glade_xml_get_widget (swidget->xml, "shared-keys-list");
+    w = GTK_WIDGET (seahorse_widget_get_widget (swidget, "shared-keys-list"));
     g_return_if_fail (w != NULL);
     gtk_container_foreach (GTK_CONTAINER (w), (GtkCallback)select_checks, names);
 }
@@ -220,7 +220,7 @@ populate_keyserver_list (SeahorseWidget *swidget, GtkWidget *box, GSList *uris,
         check = gtk_check_button_new_with_label ((const gchar*)n->data);
         gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check), 
                                       g_hash_table_lookup (unchecked, (gchar*)n->data) == NULL);
-        g_signal_connect (check, "toggled", G_CALLBACK (control_changed), swidget);
+        g_signal_connect (check, "toggled", G_CALLBACK (on_keyserver_search_control_changed), swidget);
         gtk_widget_show (check);
 
         /* Save URI and set it as the tooltip */
@@ -248,7 +248,7 @@ refresh_keyservers (GConfClient *client, guint id, GConfEntry *entry, SeahorseWi
 	if (entry && !g_str_equal (KEYSERVER_KEY, gconf_entry_get_key (entry)))
         return;
 
-    w = glade_xml_get_widget (swidget->xml, "key-server-list");
+    w = GTK_WIDGET (seahorse_widget_get_widget (swidget, "key-server-list"));
     g_return_if_fail (w != NULL);
 
     keyservers = seahorse_servers_get_uris ();
@@ -265,7 +265,7 @@ refresh_shared_keys (SeahorseServiceDiscovery *ssd, const gchar *name, SeahorseW
     GSList *keyservers, *names;
     GtkWidget *w;
     
-    w = glade_xml_get_widget (swidget->xml, "shared-keys-list");
+    w = GTK_WIDGET (seahorse_widget_get_widget (swidget, "shared-keys-list"));
     g_return_if_fail (w != NULL);
 
     names = seahorse_service_discovery_list (ssd);
@@ -278,15 +278,15 @@ refresh_shared_keys (SeahorseServiceDiscovery *ssd, const gchar *name, SeahorseW
 
 /* -------------------------------------------------------------------------- */
  
-static void
-ok_clicked (GtkButton *button, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_keyserver_search_ok_clicked (GtkButton *button, SeahorseWidget *swidget)
 {
     SeahorseOperation *op;
     KeyserverSelection *selection;
     const gchar *search;
 	GtkWidget *w;
             
-    w = glade_xml_get_widget (swidget->xml, "search-text");
+    w = GTK_WIDGET (seahorse_widget_get_widget (swidget, "search-text"));
     g_return_if_fail (w != NULL);
     
     /* Get search text and save it for next time */
@@ -306,7 +306,7 @@ ok_clicked (GtkButton *button, SeahorseWidget *swidget)
     
     /* Open the new result window */    
     seahorse_keyserver_results_show (op, 
-                                     GTK_WINDOW (glade_xml_get_widget (swidget->xml, swidget->name)), 
+                                     GTK_WINDOW (seahorse_widget_get_widget (swidget, swidget->name)),
                                      search);
 
     free_keyserver_selection (selection);
@@ -314,12 +314,6 @@ ok_clicked (GtkButton *button, SeahorseWidget *swidget)
 }
 
 static void
-configure_clicked (GtkButton *button, SeahorseWidget *swidget)
-{
-    seahorse_preferences_show (GTK_WINDOW (glade_xml_get_widget (swidget->xml, swidget->name)), "keyserver-tab");
-}
-
-static void
 cleanup_signals (GtkWidget *widget, SeahorseWidget *swidget)
 {
     SeahorseServiceDiscovery *ssd = seahorse_context_get_discovery (SCTX_APP());
@@ -345,9 +339,9 @@ seahorse_keyserver_search_show (GtkWindow *parent)
 	swidget = seahorse_widget_new ("keyserver-search", parent);
 	g_return_val_if_fail (swidget != NULL, NULL);
  
-    win = GTK_WINDOW (glade_xml_get_widget (swidget->xml, swidget->name));
+    win = GTK_WINDOW (seahorse_widget_get_widget (swidget, swidget->name));
 
-    w = glade_xml_get_widget (swidget->xml, "search-text");
+    w = GTK_WIDGET (seahorse_widget_get_widget (swidget, "search-text"));
     g_return_val_if_fail (w != NULL, win);
 
     search = seahorse_gconf_get_string (LASTSEARCH_KEY);
@@ -357,17 +351,14 @@ seahorse_keyserver_search_show (GtkWindow *parent)
         g_free (search);
     }
    
-    glade_xml_signal_connect_data (swidget->xml, "search_changed",
-                                   G_CALLBACK (control_changed), swidget);
-    
-	glade_xml_signal_connect_data (swidget->xml, "ok_clicked",
-		                           G_CALLBACK (ok_clicked), swidget);
+	/*CHECK: unknown key:
 	glade_xml_signal_connect_data (swidget->xml, "configure_clicked",
 		                           G_CALLBACK (configure_clicked), swidget);
+	*/
 
     /* The key servers to list */
     refresh_keyservers (NULL, 0, NULL, swidget);
-    w = glade_xml_get_widget (swidget->xml, swidget->name);
+    w = GTK_WIDGET (seahorse_widget_get_widget (swidget, swidget->name));
     seahorse_gconf_notify_lazy (KEYSERVER_KEY, (GConfClientNotifyFunc)refresh_keyservers, 
                                 swidget, GTK_WIDGET (win));
     
@@ -379,7 +370,7 @@ seahorse_keyserver_search_show (GtkWindow *parent)
     g_signal_connect (win, "destroy", G_CALLBACK (cleanup_signals), swidget);
     
     select_inital_keyservers (swidget);
-    control_changed (NULL, swidget);       
+    on_keyserver_search_control_changed (NULL, swidget);       
     
     return win;
 }
diff --git a/src/seahorse-keyserver-search.xml b/src/seahorse-keyserver-search.xml
new file mode 100644
index 0000000..0b45835
--- /dev/null
+++ b/src/seahorse-keyserver-search.xml
@@ -0,0 +1,273 @@
+<?xml version="1.0"?>
+<interface>
+  <requires lib="gtk+" version="2.16"/>
+  <!-- interface-naming-policy toplevel-contextual -->
+  <object class="GtkDialog" id="keyserver-search">
+    <property name="visible">True</property>
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes">Find Remote Keys</property>
+    <property name="resizable">False</property>
+    <property name="window_position">center-on-parent</property>
+    <property name="type_hint">dialog</property>
+    <property name="skip_taskbar_hint">True</property>
+    <property name="gravity">center</property>
+    <property name="has_separator">False</property>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox1">
+        <property name="visible">True</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkVBox" id="vbox1">
+            <property name="visible">True</property>
+            <property name="border_width">5</property>
+            <property name="spacing">12</property>
+            <child>
+              <object class="GtkHBox" id="hbox2">
+                <property name="visible">True</property>
+                <property name="spacing">12</property>
+                <child>
+                  <object class="GtkImage" id="image2">
+                    <property name="visible">True</property>
+                    <property name="stock">gtk-find</property>
+                    <property name="icon-size">5</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkLabel" id="publish-message">
+                    <property name="visible">True</property>
+                    <property name="xalign">0</property>
+                    <property name="yalign">0</property>
+                    <property name="label" translatable="yes">This will find keys for others on the Internet. These keys can then be imported into your local key ring.</property>
+                    <property name="wrap">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkHBox" id="hbox6">
+                <property name="visible">True</property>
+                <property name="spacing">12</property>
+                <child>
+                  <object class="GtkLabel" id="label13">
+                    <property name="visible">True</property>
+                    <property name="xpad">4</property>
+                    <property name="label" translatable="yes">_Search for keys containing: </property>
+                    <property name="use_underline">True</property>
+                    <property name="mnemonic_widget">search-text</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkEntry" id="search-text">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="has_focus">True</property>
+                    <accelerator key="Return" signal="activate"/>
+                    <signal name="changed" handler="on_keyserver_search_control_changed"/>
+                    <signal name="activate" handler="on_keyserver_search_ok_clicked"/>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkExpander" id="search-where">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <child>
+                  <object class="GtkScrolledWindow" id="scrolledwindow1">
+                    <property name="height_request">135</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="hscrollbar_policy">never</property>
+                    <property name="vscrollbar_policy">automatic</property>
+                    <property name="shadow_type">etched-out</property>
+                    <child>
+                      <object class="GtkViewport" id="viewport1">
+                        <property name="visible">True</property>
+                        <child>
+                          <object class="GtkVBox" id="vbox2">
+                            <property name="visible">True</property>
+                            <child>
+                              <object class="GtkVBox" id="key-server-list">
+                                <property name="visible">True</property>
+                                <property name="border_width">6</property>
+                                <child>
+                                  <object class="GtkLabel" id="label16">
+                                    <property name="visible">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="label" translatable="yes">&lt;b&gt;Key Servers:&lt;/b&gt;</property>
+                                    <property name="use_markup">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkVBox" id="shared-keys-list">
+                                <property name="visible">True</property>
+                                <property name="border_width">6</property>
+                                <child>
+                                  <object class="GtkLabel" id="label17">
+                                    <property name="visible">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="label" translatable="yes">&lt;b&gt;Shared Keys Near Me:&lt;/b&gt;</property>
+                                    <property name="use_markup">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child type="label">
+                  <object class="GtkLabel" id="label15">
+                    <property name="visible">True</property>
+                    <property name="label" translatable="yes">Where to search:</property>
+                    <property name="use_markup">True</property>
+                    <property name="use_underline">True</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area1">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="button3">
+                <property name="label">gtk-cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+                <signal name="clicked" handler="on_widget_closed"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="search">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="receives_default">False</property>
+                <signal name="clicked" handler="on_keyserver_search_ok_clicked"/>
+                <child>
+                  <object class="GtkAlignment" id="alignment4">
+                    <property name="visible">True</property>
+                    <property name="xscale">0</property>
+                    <property name="yscale">0</property>
+                    <child>
+                      <object class="GtkHBox" id="hbox7">
+                        <property name="visible">True</property>
+                        <property name="spacing">2</property>
+                        <child>
+                          <object class="GtkImage" id="image5">
+                            <property name="visible">True</property>
+                            <property name="stock">gtk-find</property>
+                            <property name="icon-size">4</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label14">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">_Search</property>
+                            <property name="use_underline">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-6">button3</action-widget>
+      <action-widget response="-5">search</action-widget>
+    </action-widgets>
+  </object>
+</interface>
diff --git a/src/seahorse-keyserver-sync.c b/src/seahorse-keyserver-sync.c
index 9c8c438..300c89c 100644
--- a/src/seahorse-keyserver-sync.c
+++ b/src/seahorse-keyserver-sync.c
@@ -65,8 +65,8 @@ sync_export_complete (SeahorseOperation *op, SeahorseSource *sksrc)
     }    
 }
 
-static void
-ok_clicked (GtkButton *button, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_sync_ok_clicked (GtkButton *button, SeahorseWidget *swidget)
 {
     GList *keys;
     
@@ -79,10 +79,10 @@ ok_clicked (GtkButton *button, SeahorseWidget *swidget)
     g_list_free (keys);
 }
 
-static void
-configure_clicked (GtkButton *button, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_sync_configure_clicked (GtkButton *button, SeahorseWidget *swidget)
 {
-    seahorse_preferences_show (GTK_WINDOW (glade_xml_get_widget (swidget->xml, swidget->name)), "keyserver-tab");
+    seahorse_preferences_show (GTK_WINDOW (seahorse_widget_get_widget (swidget, swidget->name)), "keyserver-tab");
 }
 
 static void
@@ -91,9 +91,9 @@ update_message (SeahorseWidget *swidget)
     GtkWidget *w, *w2, *sync_button;
     gchar *t;
     
-    w = glade_xml_get_widget (swidget->xml, "publish-message");
-    w2 = glade_xml_get_widget (swidget->xml, "sync-message");
-    sync_button = glade_xml_get_widget (swidget->xml, "sync-button");
+    w = GTK_WIDGET (seahorse_widget_get_widget (swidget, "publish-message"));
+    w2 = GTK_WIDGET (seahorse_widget_get_widget (swidget, "sync-message"));
+    sync_button = GTK_WIDGET (seahorse_widget_get_widget (swidget, "sync-button"));
 
     t = seahorse_gconf_get_string (PUBLISH_TO_KEY);
     if (t && t[0]) {
@@ -148,14 +148,14 @@ seahorse_keyserver_sync_show (GList *keys, GtkWindow *parent)
     swidget = seahorse_widget_new_allow_multiple ("keyserver-sync", parent);
     g_return_val_if_fail (swidget != NULL, NULL);
     
-    win = GTK_WINDOW (glade_xml_get_widget (swidget->xml, swidget->name));
+    win = GTK_WINDOW (seahorse_widget_get_widget (swidget, swidget->name));
     
     /* The details message */
     n = g_list_length (keys);
     t = g_strdup_printf (ngettext ("<b>%d key is selected for synchronizing</b>", 
                                    "<b>%d keys are selected for synchronizing</b>", n), n);
     
-    w = glade_xml_get_widget (swidget->xml, "detail-message");
+    w = GTK_WIDGET (seahorse_widget_get_widget (swidget, "detail-message"));
     g_return_val_if_fail (swidget != NULL, win);
     gtk_label_set_markup (GTK_LABEL (w), t);
     g_free (t);
@@ -171,11 +171,6 @@ seahorse_keyserver_sync_show (GList *keys, GtkWindow *parent)
     g_object_set_data_full (G_OBJECT (swidget), "publish-keys", keys, 
                             (GDestroyNotify)g_list_free);
     
-    glade_xml_signal_connect_data (swidget->xml, "ok_clicked",
-                                   G_CALLBACK (ok_clicked), swidget);
-    glade_xml_signal_connect_data (swidget->xml, "configure_clicked",
-                                   G_CALLBACK (configure_clicked), swidget);
-
     return win;
 }
 
diff --git a/src/seahorse-keyserver-sync.xml b/src/seahorse-keyserver-sync.xml
new file mode 100644
index 0000000..b68f641
--- /dev/null
+++ b/src/seahorse-keyserver-sync.xml
@@ -0,0 +1,324 @@
+<?xml version="1.0"?>
+<!--*- mode: xml -*-->
+<interface>
+  <object class="GtkDialog" id="keyserver-sync">
+    <property name="border_width">5</property>
+    <property name="visible">True</property>
+    <property name="title" translatable="yes">Sync Keys</property>
+    <property name="type">GTK_WINDOW_TOPLEVEL</property>
+    <property name="window_position">GTK_WIN_POS_CENTER</property>
+    <property name="modal">False</property>
+    <property name="resizable">True</property>
+    <property name="destroy_with_parent">False</property>
+    <property name="decorated">True</property>
+    <property name="skip_taskbar_hint">False</property>
+    <property name="skip_pager_hint">False</property>
+    <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+    <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+    <property name="focus_on_map">True</property>
+    <property name="urgency_hint">False</property>
+    <property name="has_separator">False</property>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox1">
+        <property name="visible">True</property>
+        <property name="homogeneous">False</property>
+        <property name="spacing">2</property>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area1">
+            <property name="visible">True</property>
+            <property name="layout_style">GTK_BUTTONBOX_END</property>
+            <child>
+              <object class="GtkButton" id="configure">
+                <property name="visible">True</property>
+                <property name="can_default">True</property>
+                <property name="can_focus">True</property>
+                <property name="relief">GTK_RELIEF_NORMAL</property>
+                <property name="focus_on_click">True</property>
+                <signal handler="on_sync_configure_clicked" last_modification_time="Sun, 03 Apr 2005 22:45:26 GMT" name="clicked"/>
+                <child>
+                  <object class="GtkAlignment" id="alignment3">
+                    <property name="visible">True</property>
+                    <property name="xalign">0.5</property>
+                    <property name="yalign">0.5</property>
+                    <property name="xscale">0</property>
+                    <property name="yscale">0</property>
+                    <property name="top_padding">0</property>
+                    <property name="bottom_padding">0</property>
+                    <property name="left_padding">0</property>
+                    <property name="right_padding">0</property>
+                    <child>
+                      <object class="GtkHBox" id="hbox5">
+                        <property name="visible">True</property>
+                        <property name="homogeneous">False</property>
+                        <property name="spacing">2</property>
+                        <child>
+                          <object class="GtkImage" id="image4">
+                            <property name="visible">True</property>
+                            <property name="stock">gtk-properties</property>
+                            <property name="icon_size">4</property>
+                            <property name="xalign">0.5</property>
+                            <property name="yalign">0.5</property>
+                            <property name="xpad">0</property>
+                            <property name="ypad">0</property>
+                          </object>
+                          <packing>
+                            <property name="padding">0</property>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label12">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">_Key Servers</property>
+                            <property name="use_underline">True</property>
+                            <property name="use_markup">False</property>
+                            <property name="justify">GTK_JUSTIFY_LEFT</property>
+                            <property name="wrap">False</property>
+                            <property name="selectable">False</property>
+                            <property name="xalign">0.5</property>
+                            <property name="yalign">0.5</property>
+                            <property name="xpad">0</property>
+                            <property name="ypad">0</property>
+                            <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                            <property name="width_chars">-1</property>
+                            <property name="single_line_mode">False</property>
+                            <property name="angle">0</property>
+                          </object>
+                          <packing>
+                            <property name="padding">0</property>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child>
+              <object class="GtkButton" id="button3">
+                <property name="visible">True</property>
+                <property name="can_default">True</property>
+                <property name="can_focus">True</property>
+                <property name="label">gtk-cancel</property>
+                <property name="use_stock">True</property>
+                <property name="relief">GTK_RELIEF_NORMAL</property>
+                <property name="focus_on_click">True</property>
+                <signal handler="on_widget_closed" last_modification_time="Wed, 31 Dec 2003 03:32:28 GMT" name="clicked"/>
+              </object>
+            </child>
+            <child>
+              <object class="GtkButton" id="sync-button">
+                <property name="visible">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="can_focus">True</property>
+                <property name="has_focus">True</property>
+                <property name="relief">GTK_RELIEF_NORMAL</property>
+                <property name="focus_on_click">True</property>
+                <signal handler="on_sync_ok_clicked" last_modification_time="Wed, 31 Dec 2003 00:41:45 GMT" name="clicked"/>
+                <child>
+                  <object class="GtkAlignment" id="alignment4">
+                    <property name="visible">True</property>
+                    <property name="xalign">0.5</property>
+                    <property name="yalign">0.5</property>
+                    <property name="xscale">0</property>
+                    <property name="yscale">0</property>
+                    <property name="top_padding">0</property>
+                    <property name="bottom_padding">0</property>
+                    <property name="left_padding">0</property>
+                    <property name="right_padding">0</property>
+                    <child>
+                      <object class="GtkHBox" id="hbox6">
+                        <property name="visible">True</property>
+                        <property name="homogeneous">False</property>
+                        <property name="spacing">2</property>
+                        <child>
+                          <object class="GtkImage" id="image5">
+                            <property name="visible">True</property>
+                            <property name="stock">gtk-refresh</property>
+                            <property name="icon_size">4</property>
+                            <property name="xalign">0.5</property>
+                            <property name="yalign">0.5</property>
+                            <property name="xpad">0</property>
+                            <property name="ypad">0</property>
+                          </object>
+                          <packing>
+                            <property name="padding">0</property>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label13">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">_Sync</property>
+                            <property name="use_underline">True</property>
+                            <property name="use_markup">False</property>
+                            <property name="justify">GTK_JUSTIFY_LEFT</property>
+                            <property name="wrap">False</property>
+                            <property name="selectable">False</property>
+                            <property name="xalign">0.5</property>
+                            <property name="yalign">0.5</property>
+                            <property name="xpad">0</property>
+                            <property name="ypad">0</property>
+                            <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                            <property name="width_chars">-1</property>
+                            <property name="single_line_mode">False</property>
+                            <property name="angle">0</property>
+                          </object>
+                          <packing>
+                            <property name="padding">0</property>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="padding">0</property>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="pack_type">GTK_PACK_END</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkVBox" id="vbox1">
+            <property name="border_width">5</property>
+            <property name="visible">True</property>
+            <property name="homogeneous">False</property>
+            <property name="spacing">12</property>
+            <child>
+              <object class="GtkHBox" id="hbox2">
+                <property name="visible">True</property>
+                <property name="homogeneous">False</property>
+                <property name="spacing">12</property>
+                <child>
+                  <object class="GtkImage" id="image2">
+                    <property name="visible">True</property>
+                    <property name="stock">gtk-network</property>
+                    <property name="icon_size">5</property>
+                    <property name="xalign">0</property>
+                    <property name="yalign">0</property>
+                    <property name="xpad">0</property>
+                    <property name="ypad">0</property>
+                  </object>
+                  <packing>
+                    <property name="padding">0</property>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkVBox" id="vbox2">
+                    <property name="visible">True</property>
+                    <property name="homogeneous">False</property>
+                    <property name="spacing">12</property>
+                    <child>
+                      <object class="GtkLabel" id="publish-message">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">This will publish the keys in your key ring so they're available for others to use. You'll also get any changes others have made since you received their keys.</property>
+                        <property name="use_underline">False</property>
+                        <property name="use_markup">False</property>
+                        <property name="justify">GTK_JUSTIFY_LEFT</property>
+                        <property name="wrap">True</property>
+                        <property name="selectable">False</property>
+                        <property name="xalign">0</property>
+                        <property name="yalign">0</property>
+                        <property name="xpad">0</property>
+                        <property name="ypad">0</property>
+                        <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                        <property name="width_chars">-1</property>
+                        <property name="single_line_mode">False</property>
+                        <property name="angle">0</property>
+                      </object>
+                      <packing>
+                        <property name="padding">0</property>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="sync-message">
+                        <property name="label" translatable="yes">This will retrieve any changes others have made since you received their keys. No key server has been chosen for publishing, so your keys will not be made available to others.</property>
+                        <property name="use_underline">False</property>
+                        <property name="use_markup">False</property>
+                        <property name="justify">GTK_JUSTIFY_LEFT</property>
+                        <property name="wrap">True</property>
+                        <property name="selectable">False</property>
+                        <property name="xalign">0</property>
+                        <property name="yalign">0</property>
+                        <property name="xpad">0</property>
+                        <property name="ypad">0</property>
+                        <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                        <property name="width_chars">-1</property>
+                        <property name="single_line_mode">False</property>
+                        <property name="angle">0</property>
+                      </object>
+                      <packing>
+                        <property name="padding">0</property>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="detail-message">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">&lt;b&gt;X keys are selected for synchronizing&lt;/b&gt;</property>
+                        <property name="use_underline">False</property>
+                        <property name="use_markup">True</property>
+                        <property name="justify">GTK_JUSTIFY_LEFT</property>
+                        <property name="wrap">True</property>
+                        <property name="selectable">False</property>
+                        <property name="xalign">0</property>
+                        <property name="yalign">0</property>
+                        <property name="xpad">0</property>
+                        <property name="ypad">0</property>
+                        <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                        <property name="width_chars">-1</property>
+                        <property name="single_line_mode">False</property>
+                        <property name="angle">0</property>
+                      </object>
+                      <packing>
+                        <property name="padding">0</property>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="padding">0</property>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="padding">0</property>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="padding">0</property>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-6">configure</action-widget>
+      <action-widget response="-6">button3</action-widget>
+      <action-widget response="-5">sync-button</action-widget>
+    </action-widgets>
+  </object>
+</interface>
diff --git a/src/seahorse-viewer.c b/src/seahorse-viewer.c
index a0c3c6a..9ae3667 100644
--- a/src/seahorse-viewer.c
+++ b/src/seahorse-viewer.c
@@ -98,7 +98,7 @@ for_each_commands (SeahorseViewer *self, ForEachCommandsFunc func, gpointer user
 	}
 }
 
-static void 
+G_MODULE_EXPORT void
 on_app_preferences (GtkAction* action, SeahorseViewer* self) 
 {
 	g_return_if_fail (SEAHORSE_IS_VIEWER (self));
@@ -692,7 +692,7 @@ seahorse_viewer_constructor (GType type, guint n_props, GObjectConstructParam *p
 
 		/* The widgts get added in an idle loop later */
 		name = seahorse_widget_get_name (SEAHORSE_WIDGET (self));
-		path = g_strdup_printf ("%sseahorse-%s.ui", SEAHORSE_GLADEDIR, name);
+		path = g_strdup_printf ("%sseahorse-%s.ui", SEAHORSE_UIDIR, name);
 		if (!gtk_ui_manager_add_ui_from_file (pv->ui_manager, path, &error)) {
 			g_warning ("couldn't load ui description for '%s': %s", name, error->message);
 			g_clear_error (&error);
diff --git a/ssh/Makefile.am b/ssh/Makefile.am
index 8614203..b2d86a6 100644
--- a/ssh/Makefile.am
+++ b/ssh/Makefile.am
@@ -1,5 +1,5 @@
 
-gladedir = $(datadir)/seahorse/glade/
+uidir = $(datadir)/seahorse/ui/
 localedir = $(datadir)/locale
 seahorselibexecbindir = $(libdir)/seahorse/
 
@@ -9,7 +9,7 @@ INCLUDES = -I$(top_builddir) \
 	-I$(top_srcdir)/libseahorse \
 	$(SEAHORSE_CFLAGS) \
 	-DDATA_DIR=\""$(datadir)"\" \
-	-DSEAHORSE_GLADEDIR=\""$(gladedir)"\" \
+	-DSEAHORSE_UIDIR=\""$(uidir)"\" \
 	-DLOCALEDIR=\"$(localedir)\" \
 	-DEXECDIR=\""$(seahorselibexecbindir)"\" \
 	-DLIBCRYPTUI_API_SUBJECT_TO_CHANGE \
@@ -45,11 +45,11 @@ seahorse_ssh_askpass_LDADD = \
 	$(top_builddir)/libcryptui/libcryptui.la \
 	$(SEAHORSE_LIBS)
 
-glade_DATA = \
-	seahorse-ssh-key-properties.glade \
-	seahorse-ssh-generate.glade \
-	seahorse-ssh-upload.glade 
+ui_DATA = \
+	seahorse-ssh-key-properties.xml \
+	seahorse-ssh-generate.xml \
+	seahorse-ssh-upload.xml
 
 EXTRA_DIST = \
-	$(glade_DATA)
+	$(ui_DATA)
 
diff --git a/ssh/seahorse-ssh-generate.c b/ssh/seahorse-ssh-generate.c
index f9f2ff8..3e21580 100644
--- a/ssh/seahorse-ssh-generate.c
+++ b/ssh/seahorse-ssh-generate.c
@@ -111,7 +111,7 @@ upload_handler (SeahorseOperation *op, SeahorseWidget *swidget)
 	}
 	
     keys = g_list_append (NULL, skey);
-    seahorse_ssh_upload_prompt (keys, GTK_WINDOW (glade_xml_get_widget (swidget->xml, swidget->name)));
+    seahorse_ssh_upload_prompt (keys, GTK_WINDOW (seahorse_widget_get_widget (swidget, swidget->name)));
     g_list_free (keys);
 	seahorse_widget_destroy (swidget);
 }
diff --git a/ssh/seahorse-ssh-generate.xml b/ssh/seahorse-ssh-generate.xml
new file mode 100644
index 0000000..5362bfe
--- /dev/null
+++ b/ssh/seahorse-ssh-generate.xml
@@ -0,0 +1,634 @@
+<?xml version="1.0"?>
+<!--*- mode: xml -*-->
+<interface>
+  <object class="GtkAdjustment" id="adjustment1">
+    <property name="upper">8192</property>
+    <property name="lower">512</property>
+    <property name="page_increment">10</property>
+    <property name="step_increment">512</property>
+    <property name="page_size">0</property>
+    <property name="value">2048</property>
+  </object>
+  <object class="GtkListStore" id="model1">
+    <columns>
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0" translatable="yes">RSA</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">DSA</col>
+      </row>
+    </data>
+  </object>
+  <object class="GtkDialog" id="ssh-generate">
+    <property name="border_width">5</property>
+    <property name="visible">True</property>
+    <property name="title" translatable="yes">New Secure Shell Key</property>
+    <property name="type">GTK_WINDOW_TOPLEVEL</property>
+    <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
+    <property name="modal">True</property>
+    <property name="resizable">False</property>
+    <property name="destroy_with_parent">False</property>
+    <property name="decorated">True</property>
+    <property name="skip_taskbar_hint">False</property>
+    <property name="skip_pager_hint">False</property>
+    <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+    <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+    <property name="focus_on_map">True</property>
+    <property name="urgency_hint">False</property>
+    <property name="has_separator">False</property>
+    <signal handler="on_widget_delete_event" last_modification_time="Fri, 10 Jan 2003 08:53:02 GMT" name="delete_event"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox1">
+        <property name="visible">True</property>
+        <property name="homogeneous">False</property>
+        <property name="spacing">2</property>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area1">
+            <property name="visible">True</property>
+            <property name="layout_style">GTK_BUTTONBOX_END</property>
+            <child>
+              <object class="GtkButton" id="helpbutton1">
+                <property name="visible">True</property>
+                <property name="can_default">True</property>
+                <property name="can_focus">True</property>
+                <property name="label" translatable="yes">_Just Create Key</property>
+                <property name="use_underline">True</property>
+                <property name="relief">GTK_RELIEF_NORMAL</property>
+                <property name="focus_on_click">True</property>
+                <signal handler="on_widget_help" last_modification_time="Sun, 10 Nov 2002 19:54:20 GMT" name="clicked"/>
+              </object>
+            </child>
+            <child>
+              <object class="GtkButton" id="button1">
+                <property name="visible">True</property>
+                <property name="can_default">True</property>
+                <property name="can_focus">True</property>
+                <property name="label">gtk-cancel</property>
+                <property name="use_stock">True</property>
+                <property name="relief">GTK_RELIEF_NORMAL</property>
+                <property name="focus_on_click">True</property>
+              </object>
+            </child>
+            <child>
+              <object class="GtkButton" id="button2">
+                <property name="visible">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="can_focus">True</property>
+                <property name="relief">GTK_RELIEF_NORMAL</property>
+                <property name="focus_on_click">True</property>
+                <child>
+                  <object class="GtkAlignment" id="alignment6">
+                    <property name="visible">True</property>
+                    <property name="xalign">0.5</property>
+                    <property name="yalign">0.5</property>
+                    <property name="xscale">0</property>
+                    <property name="yscale">0</property>
+                    <property name="top_padding">0</property>
+                    <property name="bottom_padding">0</property>
+                    <property name="left_padding">0</property>
+                    <property name="right_padding">0</property>
+                    <child>
+                      <object class="GtkHBox" id="hbox3">
+                        <property name="visible">True</property>
+                        <property name="homogeneous">False</property>
+                        <property name="spacing">2</property>
+                        <child>
+                          <object class="GtkImage" id="image2">
+                            <property name="visible">True</property>
+                            <property name="stock">gtk-ok</property>
+                            <property name="icon_size">4</property>
+                            <property name="xalign">0.5</property>
+                            <property name="yalign">0.5</property>
+                            <property name="xpad">0</property>
+                            <property name="ypad">0</property>
+                          </object>
+                          <packing>
+                            <property name="padding">0</property>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label55">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">_Create and Set Up</property>
+                            <property name="use_underline">True</property>
+                            <property name="use_markup">False</property>
+                            <property name="justify">GTK_JUSTIFY_LEFT</property>
+                            <property name="wrap">False</property>
+                            <property name="selectable">False</property>
+                            <property name="xalign">0.5</property>
+                            <property name="yalign">0.5</property>
+                            <property name="xpad">0</property>
+                            <property name="ypad">0</property>
+                            <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                            <property name="width_chars">-1</property>
+                            <property name="single_line_mode">False</property>
+                            <property name="angle">0</property>
+                          </object>
+                          <packing>
+                            <property name="padding">0</property>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="padding">0</property>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="pack_type">GTK_PACK_END</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkHBox" id="hbox4">
+            <property name="border_width">5</property>
+            <property name="visible">True</property>
+            <property name="homogeneous">False</property>
+            <property name="spacing">12</property>
+            <child>
+              <object class="GtkAlignment" id="alignment9">
+                <property name="visible">True</property>
+                <property name="xalign">0.5</property>
+                <property name="yalign">0.5</property>
+                <property name="xscale">1</property>
+                <property name="yscale">1</property>
+                <property name="top_padding">0</property>
+                <property name="bottom_padding">0</property>
+                <property name="left_padding">0</property>
+                <property name="right_padding">0</property>
+                <child>
+                  <object class="GtkImage" id="ssh-image">
+                    <property name="visible">True</property>
+                    <property name="icon_name"/>
+                    <property name="xalign">0.5</property>
+                    <property name="yalign">0</property>
+                    <property name="xpad">0</property>
+                    <property name="ypad">0</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="padding">0</property>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkVBox" id="vbox5">
+                <property name="visible">True</property>
+                <property name="homogeneous">False</property>
+                <property name="spacing">12</property>
+                <child>
+                  <object class="GtkVBox" id="vbox3">
+                    <property name="visible">True</property>
+                    <property name="homogeneous">False</property>
+                    <property name="spacing">12</property>
+                    <child>
+                      <object class="GtkHBox" id="hbox4">
+                        <property name="visible">True</property>
+                        <property name="homogeneous">False</property>
+                        <property name="spacing">12</property>
+                        <child>
+                          <object class="GtkLabel" id="label45">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">A Secure Shell (SSH) key lets you connect securely to trusted computers using SSH, without entering a different password for each of them.</property>
+                            <property name="use_underline">False</property>
+                            <property name="use_markup">False</property>
+                            <property name="justify">GTK_JUSTIFY_LEFT</property>
+                            <property name="wrap">True</property>
+                            <property name="selectable">False</property>
+                            <property name="xalign">0</property>
+                            <property name="yalign">0</property>
+                            <property name="xpad">0</property>
+                            <property name="ypad">0</property>
+                            <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                            <property name="width_chars">-1</property>
+                            <property name="single_line_mode">False</property>
+                            <property name="angle">0</property>
+                          </object>
+                          <packing>
+                            <property name="padding">0</property>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkAlignment" id="alignment8">
+                            <property name="visible">True</property>
+                            <property name="xalign">0</property>
+                            <property name="yalign">0</property>
+                            <property name="xscale">0</property>
+                            <property name="yscale">0</property>
+                            <property name="top_padding">0</property>
+                            <property name="bottom_padding">0</property>
+                            <property name="left_padding">0</property>
+                            <property name="right_padding">0</property>
+                            <child>
+                              <object class="GtkButton" id="button3">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="relief">GTK_RELIEF_HALF</property>
+                                <property name="focus_on_click">True</property>
+                                <signal handler="on_widget_help" last_modification_time="Tue, 21 Nov 2006 20:57:15 GMT" name="clicked"/>
+                                <child>
+                                  <object class="GtkImage" id="image3">
+                                    <property name="visible">True</property>
+                                    <property name="stock">gtk-help</property>
+                                    <property name="icon_size">4</property>
+                                    <property name="xalign">0.5</property>
+                                    <property name="yalign">0.5</property>
+                                    <property name="xpad">0</property>
+                                    <property name="ypad">0</property>
+                                  </object>
+                                </child>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="padding">0</property>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="padding">0</property>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkAlignment" id="alignment7">
+                        <property name="visible">True</property>
+                        <property name="xalign">0.5</property>
+                        <property name="yalign">0.5</property>
+                        <property name="xscale">1</property>
+                        <property name="yscale">1</property>
+                        <property name="top_padding">0</property>
+                        <property name="bottom_padding">0</property>
+                        <property name="left_padding">0</property>
+                        <property name="right_padding">0</property>
+                        <child>
+                          <object class="GtkTable" id="table12">
+                            <property name="visible">True</property>
+                            <property name="n_rows">2</property>
+                            <property name="n_columns">2</property>
+                            <property name="homogeneous">False</property>
+                            <property name="row_spacing">3</property>
+                            <property name="column_spacing">12</property>
+                            <child>
+                              <object class="GtkLabel" id="label46">
+                                <property name="visible">True</property>
+                                <property name="label" translatable="yes">_Key Description:</property>
+                                <property name="use_underline">True</property>
+                                <property name="use_markup">True</property>
+                                <property name="justify">GTK_JUSTIFY_LEFT</property>
+                                <property name="wrap">False</property>
+                                <property name="selectable">False</property>
+                                <property name="xalign">1</property>
+                                <property name="yalign">0</property>
+                                <property name="xpad">0</property>
+                                <property name="ypad">0</property>
+                                <property name="mnemonic_widget">email-entry</property>
+                                <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                <property name="width_chars">-1</property>
+                                <property name="single_line_mode">False</property>
+                                <property name="angle">0</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">0</property>
+                                <property name="right_attach">1</property>
+                                <property name="top_attach">0</property>
+                                <property name="bottom_attach">1</property>
+                                <property name="x_options">fill</property>
+                                <property name="y_options"/>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkEntry" id="email-entry">
+                                <property name="width_request">180</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="has_focus">True</property>
+                                <property name="editable">True</property>
+                                <property name="visibility">True</property>
+                                <property name="max_length">0</property>
+                                <property name="text"/>
+                                <property name="has_frame">True</property>
+                                <property name="invisible_char">&#x25CF;</property>
+                                <property name="activates_default">True</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">0</property>
+                                <property name="bottom_attach">1</property>
+                                <property name="y_options"/>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label53">
+                                <property name="visible">True</property>
+                                <property name="label" translatable="yes">&lt;i&gt;Use your email address, and any other reminder you need about what this key is for.&lt;/i&gt;</property>
+                                <property name="use_underline">False</property>
+                                <property name="use_markup">True</property>
+                                <property name="justify">GTK_JUSTIFY_LEFT</property>
+                                <property name="wrap">True</property>
+                                <property name="selectable">False</property>
+                                <property name="xalign">0</property>
+                                <property name="yalign">0.5</property>
+                                <property name="xpad">3</property>
+                                <property name="ypad">0</property>
+                                <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                <property name="width_chars">-1</property>
+                                <property name="single_line_mode">False</property>
+                                <property name="angle">0</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                                <property name="x_options">fill</property>
+                                <property name="y_options"/>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label56">
+                                <property name="visible">True</property>
+                                <property name="label" translatable="yes"/>
+                                <property name="use_underline">False</property>
+                                <property name="use_markup">False</property>
+                                <property name="justify">GTK_JUSTIFY_LEFT</property>
+                                <property name="wrap">False</property>
+                                <property name="selectable">False</property>
+                                <property name="xalign">0</property>
+                                <property name="yalign">0.5</property>
+                                <property name="xpad">0</property>
+                                <property name="ypad">0</property>
+                                <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                <property name="width_chars">-1</property>
+                                <property name="single_line_mode">False</property>
+                                <property name="angle">0</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">0</property>
+                                <property name="right_attach">1</property>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                                <property name="x_options">fill</property>
+                                <property name="y_options"/>
+                              </packing>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="padding">0</property>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="padding">0</property>
+                    <property name="expand">True</property>
+                    <property name="fill">True</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkExpander" id="expander1">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="expanded">False</property>
+                    <property name="spacing">0</property>
+                    <child>
+                      <object class="GtkAlignment" id="alignment2">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="yalign">0</property>
+                        <property name="xscale">0</property>
+                        <property name="yscale">0</property>
+                        <property name="top_padding">0</property>
+                        <property name="bottom_padding">0</property>
+                        <property name="left_padding">12</property>
+                        <property name="right_padding">0</property>
+                        <child>
+                          <object class="GtkTable" id="table11">
+                            <property name="visible">True</property>
+                            <property name="n_rows">2</property>
+                            <property name="n_columns">2</property>
+                            <property name="homogeneous">False</property>
+                            <property name="row_spacing">6</property>
+                            <property name="column_spacing">12</property>
+                            <child>
+                              <object class="GtkLabel" id="label49">
+                                <property name="visible">True</property>
+                                <property name="label" translatable="yes">Encryption _Type:</property>
+                                <property name="use_underline">True</property>
+                                <property name="use_markup">False</property>
+                                <property name="justify">GTK_JUSTIFY_LEFT</property>
+                                <property name="wrap">False</property>
+                                <property name="selectable">False</property>
+                                <property name="xalign">0</property>
+                                <property name="yalign">0.5</property>
+                                <property name="xpad">0</property>
+                                <property name="ypad">0</property>
+                                <property name="mnemonic_widget">algorithm-choice</property>
+                                <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                <property name="width_chars">-1</property>
+                                <property name="single_line_mode">False</property>
+                                <property name="angle">0</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">0</property>
+                                <property name="right_attach">1</property>
+                                <property name="top_attach">0</property>
+                                <property name="bottom_attach">1</property>
+                                <property name="x_options">fill</property>
+                                <property name="y_options"/>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label50">
+                                <property name="visible">True</property>
+                                <property name="label" translatable="yes">Key _Strength (bits):</property>
+                                <property name="use_underline">True</property>
+                                <property name="use_markup">False</property>
+                                <property name="justify">GTK_JUSTIFY_LEFT</property>
+                                <property name="wrap">False</property>
+                                <property name="selectable">False</property>
+                                <property name="xalign">0</property>
+                                <property name="yalign">0.5</property>
+                                <property name="xpad">0</property>
+                                <property name="ypad">0</property>
+                                <property name="mnemonic_widget">bits-entry</property>
+                                <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                <property name="width_chars">-1</property>
+                                <property name="single_line_mode">False</property>
+                                <property name="angle">0</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">0</property>
+                                <property name="right_attach">1</property>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                                <property name="x_options">fill</property>
+                                <property name="y_options"/>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkAlignment" id="alignment4">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="yalign">0</property>
+                                <property name="xscale">0</property>
+                                <property name="yscale">1</property>
+                                <property name="top_padding">0</property>
+                                <property name="bottom_padding">0</property>
+                                <property name="left_padding">0</property>
+                                <property name="right_padding">0</property>
+                                <child>
+                                  <object class="GtkComboBox" id="algorithm-choice">
+                                    <property name="visible">True</property>
+                                    <property name="add_tearoffs">False</property>
+                                    <property name="focus_on_click">True</property>
+                                    <property name="model">model1</property>
+                                    <child>
+                                      <object class="GtkCellRendererText" id="renderer1"/>
+                                      <attributes>
+                                        <attribute name="text">0</attribute>
+                                      </attributes>
+                                    </child>
+                                  </object>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">0</property>
+                                <property name="bottom_attach">1</property>
+                                <property name="y_options"/>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkAlignment" id="alignment5">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="yalign">0</property>
+                                <property name="xscale">0</property>
+                                <property name="yscale">0</property>
+                                <property name="top_padding">0</property>
+                                <property name="bottom_padding">0</property>
+                                <property name="left_padding">0</property>
+                                <property name="right_padding">0</property>
+                                <child>
+                                  <object class="GtkSpinButton" id="bits-entry">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="climb_rate">1</property>
+                                    <property name="digits">0</property>
+                                    <property name="numeric">True</property>
+                                    <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+                                    <property name="snap_to_ticks">False</property>
+                                    <property name="wrap">False</property>
+                                    <property name="adjustment">adjustment1</property>
+                                  </object>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                                <property name="y_options">fill</property>
+                              </packing>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                    <child type="label">
+                      <object class="GtkLabel" id="label48">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">&lt;b&gt;_Advanced key options&lt;/b&gt;</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_markup">True</property>
+                        <property name="justify">GTK_JUSTIFY_LEFT</property>
+                        <property name="wrap">False</property>
+                        <property name="selectable">False</property>
+                        <property name="xalign">0.5</property>
+                        <property name="yalign">0.5</property>
+                        <property name="xpad">0</property>
+                        <property name="ypad">0</property>
+                        <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                        <property name="width_chars">-1</property>
+                        <property name="single_line_mode">False</property>
+                        <property name="angle">0</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="padding">0</property>
+                    <property name="expand">True</property>
+                    <property name="fill">True</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkLabel" id="label54">
+                    <property name="visible">True</property>
+                    <property name="label" translatable="yes">If there is already a computer you want to use this key with, you can set up that computer to recognize your key now. </property>
+                    <property name="use_underline">False</property>
+                    <property name="use_markup">False</property>
+                    <property name="justify">GTK_JUSTIFY_LEFT</property>
+                    <property name="wrap">True</property>
+                    <property name="selectable">False</property>
+                    <property name="xalign">0</property>
+                    <property name="yalign">0.5</property>
+                    <property name="xpad">0</property>
+                    <property name="ypad">0</property>
+                    <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                    <property name="width_chars">-1</property>
+                    <property name="single_line_mode">False</property>
+                    <property name="angle">0</property>
+                  </object>
+                  <packing>
+                    <property name="padding">0</property>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="padding">0</property>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="padding">0</property>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-7">helpbutton1</action-widget>
+      <action-widget response="-6">button1</action-widget>
+      <action-widget response="-5">button2</action-widget>
+    </action-widgets>
+  </object>
+</interface>
diff --git a/ssh/seahorse-ssh-key-properties.c b/ssh/seahorse-ssh-key-properties.c
index f7a326c..241748a 100644
--- a/ssh/seahorse-ssh-key-properties.c
+++ b/ssh/seahorse-ssh-key-properties.c
@@ -35,8 +35,8 @@
 
 #define NOTEBOOK "notebook"
 
-static void
-comment_activate (GtkWidget *entry, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_ssh_comment_activate (GtkWidget *entry, SeahorseWidget *swidget)
 {
     SeahorseObject *object;
     SeahorseSSHKey *skey;
@@ -76,15 +76,15 @@ comment_activate (GtkWidget *entry, SeahorseWidget *swidget)
     gtk_widget_set_sensitive (entry, TRUE);
 }
 
-static gboolean
-comment_focus_out (GtkWidget* widget, GdkEventFocus *event, SeahorseWidget *swidget)
+G_MODULE_EXPORT gboolean
+on_ssh_comment_focus_out (GtkWidget* widget, GdkEventFocus *event, SeahorseWidget *swidget)
 {
-    comment_activate (widget, swidget);
+    on_ssh_comment_activate (widget, swidget);
     return FALSE;
 }
 
-static void 
-trust_toggled (GtkToggleButton *button, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_ssh_trust_toggled (GtkToggleButton *button, SeahorseWidget *swidget)
 {
     SeahorseSource *sksrc;
     SeahorseOperation *op;
@@ -128,13 +128,13 @@ passphrase_done (SeahorseOperation *op, SeahorseWidget *swidget)
         g_clear_error (&err);
     }
     
-    w = glade_xml_get_widget (swidget->xml, "passphrase-button");
+    w = GTK_WIDGET (seahorse_widget_get_widget (swidget, "passphrase-button"));
     g_return_if_fail (w != NULL);
     gtk_widget_set_sensitive (w, TRUE);
 }
 
-static void
-passphrase_button_clicked (GtkWidget *widget, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_ssh_passphrase_button_clicked (GtkWidget *widget, SeahorseWidget *swidget)
 {
     SeahorseOperation *op;
     SeahorseObject *object;
@@ -143,7 +143,7 @@ passphrase_button_clicked (GtkWidget *widget, SeahorseWidget *swidget)
     object = SEAHORSE_OBJECT_WIDGET (swidget)->object;
     g_assert (SEAHORSE_IS_SSH_KEY (object));
 
-    w = glade_xml_get_widget (swidget->xml, "passphrase-button");
+    w = GTK_WIDGET (seahorse_widget_get_widget (swidget, "passphrase-button"));
     g_return_if_fail (w != NULL);
     gtk_widget_set_sensitive (w, FALSE);
     
@@ -171,8 +171,8 @@ export_complete (GFile *file, GAsyncResult *result, guchar *contents)
 	}
 }
 
-static void
-export_button_clicked (GtkWidget *widget, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_ssh_export_button_clicked (GtkWidget *widget, SeahorseWidget *swidget)
 {
 	SeahorseSource *sksrc;
 	SeahorseObject *object;
@@ -231,20 +231,20 @@ do_main (SeahorseWidget *swidget)
     skey = SEAHORSE_SSH_KEY (object);
 
     /* Image */
-    widget = seahorse_widget_get_widget (swidget, "key-image");
+    widget = gtk_builder_get_object (swidget->gtkbuilder, "key-image");
     if (widget)
         gtk_image_set_from_stock (GTK_IMAGE (widget), SEAHORSE_STOCK_KEY_SSH, GTK_ICON_SIZE_DIALOG);
 
     /* Name and title */
     label = seahorse_object_get_label (object);
-    widget = seahorse_widget_get_widget (swidget, "comment-entry");
+    widget = gtk_builder_get_object (swidget->gtkbuilder, "comment-entry");
     if (widget)
         gtk_entry_set_text (GTK_ENTRY (widget), label);
     widget = seahorse_widget_get_toplevel (swidget);
     gtk_window_set_title (GTK_WINDOW (widget), label);
 
     /* Key id */
-    widget = glade_xml_get_widget (swidget->xml, "id-label");
+    widget = GTK_WIDGET (gtk_builder_get_object (swidget->gtkbuilder, "id-label"));
     if (widget) {
         label = seahorse_object_get_identifier (object);
         gtk_label_set_text (GTK_LABEL (widget), label);
@@ -262,10 +262,10 @@ do_main (SeahorseWidget *swidget)
     widget = seahorse_widget_get_widget (swidget, "trust-check");
     g_return_if_fail (widget != NULL);
     
-    g_signal_handlers_block_by_func (widget, trust_toggled, swidget);
+    g_signal_handlers_block_by_func (widget, on_ssh_trust_toggled, swidget);
     gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), 
                                   seahorse_ssh_key_get_trust (skey) >= SEAHORSE_VALIDITY_FULL);
-    g_signal_handlers_unblock_by_func (widget, trust_toggled, swidget);
+    g_signal_handlers_unblock_by_func (widget, on_ssh_trust_toggled, swidget);
 }
 
 static void 
@@ -280,26 +280,26 @@ do_details (SeahorseWidget *swidget)
     object = SEAHORSE_OBJECT_WIDGET (swidget)->object;
     skey = SEAHORSE_SSH_KEY (object);
 
-    widget = glade_xml_get_widget (swidget->xml, "fingerprint-label");
+    widget = GTK_WIDGET (gtk_builder_get_object (swidget->gtkbuilder, "fingerprint-label"));
     if (widget) {
         text = seahorse_ssh_key_get_fingerprint (skey);
         gtk_label_set_text (GTK_LABEL (widget), text);
         g_free (text);
     }
 
-    widget = glade_xml_get_widget (swidget->xml, "algo-label");
+    widget = GTK_WIDGET (gtk_builder_get_object (swidget->gtkbuilder, "algo-label"));
     if (widget) {
         label = seahorse_ssh_key_get_algo_str (skey);
         gtk_label_set_text (GTK_LABEL (widget), label);
     }
 
-    widget = glade_xml_get_widget (swidget->xml, "location-label");
+    widget = GTK_WIDGET (gtk_builder_get_object (swidget->gtkbuilder, "location-label"));
     if (widget) {
         label = seahorse_ssh_key_get_location (skey);
         gtk_label_set_text (GTK_LABEL (widget), label);  
     }
 
-    widget = glade_xml_get_widget (swidget->xml, "strength-label");
+    widget = GTK_WIDGET (gtk_builder_get_object (swidget->gtkbuilder, "strength-label"));
     if (widget) {
         text = g_strdup_printf ("%d", seahorse_ssh_key_get_strength (skey));
         gtk_label_set_text (GTK_LABEL (widget), text);
@@ -347,27 +347,16 @@ seahorse_ssh_key_properties_show (SeahorseSSHKey *skey, GtkWindow *parent)
     do_main (swidget);
     do_details (swidget);
     
-    glade_xml_signal_connect_data (swidget->xml, "trust_toggled", 
-                                   G_CALLBACK (trust_toggled), swidget);
-    
     widget = seahorse_widget_get_widget (swidget, "comment-entry");
     g_return_if_fail (widget != NULL);
-    g_signal_connect (widget, "activate", G_CALLBACK (comment_activate), swidget);
-    g_signal_connect (widget, "focus-out-event", G_CALLBACK (comment_focus_out), swidget);
-
-    if (seahorse_object_get_usage (object) == SEAHORSE_USAGE_PRIVATE_KEY) {
-        glade_xml_signal_connect_data (swidget->xml, "export_button_clicked",
-                                       G_CALLBACK (export_button_clicked), swidget);
-        glade_xml_signal_connect_data (swidget->xml, "passphrase_button_clicked",
-                                       G_CALLBACK (passphrase_button_clicked), swidget);
-        
+
     /* A public key only */
-    } else {
+    if (seahorse_object_get_usage (object) != SEAHORSE_USAGE_PRIVATE_KEY) {
         seahorse_widget_set_visible (swidget, "passphrase-button", FALSE);
         seahorse_widget_set_visible (swidget, "export-button", FALSE);
     }
 
-    widget = glade_xml_get_widget (swidget->xml, swidget->name);
+    widget = GTK_WIDGET (seahorse_widget_get_widget (swidget, swidget->name));
     g_signal_connect (widget, "response", G_CALLBACK (properties_response), swidget);
     seahorse_bind_objects (NULL, skey, (SeahorseTransfer)key_notify, swidget);
 
diff --git a/ssh/seahorse-ssh-key-properties.xml b/ssh/seahorse-ssh-key-properties.xml
new file mode 100644
index 0000000..7b3b011
--- /dev/null
+++ b/ssh/seahorse-ssh-key-properties.xml
@@ -0,0 +1,613 @@
+<?xml version="1.0"?>
+<interface>
+  <requires lib="gtk+" version="2.16"/>
+  <!-- interface-naming-policy toplevel-contextual -->
+  <object class="GtkDialog" id="ssh-key-properties">
+    <property name="visible">True</property>
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes">Key Properties</property>
+    <property name="resizable">False</property>
+    <property name="type_hint">dialog</property>
+    <property name="has_separator">False</property>
+    <signal name="delete_event" handler="on_widget_delete_event"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox1">
+        <property name="visible">True</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkNotebook" id="notebook">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="border_width">5</property>
+            <child>
+              <object class="GtkVBox" id="vbox7">
+                <property name="visible">True</property>
+                <property name="border_width">12</property>
+                <property name="spacing">12</property>
+                <child>
+                  <object class="GtkHBox" id="hbox61">
+                    <property name="visible">True</property>
+                    <child>
+                      <object class="GtkImage" id="key-image">
+                        <property name="visible">True</property>
+                        <property name="yalign">0</property>
+                        <property name="stock">gtk-missing-image</property>
+                        <property name="icon-size">6</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkTable" id="table9">
+                        <property name="visible">True</property>
+                        <property name="n_rows">4</property>
+                        <property name="n_columns">2</property>
+                        <property name="column_spacing">12</property>
+                        <property name="row_spacing">3</property>
+                        <child>
+                          <object class="GtkLabel" id="label74">
+                            <property name="visible">True</property>
+                            <property name="xalign">1</property>
+                            <property name="label" translatable="yes">&lt;b&gt;Identifier:&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                          </object>
+                          <packing>
+                            <property name="top_attach">3</property>
+                            <property name="bottom_attach">4</property>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options"></property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="id-label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">00:00:00:00:00</property>
+                            <property name="selectable">True</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                            <property name="top_attach">3</property>
+                            <property name="bottom_attach">4</property>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options"></property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label93">
+                            <property name="visible">True</property>
+                            <property name="xalign">1</property>
+                            <property name="yalign">0</property>
+                            <property name="label" translatable="yes">&lt;b&gt;Type:&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                          </object>
+                          <packing>
+                            <property name="top_attach">2</property>
+                            <property name="bottom_attach">3</property>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options"></property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="location-label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Secure Shell Key</property>
+                            <property name="selectable">True</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                            <property name="top_attach">2</property>
+                            <property name="bottom_attach">3</property>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options"></property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label72">
+                            <property name="visible">True</property>
+                            <property name="xalign">1</property>
+                            <property name="yalign">0</property>
+                            <property name="label" translatable="yes">&lt;b&gt;Name:&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                          </object>
+                          <packing>
+                            <property name="top_attach">1</property>
+                            <property name="bottom_attach">2</property>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options"></property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkEntry" id="comment-entry">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="activates_default">True</property>
+                            <signal name="focus_out_event" handler="on_ssh_comment_focus_out"/>
+                            <signal name="activate" handler="on_ssh_comment_activate"/>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                            <property name="top_attach">1</property>
+                            <property name="bottom_attach">2</property>
+                            <property name="y_options"></property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label22227">
+                            <property name="visible">True</property>
+                            <property name="xalign">0</property>
+                            <property name="yalign">1</property>
+                            <property name="label" translatable="yes">Used to connect to other computers.</property>
+                            <property name="use_markup">True</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options">GTK_FILL</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label22228">
+                            <property name="visible">True</property>
+                            <property name="xalign">1</property>
+                            <property name="yalign">1</property>
+                            <property name="label" translatable="yes" comments="To translators: This is the noun not the verb.">&lt;b&gt;Use:&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                          </object>
+                          <packing>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options"></property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkAlignment" id="alignment42">
+                    <property name="visible">True</property>
+                    <property name="xalign">1</property>
+                    <property name="xscale">0</property>
+                    <property name="yscale">0</property>
+                    <child>
+                      <object class="GtkButton" id="passphrase-button">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <signal name="clicked" handler="on_ssh_passphrase_button_clicked"/>
+                        <child>
+                          <object class="GtkAlignment" id="alignment43">
+                            <property name="visible">True</property>
+                            <property name="xscale">0</property>
+                            <property name="yscale">0</property>
+                            <child>
+                              <object class="GtkHBox" id="hbox58">
+                                <property name="visible">True</property>
+                                <property name="spacing">2</property>
+                                <child>
+                                  <object class="GtkImage" id="image38">
+                                    <property name="visible">True</property>
+                                    <property name="stock">gtk-edit</property>
+                                    <property name="icon-size">4</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkLabel" id="label22224">
+                                    <property name="visible">True</property>
+                                    <property name="label" translatable="yes">Change _Passphrase</property>
+                                    <property name="use_underline">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </object>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkVBox" id="vbox28">
+                    <property name="visible">True</property>
+                    <property name="spacing">6</property>
+                    <child>
+                      <object class="GtkLabel" id="label22226">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Trust&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkAlignment" id="alignment46">
+                        <property name="visible">True</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <object class="GtkVBox" id="vbox29">
+                            <property name="visible">True</property>
+                            <property name="spacing">6</property>
+                            <child>
+                              <object class="GtkCheckButton" id="trust-check">
+                                <property name="label" translatable="yes">The owner of this key is _authorized to connect to this computer</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="use_underline">True</property>
+                                <property name="draw_indicator">True</property>
+                                <signal name="toggled" handler="on_ssh_trust_toggled"/>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="trust-message">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="label" translatable="yes">&lt;i&gt;This only applies to the '%s'&lt;/i&gt; account.</property>
+                                <property name="use_markup">True</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="label1">
+                <property name="visible">True</property>
+                <property name="xpad">3</property>
+                <property name="label" translatable="yes">Key</property>
+              </object>
+              <packing>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkVBox" id="vbox8">
+                <property name="visible">True</property>
+                <property name="border_width">12</property>
+                <property name="spacing">12</property>
+                <child>
+                  <object class="GtkFrame" id="frame4">
+                    <property name="visible">True</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
+                    <child>
+                      <object class="GtkAlignment" id="alignment29">
+                        <property name="visible">True</property>
+                        <property name="top_padding">6</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <object class="GtkTable" id="table10">
+                            <property name="visible">True</property>
+                            <property name="n_rows">4</property>
+                            <property name="n_columns">2</property>
+                            <property name="column_spacing">12</property>
+                            <property name="row_spacing">6</property>
+                            <child>
+                              <object class="GtkLabel" id="label109">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="yalign">0</property>
+                                <property name="label" translatable="yes">&lt;b&gt;Algorithm:&lt;/b&gt;</property>
+                                <property name="use_markup">True</property>
+                              </object>
+                              <packing>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label25">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="yalign">0</property>
+                                <property name="label" translatable="yes">&lt;b&gt;Strength:&lt;/b&gt;</property>
+                                <property name="use_markup">True</property>
+                              </object>
+                              <packing>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="algo-label">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="xalign">0</property>
+                                <property name="label" translatable="yes">label22229</property>
+                                <property name="selectable">True</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="strength-label">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="xalign">0</property>
+                                <property name="label" translatable="yes">label22230</property>
+                                <property name="selectable">True</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label113">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="label" translatable="yes">&lt;b&gt;Location:&lt;/b&gt;</property>
+                                <property name="use_markup">True</property>
+                              </object>
+                              <packing>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label22231">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="label" translatable="yes">&lt;b&gt;Fingerprint:&lt;/b&gt;</property>
+                                <property name="use_markup">True</property>
+                              </object>
+                              <packing>
+                                <property name="top_attach">3</property>
+                                <property name="bottom_attach">4</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="fingerprint-label">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="xalign">0</property>
+                                <property name="yalign">0</property>
+                                <property name="label" translatable="yes">label22232</property>
+                                <property name="selectable">True</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">3</property>
+                                <property name="bottom_attach">4</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="location-label1">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="xalign">0</property>
+                                <property name="yalign">0</property>
+                                <property name="label" translatable="yes">/home/nate/.ssh/blah_rsa</property>
+                                <property name="use_markup">True</property>
+                                <property name="selectable">True</property>
+                                <property name="ellipsize">start</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
+                                <property name="y_options"></property>
+                              </packing>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                    <child type="label">
+                      <object class="GtkLabel" id="label108">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Technical Details:&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkAlignment" id="alignment44">
+                    <property name="visible">True</property>
+                    <property name="xalign">1</property>
+                    <property name="xscale">0</property>
+                    <property name="yscale">0</property>
+                    <child>
+                      <object class="GtkButton" id="export-button">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <signal name="clicked" handler="on_ssh_export_button_clicked"/>
+                        <child>
+                          <object class="GtkAlignment" id="alignment45">
+                            <property name="visible">True</property>
+                            <property name="xscale">0</property>
+                            <property name="yscale">0</property>
+                            <child>
+                              <object class="GtkHBox" id="hbox59">
+                                <property name="visible">True</property>
+                                <property name="spacing">2</property>
+                                <child>
+                                  <object class="GtkImage" id="image39">
+                                    <property name="visible">True</property>
+                                    <property name="stock">gtk-save-as</property>
+                                    <property name="icon-size">4</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkLabel" id="label22225">
+                                    <property name="visible">True</property>
+                                    <property name="label" translatable="yes">E_xport Complete Key</property>
+                                    <property name="use_underline">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </object>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="label22222">
+                <property name="visible">True</property>
+                <property name="xpad">3</property>
+                <property name="label" translatable="yes">Details</property>
+              </object>
+              <packing>
+                <property name="position">1</property>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area1">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="helpbutton1">
+                <property name="label">gtk-help</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+                <signal name="pressed" handler="on_widget_help"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="closebutton1">
+                <property name="label">gtk-close</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+                <signal name="pressed" handler="on_widget_closed"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-11">helpbutton1</action-widget>
+      <action-widget response="-7">closebutton1</action-widget>
+    </action-widgets>
+  </object>
+</interface>
diff --git a/ssh/seahorse-ssh-upload.c b/ssh/seahorse-ssh-upload.c
index b2209a1..62c27dc 100644
--- a/ssh/seahorse-ssh-upload.c
+++ b/ssh/seahorse-ssh-upload.c
@@ -47,18 +47,18 @@ upload_complete (SeahorseOperation *op, gpointer dummy)
     }    
 }
 
-static void
-input_changed (GtkWidget *dummy, SeahorseWidget *swidget)
+G_MODULE_EXPORT void
+on_upload_input_changed (GtkWidget *dummy, SeahorseWidget *swidget)
 {
     GtkWidget *widget;
     const gchar *user, *host, *port;
     gchar *t = NULL;
 
-    widget = glade_xml_get_widget (swidget->xml, "user-label");
+    widget = GTK_WIDGET (seahorse_widget_get_widget (swidget, "user-label"));
     user = gtk_entry_get_text (GTK_ENTRY (widget));
     g_return_if_fail (user && g_utf8_validate (user, -1, NULL));
 
-    widget = glade_xml_get_widget (swidget->xml, "host-label");
+    widget = GTK_WIDGET (seahorse_widget_get_widget (swidget, "host-label"));
     host = gtk_entry_get_text (GTK_ENTRY (widget));
     g_return_if_fail (host && g_utf8_validate (host, -1, NULL));
     
@@ -71,7 +71,7 @@ input_changed (GtkWidget *dummy, SeahorseWidget *swidget)
         host = t = g_strndup (host, port - host);
     }
 
-    widget = glade_xml_get_widget (swidget->xml, "ok");
+    widget = GTK_WIDGET (seahorse_widget_get_widget (swidget, "ok"));
     gtk_widget_set_sensitive (widget, host[0] && !seahorse_util_string_is_whitespace (host) && 
                                       user[0] && !seahorse_util_string_is_whitespace (user));
     
@@ -142,11 +142,11 @@ upload_keys (SeahorseWidget *swidget)
     keys = (GList*)g_object_steal_data (G_OBJECT (swidget), "upload-keys");
     g_return_if_fail (keys != NULL);
 
-    widget = glade_xml_get_widget (swidget->xml, "user-label");
+    widget = GTK_WIDGET (seahorse_widget_get_widget (swidget, "user-label"));
     cuser = gtk_entry_get_text (GTK_ENTRY (widget));
     g_return_if_fail (cuser && g_utf8_validate (cuser, -1, NULL));
     
-    widget = glade_xml_get_widget (swidget->xml, "host-label");
+    widget = GTK_WIDGET (seahorse_widget_get_widget (swidget, "host-label"));
     chost = (gchar*)gtk_entry_get_text (GTK_ENTRY (widget));
     g_return_if_fail (chost && g_utf8_validate (chost, -1, NULL));
     
@@ -200,24 +200,21 @@ seahorse_ssh_upload_prompt (GList *keys, GtkWindow *parent)
     swidget = seahorse_widget_new_allow_multiple ("ssh-upload", parent);
     g_return_if_fail (swidget != NULL);
     
-    win = GTK_WINDOW (glade_xml_get_widget (swidget->xml, swidget->name));
+    win = GTK_WINDOW (GTK_WIDGET (seahorse_widget_get_widget (swidget, swidget->name)));
 
     /* Default to the users current name */
-    w = glade_xml_get_widget (swidget->xml, "user-label");
+    w = GTK_WIDGET (seahorse_widget_get_widget (swidget, "user-label"));
     gtk_entry_set_text (GTK_ENTRY (w), g_get_user_name ());
  
     /* Focus the host */
-    w = glade_xml_get_widget (swidget->xml, "host-label");
+    w = GTK_WIDGET (seahorse_widget_get_widget (swidget, "host-label"));
     gtk_widget_grab_focus (w);    
 
     keys = g_list_copy (keys);
     g_object_set_data_full (G_OBJECT (swidget), "upload-keys", keys, 
                             (GDestroyNotify)g_list_free);
 
-    glade_xml_signal_connect_data (swidget->xml, "input_changed", 
-                                   G_CALLBACK (input_changed), swidget);
-
-    input_changed (NULL, swidget);
+    on_upload_input_changed (NULL, swidget);
 
     for (;;) {
         switch (gtk_dialog_run (GTK_DIALOG (win))) {
diff --git a/ssh/seahorse-ssh-upload.xml b/ssh/seahorse-ssh-upload.xml
new file mode 100644
index 0000000..b67d859
--- /dev/null
+++ b/ssh/seahorse-ssh-upload.xml
@@ -0,0 +1,331 @@
+<?xml version="1.0"?>
+<!--*- mode: xml -*-->
+<interface>
+  <object class="GtkDialog" id="ssh-upload">
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes">Set Up Computer for SSH Connection</property>
+    <property name="type">GTK_WINDOW_TOPLEVEL</property>
+    <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
+    <property name="modal">True</property>
+    <property name="default_width">400</property>
+    <property name="resizable">False</property>
+    <property name="destroy_with_parent">False</property>
+    <property name="decorated">True</property>
+    <property name="skip_taskbar_hint">True</property>
+    <property name="skip_pager_hint">True</property>
+    <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+    <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+    <property name="focus_on_map">True</property>
+    <property name="urgency_hint">False</property>
+    <property name="has_separator">False</property>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox1">
+        <property name="visible">True</property>
+        <property name="homogeneous">False</property>
+        <property name="spacing">2</property>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area1">
+            <property name="visible">True</property>
+            <property name="layout_style">GTK_BUTTONBOX_END</property>
+            <child>
+              <object class="GtkButton" id="cancel">
+                <property name="visible">True</property>
+                <property name="can_default">True</property>
+                <property name="can_focus">True</property>
+                <property name="label">gtk-cancel</property>
+                <property name="use_stock">True</property>
+                <property name="relief">GTK_RELIEF_NORMAL</property>
+                <property name="focus_on_click">True</property>
+              </object>
+            </child>
+            <child>
+              <object class="GtkButton" id="ok">
+                <property name="visible">True</property>
+                <property name="sensitive">False</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="can_focus">True</property>
+                <property name="has_focus">True</property>
+                <property name="relief">GTK_RELIEF_NORMAL</property>
+                <property name="focus_on_click">True</property>
+                <child>
+                  <object class="GtkAlignment" id="alignment1">
+                    <property name="visible">True</property>
+                    <property name="xalign">0.5</property>
+                    <property name="yalign">0.5</property>
+                    <property name="xscale">0</property>
+                    <property name="yscale">0</property>
+                    <property name="top_padding">0</property>
+                    <property name="bottom_padding">0</property>
+                    <property name="left_padding">0</property>
+                    <property name="right_padding">0</property>
+                    <child>
+                      <object class="GtkHBox" id="hbox4">
+                        <property name="visible">True</property>
+                        <property name="homogeneous">False</property>
+                        <property name="spacing">2</property>
+                        <child>
+                          <object class="GtkImage" id="image2">
+                            <property name="visible">True</property>
+                            <property name="stock">gtk-go-up</property>
+                            <property name="icon_size">4</property>
+                            <property name="xalign">0.5</property>
+                            <property name="yalign">0.5</property>
+                            <property name="xpad">0</property>
+                            <property name="ypad">0</property>
+                          </object>
+                          <packing>
+                            <property name="padding">0</property>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label6">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">_Set Up</property>
+                            <property name="use_underline">True</property>
+                            <property name="use_markup">False</property>
+                            <property name="justify">GTK_JUSTIFY_LEFT</property>
+                            <property name="wrap">False</property>
+                            <property name="selectable">False</property>
+                            <property name="xalign">0.5</property>
+                            <property name="yalign">0.5</property>
+                            <property name="xpad">0</property>
+                            <property name="ypad">0</property>
+                            <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                            <property name="width_chars">-1</property>
+                            <property name="single_line_mode">False</property>
+                            <property name="angle">0</property>
+                          </object>
+                          <packing>
+                            <property name="padding">0</property>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="padding">0</property>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="pack_type">GTK_PACK_END</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkVBox" id="vbox1">
+            <property name="border_width">5</property>
+            <property name="visible">True</property>
+            <property name="homogeneous">False</property>
+            <property name="spacing">12</property>
+            <child>
+              <object class="GtkVBox" id="vbox2">
+                <property name="visible">True</property>
+                <property name="homogeneous">False</property>
+                <property name="spacing">12</property>
+                <child>
+                  <object class="GtkLabel" id="label5">
+                    <property name="width_request">380</property>
+                    <property name="visible">True</property>
+                    <property name="label" translatable="yes">To use your Secure Shell key with another computer that uses SSH, you must already have a login account on that computer.</property>
+                    <property name="use_underline">False</property>
+                    <property name="use_markup">False</property>
+                    <property name="justify">GTK_JUSTIFY_LEFT</property>
+                    <property name="wrap">True</property>
+                    <property name="selectable">False</property>
+                    <property name="xalign">0.5</property>
+                    <property name="yalign">0.5</property>
+                    <property name="xpad">0</property>
+                    <property name="ypad">0</property>
+                    <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                    <property name="width_chars">-1</property>
+                    <property name="single_line_mode">False</property>
+                    <property name="angle">0</property>
+                  </object>
+                  <packing>
+                    <property name="padding">0</property>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkTable" id="table1">
+                    <property name="visible">True</property>
+                    <property name="n_rows">2</property>
+                    <property name="n_columns">2</property>
+                    <property name="homogeneous">False</property>
+                    <property name="row_spacing">6</property>
+                    <property name="column_spacing">12</property>
+                    <child>
+                      <object class="GtkVBox" id="vbox3">
+                        <property name="visible">True</property>
+                        <property name="homogeneous">False</property>
+                        <property name="spacing">3</property>
+                        <child>
+                          <object class="GtkEntry" id="host-label">
+                            <property name="visible">True</property>
+                            <property name="tooltip-text" translatable="yes">The host name or address of the server.</property>
+                            <property name="can_focus">True</property>
+                            <property name="has_focus">True</property>
+                            <property name="editable">True</property>
+                            <property name="visibility">True</property>
+                            <property name="max_length">0</property>
+                            <property name="text" translatable="yes"/>
+                            <property name="has_frame">True</property>
+                            <property name="invisible_char">&#x25CF;</property>
+                            <property name="activates_default">True</property>
+                            <signal handler="on_upload_input_changed" last_modification_time="Sat, 05 Nov 2005 21:00:40 GMT" name="changed"/>
+                          </object>
+                          <packing>
+                            <property name="padding">0</property>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label7">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">&lt;i&gt;eg: fileserver.example.com:port&lt;/i&gt;</property>
+                            <property name="use_underline">False</property>
+                            <property name="use_markup">True</property>
+                            <property name="justify">GTK_JUSTIFY_LEFT</property>
+                            <property name="wrap">False</property>
+                            <property name="selectable">False</property>
+                            <property name="xalign">0</property>
+                            <property name="yalign">0.5</property>
+                            <property name="xpad">0</property>
+                            <property name="ypad">0</property>
+                            <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                            <property name="width_chars">-1</property>
+                            <property name="single_line_mode">False</property>
+                            <property name="angle">0</property>
+                          </object>
+                          <packing>
+                            <property name="padding">0</property>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="top_attach">0</property>
+                        <property name="bottom_attach">1</property>
+                        <property name="x_options">fill</property>
+                        <property name="y_options">fill</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="label3">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">_Computer Name:</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_markup">False</property>
+                        <property name="justify">GTK_JUSTIFY_LEFT</property>
+                        <property name="wrap">False</property>
+                        <property name="selectable">False</property>
+                        <property name="xalign">1</property>
+                        <property name="yalign">0</property>
+                        <property name="xpad">0</property>
+                        <property name="ypad">4</property>
+                        <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                        <property name="width_chars">-1</property>
+                        <property name="single_line_mode">False</property>
+                        <property name="angle">0</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="right_attach">1</property>
+                        <property name="top_attach">0</property>
+                        <property name="bottom_attach">1</property>
+                        <property name="x_options">fill</property>
+                        <property name="y_options">fill</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="label2">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">_Login Name:</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_markup">False</property>
+                        <property name="justify">GTK_JUSTIFY_LEFT</property>
+                        <property name="wrap">False</property>
+                        <property name="selectable">False</property>
+                        <property name="xalign">1</property>
+                        <property name="yalign">0.5</property>
+                        <property name="xpad">0</property>
+                        <property name="ypad">0</property>
+                        <property name="mnemonic_widget">user-label</property>
+                        <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                        <property name="width_chars">-1</property>
+                        <property name="single_line_mode">False</property>
+                        <property name="angle">0</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="right_attach">1</property>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
+                        <property name="x_options">fill</property>
+                        <property name="y_options"/>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" id="user-label">
+                        <property name="visible">True</property>
+                        <property name="tooltip-text" translatable="yes">The host name or address of the server.</property>
+                        <property name="can_focus">True</property>
+                        <property name="has_focus">True</property>
+                        <property name="editable">True</property>
+                        <property name="visibility">True</property>
+                        <property name="max_length">0</property>
+                        <property name="text" translatable="yes"/>
+                        <property name="has_frame">True</property>
+                        <property name="invisible_char">&#x25CF;</property>
+                        <property name="activates_default">True</property>
+                        <signal handler="on_upload_input_changed" last_modification_time="Sat, 05 Nov 2005 21:00:53 GMT" name="changed"/>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
+                        <property name="y_options"/>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="padding">0</property>
+                    <property name="expand">True</property>
+                    <property name="fill">True</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="padding">0</property>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="padding">0</property>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-6">cancel</action-widget>
+      <action-widget response="-3">ok</action-widget>
+    </action-widgets>
+  </object>
+</interface>



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