From cb38c25474b1e7823ff8696155fcebba7de5e07d Mon Sep 17 00:00:00 2001 From: hiro Date: Mon, 23 May 2005 09:37:11 +0000 Subject: added PGP Sign/Encrypt check button on the compose window. git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@279 ee746299-78ed-0310-b773-934348b2243d --- src/compose.c | 74 +++++++++++++++++++++++++++++++++++++++++++++++++---- src/compose.h | 3 +++ src/prefs_account.c | 16 ++++++------ src/prefs_account.h | 2 +- 4 files changed, 81 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/compose.c b/src/compose.c index 3470636c..b99ca996 100644 --- a/src/compose.c +++ b/src/compose.c @@ -384,6 +384,11 @@ static void compose_allsel_cb (Compose *compose); static void compose_grab_focus_cb (GtkWidget *widget, Compose *compose); +static void compose_signing_toggled (GtkWidget *widget, + Compose *compose); +static void compose_encrypt_toggled (GtkWidget *widget, + Compose *compose); + static void compose_changed_cb (GtkTextBuffer *textbuf, Compose *compose); @@ -3674,6 +3679,8 @@ static Compose *compose_create(PrefsAccount *account, ComposeMode mode) GtkWidget *vbox2; GtkWidget *table_vbox; + GtkWidget *table; + GtkWidget *hbox; GtkWidget *label; GtkWidget *from_optmenu_hbox; GtkWidget *to_entry; @@ -3690,6 +3697,12 @@ static Compose *compose_create(PrefsAccount *account, ComposeMode mode) GtkWidget *followup_entry; GtkWidget *followup_hbox; +#if USE_GPGME + GtkWidget *gpg_hbox; + GtkWidget *signing_chkbtn; + GtkWidget *encrypt_chkbtn; +#endif /* USE_GPGME */ + GtkWidget *paned; GtkWidget *attach_scrwin; @@ -3705,9 +3718,6 @@ static Compose *compose_create(PrefsAccount *account, ComposeMode mode) GtkClipboard *clipboard; GtkTextTag *sig_tag; - GtkWidget *table; - GtkWidget *hbox; - UndoMain *undostruct; gchar *titles[N_ATTACH_COLS]; @@ -3774,8 +3784,7 @@ static Compose *compose_create(PrefsAccount *account, ComposeMode mode) table_vbox = gtk_vbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox2), table_vbox, FALSE, TRUE, 0); - gtk_container_set_border_width(GTK_CONTAINER(table_vbox), - BORDER_WIDTH * 2); + gtk_container_set_border_width(GTK_CONTAINER(table_vbox), BORDER_WIDTH); table = gtk_table_new(8, 2, FALSE); gtk_box_pack_start(GTK_BOX(table_vbox), table, FALSE, TRUE, 0); @@ -3840,6 +3849,21 @@ static Compose *compose_create(PrefsAccount *account, ComposeMode mode) g_signal_connect(G_OBJECT(subject_entry), "grab_focus", G_CALLBACK(compose_grab_focus_cb), compose); +#if USE_GPGME + gpg_hbox = gtk_hbox_new(FALSE, 0); + gtk_box_pack_start(GTK_BOX(vbox2), gpg_hbox, FALSE, FALSE, 0); + + signing_chkbtn = gtk_check_button_new_with_label(_("PGP Sign")); + gtk_box_pack_start(GTK_BOX(gpg_hbox), signing_chkbtn, FALSE, FALSE, 8); + encrypt_chkbtn = gtk_check_button_new_with_label(_("PGP Encrypt")); + gtk_box_pack_start(GTK_BOX(gpg_hbox), encrypt_chkbtn, FALSE, FALSE, 8); + + g_signal_connect(G_OBJECT(signing_chkbtn), "toggled", + G_CALLBACK(compose_signing_toggled), compose); + g_signal_connect(G_OBJECT(encrypt_chkbtn), "toggled", + G_CALLBACK(compose_encrypt_toggled), compose); +#endif /* USE_GPGME */ + /* attachment list */ attach_scrwin = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(attach_scrwin), @@ -4035,6 +4059,11 @@ static Compose *compose_create(PrefsAccount *account, ComposeMode mode) compose->followup_hbox = followup_hbox; compose->followup_entry = followup_entry; +#if USE_GPGME + compose->signing_chkbtn = signing_chkbtn; + compose->encrypt_chkbtn = encrypt_chkbtn; +#endif /* USE_GPGME */ + compose->paned = paned; compose->attach_scrwin = attach_scrwin; @@ -5670,6 +5699,35 @@ static void compose_grab_focus_cb(GtkWidget *widget, Compose *compose) compose->focused_editable = widget; } +#if USE_GPGME +static void compose_signing_toggled(GtkWidget *widget, Compose *compose) +{ + GtkItemFactory *ifactory; + + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) + compose->use_signing = TRUE; + else + compose->use_signing = FALSE; + + ifactory = gtk_item_factory_from_widget(compose->menubar); + menu_set_active(ifactory, "/Tools/PGP Sign", compose->use_signing); +} + +static void compose_encrypt_toggled(GtkWidget *widget, Compose *compose) +{ + GtkItemFactory *ifactory; + + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) + compose->use_encryption = TRUE; + else + compose->use_encryption = FALSE; + + ifactory = gtk_item_factory_from_widget(compose->menubar); + menu_set_active(ifactory, "/Tools/PGP Encrypt", + compose->use_encryption); +} +#endif /* USE_GPGME */ + static void compose_changed_cb(GtkTextBuffer *textbuf, Compose *compose) { if (compose->modified == FALSE) { @@ -5848,6 +5906,9 @@ static void compose_toggle_sign_cb(gpointer data, guint action, compose->use_signing = TRUE; else compose->use_signing = FALSE; + + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(compose->signing_chkbtn), + compose->use_signing); } static void compose_toggle_encrypt_cb(gpointer data, guint action, @@ -5859,6 +5920,9 @@ static void compose_toggle_encrypt_cb(gpointer data, guint action, compose->use_encryption = TRUE; else compose->use_encryption = FALSE; + + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(compose->encrypt_chkbtn), + compose->use_encryption); } #endif /* USE_GPGME */ diff --git a/src/compose.h b/src/compose.h index 95928f3f..14f95a51 100644 --- a/src/compose.h +++ b/src/compose.h @@ -105,6 +105,9 @@ struct _Compose GtkWidget *followup_hbox; GtkWidget *followup_entry; + GtkWidget *signing_chkbtn; + GtkWidget *encrypt_chkbtn; + GtkWidget *paned; GtkWidget *attach_scrwin; diff --git a/src/prefs_account.c b/src/prefs_account.c index c8a790d9..f9c98857 100644 --- a/src/prefs_account.c +++ b/src/prefs_account.c @@ -126,8 +126,8 @@ static struct Compose { #if USE_GPGME static struct Privacy { - GtkWidget *default_encrypt_chkbtn; GtkWidget *default_sign_chkbtn; + GtkWidget *default_encrypt_chkbtn; GtkWidget *ascii_armored_chkbtn; GtkWidget *clearsign_chkbtn; GtkWidget *defaultkey_radiobtn; @@ -357,12 +357,12 @@ static PrefParam param[] = { #if USE_GPGME /* Privacy */ - {"default_encrypt", "FALSE", &tmp_ac_prefs.default_encrypt, P_BOOL, - &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}, + {"default_encrypt", "FALSE", &tmp_ac_prefs.default_encrypt, P_BOOL, + &privacy.default_encrypt_chkbtn, + prefs_set_data_from_toggle, prefs_set_toggle}, {"ascii_armored", "FALSE", &tmp_ac_prefs.ascii_armored, P_BOOL, &privacy.ascii_armored_chkbtn, prefs_set_data_from_toggle, prefs_set_toggle}, @@ -1434,8 +1434,8 @@ static void prefs_account_privacy_create(void) GtkWidget *vbox2; GtkWidget *hbox1; GtkWidget *label; - GtkWidget *default_encrypt_chkbtn; GtkWidget *default_sign_chkbtn; + GtkWidget *default_encrypt_chkbtn; GtkWidget *ascii_armored_chkbtn; GtkWidget *clearsign_chkbtn; GtkWidget *defaultkey_radiobtn; @@ -1452,10 +1452,10 @@ static void prefs_account_privacy_create(void) gtk_widget_show (vbox2); gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0); - PACK_CHECK_BUTTON (vbox2, default_encrypt_chkbtn, - _("Encrypt message by default")); PACK_CHECK_BUTTON (vbox2, default_sign_chkbtn, _("Sign message by default")); + PACK_CHECK_BUTTON (vbox2, default_encrypt_chkbtn, + _("Encrypt message by default")); PACK_CHECK_BUTTON (vbox2, ascii_armored_chkbtn, _("Use ASCII-armored format for encryption")); PACK_CHECK_BUTTON (vbox2, clearsign_chkbtn, @@ -1517,8 +1517,8 @@ static void prefs_account_privacy_create(void) SET_TOGGLE_SENSITIVITY (customkey_radiobtn, customkey_entry); - privacy.default_encrypt_chkbtn = default_encrypt_chkbtn; privacy.default_sign_chkbtn = default_sign_chkbtn; + privacy.default_encrypt_chkbtn = default_encrypt_chkbtn; privacy.ascii_armored_chkbtn = ascii_armored_chkbtn; privacy.clearsign_chkbtn = clearsign_chkbtn; privacy.defaultkey_radiobtn = defaultkey_radiobtn; diff --git a/src/prefs_account.h b/src/prefs_account.h index efa659f8..54521c9d 100644 --- a/src/prefs_account.h +++ b/src/prefs_account.h @@ -125,8 +125,8 @@ struct _PrefsAccount #if USE_GPGME /* Privacy */ - gboolean default_encrypt; gboolean default_sign; + gboolean default_encrypt; gboolean ascii_armored; gboolean clearsign; SignKeyType sign_key; -- cgit v1.2.3