2007-01-13 [colin] 2.7.0cvs21
[claws.git] / src / plugins / pgpcore / prefs_gpg.c
index c59fd33412fcdbd28056ce8d46a4bb321d4e5df4..c065974c72aa86c930b508fcd742a7ec054a9237 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 2004 Hiroyuki Yamamoto & the Sylpheed-Claws team
+ * Copyright (C) 2004 Hiroyuki Yamamoto & the Claws Mail team
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -94,12 +94,7 @@ static void prefs_gpg_create_widget_func(PrefsPage *_page,
        PACK_CHECK_BUTTON (vbox2, checkbtn_auto_check_signatures,
                        _("Automatically check signatures"));
 
-       PACK_FRAME(vbox1, frame_passphrase, _("Passphrase"));
-
-       vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
-       gtk_widget_show (vbox2);
-       gtk_container_add (GTK_CONTAINER (frame_passphrase), vbox2);
-       gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
+       vbox2 = gtkut_get_options_frame(vbox1, &frame_passphrase, _("Passphrase"));
 
        PACK_CHECK_BUTTON (vbox2, checkbtn_store_passphrase,
                        _("Store passphrase in memory"));
@@ -215,10 +210,32 @@ void key_custom_toggled(GtkToggleButton *togglebutton, gpointer user_data)
                gtk_editable_delete_text(GTK_EDITABLE(page->keyid), 0, -1);
 }
 
+static void prefs_gpg_update_sens(struct GPGAccountPage *page)
+{
+       gboolean active;
+       active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->key_custom));
+       if (sgpgme_has_secret_key()) {
+               gtk_widget_hide(page->new_key_box);
+               gtk_widget_set_sensitive(page->key_default, TRUE);
+               gtk_widget_set_sensitive(page->key_by_from, TRUE);
+               gtk_widget_set_sensitive(page->key_custom, TRUE);
+               gtk_widget_set_sensitive(page->keyid, active);
+               gtk_widget_set_sensitive(page->keyid_label, active);
+       } else {
+               gtk_widget_show(page->new_key_box);
+               gtk_widget_set_sensitive(page->key_default, FALSE);
+               gtk_widget_set_sensitive(page->key_by_from, FALSE);
+               gtk_widget_set_sensitive(page->key_custom, FALSE);
+               gtk_widget_set_sensitive(page->keyid, FALSE);
+               gtk_widget_set_sensitive(page->keyid_label, FALSE);
+       }
+}
+
 static void new_key_clicked(GtkWidget *widget, gpointer user_data)
 {
        struct GPGAccountPage *page = (struct GPGAccountPage *) user_data;
-       sgpgme_create_secret_key(page->account);
+       sgpgme_create_secret_key(page->account, FALSE);
+       prefs_gpg_update_sens(page);
 }
 
 static void prefs_gpg_account_create_widget_func(PrefsPage *_page,
@@ -248,12 +265,7 @@ static void prefs_gpg_account_create_widget_func(PrefsPage *_page,
        gtk_container_set_border_width (GTK_CONTAINER (vbox), VBOX_BORDER);
        gtk_widget_show(vbox);
 
-       PACK_FRAME (vbox, frame1, _("Sign key"));
-
-       vbox2 = gtk_vbox_new (FALSE, VSPACING_NARROW);
-       gtk_container_set_border_width (GTK_CONTAINER (vbox2), VBOX_BORDER);
-       gtk_widget_show (vbox2);
-       gtk_container_add (GTK_CONTAINER (frame1), vbox2);
+       vbox2 = gtkut_get_options_frame(vbox, &frame1, _("Sign key"));
 
        hbox = gtk_hbox_new (FALSE, 5);
        gtk_widget_show (hbox);
@@ -262,7 +274,7 @@ static void prefs_gpg_account_create_widget_func(PrefsPage *_page,
 
        key_default = gtk_radio_button_new_with_label(key_group,
                        _("Use default GnuPG key"));
-       key_group = gtk_radio_button_group(GTK_RADIO_BUTTON(key_default));
+       key_group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(key_default));
        gtk_widget_show(key_default);
        gtk_box_pack_start(GTK_BOX(hbox), key_default, FALSE, FALSE, 0);
 
@@ -273,7 +285,7 @@ static void prefs_gpg_account_create_widget_func(PrefsPage *_page,
 
        key_by_from = gtk_radio_button_new_with_label(key_group,
                _("Select key by your email address"));
-       key_group = gtk_radio_button_group(GTK_RADIO_BUTTON(key_by_from));
+       key_group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(key_by_from));
        gtk_widget_show(key_by_from);
        gtk_box_pack_start(GTK_BOX(hbox), key_by_from, FALSE, FALSE, 0);
 
@@ -284,7 +296,7 @@ static void prefs_gpg_account_create_widget_func(PrefsPage *_page,
 
        key_custom = gtk_radio_button_new_with_label(key_group,
                _("Specify key manually"));
-       key_group = gtk_radio_button_group(GTK_RADIO_BUTTON(key_custom));
+       key_group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(key_custom));
        gtk_widget_show(key_custom);
        gtk_box_pack_start(GTK_BOX(hbox), key_custom, FALSE, FALSE, 0);
 
@@ -321,8 +333,14 @@ static void prefs_gpg_account_create_widget_func(PrefsPage *_page,
                break;
        }
 
+       hbox = gtk_hbox_new (FALSE, 5);
+       gtk_widget_show (hbox);
+       gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
+
        new_key_box = gtk_hbox_new(FALSE, 6);
-       
+       gtk_widget_show(new_key_box);
+       gtk_box_pack_start(GTK_BOX(hbox), new_key_box, FALSE, FALSE, 0);
+
        image = gtk_image_new_from_stock(GTK_STOCK_DIALOG_WARNING,
                        GTK_ICON_SIZE_SMALL_TOOLBAR);
 
@@ -330,15 +348,10 @@ static void prefs_gpg_account_create_widget_func(PrefsPage *_page,
        new_key_label = gtk_label_new(
                        _("No secret key found."));
        gtk_box_pack_start(GTK_BOX(new_key_box), new_key_label, FALSE, FALSE, 0);
-       new_key_btn = gtk_button_new_with_label(_("Generate new secret key"));
-       gtk_box_pack_start(GTK_BOX(new_key_box), new_key_btn, FALSE, FALSE, 0);
-
-       gtk_box_pack_start(GTK_BOX(vbox2), new_key_box, FALSE, FALSE, 0);
-
-       gtk_widget_show_all(new_key_box);
 
-       if (sgpgme_has_secret_key())
-               gtk_widget_hide(new_key_box);
+       new_key_btn = gtk_button_new_with_label(_("Generate a new key pair"));
+       gtk_widget_show(new_key_btn);
+       gtk_box_pack_start(GTK_BOX(hbox), new_key_btn, FALSE, FALSE, 0);
 
        if (config->sign_key_id != NULL)
                gtk_entry_set_text(GTK_ENTRY(keyid), config->sign_key_id);
@@ -351,9 +364,11 @@ static void prefs_gpg_account_create_widget_func(PrefsPage *_page,
        page->key_custom = key_custom;
        page->keyid = keyid;
        page->keyid_label = keyid_label;
+       page->new_key_box = new_key_box;
 
        page->page.widget = vbox;
        page->account = account;
+       prefs_gpg_update_sens(page);
 }
 
 static void prefs_gpg_account_destroy_widget_func(PrefsPage *_page)