[seahorse/refactor] Cleanup adding new keys, items, keyrings



commit 168e07166d7c20ee7d5a2023ba8d27ddf67165ec
Author: Stef Walter <stefw collabora co uk>
Date:   Thu Oct 20 13:11:22 2011 +0200

    Cleanup adding new keys, items, keyrings
    
     * Fix dialog issues in new dialogs
     * Fix prompting issues, and rework selector

 gkr/seahorse-gkr-actions.c       |   19 +++-
 pgp/seahorse-gpgme-generate.c    |   12 +-
 pgp/seahorse-pgp-generate.xml    |  197 ++++++++++++++++------------
 src/seahorse-generate-select.c   |  269 ++++++++++++++++++++++++--------------
 src/seahorse-generate-select.h   |   24 +----
 src/seahorse-generate-select.xml |   82 +------------
 src/seahorse-key-manager.c       |   25 ++++
 src/seahorse-key-manager.ui      |    2 +-
 ssh/seahorse-ssh-generate.c      |   10 +-
 ssh/seahorse-ssh-generate.xml    |  209 ++++++++++++++----------------
 10 files changed, 439 insertions(+), 410 deletions(-)
---
diff --git a/gkr/seahorse-gkr-actions.c b/gkr/seahorse-gkr-actions.c
index bddf259..091febe 100644
--- a/gkr/seahorse-gkr-actions.c
+++ b/gkr/seahorse-gkr-actions.c
@@ -75,12 +75,19 @@ on_new_item (GtkAction *action,
 }
 
 static const GtkActionEntry BACKEND_ACTIONS[] = {
-	{ "gkr-keyring-new", "folder", N_("New password keyring"), "",
+	{ "gkr-keyring-new", NULL, N_("New password keyring"), "",
 	  N_("Used to store application and network passwords"), G_CALLBACK (on_new_keyring) },
-	{ "gkr-item-new", "emblem-readonly", N_("New password..."), "",
+	{ "gkr-item-new", NULL, N_("New password..."), "",
 	  N_("Safely store a password or secret."), G_CALLBACK (on_new_item) },
 };
 
+static const GtkActionEntry ENTRIES_NEW[] = {
+	{ "gkr-add-keyring", "folder", N_("Password Keyring"), "",
+	  N_("Used to store application and network passwords"), G_CALLBACK (on_new_keyring) },
+	{ "gkr-add-item", GCR_ICON_PASSWORD, N_("Stored Password"), "",
+	  N_("Safely store a password or secret."), G_CALLBACK (on_new_item) }
+};
+
 static const gchar* BACKEND_UI =
 "<ui>"
 "	<popup name='SeahorseGkrBackend'>"
@@ -92,9 +99,17 @@ static void
 seahorse_gkr_backend_actions_init (SeahorseGkrBackendActions *self)
 {
 	GtkActionGroup *actions = GTK_ACTION_GROUP (self);
+
 	gtk_action_group_set_translation_domain (actions, GETTEXT_PACKAGE);
 	gtk_action_group_add_actions (actions, BACKEND_ACTIONS, G_N_ELEMENTS (BACKEND_ACTIONS), self);
 	seahorse_actions_register_definition (SEAHORSE_ACTIONS (self), BACKEND_UI);
+
+	/* Register another set of actions as a generator */
+	actions = gtk_action_group_new ("gkr-generate");
+	gtk_action_group_set_translation_domain (actions, GETTEXT_PACKAGE);
+	gtk_action_group_add_actions (actions, ENTRIES_NEW, G_N_ELEMENTS (ENTRIES_NEW), NULL);
+	seahorse_registry_register_object (NULL, G_OBJECT (actions), "generator", NULL);
+	g_object_unref (actions);
 }
 
 static void
diff --git a/pgp/seahorse-gpgme-generate.c b/pgp/seahorse-gpgme-generate.c
index 33783a1..7a056fd 100644
--- a/pgp/seahorse-gpgme-generate.c
+++ b/pgp/seahorse-gpgme-generate.c
@@ -29,6 +29,7 @@
  
 #include "egg-datetime.h"
 
+#include "seahorse-action.h"
 #include "seahorse-icons.h"
 #include "seahorse-registry.h"
 #include "seahorse-passphrase.h"
@@ -85,11 +86,13 @@ on_pgp_generate_key (GtkAction *action, gpointer unused)
 	keyring = seahorse_pgp_backend_get_default_keyring (NULL);
 	g_return_if_fail (keyring != NULL);
 
-	seahorse_gpgme_generate_show (keyring, NULL, NULL, NULL, NULL);
+	seahorse_gpgme_generate_show (keyring,
+	                              seahorse_action_get_window (action),
+	                              NULL, NULL, NULL);
 }
 
 static const GtkActionEntry ACTION_ENTRIES[] = {
-	{ "pgp-generate-key", SEAHORSE_PGP_STOCK_ICON, N_ ("PGP Key"), "", 
+	{ "pgp-generate-key", GCR_ICON_KEY_PAIR, N_ ("PGP Key"), "",
 	  N_("Used to encrypt email and files"), G_CALLBACK (on_pgp_generate_key) }
 };
 
@@ -452,11 +455,6 @@ seahorse_gpgme_generate_show (SeahorseGpgmeKeyring *keyring,
         g_return_if_fail (widget != NULL);
         gtk_entry_set_text(GTK_ENTRY(widget),comment);
     }
-    
-    widget = seahorse_widget_get_widget (swidget, "pgp-image");
-    g_return_if_fail (widget != NULL);
-    gtk_image_set_from_icon_name (GTK_IMAGE (widget), SEAHORSE_ICON_SECRET,
-                                  GTK_ICON_SIZE_DIALOG);
 
     /* The algoritms */
     widget = seahorse_widget_get_widget (swidget, "algorithm-choice");
diff --git a/pgp/seahorse-pgp-generate.xml b/pgp/seahorse-pgp-generate.xml
index 259a10e..2017396 100644
--- a/pgp/seahorse-pgp-generate.xml
+++ b/pgp/seahorse-pgp-generate.xml
@@ -1,18 +1,17 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <interface>
   <requires lib="gtk+" version="2.16"/>
-  <!-- interface-naming-policy toplevel-contextual -->
-  <object class="GtkImage" id="create-image">
-    <property name="stock">gtk-ok</property>
-    <property name="icon-size">4</property>
-  </object>
   <object class="GtkAdjustment" id="adjustment1">
-    <property name="value">2048</property>
     <property name="lower">512</property>
     <property name="upper">8192</property>
+    <property name="value">2048</property>
     <property name="step_increment">512</property>
     <property name="page_increment">1</property>
   </object>
+  <object class="GtkImage" id="create-image">
+    <property name="can_focus">False</property>
+    <property name="stock">gtk-ok</property>
+  </object>
   <object class="GtkListStore" id="model1">
     <columns>
       <!-- column-name gchararray -->
@@ -26,40 +25,113 @@
   </object>
   <object class="GtkDialog" id="pgp-generate">
     <property name="visible">True</property>
+    <property name="can_focus">False</property>
     <property name="border_width">5</property>
-    <property name="title" translatable="yes">New PGP Key</property>
     <property name="resizable">False</property>
+    <property name="modal">True</property>
     <property name="type_hint">dialog</property>
-    <signal name="response" handler="on_gpgme_generate_response"/>
-    <signal name="delete_event" handler="on_widget_delete_event"/>
+    <signal name="delete-event" handler="on_widget_delete_event" swapped="no"/>
+    <signal name="response" handler="on_gpgme_generate_response" swapped="no"/>
     <child internal-child="vbox">
-      <object class="GtkVBox" id="dialog-vbox1">
+      <object class="GtkBox" id="dialog-vbox1">
         <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="orientation">vertical</property>
         <property name="spacing">2</property>
+        <child internal-child="action_area">
+          <object class="GtkButtonBox" id="dialog-action_area1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</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_action_appearance">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="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_action_appearance">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="label" translatable="yes">C_reate</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">Generate a new key</property>
+                <property name="use_action_appearance">False</property>
+                <property name="image">create-image</property>
+                <property name="use_underline">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
         <child>
           <object class="GtkHBox" id="hbox2">
             <property name="visible">True</property>
+            <property name="can_focus">False</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="can_focus">False</property>
                 <property name="yalign">0</property>
-                <property name="stock">gtk-missing-image</property>
-                <property name="icon-size">4</property>
+                <property name="icon_name">gcr-key-pair</property>
+                <property name="pixel_size">48</property>
               </object>
               <packing>
                 <property name="expand">False</property>
+                <property name="fill">True</property>
                 <property name="position">0</property>
               </packing>
             </child>
             <child>
               <object class="GtkVBox" id="vbox1">
                 <property name="visible">True</property>
+                <property name="can_focus">False</property>
                 <property name="spacing">12</property>
                 <child>
                   <object class="GtkLabel" id="label45">
                     <property name="visible">True</property>
+                    <property name="can_focus">False</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>
@@ -73,6 +145,7 @@
                 <child>
                   <object class="GtkTable" id="table12">
                     <property name="visible">True</property>
+                    <property name="can_focus">False</property>
                     <property name="n_rows">3</property>
                     <property name="n_columns">2</property>
                     <property name="column_spacing">12</property>
@@ -82,9 +155,9 @@
                         <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="invisible_char">â</property>
                         <property name="activates_default">True</property>
-                        <signal name="changed" handler="on_gpgme_generate_entry_changed"/>
+                        <signal name="changed" handler="on_gpgme_generate_entry_changed" swapped="no"/>
                       </object>
                       <packing>
                         <property name="left_attach">1</property>
@@ -99,9 +172,9 @@
                         <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="invisible_char">â</property>
                         <property name="activates_default">True</property>
-                        <signal name="changed" handler="on_gpgme_generate_entry_changed"/>
+                        <signal name="changed" handler="on_gpgme_generate_entry_changed" swapped="no"/>
                       </object>
                       <packing>
                         <property name="left_attach">1</property>
@@ -114,9 +187,9 @@
                         <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="invisible_char">â</property>
                         <property name="activates_default">True</property>
-                        <signal name="changed" handler="on_gpgme_generate_entry_changed"/>
+                        <signal name="changed" handler="on_gpgme_generate_entry_changed" swapped="no"/>
                       </object>
                       <packing>
                         <property name="left_attach">1</property>
@@ -129,6 +202,7 @@
                     <child>
                       <object class="GtkLabel" id="label53">
                         <property name="visible">True</property>
+                        <property name="can_focus">False</property>
                         <property name="xalign">0</property>
                         <property name="yalign">0</property>
                         <property name="label" translatable="yes">Full _Name:</property>
@@ -143,6 +217,7 @@
                     <child>
                       <object class="GtkLabel" id="label46">
                         <property name="visible">True</property>
+                        <property name="can_focus">False</property>
                         <property name="label" translatable="yes">_Email Address:</property>
                         <property name="use_underline">True</property>
                         <property name="mnemonic_widget">email-entry</property>
@@ -157,6 +232,7 @@
                     <child>
                       <object class="GtkLabel" id="label54">
                         <property name="visible">True</property>
+                        <property name="can_focus">False</property>
                         <property name="xalign">0</property>
                         <property name="label" translatable="yes">_Comment:</property>
                         <property name="use_underline">True</property>
@@ -172,6 +248,7 @@
                   </object>
                   <packing>
                     <property name="expand">False</property>
+                    <property name="fill">True</property>
                     <property name="position">1</property>
                   </packing>
                 </child>
@@ -182,6 +259,7 @@
                     <child>
                       <object class="GtkAlignment" id="alignment2">
                         <property name="visible">True</property>
+                        <property name="can_focus">False</property>
                         <property name="xalign">0</property>
                         <property name="yalign">0</property>
                         <property name="xscale">0</property>
@@ -191,6 +269,7 @@
                         <child>
                           <object class="GtkTable" id="table11">
                             <property name="visible">True</property>
+                            <property name="can_focus">False</property>
                             <property name="n_rows">3</property>
                             <property name="n_columns">2</property>
                             <property name="column_spacing">12</property>
@@ -198,6 +277,7 @@
                             <child>
                               <object class="GtkHBox" id="expiry-date-container">
                                 <property name="visible">True</property>
+                                <property name="can_focus">False</property>
                                 <property name="spacing">12</property>
                                 <child>
                                   <placeholder/>
@@ -208,10 +288,11 @@
                                     <property name="visible">True</property>
                                     <property name="can_focus">True</property>
                                     <property name="receives_default">False</property>
+                                    <property name="use_action_appearance">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"/>
+                                    <signal name="toggled" handler="on_gpgme_generate_expires_toggled" swapped="no"/>
                                   </object>
                                   <packing>
                                     <property name="expand">False</property>
@@ -233,6 +314,7 @@
                             <child>
                               <object class="GtkAlignment" id="alignment5">
                                 <property name="visible">True</property>
+                                <property name="can_focus">False</property>
                                 <property name="xalign">0</property>
                                 <property name="yalign">0</property>
                                 <property name="xscale">0</property>
@@ -258,15 +340,17 @@
                             <child>
                               <object class="GtkAlignment" id="alignment4">
                                 <property name="visible">True</property>
+                                <property name="can_focus">False</property>
                                 <property name="xalign">0</property>
                                 <property name="yalign">0</property>
                                 <property name="xscale">0</property>
                                 <child>
                                   <object class="GtkComboBoxText" id="algorithm-choice">
                                     <property name="visible">True</property>
-                                    <property name="id_column">1</property>
+                                    <property name="can_focus">False</property>
                                     <property name="entry_text_column">0</property>
-                                    <signal name="changed" handler="on_gpgme_generate_algorithm_changed"/>
+                                    <property name="id_column">1</property>
+                                    <signal name="changed" handler="on_gpgme_generate_algorithm_changed" swapped="no"/>
                                   </object>
                                 </child>
                               </object>
@@ -279,6 +363,7 @@
                             <child>
                               <object class="GtkLabel" id="label49">
                                 <property name="visible">True</property>
+                                <property name="can_focus">False</property>
                                 <property name="xalign">0</property>
                                 <property name="label" translatable="yes">Encryption _Type:</property>
                                 <property name="use_underline">True</property>
@@ -291,6 +376,7 @@
                             <child>
                               <object class="GtkLabel" id="label50">
                                 <property name="visible">True</property>
+                                <property name="can_focus">False</property>
                                 <property name="xalign">0</property>
                                 <property name="label" translatable="yes">Key _Strength (bits):</property>
                                 <property name="use_underline">True</property>
@@ -305,6 +391,7 @@
                             <child>
                               <object class="GtkLabel" id="label55">
                                 <property name="visible">True</property>
+                                <property name="can_focus">False</property>
                                 <property name="xalign">0</property>
                                 <property name="label" translatable="yes">E_xpiration Date:</property>
                                 <property name="use_underline">True</property>
@@ -323,6 +410,7 @@
                     <child type="label">
                       <object class="GtkLabel" id="label48">
                         <property name="visible">True</property>
+                        <property name="can_focus">False</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>
@@ -330,78 +418,23 @@
                     </child>
                   </object>
                   <packing>
+                    <property name="expand">True</property>
+                    <property name="fill">True</property>
                     <property name="position">2</property>
                   </packing>
                 </child>
               </object>
               <packing>
                 <property name="expand">False</property>
+                <property name="fill">True</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>
-              </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>
-                <property name="image">create-image</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">2</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
             <property name="expand">False</property>
-            <property name="pack_type">end</property>
-            <property name="position">0</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
           </packing>
         </child>
       </object>
diff --git a/src/seahorse-generate-select.c b/src/seahorse-generate-select.c
index 02b00ad..7fdd201 100644
--- a/src/seahorse-generate-select.c
+++ b/src/seahorse-generate-select.c
@@ -23,9 +23,34 @@
 
 #include "seahorse-generate-select.h"
 
-#include "seahorse-object-list.h"
+#include "seahorse-action.h"
 #include "seahorse-registry.h"
 
+#include <glib/gi18n.h>
+
+#define SEAHORSE_TYPE_GENERATE_SELECT             (seahorse_generate_select_get_type ())
+#define SEAHORSE_GENERATE_SELECT(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), SEAHORSE_TYPE_GENERATE_SELECT, SeahorseGenerateSelect))
+#define SEAHORSE_GENERATE_SELECT_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), SEAHORSE_TYPE_GENERATE_SELECT, SeahorseGenerateSelectClass))
+#define SEAHORSE_IS_GENERATE_SELECT(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SEAHORSE_TYPE_GENERATE_SELECT))
+#define SEAHORSE_IS_GENERATE_SELECT_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), SEAHORSE_TYPE_GENERATE_SELECT))
+#define SEAHORSE_GENERATE_SELECT_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), SEAHORSE_TYPE_GENERATE_SELECT, SeahorseGenerateSelectClass))
+
+GType              seahorse_generate_select_get_type   (void);
+
+typedef struct _SeahorseGenerateSelect SeahorseGenerateSelect;
+typedef struct _SeahorseGenerateSelectClass SeahorseGenerateSelectClass;
+
+struct _SeahorseGenerateSelect {
+	GtkDialog parent_instance;
+	GtkListStore* store;
+	GtkTreeView* view;
+	GList *action_groups;
+};
+
+struct _SeahorseGenerateSelectClass {
+	GtkDialogClass dialog_class;
+};
+
 typedef enum  {
 	COLUMN_ICON,
 	COLUMN_TEXT,
@@ -33,140 +58,195 @@ typedef enum  {
 	COLUMN_N_COLUMNS
 } Column;
 
-struct _SeahorseGenerateSelectPrivate {
-	GtkListStore* store;
-	GtkTreeView* view;
-	GtkDialog* dialog;
-	GList *action_groups;
-};
-
-G_DEFINE_TYPE (SeahorseGenerateSelect, seahorse_generate_select, SEAHORSE_TYPE_WIDGET);
+G_DEFINE_TYPE (SeahorseGenerateSelect, seahorse_generate_select, GTK_TYPE_DIALOG);
 
 static const char* TEMPLATE = "<span size=\"larger\" weight=\"bold\">%s</span>\n%s";
 
-/* -----------------------------------------------------------------------------
- * INTERNAL 
- */
-
-static gboolean 
-fire_selected_action (SeahorseGenerateSelect* self) 
+static GtkAction *
+get_selected_action (SeahorseGenerateSelect *self)
 {
 	GtkTreeSelection *selection;
 	GtkTreeIter iter;
 	GtkTreeModel *model;
 	GtkAction *action;
-	
-	selection = gtk_tree_view_get_selection (self->pv->view);
+	GtkWindow *parent;
+
+	selection = gtk_tree_view_get_selection (self->view);
 	if (!gtk_tree_selection_get_selected (selection, &model, &iter))
-		return FALSE;
+		return NULL;
 
-	gtk_tree_model_get (GTK_TREE_MODEL (self->pv->store), &iter,
+	gtk_tree_model_get (GTK_TREE_MODEL (self->store), &iter,
 	                    COLUMN_ACTION, &action, -1);
 	g_assert (action != NULL);
 
-	gtk_action_activate (action);
-	return TRUE;
+	parent = gtk_window_get_transient_for (GTK_WINDOW (self));
+	seahorse_action_set_window (action, parent);
+
+	return action;
 }
 
 static void
-on_row_activated (GtkTreeView* view, GtkTreePath* path, GtkTreeViewColumn* col, SeahorseGenerateSelect* self) 
+on_row_activated (GtkTreeView *view,
+                  GtkTreePath *path,
+                  GtkTreeViewColumn *col,
+                  gpointer user_data)
 {
-	g_return_if_fail (SEAHORSE_IS_GENERATE_SELECT (self));
-	g_return_if_fail (GTK_IS_TREE_VIEW (view));
-	g_return_if_fail (path != NULL);
-	g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (col));
-	
-	if (fire_selected_action (self))
-		seahorse_widget_destroy (SEAHORSE_WIDGET (self));
+	SeahorseGenerateSelect *self = SEAHORSE_GENERATE_SELECT (user_data);
+	GtkAction *action;
+
+	action = get_selected_action (self);
+	if (action != NULL) {
+		g_object_ref (action);
+		gtk_widget_destroy (GTK_WIDGET (self));
+		gtk_action_activate (action);
+		g_object_unref (action);
+	}
 }
 
 static void 
-on_response (GtkDialog* dialog, gint response, SeahorseGenerateSelect* self) 
+on_response (GtkDialog *dialog,
+             gint response,
+             gpointer user_data)
 {
-	g_return_if_fail (SEAHORSE_IS_GENERATE_SELECT (self));
-	g_return_if_fail (GTK_IS_DIALOG (dialog));
-	
+	SeahorseGenerateSelect *self = SEAHORSE_GENERATE_SELECT (user_data);
+	GtkAction *action = NULL;
+
 	if (response == GTK_RESPONSE_OK) 
-		fire_selected_action (self);
+		action = get_selected_action (self);
+	if (action != NULL)
+		g_object_ref (action);
+
+	gtk_widget_destroy (GTK_WIDGET (self));
 
-	seahorse_widget_destroy (SEAHORSE_WIDGET (self));
+	if (action != NULL) {
+		gtk_action_activate (action);
+		g_object_unref (action);
+	}
 }
 
-/* -----------------------------------------------------------------------------
- * OBJECT 
- */
+static gint
+on_list_sort (GtkTreeModel *model,
+              GtkTreeIter *a,
+              GtkTreeIter *b,
+              gpointer user_data)
+{
+	gchar *text_a;
+	gchar *text_b;
+	gint ret;
+
+	gtk_tree_model_get (model, a, COLUMN_TEXT, &text_a, -1);
+	gtk_tree_model_get (model, b, COLUMN_TEXT, &text_b, -1);
 
+	ret = g_utf8_collate (text_a, text_b);
+
+	g_free (text_a);
+	g_free (text_b);
+
+	return ret;
+}
 
-static GObject* 
-seahorse_generate_select_constructor (GType type, guint n_props, GObjectConstructParam *props) 
+static void
+seahorse_generate_select_constructed (GObject *obj)
 {
-	SeahorseGenerateSelect *self = SEAHORSE_GENERATE_SELECT (G_OBJECT_CLASS (seahorse_generate_select_parent_class)->constructor(type, n_props, props));
+	SeahorseGenerateSelect *self = SEAHORSE_GENERATE_SELECT (obj);
 	gchar *text;
-	gchar *label, *tooltip;
 	GtkCellRenderer *pixcell;
 	GtkTreeSelection *selection;
 	GtkTreeIter iter;
-	GList *l;
+	GList *actions;
+	GList *l, *k;
 	GIcon *icon;
+	GtkBuilder *builder;
+	const gchar *path;
+	GError *error = NULL;
+	const gchar *icon_name;
+	GtkAction *action;
 
-	g_return_val_if_fail (self, NULL);	
-
-	self->pv->store = gtk_list_store_new (COLUMN_N_COLUMNS, G_TYPE_ICON, G_TYPE_STRING, GTK_TYPE_ACTION);
-
-	self->pv->action_groups = seahorse_registry_object_instances (NULL, "generator", NULL);
-	for (l = self->pv->action_groups; l; l = g_list_next (l)) {
-		GList *k, *actions = gtk_action_group_list_actions (l->data);
-		for (k = actions; k; k = g_list_next (k)) {
-			
-			g_object_get (k->data, "label", &label, "tooltip", &tooltip, "gicon", &icon, NULL);
-			text = g_strdup_printf (TEMPLATE, label, tooltip);
-
-			gtk_list_store_append (self->pv->store, &iter);
-			gtk_list_store_set (self->pv->store, &iter, 
+	G_OBJECT_CLASS (seahorse_generate_select_parent_class)->constructed (obj);
+
+	self->store = gtk_list_store_new (COLUMN_N_COLUMNS, G_TYPE_ICON, G_TYPE_STRING, GTK_TYPE_ACTION);
+	gtk_tree_sortable_set_default_sort_func (GTK_TREE_SORTABLE (self->store), on_list_sort, NULL, NULL);
+	gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (self->store), GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID, GTK_SORT_ASCENDING);
+
+	self->action_groups = seahorse_registry_object_instances (NULL, "generator", NULL);
+	for (l = self->action_groups; l != NULL; l = g_list_next (l)) {
+		actions = gtk_action_group_list_actions (l->data);
+		for (k = actions; k != NULL; k = g_list_next (k)) {
+			action = k->data;
+
+			text = g_strdup_printf (TEMPLATE, gtk_action_get_label (action),
+			                        gtk_action_get_tooltip (action));
+
+			icon = gtk_action_get_gicon (action);
+			if (icon == NULL) {
+				icon_name = gtk_action_get_icon_name (action);
+				if (icon_name)
+					icon = g_themed_icon_new (icon_name);
+				gtk_action_get_stock_id (action);
+			} else {
+				g_object_ref (icon);
+			}
+
+			gtk_list_store_append (self->store, &iter);
+			gtk_list_store_set (self->store, &iter,
 			                    COLUMN_TEXT, text, 
 			                    COLUMN_ICON, icon, 
-				            COLUMN_ACTION, k->data, 
-				            -1);
-			
-			g_free (text);
-			g_free (label);
+			                    COLUMN_ACTION, k->data,
+			                    -1);
 			g_clear_object (&icon);
-			g_free (tooltip);
 		}
-		
+
 		g_list_free (actions);
 	}
-	
+
+	builder = gtk_builder_new ();
+	path = SEAHORSE_UIDIR "/seahorse-generate-select.xml";
+	gtk_builder_add_from_file (builder, path, &error);
+	if (error != NULL) {
+		g_warning ("couldn't load ui file: %s", path);
+		g_clear_error (&error);
+		g_object_unref (builder);
+		return;
+	}
+
+	/* Setup the dialog */
+	gtk_window_set_modal (GTK_WINDOW (self), TRUE);
+	gtk_window_set_default_size (GTK_WINDOW (self), -1, 410);
+	gtk_container_add (GTK_CONTAINER (gtk_dialog_get_content_area (GTK_DIALOG (self))),
+	                   GTK_WIDGET (gtk_builder_get_object (builder, "generate-select")));
+	gtk_dialog_add_buttons (GTK_DIALOG (self),
+	                        GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+	                        _("Continue"), GTK_RESPONSE_OK,
+	                        NULL);
+
 	/* Hook it into the view */
-	self->pv->view = GTK_TREE_VIEW (seahorse_widget_get_widget (SEAHORSE_WIDGET (self), "keytype-tree"));
-	g_return_val_if_fail (self->pv->view, NULL);
-	
+	self->view = GTK_TREE_VIEW (gtk_builder_get_object (builder, "keytype-tree"));
+
+	g_object_unref (builder);
+
 	pixcell = gtk_cell_renderer_pixbuf_new ();
 	g_object_set (pixcell, "stock-size", GTK_ICON_SIZE_DND, NULL);
-	gtk_tree_view_insert_column_with_attributes (self->pv->view, -1, "", pixcell, "gicon", COLUMN_ICON, NULL);
-	gtk_tree_view_insert_column_with_attributes (self->pv->view, -1, "", gtk_cell_renderer_text_new (), "markup", COLUMN_TEXT, NULL);
-	gtk_tree_view_set_model (self->pv->view, GTK_TREE_MODEL (self->pv->store));
+	gtk_tree_view_insert_column_with_attributes (self->view, -1, "", pixcell, "gicon", COLUMN_ICON, NULL);
+	gtk_tree_view_insert_column_with_attributes (self->view, -1, "", gtk_cell_renderer_text_new (), "markup", COLUMN_TEXT, NULL);
+	gtk_tree_view_set_model (self->view, GTK_TREE_MODEL (self->store));
 
 	/* Setup selection, select first item */
-	selection = gtk_tree_view_get_selection (self->pv->view);
+	selection = gtk_tree_view_get_selection (self->view);
 	gtk_tree_selection_set_mode (selection, GTK_SELECTION_BROWSE);
-	
-	gtk_tree_model_get_iter_first (GTK_TREE_MODEL (self->pv->store), &iter);
+
+	gtk_tree_model_get_iter_first (GTK_TREE_MODEL (self->store), &iter);
 	gtk_tree_selection_select_iter (selection, &iter);
 
-	g_signal_connect (self->pv->view, "row-activated", G_CALLBACK (on_row_activated), self);
-	g_object_set (self->pv->view, "height-request", 410, NULL);
+	g_signal_connect (self->view, "row-activated", G_CALLBACK (on_row_activated), self);
+	g_object_set (self->view, "height-request", 410, NULL);
 
-	self->pv->dialog = GTK_DIALOG (seahorse_widget_get_toplevel (SEAHORSE_WIDGET (self)));
-	g_signal_connect (self->pv->dialog, "response", G_CALLBACK (on_response), self);
-	
-	return G_OBJECT (self);
+	g_signal_connect (self, "response", G_CALLBACK (on_response), self);
 }
 
 static void
 seahorse_generate_select_init (SeahorseGenerateSelect *self)
 {
-	self->pv = G_TYPE_INSTANCE_GET_PRIVATE (self, SEAHORSE_TYPE_GENERATE_SELECT, SeahorseGenerateSelectPrivate);
+
 }
 
 static void
@@ -174,12 +254,8 @@ seahorse_generate_select_finalize (GObject *obj)
 {
 	SeahorseGenerateSelect *self = SEAHORSE_GENERATE_SELECT (obj);
 
-	if (self->pv->store != NULL)
-		g_object_unref (self->pv->store);
-	self->pv->store = NULL;
-
-	seahorse_object_list_free (self->pv->action_groups);
-	self->pv->action_groups = NULL;
+	g_clear_object (&self->store);
+	g_list_free_full (self->action_groups, g_object_unref);
 
 	G_OBJECT_CLASS (seahorse_generate_select_parent_class)->finalize (obj);
 }
@@ -188,11 +264,8 @@ static void
 seahorse_generate_select_class_init (SeahorseGenerateSelectClass *klass)
 {
 	GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
-    
-	seahorse_generate_select_parent_class = g_type_class_peek_parent (klass);
-	g_type_class_add_private (klass, sizeof (SeahorseGenerateSelectPrivate));
 
-	gobject_class->constructor = seahorse_generate_select_constructor;
+	gobject_class->constructed = seahorse_generate_select_constructed;
 	gobject_class->finalize = seahorse_generate_select_finalize;
 
 }
@@ -204,11 +277,13 @@ seahorse_generate_select_class_init (SeahorseGenerateSelectClass *klass)
 void 
 seahorse_generate_select_show (GtkWindow* parent) 
 {
-	SeahorseGenerateSelect* sel;
-	
+	GtkWidget *dialog;
+
 	g_return_if_fail (parent == NULL || GTK_IS_WINDOW (parent));
-	
-	sel = g_object_ref_sink (g_object_new (SEAHORSE_TYPE_GENERATE_SELECT, "name", "generate-select", NULL));
-	if (parent != NULL)
-		gtk_window_set_transient_for (GTK_WINDOW (sel->pv->dialog), parent);
+
+	dialog = g_object_new (SEAHORSE_TYPE_GENERATE_SELECT,
+	                       "transient-for", parent,
+	                       NULL);
+
+	gtk_widget_show (dialog);
 }
diff --git a/src/seahorse-generate-select.h b/src/seahorse-generate-select.h
index c843124..f3d89cb 100644
--- a/src/seahorse-generate-select.h
+++ b/src/seahorse-generate-select.h
@@ -27,29 +27,7 @@
 
 #include "seahorse-widget.h"
 
-#define SEAHORSE_TYPE_GENERATE_SELECT             (seahorse_generate_select_get_type ())
-#define SEAHORSE_GENERATE_SELECT(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), SEAHORSE_TYPE_GENERATE_SELECT, SeahorseGenerateSelect))
-#define SEAHORSE_GENERATE_SELECT_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), SEAHORSE_TYPE_GENERATE_SELECT, SeahorseGenerateSelectClass))
-#define SEAHORSE_IS_GENERATE_SELECT(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SEAHORSE_TYPE_GENERATE_SELECT))
-#define SEAHORSE_IS_GENERATE_SELECT_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), SEAHORSE_TYPE_GENERATE_SELECT))
-#define SEAHORSE_GENERATE_SELECT_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), SEAHORSE_TYPE_GENERATE_SELECT, SeahorseGenerateSelectClass))
-
-typedef struct _SeahorseGenerateSelect SeahorseGenerateSelect;
-typedef struct _SeahorseGenerateSelectClass SeahorseGenerateSelectClass;
-typedef struct _SeahorseGenerateSelectPrivate SeahorseGenerateSelectPrivate;
-
-struct _SeahorseGenerateSelect {
-	SeahorseWidget parent_instance;
-	SeahorseGenerateSelectPrivate *pv;
-};
-
-struct _SeahorseGenerateSelectClass {
-	SeahorseWidgetClass parent_class;
-};
-
-GType seahorse_generate_select_get_type (void);
-
-void        seahorse_generate_select_show       (GtkWindow *parent);
+void               seahorse_generate_select_show       (GtkWindow *parent);
 
 G_END_DECLS
 
diff --git a/src/seahorse-generate-select.xml b/src/seahorse-generate-select.xml
index 6d8618a..4e6b096 100644
--- a/src/seahorse-generate-select.xml
+++ b/src/seahorse-generate-select.xml
@@ -1,74 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <interface>
   <requires lib="gtk+" version="2.16"/>
-  <object class="GtkImage" id="continue-image">
-    <property name="can_focus">False</property>
-    <property name="stock">gtk-go-forward</property>
-  </object>
-  <object class="GtkDialog" id="generate-select">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <property name="border_width">6</property>
-    <property name="title" translatable="yes">Create New ...</property>
-    <property name="window_position">center</property>
-    <property name="default_height">410</property>
-    <property name="type_hint">dialog</property>
-    <accelerator key="Return" signal="activate_default"/>
-    <child internal-child="vbox">
-      <object class="GtkBox" id="dialog-vbox1">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="orientation">vertical</property>
-        <property name="spacing">2</property>
-        <child internal-child="action_area">
-          <object class="GtkButtonBox" id="dialog-action_area1">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="layout_style">end</property>
-            <child>
-              <object class="GtkButton" id="button1">
-                <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_action_appearance">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="button2">
-                <property name="label" translatable="yes">C_ontinue</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_action_appearance">False</property>
-                <property name="image">continue-image</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>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="pack_type">end</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkVBox" id="vbox1">
+          <object class="GtkVBox" id="generate-select">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="border_width">5</property>
@@ -123,17 +56,4 @@
               </packing>
             </child>
           </object>
-          <packing>
-            <property name="expand">True</property>
-            <property name="fill">True</property>
-            <property name="position">1</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 c7cc1ba..0d88f61 100644
--- a/src/seahorse-key-manager.c
+++ b/src/seahorse-key-manager.c
@@ -413,12 +413,37 @@ on_item_filter_changed (GSettings *settings,
 	g_free (value);
 }
 
+#define       SEAHORSE_TYPE_MENU_ACTION          (seahorse_menu_action_get_type ())
+
+GType         seahorse_menu_action_get_type      (void) G_GNUC_CONST;
+
+typedef       GtkAction                          SeahorseMenuAction;
+
+typedef       GtkActionClass                     SeahorseMenuActionClass;
+
+G_DEFINE_TYPE (SeahorseMenuAction, seahorse_menu_action, GTK_TYPE_ACTION);
+
+static void
+seahorse_menu_action_init (SeahorseMenuAction *self)
+{
+
+}
+
+static void
+seahorse_menu_action_class_init (SeahorseMenuActionClass *klass)
+{
+	GTK_ACTION_CLASS (klass)->toolbar_item_type = GTK_TYPE_MENU_TOOL_BUTTON;
+}
+
 static const GtkActionEntry GENERAL_ACTIONS[] = {
 	{ "remote-menu", NULL, N_("_Remote") }, 
+	{ "new-menu", NULL, N_("_New") },
 	{ "app-quit", GTK_STOCK_QUIT, NULL, "<control>Q", 
 	  N_("Close this program"), G_CALLBACK (on_app_quit) }, 
 	{ "file-new", GTK_STOCK_NEW, N_("_New..."), "<control>N", 
 	  N_("Create a new key or item"), G_CALLBACK (on_file_new) },
+	{ "new-object", GTK_STOCK_ADD, N_("_New..."), NULL,
+	  N_("Add a new key or item"), G_CALLBACK (on_file_new) },
 	{ "file-import", GTK_STOCK_OPEN, N_("_Import..."), "<control>I", 
 	  N_("Import from a file"), G_CALLBACK (on_key_import_file) }, 
 	{ "edit-import-clipboard", GTK_STOCK_PASTE, NULL, "<control>V", 
diff --git a/src/seahorse-key-manager.ui b/src/seahorse-key-manager.ui
index b5815e9..7f19a9c 100644
--- a/src/seahorse-key-manager.ui
+++ b/src/seahorse-key-manager.ui
@@ -32,7 +32,7 @@
 	</menubar>
 
 	<toolbar name="MainToolbar">
-		<toolitem action="properties-object"/>
+		<toolitem action="new-object"/>
 	</toolbar>
 
 	<popup name="ObjectPopup">
diff --git a/ssh/seahorse-ssh-generate.c b/ssh/seahorse-ssh-generate.c
index dc7b724..2703e52 100644
--- a/ssh/seahorse-ssh-generate.c
+++ b/ssh/seahorse-ssh-generate.c
@@ -32,6 +32,7 @@
 #include "seahorse-ssh-key.h"
 #include "seahorse-ssh-operation.h"
 
+#include "seahorse-action.h"
 #include "seahorse-icons.h"
 #include "seahorse-progress.h"
 #include "seahorse-registry.h"
@@ -46,11 +47,12 @@
 static void
 on_ssh_generate_key (GtkAction *action, gpointer unused)
 {
-	seahorse_ssh_generate_show (seahorse_ssh_backend_get_dot_ssh (NULL), NULL);
+	seahorse_ssh_generate_show (seahorse_ssh_backend_get_dot_ssh (NULL),
+	                            seahorse_action_get_window (action));
 }
 
 static const GtkActionEntry ACTION_ENTRIES[] = {
-	{ "ssh-generate-key", SEAHORSE_SSH_STOCK_ICON, N_ ("Secure Shell Key"), "", 
+	{ "ssh-generate-key", GCR_ICON_KEY_PAIR, N_ ("Secure Shell Key"), "",
 	  N_("Used to access other computers (eg: via a terminal)"), G_CALLBACK (on_ssh_generate_key) }
 };
 
@@ -214,10 +216,6 @@ seahorse_ssh_generate_show (SeahorseSSHSource *src, GtkWindow *parent)
     g_signal_connect (seahorse_widget_get_toplevel (swidget), "response", 
                     G_CALLBACK (on_response), swidget);
 
-    widget = seahorse_widget_get_widget (swidget, "ssh-image");
-    g_return_if_fail (widget != NULL);
-    gtk_image_set_from_icon_name (GTK_IMAGE (widget), SEAHORSE_ICON_KEY_SSH, GTK_ICON_SIZE_DIALOG);
-
     /* on_change() gets called, bits entry is setup */
     widget = seahorse_widget_get_widget (swidget, "algorithm-choice");
     g_return_if_fail (widget != NULL);
diff --git a/ssh/seahorse-ssh-generate.xml b/ssh/seahorse-ssh-generate.xml
index 8b2fb9f..e93e09d 100644
--- a/ssh/seahorse-ssh-generate.xml
+++ b/ssh/seahorse-ssh-generate.xml
@@ -106,6 +106,8 @@
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
                     <property name="yalign">0</property>
+                    <property name="pixel_size">48</property>
+                    <property name="icon_name">gcr-key-pair</property>
                   </object>
                 </child>
               </object>
@@ -136,7 +138,7 @@
                             <property name="can_focus">False</property>
                             <property name="xalign">0</property>
                             <property name="yalign">0</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="label" translatable="yes">A Secure Shell (SSH) key lets you connect securely to other computers.</property>
                             <property name="wrap">True</property>
                           </object>
                           <packing>
@@ -189,27 +191,29 @@
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
                         <child>
-                          <object class="GtkTable" id="table12">
+                          <object class="GtkGrid" id="grid1">
                             <property name="visible">True</property>
                             <property name="can_focus">False</property>
+                            <property name="row_spacing">6</property>
+                            <property name="column_spacing">12</property>
                             <property name="n_rows">2</property>
                             <property name="n_columns">2</property>
-                            <property name="column_spacing">12</property>
-                            <property name="row_spacing">3</property>
                             <child>
                               <object class="GtkLabel" id="label46">
                                 <property name="visible">True</property>
                                 <property name="can_focus">False</property>
                                 <property name="xalign">1</property>
                                 <property name="yalign">0</property>
-                                <property name="label" translatable="yes">_Key Description:</property>
+                                <property name="label" translatable="yes">_Description:</property>
                                 <property name="use_markup">True</property>
                                 <property name="use_underline">True</property>
                                 <property name="mnemonic_widget">email-entry</property>
                               </object>
                               <packing>
-                                <property name="x_options">GTK_FILL</property>
-                                <property name="y_options"></property>
+                                <property name="left_attach">0</property>
+                                <property name="top_attach">0</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
                               </packing>
                             </child>
                             <child>
@@ -217,14 +221,15 @@
                                 <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="invisible_char">â</property>
                                 <property name="activates_default">True</property>
+                                <property name="invisible_char_set">True</property>
                               </object>
                               <packing>
                                 <property name="left_attach">1</property>
-                                <property name="right_attach">2</property>
-                                <property name="y_options"></property>
+                                <property name="top_attach">0</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
                               </packing>
                             </child>
                             <child>
@@ -233,31 +238,19 @@
                                 <property name="can_focus">False</property>
                                 <property name="xalign">0</property>
                                 <property name="xpad">3</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="label" translatable="yes">&lt;i&gt;Your email address, or a reminder of what this key is for.&lt;/i&gt;</property>
                                 <property name="use_markup">True</property>
                                 <property name="wrap">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>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
                               </packing>
                             </child>
                             <child>
-                              <object class="GtkLabel" id="label56">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="xalign">0</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>
+                              <placeholder/>
                             </child>
                           </object>
                         </child>
@@ -280,105 +273,99 @@
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
                     <child>
-                      <object class="GtkAlignment" id="alignment2">
+                      <object class="GtkGrid" id="grid2">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="xalign">0</property>
-                        <property name="yalign">0</property>
-                        <property name="xscale">0</property>
-                        <property name="yscale">0</property>
-                        <property name="left_padding">12</property>
+                        <property name="margin_left">20</property>
+                        <property name="row_spacing">6</property>
+                        <property name="column_spacing">12</property>
+                        <property name="n_rows">2</property>
+                        <property name="n_columns">2</property>
                         <child>
-                          <object class="GtkTable" id="table11">
+                          <object class="GtkLabel" id="label49">
                             <property name="visible">True</property>
                             <property name="can_focus">False</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="label49">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="xalign">0</property>
-                                <property name="label" translatable="yes">Encryption _Type:</property>
-                                <property name="use_underline">True</property>
-                                <property name="mnemonic_widget">algorithm-choice</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="can_focus">False</property>
-                                <property name="xalign">0</property>
-                                <property name="label" translatable="yes">Key _Strength (bits):</property>
-                                <property name="use_underline">True</property>
-                                <property name="mnemonic_widget">bits-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>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Encryption _Type:</property>
+                            <property name="use_underline">True</property>
+                            <property name="mnemonic_widget">algorithm-choice</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">0</property>
+                            <property name="width">1</property>
+                            <property name="height">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label50">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Key _Strength (bits):</property>
+                            <property name="use_underline">True</property>
+                            <property name="mnemonic_widget">bits-entry</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">1</property>
+                            <property name="width">1</property>
+                            <property name="height">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkAlignment" id="alignment4">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="xalign">0</property>
+                            <property name="yalign">0</property>
+                            <property name="xscale">0</property>
                             <child>
-                              <object class="GtkAlignment" id="alignment4">
+                              <object class="GtkComboBoxText" id="algorithm-choice">
                                 <property name="visible">True</property>
                                 <property name="can_focus">False</property>
-                                <property name="xalign">0</property>
-                                <property name="yalign">0</property>
-                                <property name="xscale">0</property>
-                                <child>
-                                  <object class="GtkComboBoxText" id="algorithm-choice">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="id_column">1</property>
-                                    <property name="entry_text_column">0</property>
-                                    <items>
-                                      <item translatable="yes">RSA</item>
-                                      <item translatable="yes">DSA</item>
-                                    </items>
-                                  </object>
-                                </child>
+                                <property name="entry_text_column">0</property>
+                                <property name="id_column">1</property>
+                                <items>
+                                  <item translatable="yes">RSA</item>
+                                  <item translatable="yes">DSA</item>
+                                </items>
                               </object>
-                              <packing>
-                                <property name="left_attach">1</property>
-                                <property name="right_attach">2</property>
-                                <property name="y_options"></property>
-                              </packing>
                             </child>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="top_attach">0</property>
+                            <property name="width">1</property>
+                            <property name="height">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkAlignment" id="alignment5">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="xalign">0</property>
+                            <property name="yalign">0</property>
+                            <property name="xscale">0</property>
+                            <property name="yscale">0</property>
                             <child>
-                              <object class="GtkAlignment" id="alignment5">
+                              <object class="GtkSpinButton" id="bits-entry">
                                 <property name="visible">True</property>
-                                <property name="can_focus">False</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>
+                                <property name="can_focus">True</property>
+                                <property name="invisible_char">â</property>
+                                <property name="invisible_char_set">True</property>
+                                <property name="adjustment">adjustment1</property>
+                                <property name="climb_rate">1</property>
+                                <property name="numeric">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">GTK_FILL</property>
-                              </packing>
                             </child>
                           </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="top_attach">1</property>
+                            <property name="width">1</property>
+                            <property name="height">1</property>
+                          </packing>
                         </child>
                       </object>
                     </child>
@@ -403,7 +390,7 @@
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
                     <property name="xalign">0</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="label" translatable="yes">If there a computer you want to use this key with, you can set up that computer to recognize your new key.</property>
                     <property name="wrap">True</property>
                   </object>
                   <packing>



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