pidgin/gtkcertmgr.c

Tue, 07 May 2013 05:04:46 -0400

author
Elliott Sales de Andrade <qulogic@pidgin.im>
date
Tue, 07 May 2013 05:04:46 -0400
changeset 33923
0fcc5635daba
parent 33170
ce4447562d64
child 34329
ddbc1337332c
child 34706
02cb08146888
permissions
-rw-r--r--

Rewrite debug window filter in JS.

Note, this does cause a couple regressions, but they are probably not
that big a deal. First, the JS regular expression syntax is slightly
different. Second, the JS regex API lacks a way to reliably determine
the location of matched groups, so we can't highlight just the groups
and must highlight the entire expression.

I suspect that none of our users ever had to use any fancy regex in the
debug window, and that most of our developers didn't even know it could
be done. So I doubt these regressions will cause much pain.

18650
8a34ac83df75 - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
1 /*
8a34ac83df75 - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
2 * @file gtkcertmgr.c GTK+ Certificate Manager API
8a34ac83df75 - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
3 * @ingroup pidgin
20147
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 19981
diff changeset
4 */
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 19981
diff changeset
5
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 19981
diff changeset
6 /* pidgin
18650
8a34ac83df75 - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
7 *
8a34ac83df75 - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
8 * Pidgin is the legal property of its developers, whose names are too numerous
8a34ac83df75 - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
9 * to list here. Please refer to the COPYRIGHT file distributed with this
8a34ac83df75 - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
10 * source distribution.
8a34ac83df75 - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
11 *
8a34ac83df75 - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
12 * This program is free software; you can redistribute it and/or modify
8a34ac83df75 - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
13 * it under the terms of the GNU General Public License as published by
8a34ac83df75 - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
14 * the Free Software Foundation; either version 2 of the License, or
8a34ac83df75 - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
15 * (at your option) any later version.
8a34ac83df75 - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
16 *
8a34ac83df75 - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
17 * This program is distributed in the hope that it will be useful,
8a34ac83df75 - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
8a34ac83df75 - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8a34ac83df75 - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
20 * GNU General Public License for more details.
8a34ac83df75 - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
21 *
8a34ac83df75 - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
22 * You should have received a copy of the GNU General Public License
8a34ac83df75 - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
23 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19829
diff changeset
24 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
18650
8a34ac83df75 - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
25 *
8a34ac83df75 - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
26 */
8a34ac83df75 - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
27
28981
4e3922ab4844 Include 'internal.h' before all other headers to make some non-gcc compilers happy.
Paul Aurich <darkrain42@pidgin.im>
parents: 28196
diff changeset
28 #include "internal.h"
18815
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
29 #include "core.h"
18650
8a34ac83df75 - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
30 #include "pidgin.h"
19667
4a8d8a6bd2b0 Make the gtkcert stuff compile on GTK+ older than 2.8
Daniel Atallah <datallah@pidgin.im>
parents: 19483
diff changeset
31 #include "pidginstock.h"
18650
8a34ac83df75 - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
32
8a34ac83df75 - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
33 #include "certificate.h"
18664
47b3d40a2eb8 - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18650
diff changeset
34 #include "debug.h"
18650
8a34ac83df75 - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
35 #include "notify.h"
19002
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
36 #include "request.h"
18650
8a34ac83df75 - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
37
18815
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
38 #include "gtkblist.h"
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
39 #include "gtkutils.h"
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
40
18650
8a34ac83df75 - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
41 #include "gtkcertmgr.h"
8a34ac83df75 - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
42
18819
f0114d3a5bb1 - Comment cosmetics
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18816
diff changeset
43 /*****************************************************************************
18822
25966b358d3f - Mock tls_peers mgmt interface
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18819
diff changeset
44 * X.509 tls_peers management interface *
25966b358d3f - Mock tls_peers mgmt interface
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18819
diff changeset
45 *****************************************************************************/
18823
da1d1529d4cd - Add logic to allow tls_peers manager to properly uninit itself when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18822
diff changeset
46
18902
aaf51e9e305d - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18893
diff changeset
47 typedef struct {
aaf51e9e305d - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18893
diff changeset
48 GtkWidget *mgmt_widget;
aaf51e9e305d - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18893
diff changeset
49 GtkTreeView *listview;
18904
a1a06b3d75cd - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18903
diff changeset
50 GtkTreeSelection *listselect;
18902
aaf51e9e305d - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18893
diff changeset
51 GtkWidget *importbutton;
aaf51e9e305d - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18893
diff changeset
52 GtkWidget *exportbutton;
aaf51e9e305d - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18893
diff changeset
53 GtkWidget *infobutton;
aaf51e9e305d - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18893
diff changeset
54 GtkWidget *deletebutton;
18903
52cde74fd51f - tls_peers certmgr now responds to certificate-stored,
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18902
diff changeset
55 PurpleCertificatePool *tls_peers;
18902
aaf51e9e305d - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18893
diff changeset
56 } tls_peers_mgmt_data;
aaf51e9e305d - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18893
diff changeset
57
aaf51e9e305d - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18893
diff changeset
58 tls_peers_mgmt_data *tpm_dat = NULL;
aaf51e9e305d - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18893
diff changeset
59
18891
b5ab1227f3d2 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18823
diff changeset
60 /* Columns
b5ab1227f3d2 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18823
diff changeset
61 See http://developer.gnome.org/doc/API/2.0/gtk/TreeWidget.html */
b5ab1227f3d2 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18823
diff changeset
62 enum
b5ab1227f3d2 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18823
diff changeset
63 {
b5ab1227f3d2 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18823
diff changeset
64 TPM_HOSTNAME_COLUMN,
b5ab1227f3d2 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18823
diff changeset
65 TPM_N_COLUMNS
b5ab1227f3d2 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18823
diff changeset
66 };
b5ab1227f3d2 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18823
diff changeset
67
18823
da1d1529d4cd - Add logic to allow tls_peers manager to properly uninit itself when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18822
diff changeset
68 static void
da1d1529d4cd - Add logic to allow tls_peers manager to properly uninit itself when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18822
diff changeset
69 tls_peers_mgmt_destroy(GtkWidget *mgmt_widget, gpointer data)
da1d1529d4cd - Add logic to allow tls_peers manager to properly uninit itself when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18822
diff changeset
70 {
da1d1529d4cd - Add logic to allow tls_peers manager to properly uninit itself when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18822
diff changeset
71 purple_debug_info("certmgr",
da1d1529d4cd - Add logic to allow tls_peers manager to properly uninit itself when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18822
diff changeset
72 "tls peers self-destructs\n");
18902
aaf51e9e305d - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18893
diff changeset
73
18903
52cde74fd51f - tls_peers certmgr now responds to certificate-stored,
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18902
diff changeset
74 purple_signals_disconnect_by_handle(tpm_dat);
19002
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
75 purple_request_close_with_handle(tpm_dat);
18902
aaf51e9e305d - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18893
diff changeset
76 g_free(tpm_dat); tpm_dat = NULL;
18823
da1d1529d4cd - Add logic to allow tls_peers manager to properly uninit itself when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18822
diff changeset
77 }
da1d1529d4cd - Add logic to allow tls_peers manager to properly uninit itself when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18822
diff changeset
78
18892
f6019ee5cd5f - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18891
diff changeset
79 static void
18902
aaf51e9e305d - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18893
diff changeset
80 tls_peers_mgmt_repopulate_list(void)
18892
f6019ee5cd5f - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18891
diff changeset
81 {
18902
aaf51e9e305d - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18893
diff changeset
82 GtkTreeView *listview = tpm_dat->listview;
18892
f6019ee5cd5f - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18891
diff changeset
83 PurpleCertificatePool *tls_peers;
f6019ee5cd5f - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18891
diff changeset
84 GList *idlist, *l;
22368
62b8e2bb96a7 Remove whitespace on empty lions
Mark Doliner <markdoliner@pidgin.im>
parents: 22269
diff changeset
85
18892
f6019ee5cd5f - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18891
diff changeset
86 GtkListStore *store = GTK_LIST_STORE(
f6019ee5cd5f - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18891
diff changeset
87 gtk_tree_view_get_model(GTK_TREE_VIEW(listview)));
22368
62b8e2bb96a7 Remove whitespace on empty lions
Mark Doliner <markdoliner@pidgin.im>
parents: 22269
diff changeset
88
18892
f6019ee5cd5f - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18891
diff changeset
89 /* First, delete everything in the list */
f6019ee5cd5f - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18891
diff changeset
90 gtk_list_store_clear(store);
f6019ee5cd5f - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18891
diff changeset
91
f6019ee5cd5f - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18891
diff changeset
92 /* Locate the "tls_peers" pool */
f6019ee5cd5f - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18891
diff changeset
93 tls_peers = purple_certificate_find_pool("x509", "tls_peers");
f6019ee5cd5f - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18891
diff changeset
94 g_return_if_fail(tls_peers);
f6019ee5cd5f - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18891
diff changeset
95
f6019ee5cd5f - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18891
diff changeset
96 /* Grab the loaded certificates */
f6019ee5cd5f - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18891
diff changeset
97 idlist = purple_certificate_pool_get_idlist(tls_peers);
f6019ee5cd5f - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18891
diff changeset
98
f6019ee5cd5f - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18891
diff changeset
99 /* Populate the listview */
f6019ee5cd5f - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18891
diff changeset
100 for (l = idlist; l; l = l->next) {
f6019ee5cd5f - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18891
diff changeset
101 GtkTreeIter iter;
f6019ee5cd5f - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18891
diff changeset
102 gtk_list_store_append(store, &iter);
f6019ee5cd5f - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18891
diff changeset
103
f6019ee5cd5f - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18891
diff changeset
104 gtk_list_store_set(GTK_LIST_STORE(store), &iter,
f6019ee5cd5f - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18891
diff changeset
105 TPM_HOSTNAME_COLUMN, l->data,
f6019ee5cd5f - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18891
diff changeset
106 -1);
f6019ee5cd5f - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18891
diff changeset
107 }
f6019ee5cd5f - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18891
diff changeset
108 purple_certificate_pool_destroy_idlist(idlist);
f6019ee5cd5f - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18891
diff changeset
109 }
f6019ee5cd5f - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18891
diff changeset
110
18903
52cde74fd51f - tls_peers certmgr now responds to certificate-stored,
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18902
diff changeset
111 static void
52cde74fd51f - tls_peers certmgr now responds to certificate-stored,
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18902
diff changeset
112 tls_peers_mgmt_mod_cb(PurpleCertificatePool *pool, const gchar *id, gpointer data)
52cde74fd51f - tls_peers certmgr now responds to certificate-stored,
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18902
diff changeset
113 {
52cde74fd51f - tls_peers certmgr now responds to certificate-stored,
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18902
diff changeset
114 g_assert (pool == tpm_dat->tls_peers);
52cde74fd51f - tls_peers certmgr now responds to certificate-stored,
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18902
diff changeset
115
52cde74fd51f - tls_peers certmgr now responds to certificate-stored,
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18902
diff changeset
116 tls_peers_mgmt_repopulate_list();
52cde74fd51f - tls_peers certmgr now responds to certificate-stored,
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18902
diff changeset
117 }
52cde74fd51f - tls_peers certmgr now responds to certificate-stored,
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18902
diff changeset
118
18904
a1a06b3d75cd - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18903
diff changeset
119 static void
18906
c6ac8d8ffe43 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18905
diff changeset
120 tls_peers_mgmt_select_chg_cb(GtkTreeSelection *ignored, gpointer data)
c6ac8d8ffe43 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18905
diff changeset
121 {
c6ac8d8ffe43 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18905
diff changeset
122 GtkTreeSelection *select = tpm_dat->listselect;
c6ac8d8ffe43 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18905
diff changeset
123 GtkTreeIter iter;
c6ac8d8ffe43 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18905
diff changeset
124 GtkTreeModel *model;
c6ac8d8ffe43 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18905
diff changeset
125
c6ac8d8ffe43 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18905
diff changeset
126 /* See if things are selected */
c6ac8d8ffe43 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18905
diff changeset
127 if (gtk_tree_selection_get_selected(select, &model, &iter)) {
c6ac8d8ffe43 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18905
diff changeset
128 /* Enable buttons if something is selected */
c6ac8d8ffe43 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18905
diff changeset
129 gtk_widget_set_sensitive(GTK_WIDGET(tpm_dat->exportbutton), TRUE);
c6ac8d8ffe43 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18905
diff changeset
130 gtk_widget_set_sensitive(GTK_WIDGET(tpm_dat->infobutton), TRUE);
c6ac8d8ffe43 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18905
diff changeset
131 gtk_widget_set_sensitive(GTK_WIDGET(tpm_dat->deletebutton), TRUE);
c6ac8d8ffe43 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18905
diff changeset
132 } else {
c6ac8d8ffe43 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18905
diff changeset
133 /* Otherwise, disable them */
c6ac8d8ffe43 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18905
diff changeset
134 gtk_widget_set_sensitive(GTK_WIDGET(tpm_dat->exportbutton), FALSE);
c6ac8d8ffe43 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18905
diff changeset
135 gtk_widget_set_sensitive(GTK_WIDGET(tpm_dat->infobutton), FALSE);
c6ac8d8ffe43 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18905
diff changeset
136 gtk_widget_set_sensitive(GTK_WIDGET(tpm_dat->deletebutton), FALSE);
c6ac8d8ffe43 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18905
diff changeset
137
c6ac8d8ffe43 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18905
diff changeset
138 }
c6ac8d8ffe43 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18905
diff changeset
139 }
c6ac8d8ffe43 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18905
diff changeset
140
c6ac8d8ffe43 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18905
diff changeset
141 static void
19002
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
142 tls_peers_mgmt_import_ok2_cb(gpointer data, const char *result)
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
143 {
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
144 PurpleCertificate *crt = (PurpleCertificate *) data;
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
145
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
146 /* TODO: Perhaps prompt if you're overwriting a cert? */
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
147
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
148 /* Drop the certificate into the pool */
28196
b6b09dfb64d0 Don't try to write a cert with a blank filename.
Paul Aurich <darkrain42@pidgin.im>
parents: 27525
diff changeset
149 if (result && *result)
b6b09dfb64d0 Don't try to write a cert with a blank filename.
Paul Aurich <darkrain42@pidgin.im>
parents: 27525
diff changeset
150 purple_certificate_pool_store(tpm_dat->tls_peers, result, crt);
19002
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
151
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
152 /* And this certificate is not needed any more */
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
153 purple_certificate_destroy(crt);
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
154 }
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
155
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
156 static void
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
157 tls_peers_mgmt_import_cancel2_cb(gpointer data, const char *result)
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
158 {
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
159 PurpleCertificate *crt = (PurpleCertificate *) data;
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
160 purple_certificate_destroy(crt);
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
161 }
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
162
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
163 static void
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
164 tls_peers_mgmt_import_ok_cb(gpointer data, const char *filename)
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
165 {
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
166 PurpleCertificateScheme *x509;
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
167 PurpleCertificate *crt;
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
168
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
169 /* Load the scheme of our tls_peers pool (ought to be x509) */
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
170 x509 = purple_certificate_pool_get_scheme(tpm_dat->tls_peers);
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
171
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
172 /* Now load the certificate from disk */
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
173 crt = purple_certificate_import(x509, filename);
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
174
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
175 /* Did it work? */
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
176 if (crt != NULL) {
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
177 gchar *default_hostname;
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
178 /* Get name to add to pool as */
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
179 /* Make a guess about what the hostname should be */
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
180 default_hostname = purple_certificate_get_subject_name(crt);
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
181 /* TODO: Find a way to make sure that crt gets destroyed
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
182 if the window gets closed unusually, such as by handle
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
183 deletion */
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
184 /* TODO: Display some more information on the certificate? */
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
185 purple_request_input(tpm_dat,
19002
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
186 _("Certificate Import"),
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
187 _("Specify a hostname"),
27525
579b9d64b364 A semi-random collection of English spelling and grammatical changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 22385
diff changeset
188 _("Type the host name for this certificate."),
19002
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
189 default_hostname,
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
190 FALSE, /* Not multiline */
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
191 FALSE, /* Not masked? */
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
192 NULL, /* No hints? */
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
193 _("OK"),
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
194 G_CALLBACK(tls_peers_mgmt_import_ok2_cb),
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
195 _("Cancel"),
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
196 G_CALLBACK(tls_peers_mgmt_import_cancel2_cb),
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
197 NULL, NULL, NULL, /* No account/who/conv*/
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
198 crt /* Pass cert instance to callback*/
19002
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
199 );
22368
62b8e2bb96a7 Remove whitespace on empty lions
Mark Doliner <markdoliner@pidgin.im>
parents: 22269
diff changeset
200
19002
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
201 g_free(default_hostname);
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
202 } else {
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
203 /* Errors! Oh no! */
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
204 /* TODO: Perhaps find a way to be specific about what just
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
205 went wrong? */
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
206 gchar * secondary;
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
207
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
208 secondary = g_strdup_printf(_("File %s could not be imported.\nMake sure that the file is readable and in PEM format.\n"), filename);
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
209 purple_notify_error(NULL,
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
210 _("Certificate Import Error"),
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
211 _("X.509 certificate import failed"),
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
212 secondary);
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
213 g_free(secondary);
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
214 }
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
215 }
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
216
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
217 static void
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
218 tls_peers_mgmt_import_cb(GtkWidget *button, gpointer data)
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
219 {
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
220 /* TODO: need to tell the user that we want a .PEM file! */
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
221 purple_request_file(tpm_dat,
19002
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
222 _("Select a PEM certificate"),
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
223 "certificate.pem",
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
224 FALSE, /* Not a save dialog */
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
225 G_CALLBACK(tls_peers_mgmt_import_ok_cb),
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
226 NULL, /* Do nothing if cancelled */
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
227 NULL, NULL, NULL, NULL );/* No account,conv,etc. */
19002
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
228 }
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
229
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
230 static void
19004
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
231 tls_peers_mgmt_export_ok_cb(gpointer data, const char *filename)
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
232 {
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
233 PurpleCertificate *crt = (PurpleCertificate *) data;
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
234
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
235 g_assert(filename);
22368
62b8e2bb96a7 Remove whitespace on empty lions
Mark Doliner <markdoliner@pidgin.im>
parents: 22269
diff changeset
236
19004
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
237 if (!purple_certificate_export(filename, crt)) {
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
238 /* Errors! Oh no! */
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
239 /* TODO: Perhaps find a way to be specific about what just
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
240 went wrong? */
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
241 gchar * secondary;
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
242
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
243 secondary = g_strdup_printf(_("Export to file %s failed.\nCheck that you have write permission to the target path\n"), filename);
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
244 purple_notify_error(NULL,
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
245 _("Certificate Export Error"),
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
246 _("X.509 certificate export failed"),
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
247 secondary);
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
248 g_free(secondary);
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
249 }
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
250
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
251 purple_certificate_destroy(crt);
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
252 }
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
253
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
254 static void
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
255 tls_peers_mgmt_export_cancel_cb(gpointer data, const char *filename)
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
256 {
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
257 PurpleCertificate *crt = (PurpleCertificate *) data;
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
258 /* Pressing cancel just frees the duplicated certificate */
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
259 purple_certificate_destroy(crt);
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
260 }
22368
62b8e2bb96a7 Remove whitespace on empty lions
Mark Doliner <markdoliner@pidgin.im>
parents: 22269
diff changeset
261
19004
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
262 static void
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
263 tls_peers_mgmt_export_cb(GtkWidget *button, gpointer data)
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
264 {
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
265 PurpleCertificate *crt;
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
266 GtkTreeSelection *select = tpm_dat->listselect;
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
267 GtkTreeIter iter;
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
268 GtkTreeModel *model;
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
269 gchar *id;
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
270
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
271 /* See if things are selected */
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
272 if (!gtk_tree_selection_get_selected(select, &model, &iter)) {
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
273 purple_debug_warning("gtkcertmgr/tls_peers_mgmt",
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
274 "Export clicked with no selection?\n");
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
275 return;
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
276 }
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
277
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
278 /* Retrieve the selected hostname */
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
279 gtk_tree_model_get(model, &iter, TPM_HOSTNAME_COLUMN, &id, -1);
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
280
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
281 /* Extract the certificate from the pool now to make sure it doesn't
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
282 get deleted out from under us */
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
283 crt = purple_certificate_pool_retrieve(tpm_dat->tls_peers, id);
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
284
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
285 if (NULL == crt) {
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
286 purple_debug_error("gtkcertmgr/tls_peers_mgmt",
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
287 "Id %s was not in the peers cache?!\n",
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
288 id);
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
289 g_free(id);
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
290 return;
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
291 }
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
292 g_free(id);
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
293
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
294 /* TODO: inform user that it will be a PEM? */
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
295 purple_request_file(tpm_dat,
19004
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
296 _("PEM X.509 Certificate Export"),
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
297 "certificate.pem",
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
298 TRUE, /* Is a save dialog */
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
299 G_CALLBACK(tls_peers_mgmt_export_ok_cb),
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
300 G_CALLBACK(tls_peers_mgmt_export_cancel_cb),
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
301 NULL, NULL, NULL, /* No account,conv,etc. */
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
302 crt); /* Pass the certificate on to the callback */
19004
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
303 }
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
304
19005
13826b25788c - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19004
diff changeset
305 static void
13826b25788c - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19004
diff changeset
306 tls_peers_mgmt_info_cb(GtkWidget *button, gpointer data)
13826b25788c - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19004
diff changeset
307 {
13826b25788c - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19004
diff changeset
308 GtkTreeSelection *select = tpm_dat->listselect;
13826b25788c - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19004
diff changeset
309 GtkTreeIter iter;
13826b25788c - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19004
diff changeset
310 GtkTreeModel *model;
13826b25788c - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19004
diff changeset
311 gchar *id;
13826b25788c - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19004
diff changeset
312 PurpleCertificate *crt;
32771
681ca041d42b Optionally show certificates using GCR's widgets. These are much
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32309
diff changeset
313 char *title;
19005
13826b25788c - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19004
diff changeset
314
13826b25788c - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19004
diff changeset
315 /* See if things are selected */
13826b25788c - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19004
diff changeset
316 if (!gtk_tree_selection_get_selected(select, &model, &iter)) {
13826b25788c - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19004
diff changeset
317 purple_debug_warning("gtkcertmgr/tls_peers_mgmt",
13826b25788c - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19004
diff changeset
318 "Info clicked with no selection?\n");
13826b25788c - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19004
diff changeset
319 return;
13826b25788c - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19004
diff changeset
320 }
13826b25788c - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19004
diff changeset
321
13826b25788c - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19004
diff changeset
322 /* Retrieve the selected hostname */
13826b25788c - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19004
diff changeset
323 gtk_tree_model_get(model, &iter, TPM_HOSTNAME_COLUMN, &id, -1);
13826b25788c - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19004
diff changeset
324
13826b25788c - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19004
diff changeset
325 /* Now retrieve the certificate */
13826b25788c - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19004
diff changeset
326 crt = purple_certificate_pool_retrieve(tpm_dat->tls_peers, id);
13826b25788c - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19004
diff changeset
327 g_return_if_fail(crt);
22368
62b8e2bb96a7 Remove whitespace on empty lions
Mark Doliner <markdoliner@pidgin.im>
parents: 22269
diff changeset
328
32771
681ca041d42b Optionally show certificates using GCR's widgets. These are much
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32309
diff changeset
329 /* Fire the notification */
681ca041d42b Optionally show certificates using GCR's widgets. These are much
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32309
diff changeset
330 title = g_strdup_printf(_("Certificate Information for %s"), id);
32891
5f120523520a Use the new certificate request API in the certificate manager.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32771
diff changeset
331 purple_request_certificate(tpm_dat, title, NULL, NULL, crt,
5f120523520a Use the new certificate request API in the certificate manager.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32771
diff changeset
332 _("OK"), G_CALLBACK(purple_certificate_destroy),
5f120523520a Use the new certificate request API in the certificate manager.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32771
diff changeset
333 _("Cancel"), G_CALLBACK(purple_certificate_destroy),
5f120523520a Use the new certificate request API in the certificate manager.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32771
diff changeset
334 crt);
22368
62b8e2bb96a7 Remove whitespace on empty lions
Mark Doliner <markdoliner@pidgin.im>
parents: 22269
diff changeset
335
19005
13826b25788c - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19004
diff changeset
336 g_free(id);
32891
5f120523520a Use the new certificate request API in the certificate manager.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32771
diff changeset
337 g_free(title);
19005
13826b25788c - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19004
diff changeset
338 }
19004
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
339
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
340 static void
32309
329370a63001 Allow double-clicking a certificate to show its info.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32308
diff changeset
341 tls_peers_mgmt_activated_cb(GtkTreeView *treeview, GtkTreePath *path, GtkTreeViewColumn *column, gpointer data)
329370a63001 Allow double-clicking a certificate to show its info.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32308
diff changeset
342 {
329370a63001 Allow double-clicking a certificate to show its info.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32308
diff changeset
343 tls_peers_mgmt_info_cb(NULL, NULL);
329370a63001 Allow double-clicking a certificate to show its info.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32308
diff changeset
344 }
329370a63001 Allow double-clicking a certificate to show its info.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32308
diff changeset
345
329370a63001 Allow double-clicking a certificate to show its info.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32308
diff changeset
346 static void
19006
ffeab9433f97 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19005
diff changeset
347 tls_peers_mgmt_delete_confirm_cb(gchar *id, gint choice)
ffeab9433f97 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19005
diff changeset
348 {
ffeab9433f97 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19005
diff changeset
349 if (1 == choice) {
ffeab9433f97 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19005
diff changeset
350 /* Yes, delete was confirmed */
ffeab9433f97 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19005
diff changeset
351 /* Now delete the thing */
19483
95243782d176 - Fix some overzealous g_asserts leading to a crash
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19360
diff changeset
352 if (!purple_certificate_pool_delete(tpm_dat->tls_peers, id)) {
95243782d176 - Fix some overzealous g_asserts leading to a crash
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19360
diff changeset
353 purple_debug_warning("gtkcertmgr/tls_peers_mgmt",
95243782d176 - Fix some overzealous g_asserts leading to a crash
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19360
diff changeset
354 "Deletion failed on id %s\n",
95243782d176 - Fix some overzealous g_asserts leading to a crash
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19360
diff changeset
355 id);
95243782d176 - Fix some overzealous g_asserts leading to a crash
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19360
diff changeset
356 };
19006
ffeab9433f97 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19005
diff changeset
357 }
ffeab9433f97 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19005
diff changeset
358
ffeab9433f97 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19005
diff changeset
359 g_free(id);
ffeab9433f97 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19005
diff changeset
360 }
22368
62b8e2bb96a7 Remove whitespace on empty lions
Mark Doliner <markdoliner@pidgin.im>
parents: 22269
diff changeset
361
19006
ffeab9433f97 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19005
diff changeset
362 static void
18904
a1a06b3d75cd - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18903
diff changeset
363 tls_peers_mgmt_delete_cb(GtkWidget *button, gpointer data)
a1a06b3d75cd - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18903
diff changeset
364 {
a1a06b3d75cd - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18903
diff changeset
365 GtkTreeSelection *select = tpm_dat->listselect;
a1a06b3d75cd - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18903
diff changeset
366 GtkTreeIter iter;
a1a06b3d75cd - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18903
diff changeset
367 GtkTreeModel *model;
a1a06b3d75cd - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18903
diff changeset
368
a1a06b3d75cd - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18903
diff changeset
369 /* See if things are selected */
a1a06b3d75cd - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18903
diff changeset
370 if (gtk_tree_selection_get_selected(select, &model, &iter)) {
a1a06b3d75cd - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18903
diff changeset
371
a1a06b3d75cd - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18903
diff changeset
372 gchar *id;
19006
ffeab9433f97 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19005
diff changeset
373 gchar *primary;
18904
a1a06b3d75cd - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18903
diff changeset
374
a1a06b3d75cd - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18903
diff changeset
375 /* Retrieve the selected hostname */
a1a06b3d75cd - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18903
diff changeset
376 gtk_tree_model_get(model, &iter, TPM_HOSTNAME_COLUMN, &id, -1);
a1a06b3d75cd - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18903
diff changeset
377
19006
ffeab9433f97 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19005
diff changeset
378 /* Prompt to confirm deletion */
ffeab9433f97 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19005
diff changeset
379 primary = g_strdup_printf(
ffeab9433f97 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19005
diff changeset
380 _("Really delete certificate for %s?"), id );
22368
62b8e2bb96a7 Remove whitespace on empty lions
Mark Doliner <markdoliner@pidgin.im>
parents: 22269
diff changeset
381
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
382 purple_request_yes_no(tpm_dat, _("Confirm certificate delete"),
19006
ffeab9433f97 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19005
diff changeset
383 primary, NULL, /* Can this be NULL? */
22385
d14ac3ae2007 The Gnome Human Interface Guidelines say, "if pressing this button by
Mark Doliner <markdoliner@pidgin.im>
parents: 22383
diff changeset
384 0, /* "yes" is the default action */
19006
ffeab9433f97 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19005
diff changeset
385 NULL, NULL, NULL,
ffeab9433f97 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19005
diff changeset
386 id, /* id ownership passed to callback */
ffeab9433f97 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19005
diff changeset
387 tls_peers_mgmt_delete_confirm_cb,
ffeab9433f97 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19005
diff changeset
388 tls_peers_mgmt_delete_confirm_cb );
22368
62b8e2bb96a7 Remove whitespace on empty lions
Mark Doliner <markdoliner@pidgin.im>
parents: 22269
diff changeset
389
19006
ffeab9433f97 - Make tls_peers_mgmt delete button prompt for yes/no before removing
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19005
diff changeset
390 g_free(primary);
22368
62b8e2bb96a7 Remove whitespace on empty lions
Mark Doliner <markdoliner@pidgin.im>
parents: 22269
diff changeset
391
18904
a1a06b3d75cd - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18903
diff changeset
392 } else {
a1a06b3d75cd - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18903
diff changeset
393 purple_debug_warning("gtkcertmgr/tls_peers_mgmt",
a1a06b3d75cd - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18903
diff changeset
394 "Delete clicked with no selection?\n");
a1a06b3d75cd - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18903
diff changeset
395 return;
a1a06b3d75cd - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18903
diff changeset
396 }
a1a06b3d75cd - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18903
diff changeset
397 }
a1a06b3d75cd - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18903
diff changeset
398
18822
25966b358d3f - Mock tls_peers mgmt interface
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18819
diff changeset
399 static GtkWidget *
25966b358d3f - Mock tls_peers mgmt interface
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18819
diff changeset
400 tls_peers_mgmt_build(void)
25966b358d3f - Mock tls_peers mgmt interface
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18819
diff changeset
401 {
18891
b5ab1227f3d2 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18823
diff changeset
402 GtkWidget *bbox;
18902
aaf51e9e305d - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18893
diff changeset
403 GtkListStore *store;
aaf51e9e305d - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18893
diff changeset
404
aaf51e9e305d - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18893
diff changeset
405 /* This block of variables will end up in tpm_dat */
aaf51e9e305d - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18893
diff changeset
406 GtkTreeView *listview;
18905
d418c21a441a - Code cosmetics
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18904
diff changeset
407 GtkTreeSelection *select;
18891
b5ab1227f3d2 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18823
diff changeset
408 GtkWidget *importbutton;
b5ab1227f3d2 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18823
diff changeset
409 GtkWidget *exportbutton;
b5ab1227f3d2 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18823
diff changeset
410 GtkWidget *infobutton;
b5ab1227f3d2 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18823
diff changeset
411 GtkWidget *deletebutton;
b5ab1227f3d2 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18823
diff changeset
412 /** Element to return to the Certmgr window to put in the Notebook */
b5ab1227f3d2 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18823
diff changeset
413 GtkWidget *mgmt_widget;
18902
aaf51e9e305d - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18893
diff changeset
414
aaf51e9e305d - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18893
diff changeset
415 /* Create a struct to store context information about this window */
aaf51e9e305d - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18893
diff changeset
416 tpm_dat = g_new0(tls_peers_mgmt_data, 1);
22368
62b8e2bb96a7 Remove whitespace on empty lions
Mark Doliner <markdoliner@pidgin.im>
parents: 22269
diff changeset
417
18902
aaf51e9e305d - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18893
diff changeset
418 tpm_dat->mgmt_widget = mgmt_widget =
aaf51e9e305d - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18893
diff changeset
419 gtk_hbox_new(FALSE, /* Non-homogeneous */
22383
af31fc1111dc Slightly cleaner
Mark Doliner <markdoliner@pidgin.im>
parents: 22382
diff changeset
420 PIDGIN_HIG_BOX_SPACE);
af31fc1111dc Slightly cleaner
Mark Doliner <markdoliner@pidgin.im>
parents: 22382
diff changeset
421 gtk_container_set_border_width(GTK_CONTAINER(mgmt_widget),
af31fc1111dc Slightly cleaner
Mark Doliner <markdoliner@pidgin.im>
parents: 22382
diff changeset
422 PIDGIN_HIG_BOX_SPACE);
18823
da1d1529d4cd - Add logic to allow tls_peers manager to properly uninit itself when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18822
diff changeset
423 gtk_widget_show(mgmt_widget);
da1d1529d4cd - Add logic to allow tls_peers manager to properly uninit itself when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18822
diff changeset
424
da1d1529d4cd - Add logic to allow tls_peers manager to properly uninit itself when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18822
diff changeset
425 /* Ensure that everything gets cleaned up when the dialog box
da1d1529d4cd - Add logic to allow tls_peers manager to properly uninit itself when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18822
diff changeset
426 is closed */
da1d1529d4cd - Add logic to allow tls_peers manager to properly uninit itself when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18822
diff changeset
427 g_signal_connect(G_OBJECT(mgmt_widget), "destroy",
da1d1529d4cd - Add logic to allow tls_peers manager to properly uninit itself when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18822
diff changeset
428 G_CALLBACK(tls_peers_mgmt_destroy), NULL);
18891
b5ab1227f3d2 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18823
diff changeset
429
b5ab1227f3d2 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18823
diff changeset
430 /* List view */
18892
f6019ee5cd5f - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18891
diff changeset
431 store = gtk_list_store_new(TPM_N_COLUMNS, G_TYPE_STRING);
22368
62b8e2bb96a7 Remove whitespace on empty lions
Mark Doliner <markdoliner@pidgin.im>
parents: 22269
diff changeset
432
18902
aaf51e9e305d - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18893
diff changeset
433 tpm_dat->listview = listview =
aaf51e9e305d - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18893
diff changeset
434 GTK_TREE_VIEW(gtk_tree_view_new_with_model(GTK_TREE_MODEL(store)));
22214
e8a9916cb99e It turns out the tree-models need to be unref'ed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22098
diff changeset
435 g_object_unref(G_OBJECT(store));
22368
62b8e2bb96a7 Remove whitespace on empty lions
Mark Doliner <markdoliner@pidgin.im>
parents: 22269
diff changeset
436
18892
f6019ee5cd5f - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18891
diff changeset
437 {
f6019ee5cd5f - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18891
diff changeset
438 GtkCellRenderer *renderer;
f6019ee5cd5f - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18891
diff changeset
439 GtkTreeViewColumn *column;
f6019ee5cd5f - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18891
diff changeset
440
18893
c3c789b74621 - Specify the selection mode on the tls_peers_mgmt listview (may not be
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18892
diff changeset
441 /* Set up the display columns */
18892
f6019ee5cd5f - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18891
diff changeset
442 renderer = gtk_cell_renderer_text_new();
f6019ee5cd5f - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18891
diff changeset
443 column = gtk_tree_view_column_new_with_attributes(
22098
16144010f03c Mark a string for translation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22032
diff changeset
444 _("Hostname"),
18892
f6019ee5cd5f - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18891
diff changeset
445 renderer,
f6019ee5cd5f - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18891
diff changeset
446 "text", TPM_HOSTNAME_COLUMN,
f6019ee5cd5f - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18891
diff changeset
447 NULL);
f6019ee5cd5f - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18891
diff changeset
448 gtk_tree_view_append_column(GTK_TREE_VIEW(listview), column);
19829
d6a65102cd95 Sort the certificates by hostname
Mark Doliner <markdoliner@pidgin.im>
parents: 19683
diff changeset
449
d6a65102cd95 Sort the certificates by hostname
Mark Doliner <markdoliner@pidgin.im>
parents: 19683
diff changeset
450 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(store),
d6a65102cd95 Sort the certificates by hostname
Mark Doliner <markdoliner@pidgin.im>
parents: 19683
diff changeset
451 TPM_HOSTNAME_COLUMN, GTK_SORT_ASCENDING);
18892
f6019ee5cd5f - CertMgr now lists the certificates in the pool
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18891
diff changeset
452 }
22368
62b8e2bb96a7 Remove whitespace on empty lions
Mark Doliner <markdoliner@pidgin.im>
parents: 22269
diff changeset
453
18905
d418c21a441a - Code cosmetics
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18904
diff changeset
454 /* Get the treeview selector into the struct */
d418c21a441a - Code cosmetics
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18904
diff changeset
455 tpm_dat->listselect = select =
d418c21a441a - Code cosmetics
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18904
diff changeset
456 gtk_tree_view_get_selection(GTK_TREE_VIEW(listview));
22368
62b8e2bb96a7 Remove whitespace on empty lions
Mark Doliner <markdoliner@pidgin.im>
parents: 22269
diff changeset
457
18905
d418c21a441a - Code cosmetics
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18904
diff changeset
458 /* Force the selection mode */
d418c21a441a - Code cosmetics
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18904
diff changeset
459 gtk_tree_selection_set_mode(select, GTK_SELECTION_SINGLE);
18906
c6ac8d8ffe43 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18905
diff changeset
460
c6ac8d8ffe43 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18905
diff changeset
461 /* Use a callback to enable/disable the buttons based on whether
c6ac8d8ffe43 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18905
diff changeset
462 something is selected */
c6ac8d8ffe43 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18905
diff changeset
463 g_signal_connect(G_OBJECT(select), "changed",
c6ac8d8ffe43 - Delete button now usable!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18905
diff changeset
464 G_CALLBACK(tls_peers_mgmt_select_chg_cb), NULL);
22368
62b8e2bb96a7 Remove whitespace on empty lions
Mark Doliner <markdoliner@pidgin.im>
parents: 22269
diff changeset
465
32309
329370a63001 Allow double-clicking a certificate to show its info.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32308
diff changeset
466 g_signal_connect(G_OBJECT(listview), "row-activated",
329370a63001 Allow double-clicking a certificate to show its info.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32308
diff changeset
467 G_CALLBACK(tls_peers_mgmt_activated_cb), NULL);
329370a63001 Allow double-clicking a certificate to show its info.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32308
diff changeset
468
31321
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 28981
diff changeset
469 gtk_box_pack_start(GTK_BOX(mgmt_widget),
31322
cdd35d85f754 warnings -= 3;
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 31321
diff changeset
470 pidgin_make_scrollable(GTK_WIDGET(listview), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS, GTK_SHADOW_IN, -1, -1),
31321
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 28981
diff changeset
471 TRUE, TRUE, /* Take up lots of space */
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 28981
diff changeset
472 0);
18902
aaf51e9e305d - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18893
diff changeset
473 gtk_widget_show(GTK_WIDGET(listview));
aaf51e9e305d - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18893
diff changeset
474
aaf51e9e305d - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18893
diff changeset
475 /* Fill the list for the first time */
aaf51e9e305d - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18893
diff changeset
476 tls_peers_mgmt_repopulate_list();
22368
62b8e2bb96a7 Remove whitespace on empty lions
Mark Doliner <markdoliner@pidgin.im>
parents: 22269
diff changeset
477
18891
b5ab1227f3d2 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18823
diff changeset
478 /* Right-hand side controls box */
b5ab1227f3d2 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18823
diff changeset
479 bbox = gtk_vbutton_box_new();
b5ab1227f3d2 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18823
diff changeset
480 gtk_box_pack_end(GTK_BOX(mgmt_widget), bbox,
b5ab1227f3d2 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18823
diff changeset
481 FALSE, FALSE, /* Do not take up space */
22382
fdbbd650a305 Improve the spacing in Pidgin's certificate manager window
Mark Doliner <markdoliner@pidgin.im>
parents: 22381
diff changeset
482 0);
18908
2453c24d2b22 - HIG compliance improved
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18907
diff changeset
483 gtk_box_set_spacing(GTK_BOX(bbox), PIDGIN_HIG_BOX_SPACE);
18891
b5ab1227f3d2 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18823
diff changeset
484 gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_START);
b5ab1227f3d2 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18823
diff changeset
485 gtk_widget_show(bbox);
b5ab1227f3d2 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18823
diff changeset
486
b5ab1227f3d2 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18823
diff changeset
487 /* Import button */
18902
aaf51e9e305d - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18893
diff changeset
488 tpm_dat->importbutton = importbutton =
32308
14dc3cf16b77 Fix Certificate Manager Import/Export icons.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31322
diff changeset
489 gtk_button_new_from_stock(GTK_STOCK_OPEN);
18891
b5ab1227f3d2 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18823
diff changeset
490 gtk_box_pack_start(GTK_BOX(bbox), importbutton, FALSE, FALSE, 0);
b5ab1227f3d2 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18823
diff changeset
491 gtk_widget_show(importbutton);
19002
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
492 g_signal_connect(G_OBJECT(importbutton), "clicked",
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
493 G_CALLBACK(tls_peers_mgmt_import_cb), NULL);
d9ea65be67b4 - Import button now (more or less) functional
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19001
diff changeset
494
18891
b5ab1227f3d2 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18823
diff changeset
495
b5ab1227f3d2 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18823
diff changeset
496 /* Export button */
18902
aaf51e9e305d - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18893
diff changeset
497 tpm_dat->exportbutton = exportbutton =
32308
14dc3cf16b77 Fix Certificate Manager Import/Export icons.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31322
diff changeset
498 gtk_button_new_from_stock(GTK_STOCK_SAVE_AS);
18891
b5ab1227f3d2 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18823
diff changeset
499 gtk_box_pack_start(GTK_BOX(bbox), exportbutton, FALSE, FALSE, 0);
b5ab1227f3d2 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18823
diff changeset
500 gtk_widget_show(exportbutton);
19004
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
501 g_signal_connect(G_OBJECT(exportbutton), "clicked",
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
502 G_CALLBACK(tls_peers_mgmt_export_cb), NULL);
ad1241cd8422 - Export button now functional due to the magic of copy-paste coding
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19002
diff changeset
503
18891
b5ab1227f3d2 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18823
diff changeset
504
b5ab1227f3d2 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18823
diff changeset
505 /* Info button */
18902
aaf51e9e305d - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18893
diff changeset
506 tpm_dat->infobutton = infobutton =
19667
4a8d8a6bd2b0 Make the gtkcert stuff compile on GTK+ older than 2.8
Daniel Atallah <datallah@pidgin.im>
parents: 19483
diff changeset
507 gtk_button_new_from_stock(PIDGIN_STOCK_INFO);
18891
b5ab1227f3d2 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18823
diff changeset
508 gtk_box_pack_start(GTK_BOX(bbox), infobutton, FALSE, FALSE, 0);
b5ab1227f3d2 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18823
diff changeset
509 gtk_widget_show(infobutton);
19005
13826b25788c - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19004
diff changeset
510 g_signal_connect(G_OBJECT(infobutton), "clicked",
13826b25788c - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19004
diff changeset
511 G_CALLBACK(tls_peers_mgmt_info_cb), NULL);
13826b25788c - Make a rudimentary information button in tls_peers_mgmt
William Ehlhardt <williamehlhardt@gmail.com>
parents: 19004
diff changeset
512
18891
b5ab1227f3d2 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18823
diff changeset
513
b5ab1227f3d2 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18823
diff changeset
514 /* Delete button */
18902
aaf51e9e305d - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18893
diff changeset
515 tpm_dat->deletebutton = deletebutton =
aaf51e9e305d - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18893
diff changeset
516 gtk_button_new_from_stock(GTK_STOCK_DELETE);
18891
b5ab1227f3d2 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18823
diff changeset
517 gtk_box_pack_start(GTK_BOX(bbox), deletebutton, FALSE, FALSE, 0);
b5ab1227f3d2 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18823
diff changeset
518 gtk_widget_show(deletebutton);
18904
a1a06b3d75cd - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18903
diff changeset
519 g_signal_connect(G_OBJECT(deletebutton), "clicked",
a1a06b3d75cd - Make the tls_peers certmgr delete button do something
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18903
diff changeset
520 G_CALLBACK(tls_peers_mgmt_delete_cb), NULL);
18891
b5ab1227f3d2 - More pretty (useless) GUI sugar
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18823
diff changeset
521
18907
07343a83e67c - Delegate all button enabling/disabling in tls_peers_mgmt to its "is
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18906
diff changeset
522 /* Call the "selection changed" callback, which will probably disable
07343a83e67c - Delegate all button enabling/disabling in tls_peers_mgmt to its "is
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18906
diff changeset
523 all the buttons since nothing is selected yet */
07343a83e67c - Delegate all button enabling/disabling in tls_peers_mgmt to its "is
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18906
diff changeset
524 tls_peers_mgmt_select_chg_cb(select, NULL);
18902
aaf51e9e305d - Add a struct to hold various pieces of data for the tls_peers mgmt UI
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18893
diff changeset
525
18903
52cde74fd51f - tls_peers certmgr now responds to certificate-stored,
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18902
diff changeset
526 /* Bind us to the tls_peers pool */
52cde74fd51f - tls_peers certmgr now responds to certificate-stored,
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18902
diff changeset
527 tpm_dat->tls_peers = purple_certificate_find_pool("x509", "tls_peers");
22368
62b8e2bb96a7 Remove whitespace on empty lions
Mark Doliner <markdoliner@pidgin.im>
parents: 22269
diff changeset
528
18903
52cde74fd51f - tls_peers certmgr now responds to certificate-stored,
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18902
diff changeset
529 /**** libpurple signals ****/
52cde74fd51f - tls_peers certmgr now responds to certificate-stored,
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18902
diff changeset
530 /* Respond to certificate add/remove by just reloading everything */
52cde74fd51f - tls_peers certmgr now responds to certificate-stored,
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18902
diff changeset
531 purple_signal_connect(tpm_dat->tls_peers, "certificate-stored",
52cde74fd51f - tls_peers certmgr now responds to certificate-stored,
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18902
diff changeset
532 tpm_dat, PURPLE_CALLBACK(tls_peers_mgmt_mod_cb),
52cde74fd51f - tls_peers certmgr now responds to certificate-stored,
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18902
diff changeset
533 NULL);
52cde74fd51f - tls_peers certmgr now responds to certificate-stored,
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18902
diff changeset
534 purple_signal_connect(tpm_dat->tls_peers, "certificate-deleted",
52cde74fd51f - tls_peers certmgr now responds to certificate-stored,
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18902
diff changeset
535 tpm_dat, PURPLE_CALLBACK(tls_peers_mgmt_mod_cb),
52cde74fd51f - tls_peers certmgr now responds to certificate-stored,
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18902
diff changeset
536 NULL);
22368
62b8e2bb96a7 Remove whitespace on empty lions
Mark Doliner <markdoliner@pidgin.im>
parents: 22269
diff changeset
537
18823
da1d1529d4cd - Add logic to allow tls_peers manager to properly uninit itself when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18822
diff changeset
538 return mgmt_widget;
18822
25966b358d3f - Mock tls_peers mgmt interface
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18819
diff changeset
539 }
25966b358d3f - Mock tls_peers mgmt interface
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18819
diff changeset
540
21091
07fe1a99c47b Patch from Andrew Gaul to constify a bunch of static variables to reduce
Ka-Hing Cheung <khc@pidgin.im>
parents: 20147
diff changeset
541 const PidginCertificateManager tls_peers_mgmt = {
18822
25966b358d3f - Mock tls_peers mgmt interface
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18819
diff changeset
542 tls_peers_mgmt_build, /* Widget creation function */
25966b358d3f - Mock tls_peers mgmt interface
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18819
diff changeset
543 N_("SSL Servers")
25966b358d3f - Mock tls_peers mgmt interface
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18819
diff changeset
544 };
25966b358d3f - Mock tls_peers mgmt interface
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18819
diff changeset
545
25966b358d3f - Mock tls_peers mgmt interface
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18819
diff changeset
546 /*****************************************************************************
18819
f0114d3a5bb1 - Comment cosmetics
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18816
diff changeset
547 * GTK+ main certificate manager *
f0114d3a5bb1 - Comment cosmetics
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18816
diff changeset
548 *****************************************************************************/
18815
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
549 typedef struct
18650
8a34ac83df75 - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
550 {
18815
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
551 GtkWidget *window;
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
552 GtkWidget *notebook;
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
553
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
554 GtkWidget *closebutton;
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
555 } CertMgrDialog;
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
556
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
557 /* If a certificate manager window is open, this will point to it.
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
558 So if it is set, don't open another one! */
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
559 CertMgrDialog *certmgr_dialog = NULL;
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
560
22032
8136dd5eeda3 Make some more event handlers return appropriate gboolean values. This turns
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
561 static gboolean
18815
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
562 certmgr_close_cb(GtkWidget *w, CertMgrDialog *dlg)
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
563 {
18819
f0114d3a5bb1 - Comment cosmetics
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18816
diff changeset
564 /* TODO: Ignoring the arguments to this function may not be ideal,
f0114d3a5bb1 - Comment cosmetics
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18816
diff changeset
565 but there *should* only be "one dialog to rule them all" at a time*/
18815
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
566 pidgin_certmgr_hide();
22032
8136dd5eeda3 Make some more event handlers return appropriate gboolean values. This turns
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
567 return FALSE;
18815
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
568 }
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
569
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
570 void
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
571 pidgin_certmgr_show(void)
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
572 {
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
573 CertMgrDialog *dlg;
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
574 GtkWidget *win;
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
575 GtkWidget *vbox;
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
576
18664
47b3d40a2eb8 - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18650
diff changeset
577 /* Enumerate all the certificates on file */
47b3d40a2eb8 - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18650
diff changeset
578 {
47b3d40a2eb8 - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18650
diff changeset
579 GList *idlist, *poollist;
47b3d40a2eb8 - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18650
diff changeset
580
47b3d40a2eb8 - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18650
diff changeset
581 for ( poollist = purple_certificate_get_pools();
47b3d40a2eb8 - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18650
diff changeset
582 poollist;
47b3d40a2eb8 - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18650
diff changeset
583 poollist = poollist->next ) {
47b3d40a2eb8 - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18650
diff changeset
584 PurpleCertificatePool *pool = poollist->data;
47b3d40a2eb8 - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18650
diff changeset
585 GList *l;
22368
62b8e2bb96a7 Remove whitespace on empty lions
Mark Doliner <markdoliner@pidgin.im>
parents: 22269
diff changeset
586
18664
47b3d40a2eb8 - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18650
diff changeset
587 purple_debug_info("gtkcertmgr",
47b3d40a2eb8 - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18650
diff changeset
588 "Pool %s found for scheme %s -"
47b3d40a2eb8 - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18650
diff changeset
589 "Enumerating certificates:\n",
47b3d40a2eb8 - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18650
diff changeset
590 pool->name, pool->scheme_name);
47b3d40a2eb8 - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18650
diff changeset
591
47b3d40a2eb8 - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18650
diff changeset
592 idlist = purple_certificate_pool_get_idlist(pool);
47b3d40a2eb8 - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18650
diff changeset
593
47b3d40a2eb8 - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18650
diff changeset
594 for (l=idlist; l; l = l->next) {
47b3d40a2eb8 - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18650
diff changeset
595 purple_debug_info("gtkcertmgr",
47b3d40a2eb8 - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18650
diff changeset
596 "- %s\n",
19676
f4952bab5b50 Fix printf(%s, NULL).
Daniel Atallah <datallah@pidgin.im>
parents: 19667
diff changeset
597 l->data ? (gchar *) l->data : "(null)");
18664
47b3d40a2eb8 - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18650
diff changeset
598 } /* idlist */
47b3d40a2eb8 - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18650
diff changeset
599 purple_certificate_pool_destroy_idlist(idlist);
47b3d40a2eb8 - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18650
diff changeset
600 } /* poollist */
47b3d40a2eb8 - Add debug code to spit a list of all certificates in all pools when
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18650
diff changeset
601 }
18815
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
602
22368
62b8e2bb96a7 Remove whitespace on empty lions
Mark Doliner <markdoliner@pidgin.im>
parents: 22269
diff changeset
603
18815
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
604 /* If the manager is already open, bring it to the front */
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
605 if (certmgr_dialog != NULL) {
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
606 gtk_window_present(GTK_WINDOW(certmgr_dialog->window));
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
607 return;
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
608 }
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
609
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
610 /* Create the dialog, and set certmgr_dialog so we never create
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
611 more than one at a time */
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
612 dlg = certmgr_dialog = g_new0(CertMgrDialog, 1);
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
613
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
614 win = dlg->window =
22000
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
615 pidgin_create_dialog(_("Certificate Manager"),/* Title */
33170
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33141
diff changeset
616 #if GTK_CHECK_VERSION(3,0,0)
33141
2001ba1d6827 Remove extra padding that makes things look not-so-good.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32891
diff changeset
617 0, /*Window border*/
33170
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33141
diff changeset
618 #else
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33141
diff changeset
619 PIDGIN_HIG_BORDER, /*Window border*/
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33141
diff changeset
620 #endif
18815
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
621 "certmgr", /* Role */
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
622 TRUE); /* Allow resizing */
18816
a6a20fabe100 - CertMgr window responds properly to delete_event
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18815
diff changeset
623 g_signal_connect(G_OBJECT(win), "delete_event",
a6a20fabe100 - CertMgr window responds properly to delete_event
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18815
diff changeset
624 G_CALLBACK(certmgr_close_cb), dlg);
a6a20fabe100 - CertMgr window responds properly to delete_event
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18815
diff changeset
625
22368
62b8e2bb96a7 Remove whitespace on empty lions
Mark Doliner <markdoliner@pidgin.im>
parents: 22269
diff changeset
626
18815
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
627 /* TODO: Retrieve the user-set window size and use it */
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
628 gtk_window_set_default_size(GTK_WINDOW(win), 400, 400);
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
629
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
630 /* Main vbox */
22000
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
631 vbox = pidgin_dialog_get_vbox_with_properties(GTK_DIALOG(win), FALSE, PIDGIN_HIG_BORDER);
18815
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
632
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
633 /* Notebook of various certificate managers */
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
634 dlg->notebook = gtk_notebook_new();
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
635 gtk_box_pack_start(GTK_BOX(vbox), dlg->notebook,
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
636 TRUE, TRUE, /* Notebook should take extra space */
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
637 0);
18822
25966b358d3f - Mock tls_peers mgmt interface
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18819
diff changeset
638 gtk_widget_show(dlg->notebook);
18815
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
639
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
640 /* Close button */
22005
0183020ba2cc Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22000
diff changeset
641 dlg->closebutton = pidgin_dialog_add_button(GTK_DIALOG(win), GTK_STOCK_CLOSE,
0183020ba2cc Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22000
diff changeset
642 G_CALLBACK(certmgr_close_cb), dlg);
18815
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
643
18822
25966b358d3f - Mock tls_peers mgmt interface
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18819
diff changeset
644 /* Add the defined certificate managers */
25966b358d3f - Mock tls_peers mgmt interface
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18819
diff changeset
645 /* TODO: Find a way of determining whether each is shown or not */
25966b358d3f - Mock tls_peers mgmt interface
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18819
diff changeset
646 /* TODO: Implement this correctly */
25966b358d3f - Mock tls_peers mgmt interface
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18819
diff changeset
647 gtk_notebook_append_page(GTK_NOTEBOOK (dlg->notebook),
25966b358d3f - Mock tls_peers mgmt interface
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18819
diff changeset
648 (tls_peers_mgmt.build)(),
25966b358d3f - Mock tls_peers mgmt interface
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18819
diff changeset
649 gtk_label_new(_(tls_peers_mgmt.label)) );
25966b358d3f - Mock tls_peers mgmt interface
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18819
diff changeset
650
18815
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
651 gtk_widget_show(win);
18650
8a34ac83df75 - Add a skeleton for the Pidgin Certificate Manager and include it in
William Ehlhardt <williamehlhardt@gmail.com>
parents:
diff changeset
652 }
18815
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
653
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
654 void
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
655 pidgin_certmgr_hide(void)
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
656 {
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
657 /* If it isn't open, do nothing */
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
658 if (certmgr_dialog == NULL) {
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
659 return;
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
660 }
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
661
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
662 purple_signals_disconnect_by_handle(certmgr_dialog);
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
663 purple_prefs_disconnect_by_handle(certmgr_dialog);
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
664
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
665 gtk_widget_destroy(certmgr_dialog->window);
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
666 g_free(certmgr_dialog);
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
667 certmgr_dialog = NULL;
a3d656beadcf - Make a real Certificate Manager dialog instead of a stupid popup. It
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18664
diff changeset
668 }

mercurial