src/plugins.c

changeset 110
ca79cce0ea62
parent 96
2b8586ab9456
child 129
9966a41b77dd
equal deleted inserted replaced
109:5384b8a3ca80 110:ca79cce0ea62
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);

mercurial