fix popbeforesmtp checkbutton sensitivity
[claws.git] / src / prefs_account.c
index 6b16648518eb193e09957e3cab1d05502b680283..63481e470c70214443b29264c13ce8c1bb7c6c35 100644 (file)
@@ -111,7 +111,7 @@ static struct Send {
        GtkWidget *smtp_uid_entry;
        GtkWidget *smtp_pass_entry;
        GtkWidget *pop_bfr_smtp_chkbtn;
-} send;
+} p_send;
 
 static struct Compose {
        GtkWidget *sigpath_entry;
@@ -126,9 +126,10 @@ static struct Compose {
 
 #if USE_GPGME
 static struct Privacy {
-       GtkWidget *checkbtn_default_encrypt;
-       GtkWidget *checkbtn_ascii_armored;
-       GtkWidget *checkbtn_default_sign;
+       GtkWidget *default_encrypt_chkbtn;
+       GtkWidget *default_sign_chkbtn;
+       GtkWidget *ascii_armored_chkbtn;
+       GtkWidget *clearsign_chkbtn;
        GtkWidget *defaultkey_radiobtn;
        GtkWidget *emailkey_radiobtn;
        GtkWidget *customkey_radiobtn;
@@ -202,9 +203,12 @@ static void prefs_account_smtp_auth_type_set_optmenu       (PrefParam *pparam);
 #if USE_GPGME || USE_SSL
 static void prefs_account_enum_set_data_from_radiobtn  (PrefParam *pparam);
 static void prefs_account_enum_set_radiobtn            (PrefParam *pparam);
-static void prefs_account_ascii_armored_warning(GtkWidget* widget, 
-                                              gpointer unused);
 #endif /* USE_GPGME || USE_SSL */
+
+#if USE_GPGME
+static void prefs_account_ascii_armored_warning                (GtkWidget *widget);
+#endif /* USE_GPGME */
+
 static void prefs_account_crosspost_set_data_from_colormenu(PrefParam *pparam);
 static void prefs_account_crosspost_set_colormenu(PrefParam *pparam);
 
@@ -307,33 +311,33 @@ static PrefParam param[] = {
 
        /* Send */
        {"add_date", "TRUE", &tmp_ac_prefs.add_date, P_BOOL,
-        &send.date_chkbtn,
+        &p_send.date_chkbtn,
         prefs_set_data_from_toggle, prefs_set_toggle},
 
        {"generate_msgid", "TRUE", &tmp_ac_prefs.gen_msgid, P_BOOL,
-        &send.msgid_chkbtn,
+        &p_send.msgid_chkbtn,
         prefs_set_data_from_toggle, prefs_set_toggle},
 
        {"add_custom_header", "FALSE", &tmp_ac_prefs.add_customhdr, P_BOOL,
-        &send.customhdr_chkbtn,
+        &p_send.customhdr_chkbtn,
         prefs_set_data_from_toggle, prefs_set_toggle},
 
        {"use_smtp_auth", "FALSE", &tmp_ac_prefs.use_smtp_auth, P_BOOL,
-        &send.smtp_auth_chkbtn,
+        &p_send.smtp_auth_chkbtn,
         prefs_set_data_from_toggle, prefs_set_toggle},
 
        {"smtp_auth_method", "0", &tmp_ac_prefs.smtp_auth_type, P_ENUM,
-        &send.smtp_auth_type_optmenu,
+        &p_send.smtp_auth_type_optmenu,
         prefs_account_smtp_auth_type_set_data_from_optmenu,
         prefs_account_smtp_auth_type_set_optmenu},
 
        {"smtp_user_id", NULL, &tmp_ac_prefs.smtp_userid, P_STRING,
-        &send.smtp_uid_entry, prefs_set_data_from_entry, prefs_set_entry},
+        &p_send.smtp_uid_entry, prefs_set_data_from_entry, prefs_set_entry},
        {"smtp_password", NULL, &tmp_ac_prefs.smtp_passwd, P_STRING,
-        &send.smtp_pass_entry, prefs_set_data_from_entry, prefs_set_entry},
+        &p_send.smtp_pass_entry, prefs_set_data_from_entry, prefs_set_entry},
 
        {"pop_before_smtp", "FALSE", &tmp_ac_prefs.pop_before_smtp, P_BOOL,
-        &send.pop_bfr_smtp_chkbtn,
+        &p_send.pop_bfr_smtp_chkbtn,
         prefs_set_data_from_toggle, prefs_set_toggle},
 
        /* Compose */
@@ -368,13 +372,16 @@ static PrefParam param[] = {
 #if USE_GPGME
        /* Privacy */
        {"default_encrypt", "FALSE", &tmp_ac_prefs.default_encrypt, P_BOOL,
-        &privacy.checkbtn_default_encrypt,
+        &privacy.default_encrypt_chkbtn,
+        prefs_set_data_from_toggle, prefs_set_toggle},
+       {"default_sign", "FALSE", &tmp_ac_prefs.default_sign, P_BOOL,
+        &privacy.default_sign_chkbtn,
         prefs_set_data_from_toggle, prefs_set_toggle},
        {"ascii_armored", "FALSE", &tmp_ac_prefs.ascii_armored, P_BOOL,
-        &privacy.checkbtn_ascii_armored,
+        &privacy.ascii_armored_chkbtn,
         prefs_set_data_from_toggle, prefs_set_toggle},
-       {"default_sign", "FALSE", &tmp_ac_prefs.default_sign, P_BOOL,
-        &privacy.checkbtn_default_sign,
+       {"clearsign", "FALSE", &tmp_ac_prefs.clearsign, P_BOOL,
+        &privacy.clearsign_chkbtn,
         prefs_set_data_from_toggle, prefs_set_toggle},
        {"sign_key", NULL, &tmp_ac_prefs.sign_key, P_ENUM,
         &privacy.defaultkey_radiobtn,
@@ -613,7 +620,7 @@ PrefsAccount *prefs_account_open(PrefsAccount *ac_prefs)
        if (prefs_rc_is_readonly(ACCOUNT_RC))
                return ac_prefs;
 
-       debug_print(_("Opening account preferences window...\n"));
+       debug_print("Opening account preferences window...\n");
 
        inc_lock();
 
@@ -695,7 +702,7 @@ static void prefs_account_create(void)
 {
        gint page = 0;
 
-       debug_print(_("Creating account preferences window...\n"));
+       debug_print("Creating account preferences window...\n");
 
        /* create dialog */
        prefs_dialog_create(&dialog);
@@ -1353,17 +1360,16 @@ static void prefs_account_send_create(void)
 
        PACK_CHECK_BUTTON (vbox3, pop_bfr_smtp_chkbtn,
                _("Authenticate with POP3 before sending"));
-       gtk_widget_set_sensitive(pop_bfr_smtp_chkbtn, FALSE);
 
-       send.date_chkbtn      = date_chkbtn;
-       send.msgid_chkbtn     = msgid_chkbtn;
-       send.customhdr_chkbtn = customhdr_chkbtn;
+       p_send.date_chkbtn      = date_chkbtn;
+       p_send.msgid_chkbtn     = msgid_chkbtn;
+       p_send.customhdr_chkbtn = customhdr_chkbtn;
 
-       send.smtp_auth_chkbtn       = smtp_auth_chkbtn;
-       send.smtp_auth_type_optmenu = optmenu;
-       send.smtp_uid_entry         = smtp_uid_entry;
-       send.smtp_pass_entry        = smtp_pass_entry;
-       send.pop_bfr_smtp_chkbtn    = pop_bfr_smtp_chkbtn;
+       p_send.smtp_auth_chkbtn       = smtp_auth_chkbtn;
+       p_send.smtp_auth_type_optmenu = optmenu;
+       p_send.smtp_uid_entry         = smtp_uid_entry;
+       p_send.smtp_pass_entry        = smtp_pass_entry;
+       p_send.pop_bfr_smtp_chkbtn    = pop_bfr_smtp_chkbtn;
 }
 
 static void prefs_account_compose_create(void)
@@ -1462,13 +1468,12 @@ static void prefs_account_privacy_create(void)
        GtkWidget *vbox1;
        GtkWidget *frame1;
        GtkWidget *vbox2;
-       GtkWidget *frame2;
-       GtkWidget *vbox3;
        GtkWidget *hbox1;
        GtkWidget *label;
-       GtkWidget *checkbtn_default_encrypt;
-       GtkWidget *checkbtn_ascii_armored;
-       GtkWidget *checkbtn_default_sign;
+       GtkWidget *default_encrypt_chkbtn;
+       GtkWidget *default_sign_chkbtn;
+       GtkWidget *ascii_armored_chkbtn;
+       GtkWidget *clearsign_chkbtn;
        GtkWidget *defaultkey_radiobtn;
        GtkWidget *emailkey_radiobtn;
        GtkWidget *customkey_radiobtn;
@@ -1479,35 +1484,32 @@ static void prefs_account_privacy_create(void)
        gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
        gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
 
-       PACK_FRAME (vbox1, frame1, _("Default Actions"));
-
        vbox2 = gtk_vbox_new (FALSE, 0);
        gtk_widget_show (vbox2);
-       gtk_container_add (GTK_CONTAINER (frame1), vbox2);
-       gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
+       gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
 
-       PACK_CHECK_BUTTON (vbox2, checkbtn_default_encrypt,
+       PACK_CHECK_BUTTON (vbox2, default_encrypt_chkbtn,
                           _("Encrypt message by default"));
-
-       PACK_CHECK_BUTTON (vbox2, checkbtn_ascii_armored,
-                          _("Plain ASCII-armored"));
-       gtk_signal_connect(GTK_OBJECT(checkbtn_ascii_armored), "toggled",
-                               prefs_account_ascii_armored_warning, (gpointer)0);
-
-       PACK_CHECK_BUTTON (vbox2, checkbtn_default_sign,
+       PACK_CHECK_BUTTON (vbox2, default_sign_chkbtn,
                           _("Sign message by default"));
+       PACK_CHECK_BUTTON (vbox2, ascii_armored_chkbtn,
+                          _("Use ASCII-armored format for encryption"));
+       PACK_CHECK_BUTTON (vbox2, clearsign_chkbtn,
+                          _("Use clear text signature"));
+       gtk_signal_connect (GTK_OBJECT (ascii_armored_chkbtn), "toggled",
+                           prefs_account_ascii_armored_warning, NULL);
 
-       PACK_FRAME (vbox1, frame2, _("Sign key"));
+       PACK_FRAME (vbox1, frame1, _("Sign key"));
 
-       vbox3 = gtk_vbox_new (FALSE, VSPACING_NARROW);
-       gtk_widget_show (vbox3);
-       gtk_container_add (GTK_CONTAINER (frame2), vbox3);
-       gtk_container_set_border_width (GTK_CONTAINER (vbox3), 8);
+       vbox2 = gtk_vbox_new (FALSE, 0);
+       gtk_widget_show (vbox2);
+       gtk_container_add (GTK_CONTAINER (frame1), vbox2);
+       gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
 
        defaultkey_radiobtn = gtk_radio_button_new_with_label
                (NULL, _("Use default GnuPG key"));
        gtk_widget_show (defaultkey_radiobtn);
-       gtk_box_pack_start (GTK_BOX (vbox3), defaultkey_radiobtn,
+       gtk_box_pack_start (GTK_BOX (vbox2), defaultkey_radiobtn,
                            FALSE, FALSE, 0);
        gtk_object_set_user_data (GTK_OBJECT (defaultkey_radiobtn),
                                  GINT_TO_POINTER (SIGN_KEY_DEFAULT));
@@ -1516,7 +1518,7 @@ static void prefs_account_privacy_create(void)
                (GTK_RADIO_BUTTON (defaultkey_radiobtn),
                 _("Select key by your email address"));
        gtk_widget_show (emailkey_radiobtn);
-       gtk_box_pack_start (GTK_BOX (vbox3), emailkey_radiobtn,
+       gtk_box_pack_start (GTK_BOX (vbox2), emailkey_radiobtn,
                            FALSE, FALSE, 0);
        gtk_object_set_user_data (GTK_OBJECT (emailkey_radiobtn),
                                  GINT_TO_POINTER (SIGN_KEY_BY_FROM));
@@ -1525,14 +1527,14 @@ static void prefs_account_privacy_create(void)
                (GTK_RADIO_BUTTON (defaultkey_radiobtn),
                 _("Specify key manually"));
        gtk_widget_show (customkey_radiobtn);
-       gtk_box_pack_start (GTK_BOX (vbox3), customkey_radiobtn,
+       gtk_box_pack_start (GTK_BOX (vbox2), customkey_radiobtn,
                            FALSE, FALSE, 0);
        gtk_object_set_user_data (GTK_OBJECT (customkey_radiobtn),
                                  GINT_TO_POINTER (SIGN_KEY_CUSTOM));
 
        hbox1 = gtk_hbox_new (FALSE, 8);
        gtk_widget_show (hbox1);
-       gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
+       gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, FALSE, 0);
 
        label = gtk_label_new ("");
        gtk_widget_show (label);
@@ -1550,25 +1552,14 @@ static void prefs_account_privacy_create(void)
 
        SET_TOGGLE_SENSITIVITY (customkey_radiobtn, customkey_entry);
 
-       privacy.checkbtn_default_encrypt = checkbtn_default_encrypt;
-       privacy.checkbtn_ascii_armored   = checkbtn_ascii_armored;
-       privacy.checkbtn_default_sign    = checkbtn_default_sign;
-       privacy.defaultkey_radiobtn = defaultkey_radiobtn;
-       privacy.emailkey_radiobtn = emailkey_radiobtn;
-       privacy.customkey_radiobtn = customkey_radiobtn;
-       privacy.customkey_entry = customkey_entry;
-}
-
-static void prefs_account_ascii_armored_warning(GtkWidget* widget,
-                                              gpointer unused)
-{
-       if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))
-               && gtk_notebook_get_current_page(GTK_NOTEBOOK(dialog.notebook))) {
-               alertpanel_message(_("Warning - Privacy/Plain ASCII-armored"),
-                       _("Its not recommend to use the old style plain ASCII-\n"
-                       "armored mode for encrypted messages. It doesn't comply\n"
-                       "with the RFC 3156 - MIME security with OpenPGP."));
-       }
+       privacy.default_encrypt_chkbtn = default_encrypt_chkbtn;
+       privacy.default_sign_chkbtn    = default_sign_chkbtn;
+       privacy.ascii_armored_chkbtn   = ascii_armored_chkbtn;
+       privacy.clearsign_chkbtn       = clearsign_chkbtn;
+       privacy.defaultkey_radiobtn    = defaultkey_radiobtn;
+       privacy.emailkey_radiobtn      = emailkey_radiobtn;
+       privacy.customkey_radiobtn     = customkey_radiobtn;
+       privacy.customkey_entry        = customkey_entry;
 }
 #endif /* USE_GPGME */
 
@@ -2119,6 +2110,18 @@ static void prefs_account_enum_set_radiobtn(PrefParam *pparam)
        }
 }
 
+#endif /* USE_GPGME || USE_SSL */
+
+#if USE_GPGME
+static void prefs_account_ascii_armored_warning(GtkWidget *widget)
+{
+       if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)) &&
+           gtk_notebook_get_current_page(GTK_NOTEBOOK(dialog.notebook)) > 0)
+               alertpanel_warning
+                       (_("It's not recommended to use the old style ASCII-armored\n"
+                          "mode for encrypted messages. It doesn't comply with the\n"
+                          "RFC 3156 - MIME Security with OpenPGP."));
+}
 #endif /* USE_GPGME */
 
 static void prefs_account_protocol_set_data_from_optmenu(PrefParam *pparam)
@@ -2269,6 +2272,10 @@ static void prefs_account_protocol_activated(GtkMenuItem *menuitem)
                gtk_widget_set_sensitive(receive.pop3_frame, FALSE);
                gtk_widget_set_sensitive(receive.recvatgetall_chkbtn, TRUE);
 
+               /* update pop_before_smtp sensitivity */
+               gtk_toggle_button_set_active(p_send.pop_bfr_smtp_chkbtn, FALSE);
+               gtk_widget_set_sensitive(p_send.pop_bfr_smtp_chkbtn, FALSE);
+               
                if (!tmp_ac_prefs.account_name) {
                        gtk_toggle_button_set_active
                                (GTK_TOGGLE_BUTTON(receive.recvatgetall_chkbtn),
@@ -2332,6 +2339,10 @@ static void prefs_account_protocol_activated(GtkMenuItem *menuitem)
                prefs_account_mailcmd_toggled
                        (GTK_TOGGLE_BUTTON(basic.mailcmd_chkbtn), NULL);
 
+               /* update pop_before_smtp sensitivity */
+               gtk_toggle_button_set_active(p_send.pop_bfr_smtp_chkbtn, FALSE);
+               gtk_widget_set_sensitive(p_send.pop_bfr_smtp_chkbtn, FALSE);
+
                if (!tmp_ac_prefs.account_name) {
                        gtk_toggle_button_set_active
                                (GTK_TOGGLE_BUTTON(receive.recvatgetall_chkbtn),
@@ -2397,6 +2408,10 @@ static void prefs_account_protocol_activated(GtkMenuItem *menuitem)
                gtk_widget_set_sensitive(basic.smtpserv_entry, TRUE);
                gtk_widget_set_sensitive(basic.smtpserv_label, TRUE);
 
+               /* update pop_before_smtp sensitivity */
+               gtk_toggle_button_set_active(p_send.pop_bfr_smtp_chkbtn, FALSE);
+               gtk_widget_set_sensitive(p_send.pop_bfr_smtp_chkbtn, FALSE);
+               
                if (!tmp_ac_prefs.account_name) {
                        gtk_toggle_button_set_active
                                (GTK_TOGGLE_BUTTON(receive.recvatgetall_chkbtn),
@@ -2463,6 +2478,9 @@ static void prefs_account_protocol_activated(GtkMenuItem *menuitem)
                gtk_widget_set_sensitive(basic.smtpserv_entry, TRUE);
                gtk_widget_set_sensitive(basic.smtpserv_label, TRUE);
 
+               /* update pop_before_smtp sensitivity */
+               gtk_widget_set_sensitive(p_send.pop_bfr_smtp_chkbtn, TRUE);
+               
                if (!tmp_ac_prefs.account_name) {
                        gtk_toggle_button_set_active
                                (GTK_TOGGLE_BUTTON(receive.recvatgetall_chkbtn),