[seahorse/be9ddd5: 5/8] removed the key creation code from on_gpgme_generate_response and put it into a separate function ca



commit c58f5e38b7fd05821ad5f1b8a40545457c4fea7a
Author: Thorsten Sick <thorsten sick email de>
Date:   Mon Nov 16 20:05:44 2009 +0100

    removed the key creation code from on_gpgme_generate_response and put it into a separate function called seahorse_gpgme_generate_key. This is now called from seahorse_service_generate_credentials to handle the DBus call GenerateCredentials

 daemon/seahorse-service.c     |   12 +++--
 pgp/seahorse-gpgme-dialogs.h  |    9 ++++
 pgp/seahorse-gpgme-generate.c |   90 +++++++++++++++++++++++++++--------------
 3 files changed, 76 insertions(+), 35 deletions(-)
---
diff --git a/daemon/seahorse-service.c b/daemon/seahorse-service.c
index 6a6cb6c..f095a17 100644
--- a/daemon/seahorse-service.c
+++ b/daemon/seahorse-service.c
@@ -38,6 +38,7 @@
 
 #include "../pgp/seahorse-pgp.h"
 #include "../pgp/seahorse-gpgme-source.h"
+#include "../pgp/seahorse-gpgme-key-op.h"
 
 #include <gio/gio.h>
 
@@ -191,6 +192,7 @@ seahorse_service_generate_credentials (SeahorseService *svc, gchar *ktype,
     gchar   *name=NULL;
     gchar   *email=NULL;
     gchar   *comment=NULL;
+    SeahorseWidget *swidget;
 
     sksrc = seahorse_context_find_source (seahorse_context_for_app (),
                                           SEAHORSE_PGP_TYPE,
@@ -212,12 +214,12 @@ seahorse_service_generate_credentials (SeahorseService *svc, gchar *ktype,
         if ((pval) && (G_VALUE_TYPE (pval) == G_TYPE_STRING))
             comment=g_value_dup_string (pval);
 
+        swidget = seahorse_widget_new ("pgp-generate", NULL);
+        g_object_ref(sksrc);
+        g_object_set_data_full(G_OBJECT(swidget), "source", sksrc, g_object_unref);
+        seahorse_gpgme_generate_key(swidget, name, email, comment,
+                        DSA_ELGAMAL, 2048,0);
 
-        seahorse_gpgme_generate_show (SEAHORSE_GPGME_SOURCE (sksrc),
-                                      NULL,
-                                      name,
-                                      email,
-                                      comment);
         g_free (name);
         name = NULL;
         g_free (email);
diff --git a/pgp/seahorse-gpgme-dialogs.h b/pgp/seahorse-gpgme-dialogs.h
index cbc1c06..83f6c9b 100644
--- a/pgp/seahorse-gpgme-dialogs.h
+++ b/pgp/seahorse-gpgme-dialogs.h
@@ -34,6 +34,7 @@
 #include "pgp/seahorse-gpgme-subkey.h"
 #include "pgp/seahorse-gpgme-source.h"
 #include "pgp/seahorse-gpgme-uid.h"
+#include "libseahorse/seahorse-widget.h"
 
 void            seahorse_gpgme_sign_prompt         (SeahorseGpgmeKey *key,
                                                     GtkWindow *parent);
@@ -49,6 +50,14 @@ void            seahorse_gpgme_generate_show        (SeahorseGpgmeSource *sksrc,
                                                      const char *email,
                                                      const gchar *comment);
 
+void            gpgme_generate_key                  (SeahorseWidget *swidget,
+                                                     const gchar *name,
+                                                     const gchar *email,
+                                                     const gchar *comment,
+                                                     guint type,
+                                                     guint bits,
+                                                     time_t expires);
+
 void            seahorse_gpgme_add_revoker_new      (SeahorseGpgmeKey *pkey,
                                                      GtkWindow *parent);
 
diff --git a/pgp/seahorse-gpgme-generate.c b/pgp/seahorse-gpgme-generate.c
index 2743a92..02f8c6f 100644
--- a/pgp/seahorse-gpgme-generate.c
+++ b/pgp/seahorse-gpgme-generate.c
@@ -165,6 +165,58 @@ get_expiry_date (SeahorseWidget *swidget)
     return widget;
 }
 
+
+/**
+ * gpgme_generate_key:
+ * @swidget: the #SeahorseWidget
+ * @name: the user's full name
+ * @email: the user's email address
+ * @comment: a comment, added to the key
+ * @type: key type like DSA_ELGAMAL
+ * @bits: the number of bits for the key to generate (2048)
+ * @expires: expiry date can be 0
+ *
+ * Displays a password generation box and creates a key afterwards. For the key
+ * data it uses @name @email and @comment ncryption is chosen by @type and @bits
+ * @expire sets the expiry date
+ *
+ */
+void seahorse_gpgme_generate_key (SeahorseWidget *swidget, const gchar *name, const gchar *email,
+                            const gchar *comment, guint type, guint bits, time_t expires)
+{
+    SeahorseGpgmeSource *sksrc;
+    SeahorseOperation *op;
+    const gchar *pass;
+    gpgme_error_t gerr;
+    GtkDialog *dialog;
+
+    sksrc = SEAHORSE_GPGME_SOURCE (g_object_get_data (G_OBJECT (swidget), "source"));
+    g_assert (SEAHORSE_IS_GPGME_SOURCE (sksrc));
+
+    /* Less confusing with less on the screen */
+    gtk_widget_hide (seahorse_widget_get_toplevel (swidget));
+
+    dialog = seahorse_passphrase_prompt_show (_("Passphrase for New PGP Key"),
+                                              _("Enter the passphrase for your new key twice."),
+                                              NULL, NULL, TRUE);
+    if (gtk_dialog_run (dialog) == GTK_RESPONSE_ACCEPT)
+    {
+        pass = seahorse_passphrase_prompt_get (dialog);
+        op = seahorse_gpgme_key_op_generate (sksrc, name, email, comment,
+                                             pass, type, bits, expires, &gerr);
+
+        if (!GPG_IS_OK (gerr)) {
+            seahorse_gpgme_handle_error (gerr, _("Couldn't generate key"));
+        } else {
+            seahorse_progress_show (op, _("Generating key"), TRUE);
+            seahorse_operation_watch (op, (SeahorseDoneFunc)completion_handler, NULL, NULL, NULL);
+            g_object_unref (op);
+        }
+    }
+    gtk_widget_destroy (GTK_WIDGET (dialog));
+}
+
+
 /**
  * on_gpgme_generate_response:
  * @dialog:
@@ -195,12 +247,12 @@ on_gpgme_generate_response (GtkDialog *dialog, guint response, SeahorseWidget *s
         seahorse_widget_show_help (swidget);
         return;
     }
-    
+
     if (response != GTK_RESPONSE_OK) {
         seahorse_widget_destroy (swidget);
         return;
     }
-    
+
     /* The name */
     widget = seahorse_widget_get_widget (swidget, "name-entry");
     g_return_if_fail (widget != NULL);
@@ -210,17 +262,17 @@ on_gpgme_generate_response (GtkDialog *dialog, guint response, SeahorseWidget *s
     /* Make sure it's the right length. Should have been checked earlier */
     name = g_strstrip (name);
     g_return_if_fail (strlen(name) >= 5);
-    
+
     /* The email address */
     widget = seahorse_widget_get_widget (swidget, "email-entry");
     g_return_if_fail (widget != NULL);
     email = gtk_entry_get_text (GTK_ENTRY (widget));
-    
+
     /* The comment */
     widget = seahorse_widget_get_widget (swidget, "comment-entry");
     g_return_if_fail (widget != NULL);
     comment = gtk_entry_get_text (GTK_ENTRY (widget));
-    
+
     /* The algorithm */
     widget = seahorse_widget_get_widget (swidget, "algorithm-choice");
     g_return_if_fail (widget != NULL);
@@ -249,31 +301,9 @@ on_gpgme_generate_response (GtkDialog *dialog, guint response, SeahorseWidget *s
         egg_datetime_get_as_time_t (EGG_DATETIME (widget), &expires);
     }
 
-    sksrc = SEAHORSE_GPGME_SOURCE (g_object_get_data (G_OBJECT (swidget), "source"));
-    g_assert (SEAHORSE_IS_GPGME_SOURCE (sksrc));
-    
-    /* Less confusing with less on the screen */
-    gtk_widget_hide (seahorse_widget_get_toplevel (swidget));
-    
-    dialog = seahorse_passphrase_prompt_show (_("Passphrase for New PGP Key"), 
-                                              _("Enter the passphrase for your new key twice."), 
-                                              NULL, NULL, TRUE);
-    if (gtk_dialog_run (dialog) == GTK_RESPONSE_ACCEPT)
-    {
-        pass = seahorse_passphrase_prompt_get (dialog);
-        op = seahorse_gpgme_key_op_generate (sksrc, name, email, comment,
-                                             pass, type, bits, expires, &gerr);
-    
-        if (!GPG_IS_OK (gerr)) {
-            seahorse_gpgme_handle_error (gerr, _("Couldn't generate key"));
-        } else {
-            seahorse_progress_show (op, _("Generating key"), TRUE);
-            seahorse_operation_watch (op, (SeahorseDoneFunc)completion_handler, NULL, NULL, NULL);
-            g_object_unref (op);
-        }
-    }
-        
-    gtk_widget_destroy (GTK_WIDGET (dialog));
+    seahorse_gpgme_generate_key (swidget, name, email, comment, type, bits, expires);
+
+
     seahorse_widget_destroy (swidget);
     g_free (name);
 }



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