2006-08-17 [colin] 2.4.0cvs59
* src/plugins/pgpcore/select-keys.c When encrypting, if only one key matches and it matches exactly, automatically use it.
This commit is contained in:
parent
233e271a62
commit
ec355510c1
|
@ -1,3 +1,9 @@
|
|||
2006-08-17 [colin] 2.4.0cvs59
|
||||
|
||||
* src/plugins/pgpcore/select-keys.c
|
||||
When encrypting, if only one key matches and it
|
||||
matches exactly, automatically use it.
|
||||
|
||||
2006-08-17 [colin] 2.4.0cvs58
|
||||
|
||||
* src/mimeview.c
|
||||
|
|
|
@ -1750,3 +1750,4 @@
|
|||
( cvs diff -u -r 1.1.2.1 -r 1.1.2.2 manual/es/sylpheed-claws-manual.xml; ) > 2.4.0cvs56.patchset
|
||||
( cvs diff -u -r 1.179.2.128 -r 1.179.2.129 src/imap.c; cvs diff -u -r 1.83.2.78 -r 1.83.2.79 src/mimeview.c; cvs diff -u -r 1.150.2.71 -r 1.150.2.72 src/procmsg.c; cvs diff -u -r 1.36.2.74 -r 1.36.2.75 src/common/utils.c; cvs diff -u -r 1.20.2.34 -r 1.20.2.35 src/common/utils.h; cvs diff -u -r 1.2.2.16 -r 1.2.2.17 src/gtk/inputdialog.c; cvs diff -u -r 1.1.2.3 -r 1.1.2.4 src/gtk/inputdialog.h; cvs diff -u -r 1.1.2.15 -r 1.1.2.16 src/plugins/pgpinline/pgpinline.c; ) > 2.4.0cvs57.patchset
|
||||
( cvs diff -u -r 1.83.2.79 -r 1.83.2.80 src/mimeview.c; cvs diff -u -r 1.204.2.96 -r 1.204.2.97 src/prefs_common.c; cvs diff -u -r 1.103.2.57 -r 1.103.2.58 src/prefs_common.h; cvs diff -u -r 1.3.2.10 -r 1.3.2.11 src/prefs_ext_prog.c; cvs diff -u -r 1.96.2.137 -r 1.96.2.138 src/textview.c; ) > 2.4.0cvs58.patchset
|
||||
( cvs diff -u -r 1.1.2.10 -r 1.1.2.11 src/plugins/pgpcore/select-keys.c; ) > 2.4.0cvs59.patchset
|
||||
|
|
|
@ -11,7 +11,7 @@ MINOR_VERSION=4
|
|||
MICRO_VERSION=0
|
||||
INTERFACE_AGE=0
|
||||
BINARY_AGE=0
|
||||
EXTRA_VERSION=58
|
||||
EXTRA_VERSION=59
|
||||
EXTRA_RELEASE=
|
||||
EXTRA_GTK2_VERSION=
|
||||
|
||||
|
|
|
@ -78,7 +78,7 @@ struct select_keys_s {
|
|||
|
||||
|
||||
static void set_row (GtkCList *clist, gpgme_key_t key);
|
||||
static void fill_clist (struct select_keys_s *sk, const char *pattern,
|
||||
static gpgme_key_t fill_clist (struct select_keys_s *sk, const char *pattern,
|
||||
gpgme_protocol_t proto);
|
||||
static void create_dialog (struct select_keys_s *sk);
|
||||
static void open_dialog (struct select_keys_s *sk);
|
||||
|
@ -104,7 +104,7 @@ update_progress (struct select_keys_s *sk, int running, const char *pattern)
|
|||
char *buf;
|
||||
|
||||
if (!running)
|
||||
buf = g_strdup_printf (_("Please select key for '%s'"),
|
||||
buf = g_strdup_printf (_("No exact match for '%s'; please select the key."),
|
||||
pattern);
|
||||
else
|
||||
buf = g_strdup_printf (_("Collecting info for '%s' ... %c"),
|
||||
|
@ -130,7 +130,7 @@ gpgmegtk_recipient_selection (GSList *recp_names, SelectionResult *result,
|
|||
gpgme_protocol_t proto)
|
||||
{
|
||||
struct select_keys_s sk;
|
||||
|
||||
gpgme_key_t key = NULL;
|
||||
memset (&sk, 0, sizeof sk);
|
||||
|
||||
open_dialog (&sk);
|
||||
|
@ -139,9 +139,25 @@ gpgmegtk_recipient_selection (GSList *recp_names, SelectionResult *result,
|
|||
sk.pattern = recp_names? recp_names->data:NULL;
|
||||
sk.proto = proto;
|
||||
gtk_clist_clear (sk.clist);
|
||||
fill_clist (&sk, sk.pattern, proto);
|
||||
key = fill_clist (&sk, sk.pattern, proto);
|
||||
update_progress (&sk, 0, sk.pattern);
|
||||
gtk_main ();
|
||||
if (!key) {
|
||||
gtk_widget_show_all (sk.window);
|
||||
gtk_main ();
|
||||
} else {
|
||||
gtk_widget_hide (sk.window);
|
||||
sk.kset = g_realloc(sk.kset,
|
||||
sizeof(gpgme_key_t) * (sk.num_keys + 1));
|
||||
gpgme_key_ref(key);
|
||||
sk.kset[sk.num_keys] = key;
|
||||
sk.num_keys++;
|
||||
sk.okay = 1;
|
||||
sk.result = KEY_SELECTION_OK;
|
||||
gpgme_release (sk.select_ctx);
|
||||
sk.select_ctx = NULL;
|
||||
printf("used %s\n", key->uids->email);
|
||||
}
|
||||
key = NULL;
|
||||
if (recp_names)
|
||||
recp_names = recp_names->next;
|
||||
} while (sk.okay && recp_names);
|
||||
|
@ -237,7 +253,7 @@ set_row (GtkCList *clist, gpgme_key_t key)
|
|||
gtk_clist_set_row_data_full (clist, row, key, destroy_key);
|
||||
}
|
||||
|
||||
static void
|
||||
static gpgme_key_t
|
||||
fill_clist (struct select_keys_s *sk, const char *pattern, gpgme_protocol_t proto)
|
||||
{
|
||||
GtkCList *clist;
|
||||
|
@ -245,10 +261,12 @@ fill_clist (struct select_keys_s *sk, const char *pattern, gpgme_protocol_t prot
|
|||
gpgme_error_t err;
|
||||
gpgme_key_t key;
|
||||
int running=0;
|
||||
|
||||
g_return_if_fail (sk);
|
||||
int num_results = 0;
|
||||
gboolean exact_match = FALSE;
|
||||
gpgme_key_t last_key = NULL;
|
||||
g_return_val_if_fail (sk, NULL);
|
||||
clist = sk->clist;
|
||||
g_return_if_fail (clist);
|
||||
g_return_val_if_fail (clist, NULL);
|
||||
|
||||
debug_print ("select_keys:fill_clist: pattern '%s' proto %d\n", pattern, proto);
|
||||
|
||||
|
@ -269,25 +287,45 @@ fill_clist (struct select_keys_s *sk, const char *pattern, gpgme_protocol_t prot
|
|||
pattern, gpgme_strerror (err));
|
||||
sk->select_ctx = NULL;
|
||||
gpgme_release(ctx);
|
||||
return;
|
||||
return FALSE;
|
||||
}
|
||||
update_progress (sk, ++running, pattern);
|
||||
while ( !(err = gpgme_op_keylist_next ( ctx, &key )) ) {
|
||||
gpgme_user_id_t uid = key->uids;
|
||||
debug_print ("%% %s:%d: insert\n", __FILE__ ,__LINE__ );
|
||||
set_row (clist, key ); key = NULL;
|
||||
set_row (clist, key );
|
||||
for (; uid; uid = uid->next) {
|
||||
if (!strcmp(pattern, uid->email)) {
|
||||
exact_match = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
num_results++;
|
||||
last_key = key;
|
||||
key = NULL;
|
||||
update_progress (sk, ++running, pattern);
|
||||
while (gtk_events_pending ())
|
||||
gtk_main_iteration ();
|
||||
}
|
||||
|
||||
if (exact_match == TRUE && num_results == 1) {
|
||||
if (last_key->uids->validity < GPGME_VALIDITY_FULL &&
|
||||
!use_untrusted(last_key))
|
||||
exact_match = FALSE;
|
||||
}
|
||||
|
||||
debug_print ("%% %s:%d: ready\n", __FILE__ ,__LINE__ );
|
||||
if (gpgme_err_code(err) != GPG_ERR_EOF) {
|
||||
debug_print ("** gpgme_op_keylist_next failed: %s",
|
||||
gpgme_strerror (err));
|
||||
gpgme_op_keylist_end(ctx);
|
||||
}
|
||||
sk->select_ctx = NULL;
|
||||
gpgme_release (ctx);
|
||||
if (!exact_match || num_results != 1) {
|
||||
sk->select_ctx = NULL;
|
||||
gpgme_release (ctx);
|
||||
}
|
||||
/*gtk_clist_thaw (select_keys.clist);*/
|
||||
return (exact_match == TRUE && num_results == 1 ? last_key:NULL);
|
||||
}
|
||||
|
||||
|
||||
|
@ -381,8 +419,6 @@ create_dialog (struct select_keys_s *sk)
|
|||
vbox2 = gtk_vbox_new (FALSE, 4);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), vbox2, FALSE, FALSE, 0);
|
||||
|
||||
gtk_widget_show_all (window);
|
||||
|
||||
sk->window = window;
|
||||
sk->toplabel = GTK_LABEL (label);
|
||||
sk->clist = GTK_CLIST (clist);
|
||||
|
@ -398,7 +434,6 @@ open_dialog (struct select_keys_s *sk)
|
|||
sk->okay = 0;
|
||||
sk->sort_column = N_COL_TITLES; /* use an invalid value */
|
||||
sk->sort_type = GTK_SORT_ASCENDING;
|
||||
gtk_widget_show (sk->window);
|
||||
}
|
||||
|
||||
|
||||
|
@ -510,7 +545,10 @@ other_btn_cb (GtkWidget *widget, gpointer data)
|
|||
NULL );
|
||||
if (!uid)
|
||||
return;
|
||||
fill_clist (sk, uid, sk->proto);
|
||||
if (fill_clist (sk, uid, sk->proto) != NULL) {
|
||||
gpgme_release(sk->select_ctx);
|
||||
sk->select_ctx = NULL;
|
||||
}
|
||||
update_progress (sk, 0, sk->pattern);
|
||||
g_free (uid);
|
||||
}
|
||||
|
@ -520,14 +558,15 @@ static gboolean
|
|||
use_untrusted (gpgme_key_t key)
|
||||
{
|
||||
AlertValue aval;
|
||||
|
||||
aval = alertpanel
|
||||
(_("Trust key"),
|
||||
_("The selected key is not fully trusted.\n"
|
||||
gchar *buf = g_strdup_printf(_("The key of '%s' is not fully trusted.\n"
|
||||
"If you choose to encrypt the message with this key you don't\n"
|
||||
"know for sure that it will go to the person you mean it to.\n"
|
||||
"Do you trust it enough to use it anyway?"),
|
||||
"Do you trust it enough to use it anyway?"), key->uids->email);
|
||||
aval = alertpanel
|
||||
(_("Trust key"),
|
||||
buf,
|
||||
GTK_STOCK_NO, GTK_STOCK_YES, NULL);
|
||||
g_free(buf);
|
||||
if (aval == G_ALERTALTERNATE)
|
||||
return TRUE;
|
||||
else
|
||||
|
|
Loading…
Reference in a new issue