[seahorse/refactor] Cleanup adding new keys, items, keyrings
- From: Stefan Walter <stefw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [seahorse/refactor] Cleanup adding new keys, items, keyrings
- Date: Thu, 20 Oct 2011 11:57:25 +0000 (UTC)
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">●</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">●</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">●</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"><b>_Advanced key options</b></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"><i>Use your email address, and any other reminder you need about what this key is for.</i></property>
+ <property name="label" translatable="yes"><i>Your email address, or a reminder of what this key is for.</i></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]