GtkSortType sort_type;
enum col_titles sort_column;
-
+ SelectionResult result;
};
GdkEventKey *event, gpointer data);
static void select_btn_cb (GtkWidget *widget, gpointer data);
static void cancel_btn_cb (GtkWidget *widget, gpointer data);
+static void dont_encrypt_btn_cb (GtkWidget *widget, gpointer data);
static void other_btn_cb (GtkWidget *widget, gpointer data);
static void sort_keys (struct select_keys_s *sk, enum col_titles column);
static void sort_keys_name (GtkWidget *widget, gpointer data);
char *buf;
if (!running)
- buf = g_strdup_printf (_("Please select key for `%s'"),
+ buf = g_strdup_printf (_("Please select key for '%s'"),
pattern);
else
- buf = g_strdup_printf (_("Collecting info for `%s' ... %c"),
+ buf = g_strdup_printf (_("Collecting info for '%s' ... %c"),
pattern,
windmill[running%DIM(windmill)]);
gtk_label_set_text (sk->toplabel, buf);
* Return value: NULL on error or a list of list of recipients.
**/
gpgme_key_t *
-gpgmegtk_recipient_selection (GSList *recp_names)
+gpgmegtk_recipient_selection (GSList *recp_names, SelectionResult *result)
{
struct select_keys_s sk;
sk.kset = g_realloc(sk.kset, sizeof(gpgme_key_t) * (sk.num_keys + 1));
sk.kset[sk.num_keys] = NULL;
}
+ if (result)
+ *result = sk.result;
return sk.kset;
}
const char *text[N_COL_TITLES];
char *algo_buf;
int row;
+ gssize by_read = 0, by_written = 0;
+ gchar *ret_str;
/* first check whether the key is capable of encryption which is not
* the case for revoked, expired or sign-only keys */
text[COL_KEYID] = s;
s = key->uids->name;
+ ret_str = g_locale_to_utf8 (s, strlen(s), &by_read, &by_written, NULL);
+ if (ret_str && by_written) {
+ s = ret_str;
+ }
text[COL_NAME] = s;
s = key->uids->email;
+ ret_str = g_locale_to_utf8 (s, strlen(s), &by_read, &by_written, NULL);
+ if (ret_str && by_written) {
+ s = ret_str;
+ }
text[COL_EMAIL] = s;
switch (key->uids->validity)
clist = sk->clist;
g_return_if_fail (clist);
- debug_print ("select_keys:fill_clist: pattern `%s'\n", pattern);
+ debug_print ("select_keys:fill_clist: pattern '%s'\n", pattern);
/*gtk_clist_freeze (select_keys.clist);*/
err = gpgme_new (&ctx);
GtkWidget *scrolledwin;
GtkWidget *clist;
GtkWidget *label;
- GtkWidget *select_btn, *cancel_btn, *other_btn;
+ GtkWidget *select_btn, *cancel_btn, *dont_encrypt_btn, *other_btn;
const char *titles[N_COL_TITLES];
g_assert (!sk->window);
gtkut_stock_button_set_create (&bbox,
&select_btn, _("Select"),
&cancel_btn, GTK_STOCK_CANCEL,
- &other_btn, _("Other"));
+ &dont_encrypt_btn, _("Don't encrypt"));
+
+ other_btn = gtk_button_new_from_stock(_("Other"));
+ GTK_WIDGET_SET_FLAGS(other_btn, GTK_CAN_DEFAULT);
+ gtk_box_pack_start(GTK_BOX(bbox), other_btn, TRUE, TRUE, 0);
+ gtk_widget_show(other_btn);
gtk_box_pack_end (GTK_BOX (hbox), bbox, FALSE, FALSE, 0);
gtk_widget_grab_default (select_btn);
G_CALLBACK (select_btn_cb), sk);
g_signal_connect (G_OBJECT(cancel_btn), "clicked",
G_CALLBACK (cancel_btn_cb), sk);
+ g_signal_connect (G_OBJECT(dont_encrypt_btn), "clicked",
+ G_CALLBACK (dont_encrypt_btn_cb), sk);
g_signal_connect (G_OBJECT (other_btn), "clicked",
G_CALLBACK (other_btn_cb), sk);
gpgme_key_ref(key);
sk->kset[sk->num_keys] = key;
sk->num_keys++;
- sk->okay = 1;
- gtk_main_quit ();
+ sk->okay = 1;
+ sk->result = KEY_SELECTION_OK;
+ gtk_main_quit ();
}
}
g_return_if_fail (sk);
sk->okay = 0;
+ sk->result = KEY_SELECTION_CANCEL;
if (sk->select_ctx)
gpgme_cancel (sk->select_ctx);
gtk_main_quit ();
}
+static void
+dont_encrypt_btn_cb (GtkWidget *widget, gpointer data)
+{
+ struct select_keys_s *sk = data;
+
+ g_return_if_fail (sk);
+ sk->okay = 0;
+ sk->result = KEY_SELECTION_DONT;
+ if (sk->select_ctx)
+ gpgme_cancel (sk->select_ctx);
+ gtk_main_quit ();
+}
static void
other_btn_cb (GtkWidget *widget, gpointer data)