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);