Mercurial > pidgin.yaz
comparison pidgin/gtkcertmgr.c @ 19054:ffeb39523eb6
- Make the tls_peers certmgr delete button do something
author | William Ehlhardt <williamehlhardt@gmail.com> |
---|---|
date | Sat, 28 Jul 2007 08:24:55 +0000 |
parents | 95a8469cd1e3 |
children | e5981fc8733f |
comparison
equal
deleted
inserted
replaced
19053:95a8469cd1e3 | 19054:ffeb39523eb6 |
---|---|
44 *****************************************************************************/ | 44 *****************************************************************************/ |
45 | 45 |
46 typedef struct { | 46 typedef struct { |
47 GtkWidget *mgmt_widget; | 47 GtkWidget *mgmt_widget; |
48 GtkTreeView *listview; | 48 GtkTreeView *listview; |
49 GtkTreeSelection *listselect; | |
49 GtkWidget *importbutton; | 50 GtkWidget *importbutton; |
50 GtkWidget *exportbutton; | 51 GtkWidget *exportbutton; |
51 GtkWidget *infobutton; | 52 GtkWidget *infobutton; |
52 GtkWidget *deletebutton; | 53 GtkWidget *deletebutton; |
53 PurpleCertificatePool *tls_peers; | 54 PurpleCertificatePool *tls_peers; |
109 tls_peers_mgmt_mod_cb(PurpleCertificatePool *pool, const gchar *id, gpointer data) | 110 tls_peers_mgmt_mod_cb(PurpleCertificatePool *pool, const gchar *id, gpointer data) |
110 { | 111 { |
111 g_assert (pool == tpm_dat->tls_peers); | 112 g_assert (pool == tpm_dat->tls_peers); |
112 | 113 |
113 tls_peers_mgmt_repopulate_list(); | 114 tls_peers_mgmt_repopulate_list(); |
115 } | |
116 | |
117 static void | |
118 tls_peers_mgmt_delete_cb(GtkWidget *button, gpointer data) | |
119 { | |
120 GtkTreeSelection *select = tpm_dat->listselect; | |
121 GtkTreeIter iter; | |
122 GtkTreeModel *model; | |
123 | |
124 /* See if things are selected */ | |
125 if (gtk_tree_selection_get_selected(select, &model, &iter)) { | |
126 | |
127 gchar *id; | |
128 | |
129 /* Retrieve the selected hostname */ | |
130 gtk_tree_model_get(model, &iter, TPM_HOSTNAME_COLUMN, &id, -1); | |
131 | |
132 /* Now delete the thing */ | |
133 g_assert(purple_certificate_pool_delete(tpm_dat->tls_peers, id)); | |
134 | |
135 g_free(id); | |
136 } else { | |
137 purple_debug_warning("gtkcertmgr/tls_peers_mgmt", | |
138 "Delete clicked with no selection?\n"); | |
139 return; | |
140 } | |
114 } | 141 } |
115 | 142 |
116 static GtkWidget * | 143 static GtkWidget * |
117 tls_peers_mgmt_build(void) | 144 tls_peers_mgmt_build(void) |
118 { | 145 { |
159 renderer, | 186 renderer, |
160 "text", TPM_HOSTNAME_COLUMN, | 187 "text", TPM_HOSTNAME_COLUMN, |
161 NULL); | 188 NULL); |
162 gtk_tree_view_append_column(GTK_TREE_VIEW(listview), column); | 189 gtk_tree_view_append_column(GTK_TREE_VIEW(listview), column); |
163 | 190 |
191 /* Get the treeview selector into the struct */ | |
192 tpm_dat->listselect = select = | |
193 gtk_tree_view_get_selection(GTK_TREE_VIEW(listview)); | |
194 | |
164 /* Force the selection mode */ | 195 /* Force the selection mode */ |
165 select = gtk_tree_view_get_selection(GTK_TREE_VIEW(listview)); | |
166 gtk_tree_selection_set_mode(select, GTK_SELECTION_SINGLE); | 196 gtk_tree_selection_set_mode(select, GTK_SELECTION_SINGLE); |
167 } | 197 } |
168 | 198 |
169 gtk_box_pack_start(GTK_BOX(mgmt_widget), GTK_WIDGET(listview), | 199 gtk_box_pack_start(GTK_BOX(mgmt_widget), GTK_WIDGET(listview), |
170 TRUE, TRUE, /* Take up lots of space */ | 200 TRUE, TRUE, /* Take up lots of space */ |
205 /* Delete button */ | 235 /* Delete button */ |
206 tpm_dat->deletebutton = deletebutton = | 236 tpm_dat->deletebutton = deletebutton = |
207 gtk_button_new_from_stock(GTK_STOCK_DELETE); | 237 gtk_button_new_from_stock(GTK_STOCK_DELETE); |
208 gtk_box_pack_start(GTK_BOX(bbox), deletebutton, FALSE, FALSE, 0); | 238 gtk_box_pack_start(GTK_BOX(bbox), deletebutton, FALSE, FALSE, 0); |
209 gtk_widget_show(deletebutton); | 239 gtk_widget_show(deletebutton); |
240 g_signal_connect(G_OBJECT(deletebutton), "clicked", | |
241 G_CALLBACK(tls_peers_mgmt_delete_cb), NULL); | |
210 | 242 |
211 /* Disable all the buttons */ | 243 /* Disable all the buttons */ |
212 gtk_widget_set_sensitive(importbutton, FALSE); | 244 gtk_widget_set_sensitive(importbutton, FALSE); |
213 gtk_widget_set_sensitive(exportbutton, FALSE); | 245 gtk_widget_set_sensitive(exportbutton, FALSE); |
214 gtk_widget_set_sensitive(infobutton, FALSE); | 246 gtk_widget_set_sensitive(infobutton, FALSE); |