*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifdef HAVE_CONFIG_H
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);
* 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;
+ gsize by_read = 0, by_written = 0;
gchar *ret_str;
/* first check whether the key is capable of encryption which is not
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"));
+ &other_btn, _("Other"),
+ &dont_encrypt_btn, _("Don't encrypt"));
+
+ cancel_btn = gtk_button_new_from_stock(GTK_STOCK_CANCEL);
+ GTK_WIDGET_SET_FLAGS(cancel_btn, GTK_CAN_DEFAULT);
+ gtk_box_pack_start(GTK_BOX(bbox), cancel_btn, TRUE, TRUE, 0);
+ gtk_widget_show(cancel_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)