| 216 g_free(pdesc); |
216 g_free(pdesc); |
| 217 g_free(pauth); |
217 g_free(pauth); |
| 218 g_free(pweb); |
218 g_free(pweb); |
| 219 } |
219 } |
| 220 |
220 |
| 221 static void pref_dialog_response_cb(GtkWidget *d, int response, void *null) |
221 static GSList *plugin_pref_dialogs = NULL; |
| |
222 static void pref_dialog_response_cb(GtkWidget *d, int response, GaimPlugin *plug) |
| 222 { |
223 { |
| 223 switch (response) { |
224 switch (response) { |
| 224 case GTK_RESPONSE_CLOSE: |
225 case GTK_RESPONSE_CLOSE: |
| 225 case GTK_RESPONSE_DELETE_EVENT: |
226 case GTK_RESPONSE_DELETE_EVENT: |
| |
227 plugin_pref_dialogs = g_slist_remove(plugin_pref_dialogs, plug); |
| 226 gtk_widget_destroy(d); |
228 gtk_widget_destroy(d); |
| 227 break; |
229 break; |
| 228 } |
230 } |
| 229 } |
231 } |
| 230 static void plugin_dialog_response_cb(GtkWidget *d, int response, GtkTreeSelection *sel) |
232 static void plugin_dialog_response_cb(GtkWidget *d, int response, GtkTreeSelection *sel) |
| 246 return; |
248 return; |
| 247 gtk_tree_model_get_value (model, &iter, 2, &val); |
249 gtk_tree_model_get_value (model, &iter, 2, &val); |
| 248 plug = g_value_get_pointer(&val); |
250 plug = g_value_get_pointer(&val); |
| 249 if (plug == NULL) |
251 if (plug == NULL) |
| 250 break; |
252 break; |
| |
253 if (g_slist_find(plugin_pref_dialogs, plug)) |
| |
254 break; |
| |
255 plugin_pref_dialogs = g_slist_prepend(plugin_pref_dialogs, plug); |
| 251 box = gaim_gtk_plugin_get_config_frame(plug); |
256 box = gaim_gtk_plugin_get_config_frame(plug); |
| 252 if (box == NULL) |
257 if (box == NULL) |
| 253 break; |
258 break; |
| 254 |
259 |
| 255 dialog = gtk_dialog_new_with_buttons(GAIM_ALERT_TITLE, GTK_WINDOW(d), |
260 dialog = gtk_dialog_new_with_buttons(GAIM_ALERT_TITLE, GTK_WINDOW(d), |
| 256 GTK_DIALOG_NO_SEPARATOR | GTK_DIALOG_DESTROY_WITH_PARENT, |
261 GTK_DIALOG_NO_SEPARATOR | GTK_DIALOG_DESTROY_WITH_PARENT, |
| 257 GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, |
262 GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, |
| 258 NULL); |
263 NULL); |
| 259 g_signal_connect(G_OBJECT(dialog), "response", G_CALLBACK(pref_dialog_response_cb), NULL); |
264 g_signal_connect(G_OBJECT(dialog), "response", G_CALLBACK(pref_dialog_response_cb), plug); |
| 260 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), box); |
265 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), box); |
| 261 gtk_window_set_role(GTK_WINDOW(dialog), "plugin_config"); |
266 gtk_window_set_role(GTK_WINDOW(dialog), "plugin_config"); |
| 262 gtk_widget_show_all(dialog); |
267 gtk_widget_show_all(dialog); |
| |
268 g_value_unset(&val); |
| 263 break; |
269 break; |
| 264 } |
270 } |
| 265 } |
271 } |
| 266 |
272 |
| 267 void gaim_gtk_plugin_dialog_show() |
273 void gaim_gtk_plugin_dialog_show() |