| 54 static GList *plugins = NULL; |
54 static GList *plugins = NULL; |
| 55 |
55 |
| 56 static GtkWidget *pluglist; |
56 static GtkWidget *pluglist; |
| 57 static GtkWidget *plugtext; |
57 static GtkWidget *plugtext; |
| 58 static GtkWidget *plugwindow; |
58 static GtkWidget *plugwindow; |
| |
59 |
| |
60 static GtkWidget *config; |
| 59 |
61 |
| 60 /* --------------- Function Declarations --------------------- */ |
62 /* --------------- Function Declarations --------------------- */ |
| 61 |
63 |
| 62 void load_plugin (GtkWidget *, gpointer); |
64 void load_plugin (GtkWidget *, gpointer); |
| 63 void unload_plugin(GtkWidget *, gpointer); |
65 void unload_plugin(GtkWidget *, gpointer); |
| 222 add = gtk_button_new_with_label("Load Plugin"); |
224 add = gtk_button_new_with_label("Load Plugin"); |
| 223 gtk_signal_connect(GTK_OBJECT(add), "clicked", |
225 gtk_signal_connect(GTK_OBJECT(add), "clicked", |
| 224 GTK_SIGNAL_FUNC(load_plugin), NULL); |
226 GTK_SIGNAL_FUNC(load_plugin), NULL); |
| 225 gtk_box_pack_start(GTK_BOX(botbox), add, TRUE, FALSE, 5); |
227 gtk_box_pack_start(GTK_BOX(botbox), add, TRUE, FALSE, 5); |
| 226 |
228 |
| |
229 config = gtk_button_new_with_label("Configure Plugin"); |
| |
230 gtk_widget_set_sensitive(config, 0); |
| |
231 gtk_box_pack_start(GTK_BOX(botbox), config, TRUE, FALSE, 5); |
| |
232 |
| 227 remove = gtk_button_new_with_label("Unload Plugin"); |
233 remove = gtk_button_new_with_label("Unload Plugin"); |
| 228 gtk_signal_connect(GTK_OBJECT(remove), "clicked", |
234 gtk_signal_connect(GTK_OBJECT(remove), "clicked", |
| 229 GTK_SIGNAL_FUNC(unload), pluglist); |
235 GTK_SIGNAL_FUNC(unload), pluglist); |
| 230 gtk_box_pack_start(GTK_BOX(botbox), remove, TRUE, FALSE, 5); |
236 gtk_box_pack_start(GTK_BOX(botbox), remove, TRUE, FALSE, 5); |
| 231 |
237 |
| 267 gtk_widget_show(sw); |
273 gtk_widget_show(sw); |
| 268 gtk_widget_show(sw2); |
274 gtk_widget_show(sw2); |
| 269 gtk_widget_show(pluglist); |
275 gtk_widget_show(pluglist); |
| 270 gtk_widget_show(plugtext); |
276 gtk_widget_show(plugtext); |
| 271 gtk_widget_show(add); |
277 gtk_widget_show(add); |
| |
278 gtk_widget_show(config); |
| 272 gtk_widget_show(remove); |
279 gtk_widget_show(remove); |
| 273 gtk_widget_show(close); |
280 gtk_widget_show(close); |
| 274 |
281 |
| 275 gtk_container_add(GTK_CONTAINER(plugwindow), page); |
282 gtk_container_add(GTK_CONTAINER(plugwindow), page); |
| 276 gtk_widget_show(plugwindow); |
283 gtk_widget_show(plugwindow); |
| 341 } |
348 } |
| 342 |
349 |
| 343 void list_clicked(GtkWidget *w, struct gaim_plugin *p) { |
350 void list_clicked(GtkWidget *w, struct gaim_plugin *p) { |
| 344 gchar buffer[2048]; |
351 gchar buffer[2048]; |
| 345 guint text_len; |
352 guint text_len; |
| |
353 void (*gaim_plugin_config)(); |
| |
354 char *error; |
| 346 |
355 |
| 347 text_len = gtk_text_get_length(GTK_TEXT(plugtext)); |
356 text_len = gtk_text_get_length(GTK_TEXT(plugtext)); |
| 348 gtk_text_set_point(GTK_TEXT(plugtext), 0); |
357 gtk_text_set_point(GTK_TEXT(plugtext), 0); |
| 349 gtk_text_forward_delete(GTK_TEXT(plugtext), text_len); |
358 gtk_text_forward_delete(GTK_TEXT(plugtext), text_len); |
| 350 |
359 |
| 351 g_snprintf(buffer, sizeof buffer, "%s\n%s", p->name, p->description); |
360 g_snprintf(buffer, sizeof buffer, "%s\n%s", p->name, p->description); |
| 352 gtk_text_insert(GTK_TEXT(plugtext), NULL, NULL, NULL, buffer, -1); |
361 gtk_text_insert(GTK_TEXT(plugtext), NULL, NULL, NULL, buffer, -1); |
| |
362 |
| |
363 gaim_plugin_config = dlsym(p->handle, "gaim_plugin_config"); |
| |
364 if ((error = dlerror()) == NULL) { |
| |
365 gtk_signal_connect(GTK_OBJECT(config), "clicked", |
| |
366 GTK_SIGNAL_FUNC(gaim_plugin_config), NULL); |
| |
367 gtk_widget_set_sensitive(config, 1); |
| |
368 } else { |
| |
369 gtk_widget_set_sensitive(config, 0); |
| |
370 } |
| 353 } |
371 } |
| 354 |
372 |
| 355 void hide_plugins(GtkWidget *w, gpointer data) { |
373 void hide_plugins(GtkWidget *w, gpointer data) { |
| 356 if (plugwindow) |
374 if (plugwindow) |
| 357 gtk_widget_destroy(plugwindow); |
375 gtk_widget_destroy(plugwindow); |