| 65 static guint confighandle = 0; |
65 static guint confighandle = 0; |
| 66 static char *last_dir = NULL; |
66 static char *last_dir = NULL; |
| 67 |
67 |
| 68 /* --------------- Function Declarations --------------------- */ |
68 /* --------------- Function Declarations --------------------- */ |
| 69 |
69 |
| 70 void show_plugins (GtkWidget *, gpointer); |
70 void show_plugins(GtkWidget *, gpointer); |
| 71 void load_plugin (char *); |
71 void load_plugin(char *); |
| 72 |
72 |
| 73 void gaim_signal_connect (GModule *, enum gaim_event, void *, void *); |
73 void gaim_signal_connect(GModule *, enum gaim_event, void *, void *); |
| 74 void gaim_signal_disconnect(GModule *, enum gaim_event, void *); |
74 void gaim_signal_disconnect(GModule *, enum gaim_event, void *); |
| 75 void gaim_plugin_unload (GModule *); |
75 void gaim_plugin_unload(GModule *); |
| 76 |
76 |
| 77 static void destroy_plugins (GtkWidget *, gpointer); |
77 static void destroy_plugins(GtkWidget *, gpointer); |
| 78 static void load_file (GtkWidget *, gpointer); |
78 static void load_file(GtkWidget *, gpointer); |
| 79 static void load_which_plugin(GtkWidget *, gpointer); |
79 static void load_which_plugin(GtkWidget *, gpointer); |
| 80 static void unload (GtkWidget *, gpointer); |
80 static void unload(GtkWidget *, gpointer); |
| 81 static void unload_immediate (GModule *); |
81 static void unload_immediate(GModule *); |
| 82 static void list_clicked (GtkWidget *, struct gaim_plugin *); |
82 static void list_clicked(GtkWidget *, struct gaim_plugin *); |
| 83 static void update_show_plugins(); |
83 static void update_show_plugins(); |
| 84 static void hide_plugins (GtkWidget *, gpointer); |
84 static void hide_plugins(GtkWidget *, gpointer); |
| 85 |
85 |
| 86 /* ------------------ Code Below ---------------------------- */ |
86 /* ------------------ Code Below ---------------------------- */ |
| 87 |
87 |
| 88 static void destroy_plugins(GtkWidget *w, gpointer data) { |
88 static void destroy_plugins(GtkWidget *w, gpointer data) |
| |
89 { |
| 89 if (plugin_dialog) |
90 if (plugin_dialog) |
| 90 gtk_widget_destroy(plugin_dialog); |
91 gtk_widget_destroy(plugin_dialog); |
| 91 plugin_dialog = NULL; |
92 plugin_dialog = NULL; |
| 92 } |
93 } |
| 93 |
94 |
| 94 static void load_file(GtkWidget *w, gpointer data) |
95 static void load_file(GtkWidget *w, gpointer data) |
| 95 { |
96 { |
| 96 gchar *buf; |
97 gchar *buf; |
| 97 |
98 |
| 98 if (plugin_dialog) { |
99 if (plugin_dialog) { |
| 99 gtk_widget_show(plugin_dialog); |
100 gtk_widget_show(plugin_dialog); |
| 100 gdk_window_raise(plugin_dialog->window); |
101 gdk_window_raise(plugin_dialog->window); |
| 101 return; |
102 return; |
| 102 } |
103 } |
| 103 |
104 |
| 104 plugin_dialog = gtk_file_selection_new(_("Gaim - Plugin List")); |
105 plugin_dialog = gtk_file_selection_new(_("Gaim - Plugin List")); |
| 105 |
106 |
| 106 gtk_file_selection_hide_fileop_buttons( |
107 gtk_file_selection_hide_fileop_buttons(GTK_FILE_SELECTION(plugin_dialog)); |
| 107 GTK_FILE_SELECTION(plugin_dialog)); |
|
| 108 |
108 |
| 109 if (!last_dir) |
109 if (!last_dir) |
| 110 buf = g_strdup(LIBDIR); |
110 buf = g_strdup(LIBDIR); |
| 111 else |
111 else |
| 112 buf = g_strconcat(last_dir, G_DIR_SEPARATOR_S, NULL); |
112 buf = g_strconcat(last_dir, G_DIR_SEPARATOR_S, NULL); |
| 113 |
113 |
| 114 gtk_file_selection_set_filename(GTK_FILE_SELECTION(plugin_dialog), buf); |
114 gtk_file_selection_set_filename(GTK_FILE_SELECTION(plugin_dialog), buf); |
| 115 gtk_file_selection_complete(GTK_FILE_SELECTION(plugin_dialog), "*.so"); |
115 gtk_file_selection_complete(GTK_FILE_SELECTION(plugin_dialog), "*.so"); |
| 116 gtk_signal_connect(GTK_OBJECT(plugin_dialog), "destroy", |
116 gtk_signal_connect(GTK_OBJECT(plugin_dialog), "destroy", |
| 117 GTK_SIGNAL_FUNC(destroy_plugins), plugin_dialog); |
117 GTK_SIGNAL_FUNC(destroy_plugins), plugin_dialog); |
| 118 |
118 |
| 119 gtk_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(plugin_dialog)->ok_button), |
119 gtk_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(plugin_dialog)->ok_button), |
| 120 "clicked", GTK_SIGNAL_FUNC(load_which_plugin), NULL); |
120 "clicked", GTK_SIGNAL_FUNC(load_which_plugin), NULL); |
| 121 |
121 |
| 122 gtk_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(plugin_dialog)->cancel_button), |
122 gtk_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(plugin_dialog)->cancel_button), |
| 123 "clicked", GTK_SIGNAL_FUNC(destroy_plugins), NULL); |
123 "clicked", GTK_SIGNAL_FUNC(destroy_plugins), NULL); |
| 124 |
124 |
| 125 g_free(buf); |
125 g_free(buf); |
| 126 gtk_widget_show(plugin_dialog); |
126 gtk_widget_show(plugin_dialog); |
| 127 gdk_window_raise(plugin_dialog->window); |
127 gdk_window_raise(plugin_dialog->window); |
| 128 } |
128 } |
| 129 |
129 |
| 130 static void load_which_plugin(GtkWidget *w, gpointer data) { |
130 static void load_which_plugin(GtkWidget *w, gpointer data) |
| |
131 { |
| 131 char *file; |
132 char *file; |
| 132 |
133 |
| 133 file = gtk_file_selection_get_filename( |
134 file = gtk_file_selection_get_filename(GTK_FILE_SELECTION(plugin_dialog)); |
| 134 GTK_FILE_SELECTION(plugin_dialog)); |
|
| 135 if (file_is_dir(file, plugin_dialog)) { |
135 if (file_is_dir(file, plugin_dialog)) { |
| 136 return; |
136 return; |
| 137 } |
137 } |
| 138 |
138 |
| 139 load_plugin(file); |
139 load_plugin(file); |
| 239 GtkWidget *list_item; |
245 GtkWidget *list_item; |
| 240 GtkWidget *sw2; |
246 GtkWidget *sw2; |
| 241 GtkWidget *add; |
247 GtkWidget *add; |
| 242 GtkWidget *remove; |
248 GtkWidget *remove; |
| 243 GtkWidget *close; |
249 GtkWidget *close; |
| 244 GList *plugs = plugins; |
250 GList *plugs = plugins; |
| 245 struct gaim_plugin *p; |
251 struct gaim_plugin *p; |
| 246 |
252 |
| 247 if (plugwindow) return; |
253 if (plugwindow) |
| |
254 return; |
| 248 |
255 |
| 249 plugwindow = gtk_window_new(GTK_WINDOW_DIALOG); |
256 plugwindow = gtk_window_new(GTK_WINDOW_DIALOG); |
| 250 gtk_window_set_wmclass(GTK_WINDOW(plugwindow), "plugins", "Gaim"); |
257 gtk_window_set_wmclass(GTK_WINDOW(plugwindow), "plugins", "Gaim"); |
| 251 gtk_widget_realize(plugwindow); |
258 gtk_widget_realize(plugwindow); |
| 252 aol_icon(plugwindow->window); |
259 aol_icon(plugwindow->window); |
| 253 gtk_container_border_width(GTK_CONTAINER(plugwindow), 5); |
260 gtk_container_border_width(GTK_CONTAINER(plugwindow), 5); |
| 254 gtk_window_set_title(GTK_WINDOW(plugwindow), _("Gaim - Plugins")); |
261 gtk_window_set_title(GTK_WINDOW(plugwindow), _("Gaim - Plugins")); |
| 255 gtk_widget_set_usize(plugwindow, 400, 250); |
262 gtk_widget_set_usize(plugwindow, 400, 250); |
| 256 gtk_signal_connect(GTK_OBJECT(plugwindow), "destroy", |
263 gtk_signal_connect(GTK_OBJECT(plugwindow), "destroy", GTK_SIGNAL_FUNC(hide_plugins), NULL); |
| 257 GTK_SIGNAL_FUNC(hide_plugins), NULL); |
|
| 258 |
264 |
| 259 page = gtk_vbox_new(FALSE, 5); |
265 page = gtk_vbox_new(FALSE, 5); |
| 260 topbox = gtk_hbox_new(FALSE, 5); |
266 topbox = gtk_hbox_new(FALSE, 5); |
| 261 botbox = gtk_hbox_new(FALSE, 5); |
267 botbox = gtk_hbox_new(FALSE, 5); |
| 262 |
268 |
| 263 /* Left side: list of plugin file names */ |
269 /* Left side: list of plugin file names */ |
| 264 sw2 = gtk_scrolled_window_new(NULL, NULL); |
270 sw2 = gtk_scrolled_window_new(NULL, NULL); |
| 265 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw2), |
271 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw2), |
| 266 GTK_POLICY_AUTOMATIC, |
272 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); |
| 267 GTK_POLICY_AUTOMATIC); |
|
| 268 |
273 |
| 269 pluglist = gtk_list_new(); |
274 pluglist = gtk_list_new(); |
| 270 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(sw2), pluglist); |
275 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(sw2), pluglist); |
| 271 gtk_box_pack_start(GTK_BOX(topbox), sw2, TRUE, TRUE, 0); |
276 gtk_box_pack_start(GTK_BOX(topbox), sw2, TRUE, TRUE, 0); |
| 272 |
277 |
| 273 /* Right side: the text description of the plugin */ |
278 /* Right side: the text description of the plugin */ |
| 274 sw = gtk_scrolled_window_new(NULL, NULL); |
279 sw = gtk_scrolled_window_new(NULL, NULL); |
| 275 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), |
280 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), |
| 276 GTK_POLICY_AUTOMATIC, |
281 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); |
| 277 GTK_POLICY_AUTOMATIC); |
|
| 278 |
282 |
| 279 plugtext = gtk_text_new(NULL, NULL); |
283 plugtext = gtk_text_new(NULL, NULL); |
| 280 gtk_container_add(GTK_CONTAINER(sw), plugtext); |
284 gtk_container_add(GTK_CONTAINER(sw), plugtext); |
| 281 gtk_box_pack_start(GTK_BOX(topbox), sw, TRUE, TRUE, 0); |
285 gtk_box_pack_start(GTK_BOX(topbox), sw, TRUE, TRUE, 0); |
| 282 gtk_text_set_word_wrap(GTK_TEXT(plugtext), TRUE); |
286 gtk_text_set_word_wrap(GTK_TEXT(plugtext), TRUE); |
| 283 gtk_text_set_editable(GTK_TEXT(plugtext), FALSE); |
287 gtk_text_set_editable(GTK_TEXT(plugtext), FALSE); |
| 284 |
288 |
| 285 /* Build the bottom button bar */ |
289 /* Build the bottom button bar */ |
| 286 add = gtk_button_new_with_label(_("Load Plugin")); |
290 add = gtk_button_new_with_label(_("Load Plugin")); |
| 287 gtk_signal_connect(GTK_OBJECT(add), "clicked", |
291 gtk_signal_connect(GTK_OBJECT(add), "clicked", GTK_SIGNAL_FUNC(load_file), NULL); |
| 288 GTK_SIGNAL_FUNC(load_file), NULL); |
|
| 289 gtk_box_pack_start(GTK_BOX(botbox), add, TRUE, TRUE, 0); |
292 gtk_box_pack_start(GTK_BOX(botbox), add, TRUE, TRUE, 0); |
| 290 if (display_options & OPT_DISP_COOL_LOOK) |
293 if (display_options & OPT_DISP_COOL_LOOK) |
| 291 gtk_button_set_relief(GTK_BUTTON(add), GTK_RELIEF_NONE); |
294 gtk_button_set_relief(GTK_BUTTON(add), GTK_RELIEF_NONE); |
| 292 |
295 |
| 293 config = gtk_button_new_with_label(_("Configure Plugin")); |
296 config = gtk_button_new_with_label(_("Configure Plugin")); |
| 474 g_free(temp); |
482 g_free(temp); |
| 475 |
483 |
| 476 /* Find out if this plug-in has a configuration function */ |
484 /* Find out if this plug-in has a configuration function */ |
| 477 if (g_module_symbol(p->handle, "gaim_plugin_config", (gpointer *)&gaim_plugin_config)) { |
485 if (g_module_symbol(p->handle, "gaim_plugin_config", (gpointer *)&gaim_plugin_config)) { |
| 478 confighandle = gtk_signal_connect(GTK_OBJECT(config), "clicked", |
486 confighandle = gtk_signal_connect(GTK_OBJECT(config), "clicked", |
| 479 GTK_SIGNAL_FUNC(gaim_plugin_config), NULL); |
487 GTK_SIGNAL_FUNC(gaim_plugin_config), NULL); |
| 480 gtk_widget_set_sensitive(config, 1); |
488 gtk_widget_set_sensitive(config, 1); |
| 481 } else { |
489 } else { |
| 482 confighandle = 0; |
490 confighandle = 0; |
| 483 gtk_widget_set_sensitive(config, 0); |
491 gtk_widget_set_sensitive(config, 0); |
| 484 } |
492 } |
| 485 } |
493 } |
| 486 |
494 |
| 487 void hide_plugins(GtkWidget *w, gpointer data) { |
495 void hide_plugins(GtkWidget *w, gpointer data) |
| |
496 { |
| 488 if (plugwindow) |
497 if (plugwindow) |
| 489 gtk_widget_destroy(plugwindow); |
498 gtk_widget_destroy(plugwindow); |
| 490 plugwindow = NULL; |
499 plugwindow = NULL; |
| 491 config = NULL; |
500 config = NULL; |
| 492 confighandle = 0; |
501 confighandle = 0; |
| 493 } |
502 } |
| 494 |
503 |
| 495 void gaim_signal_connect(GModule *handle, enum gaim_event which, |
504 void gaim_signal_connect(GModule *handle, enum gaim_event which, void *func, void *data) |
| 496 void *func, void *data) { |
505 { |
| 497 struct gaim_callback *call = g_new0(struct gaim_callback, 1); |
506 struct gaim_callback *call = g_new0(struct gaim_callback, 1); |
| 498 call->handle = handle; |
507 call->handle = handle; |
| 499 call->event = which; |
508 call->event = which; |
| 500 call->function = func; |
509 call->function = func; |
| 501 call->data = data; |
510 call->data = data; |
| 502 |
511 |
| 503 callbacks = g_list_append(callbacks, call); |
512 callbacks = g_list_append(callbacks, call); |
| 504 debug_printf("Adding callback %d\n", g_list_length(callbacks)); |
513 debug_printf("Adding callback %d\n", g_list_length(callbacks)); |
| 505 } |
514 } |
| 506 |
515 |
| 507 void gaim_signal_disconnect(GModule *handle, enum gaim_event which, void *func) { |
516 void gaim_signal_disconnect(GModule *handle, enum gaim_event which, void *func) |
| |
517 { |
| 508 GList *c = callbacks; |
518 GList *c = callbacks; |
| 509 struct gaim_callback *g = NULL; |
519 struct gaim_callback *g = NULL; |
| 510 |
520 |
| 511 while (c) { |
521 while (c) { |
| 512 g = (struct gaim_callback *)c->data; |
522 g = (struct gaim_callback *)c->data; |
| 513 if (handle == g->handle && func == g->function) { |
523 if (handle == g->handle && func == g->function) { |
| 514 callbacks = g_list_remove(callbacks, c->data); |
524 callbacks = g_list_remove(callbacks, c->data); |
| 515 g_free(g); |
525 g_free(g); |
| 516 c = callbacks; |
526 c = callbacks; |
| 517 if (c == NULL) break; |
527 if (c == NULL) |
| |
528 break; |
| 518 } |
529 } |
| 519 c = g_list_next(c); |
530 c = g_list_next(c); |
| 520 } |
531 } |
| 521 } |
532 } |
| 522 |
533 |
| 523 #endif /* GAIM_PLUGINS */ |
534 #endif /* GAIM_PLUGINS */ |
| 524 |
535 |
| 525 char *event_name(enum gaim_event event) |
536 char *event_name(enum gaim_event event) |
| 526 { |
537 { |
| 527 static char buf[128]; |
538 static char buf[128]; |
| 528 switch(event) { |
539 switch (event) { |
| 529 case event_signon: |
540 case event_signon: |
| 530 sprintf(buf, "event_signon"); |
541 sprintf(buf, "event_signon"); |
| 531 break; |
542 break; |
| 532 case event_signoff: |
543 case event_signoff: |
| 533 sprintf(buf, "event_signoff"); |
544 sprintf(buf, "event_signoff"); |
| 534 break; |
545 break; |
| 535 case event_away: |
546 case event_away: |
| 536 sprintf(buf, "event_away"); |
547 sprintf(buf, "event_away"); |
| 537 break; |
548 break; |
| 538 case event_back: |
549 case event_back: |
| 539 sprintf(buf, "event_back"); |
550 sprintf(buf, "event_back"); |
| 540 break; |
551 break; |
| 541 case event_im_recv: |
552 case event_im_recv: |
| 542 sprintf(buf, "event_im_recv"); |
553 sprintf(buf, "event_im_recv"); |
| 543 break; |
554 break; |
| 544 case event_im_send: |
555 case event_im_send: |
| 545 sprintf(buf, "event_im_send"); |
556 sprintf(buf, "event_im_send"); |
| 546 break; |
557 break; |
| 547 case event_buddy_signon: |
558 case event_buddy_signon: |
| 548 sprintf(buf, "event_buddy_signon"); |
559 sprintf(buf, "event_buddy_signon"); |
| 549 break; |
560 break; |
| 550 case event_buddy_signoff: |
561 case event_buddy_signoff: |
| 551 sprintf(buf, "event_buddy_signoff"); |
562 sprintf(buf, "event_buddy_signoff"); |
| 552 break; |
563 break; |
| 553 case event_buddy_away: |
564 case event_buddy_away: |
| 554 sprintf(buf, "event_buddy_away"); |
565 sprintf(buf, "event_buddy_away"); |
| 555 break; |
566 break; |
| 556 case event_buddy_back: |
567 case event_buddy_back: |
| 557 sprintf(buf, "event_buddy_back"); |
568 sprintf(buf, "event_buddy_back"); |
| 558 break; |
569 break; |
| 559 case event_buddy_idle: |
570 case event_buddy_idle: |
| 560 sprintf(buf, "event_buddy_idle"); |
571 sprintf(buf, "event_buddy_idle"); |
| 561 break; |
572 break; |
| 562 case event_buddy_unidle: |
573 case event_buddy_unidle: |
| 563 sprintf(buf, "event_buddy_unidle"); |
574 sprintf(buf, "event_buddy_unidle"); |
| 564 break; |
575 break; |
| 565 case event_blist_update: |
576 case event_blist_update: |
| 566 sprintf(buf, "event_blist_update"); |
577 sprintf(buf, "event_blist_update"); |
| 567 break; |
578 break; |
| 568 case event_chat_invited: |
579 case event_chat_invited: |
| 569 sprintf(buf, "event_chat_invited"); |
580 sprintf(buf, "event_chat_invited"); |
| 570 break; |
581 break; |
| 571 case event_chat_join: |
582 case event_chat_join: |
| 572 sprintf(buf, "event_chat_join"); |
583 sprintf(buf, "event_chat_join"); |
| 573 break; |
584 break; |
| 574 case event_chat_leave: |
585 case event_chat_leave: |
| 575 sprintf(buf, "event_chat_leave"); |
586 sprintf(buf, "event_chat_leave"); |
| 576 break; |
587 break; |
| 577 case event_chat_buddy_join: |
588 case event_chat_buddy_join: |
| 578 sprintf(buf, "event_chat_buddy_join"); |
589 sprintf(buf, "event_chat_buddy_join"); |
| 579 break; |
590 break; |
| 580 case event_chat_buddy_leave: |
591 case event_chat_buddy_leave: |
| 581 sprintf(buf, "event_chat_buddy_leave"); |
592 sprintf(buf, "event_chat_buddy_leave"); |
| 582 break; |
593 break; |
| 583 case event_chat_recv: |
594 case event_chat_recv: |
| 584 sprintf(buf, "event_chat_recv"); |
595 sprintf(buf, "event_chat_recv"); |
| 585 break; |
596 break; |
| 586 case event_chat_send: |
597 case event_chat_send: |
| 587 sprintf(buf, "event_chat_send"); |
598 sprintf(buf, "event_chat_send"); |
| 588 break; |
599 break; |
| 589 case event_warned: |
600 case event_warned: |
| 590 sprintf(buf, "event_warned"); |
601 sprintf(buf, "event_warned"); |
| 591 break; |
602 break; |
| 592 case event_error: |
603 case event_error: |
| 593 sprintf(buf, "event_error"); |
604 sprintf(buf, "event_error"); |
| 594 break; |
605 break; |
| 595 case event_quit: |
606 case event_quit: |
| 596 sprintf(buf, "event_quit"); |
607 sprintf(buf, "event_quit"); |
| 597 break; |
608 break; |
| 598 case event_new_conversation: |
609 case event_new_conversation: |
| 599 sprintf(buf, "event_new_conversaion"); |
610 sprintf(buf, "event_new_conversaion"); |
| 600 break; |
611 break; |
| 601 default: |
612 default: |
| 602 sprintf(buf, "event_unknown"); |
613 sprintf(buf, "event_unknown"); |
| 603 break; |
614 break; |
| 604 } |
615 } |
| 605 return buf; |
616 return buf; |
| 606 } |
617 } |
| 607 |
618 |
| 608 int plugin_event(enum gaim_event event, void *arg1, void *arg2, void *arg3, void *arg4) { |
619 int plugin_event(enum gaim_event event, void *arg1, void *arg2, void *arg3, void *arg4) |
| |
620 { |
| 609 #ifdef USE_PERL |
621 #ifdef USE_PERL |
| 610 char buf[BUF_LONG]; |
622 char buf[BUF_LONG]; |
| 611 char *tmp; |
623 char *tmp; |
| 612 #endif |
624 #endif |
| 613 #ifdef GAIM_PLUGINS |
625 #ifdef GAIM_PLUGINS |
| 614 GList *c = callbacks; |
626 GList *c = callbacks; |
| 615 struct gaim_callback *g; |
627 struct gaim_callback *g; |
| 616 |
628 |
| 617 while (c) { |
629 while (c) { |
| 618 g = (struct gaim_callback *)c->data; |
630 g = (struct gaim_callback *)c->data; |
| 619 if (g->event == event && g->function != NULL) { |
631 if (g->event == event && g->function !=NULL) { |
| 620 switch(event) { |
632 switch (event) { |
| 621 |
633 |
| 622 /* struct gaim_connection * */ |
634 /* struct gaim_connection * */ |
| 623 case event_signon: |
635 case event_signon: |
| 624 case event_signoff: |
636 case event_signoff: |
| 625 { |
637 { |
| 626 void (*function)(struct gaim_connection *, void *) = g->function; |
638 void (*function) (struct gaim_connection *, void *) = |
| |
639 g->function; |
| 627 (*function)(arg1, g->data); |
640 (*function)(arg1, g->data); |
| 628 } |
641 } |
| 629 break; |
642 break; |
| 630 |
643 |
| 631 /* no args */ |
644 /* no args */ |
| 632 case event_away: |
645 case event_away: |
| 633 case event_back: |
646 case event_back: |
| 634 case event_blist_update: |
647 case event_blist_update: |
| 635 case event_quit: |
648 case event_quit: |
| 636 { |
649 { |
| 637 void (*function)(void *) = g->function; |
650 void (*function)(void *) = g->function; |
| 638 (*function)(g->data); |
651 (*function)(g->data); |
| 639 } |
652 } |
| 640 break; |
653 break; |
| 641 |
654 |
| 642 /* struct gaim_connection *, char **, char ** */ |
655 /* struct gaim_connection *, char **, char ** */ |
| 643 case event_im_recv: |
656 case event_im_recv: |
| 644 { |
657 { |
| 645 void (*function)(struct gaim_connection *, char **, char **, |
658 void (*function)(struct gaim_connection *, char **, char **, |
| 646 void *) = g->function; |
659 void *) = g->function; |
| 647 (*function)(arg1, arg2, arg3, g->data); |
660 (*function)(arg1, arg2, arg3, g->data); |
| 648 } |
661 } |
| 649 break; |
662 break; |
| 650 |
663 |
| 651 /* struct gaim_connection *, char *, char ** */ |
664 /* struct gaim_connection *, char *, char ** */ |
| 652 case event_im_send: |
665 case event_im_send: |
| 653 case event_chat_send: |
666 case event_chat_send: |
| 654 { |
667 { |
| 655 void (*function)(struct gaim_connection *, char *, char **, |
668 void (*function)(struct gaim_connection *, char *, char **, |
| 656 void *) = g->function; |
669 void *) = g->function; |
| 657 (*function)(arg1, arg2, arg3, g->data); |
670 (*function)(arg1, arg2, arg3, g->data); |
| 658 } |
671 } |
| 659 break; |
672 break; |
| 660 |
673 |
| 661 /* struct gaim_connection *, char * */ |
674 /* struct gaim_connection *, char * */ |
| 662 case event_chat_join: |
675 case event_chat_join: |
| 663 case event_chat_leave: |
676 case event_chat_leave: |
| 664 case event_buddy_signon: |
677 case event_buddy_signon: |
| 665 case event_buddy_signoff: |
678 case event_buddy_signoff: |
| 666 case event_buddy_away: |
679 case event_buddy_away: |
| 667 case event_buddy_back: |
680 case event_buddy_back: |
| 668 case event_buddy_idle: |
681 case event_buddy_idle: |
| 669 case event_buddy_unidle: |
682 case event_buddy_unidle: |
| 670 { |
683 { |
| 671 void (*function)(struct gaim_connection *, char *, void *) = |
684 void (*function)(struct gaim_connection *, char *, void *) = |
| 672 g->function; |
685 g->function; |
| 673 (*function)(arg1, arg2, g->data); |
686 (*function)(arg1, arg2, g->data); |
| 674 } |
687 } |
| 675 break; |
688 break; |
| 676 |
689 |
| 677 /* char * */ |
690 /* char * */ |
| 678 case event_new_conversation: |
691 case event_new_conversation: |
| 679 { |
692 { |
| 680 void (*function)(char *, void *) = g->function; |
693 void (*function)(char *, void *) = g->function; |
| 681 (*function)(arg1, g->data); |
694 (*function)(arg1, g->data); |
| 682 } |
695 } |
| 683 break; |
696 break; |
| 684 |
697 |
| 685 /* struct gaim_connection *, char *, char *, char * */ |
698 /* struct gaim_connection *, char *, char *, char * */ |
| 686 case event_chat_invited: |
699 case event_chat_invited: |
| 687 case event_chat_recv: |
700 case event_chat_recv: |
| 688 { |
701 { |
| 689 void (*function)(struct gaim_connection *, char *, char *, |
702 void (*function)(struct gaim_connection *, char *, char *, |
| 690 char *, void *) = g->function; |
703 char *, void *) = g->function; |
| 691 (*function)(arg1, arg2, arg3, arg4, g->data); |
704 (*function)(arg1, arg2, arg3, arg4, g->data); |
| 692 } |
705 } |
| 693 break; |
706 break; |
| 694 |
707 |
| 695 /* struct gaim_connection *, char *, char * */ |
708 /* struct gaim_connection *, char *, char * */ |
| 696 case event_chat_buddy_join: |
709 case event_chat_buddy_join: |
| 697 case event_chat_buddy_leave: |
710 case event_chat_buddy_leave: |
| 698 { |
711 { |
| 699 void (*function)(struct gaim_connection *, char *, char *, |
712 void (*function)(struct gaim_connection *, char *, char *, |
| 700 void *) = g->function; |
713 void *) = g->function; |
| 701 (*function)(arg1, arg2, arg3, g->data); |
714 (*function)(arg1, arg2, arg3, g->data); |
| 702 } |
715 } |
| 703 break; |
716 break; |
| 704 |
717 |
| 705 /* char *, int */ |
718 /* char *, int */ |
| 706 case event_warned: |
719 case event_warned: |
| 707 { |
720 { |
| 708 void (*function)(char *, int, void *) = g->function; |
721 void (*function)(char *, int, void *) = g->function; |
| 709 (*function)(arg1, (int)arg2, g->data); |
722 (*function)(arg1, (int)arg2, g->data); |
| 710 } |
723 } |
| 711 break; |
724 break; |
| 712 |
725 |
| 713 /* int */ |
726 /* int */ |
| 714 case event_error: |
727 case event_error: |
| 715 { |
728 { |
| 716 void (*function)(int, void *) = g->function; |
729 void (*function)(int, void *) = g->function; |
| 717 (*function)((int)arg1, g->data); |
730 (*function)((int)arg1, g->data); |
| 718 } |
731 } |
| 726 c = c->next; |
739 c = c->next; |
| 727 } |
740 } |
| 728 #endif /* GAIM_PLUGINS */ |
741 #endif /* GAIM_PLUGINS */ |
| 729 #ifdef USE_PERL |
742 #ifdef USE_PERL |
| 730 switch (event) { |
743 switch (event) { |
| 731 case event_signon: |
744 case event_signon: |
| 732 g_snprintf(buf, sizeof buf, "\"%s\"", ((struct gaim_connection *)arg1)->username); |
745 g_snprintf(buf, sizeof buf, "\"%s\"", ((struct gaim_connection *)arg1)->username); |
| 733 break; |
746 break; |
| 734 case event_signoff: |
747 case event_signoff: |
| 735 g_snprintf(buf, sizeof buf, "\"%s\"", ((struct gaim_connection *)arg1)->username); |
748 g_snprintf(buf, sizeof buf, "\"%s\"", ((struct gaim_connection *)arg1)->username); |
| 736 break; |
749 break; |
| 737 case event_away: |
750 case event_away: |
| 738 buf[0] = 0; |
751 buf[0] = 0; |
| 739 break; |
752 break; |
| 740 case event_back: |
753 case event_back: |
| 741 buf[0] = 0; |
754 buf[0] = 0; |
| 742 break; |
755 break; |
| 743 case event_im_recv: |
756 case event_im_recv: |
| 744 g_snprintf(buf, sizeof buf, "\"%s\" \"%s\" %s", ((struct gaim_connection *)arg1)->username, *(char **)arg2, *(char **)arg3); |
757 g_snprintf(buf, sizeof buf, "\"%s\" \"%s\" %s", |
| 745 break; |
758 ((struct gaim_connection *)arg1)->username, *(char **)arg2, *(char **)arg3); |
| 746 case event_im_send: |
759 break; |
| 747 g_snprintf(buf, sizeof buf, "\"%s\" \"%s\" %s", ((struct gaim_connection *)arg1)->username, (char *)arg2, *(char **)arg3); |
760 case event_im_send: |
| 748 break; |
761 g_snprintf(buf, sizeof buf, "\"%s\" \"%s\" %s", |
| 749 case event_buddy_signon: |
762 ((struct gaim_connection *)arg1)->username, (char *)arg2, *(char **)arg3); |
| 750 g_snprintf(buf, sizeof buf, "\"%s\"", (char *)arg2); |
763 break; |
| 751 break; |
764 case event_buddy_signon: |
| 752 case event_buddy_signoff: |
765 g_snprintf(buf, sizeof buf, "\"%s\"", (char *)arg2); |
| 753 g_snprintf(buf, sizeof buf, "\"%s\"", (char *)arg2); |
766 break; |
| 754 break; |
767 case event_buddy_signoff: |
| 755 case event_buddy_away: |
768 g_snprintf(buf, sizeof buf, "\"%s\"", (char *)arg2); |
| 756 g_snprintf(buf, sizeof buf, "\"%s\"", (char *)arg2); |
769 break; |
| 757 break; |
770 case event_buddy_away: |
| 758 case event_buddy_back: |
771 g_snprintf(buf, sizeof buf, "\"%s\"", (char *)arg2); |
| 759 g_snprintf(buf, sizeof buf, "\"%s\"", (char *)arg2); |
772 break; |
| 760 break; |
773 case event_buddy_back: |
| 761 case event_buddy_idle: |
774 g_snprintf(buf, sizeof buf, "\"%s\"", (char *)arg2); |
| 762 g_snprintf(buf, sizeof buf, "\"%s\"", (char *)arg2); |
775 break; |
| 763 break; |
776 case event_buddy_idle: |
| 764 case event_buddy_unidle: |
777 g_snprintf(buf, sizeof buf, "\"%s\"", (char *)arg2); |
| 765 g_snprintf(buf, sizeof buf, "\"%s\"", (char *)arg2); |
778 break; |
| 766 break; |
779 case event_buddy_unidle: |
| 767 case event_blist_update: |
780 g_snprintf(buf, sizeof buf, "\"%s\"", (char *)arg2); |
| 768 buf[0] = 0; |
781 break; |
| 769 break; |
782 case event_blist_update: |
| 770 case event_chat_invited: |
783 buf[0] = 0; |
| 771 g_snprintf(buf, sizeof buf, "\"%s\" \"%s\" %s", (char *)arg2, (char *)arg3, (char *)arg4); |
784 break; |
| 772 break; |
785 case event_chat_invited: |
| 773 case event_chat_join: |
786 g_snprintf(buf, sizeof buf, "\"%s\" \"%s\" %s", (char *)arg2, (char *)arg3, |
| 774 g_snprintf(buf, sizeof buf, "\"%s\"", (char *)arg2); |
787 (char *)arg4); |
| 775 break; |
788 break; |
| 776 case event_chat_leave: |
789 case event_chat_join: |
| 777 g_snprintf(buf, sizeof buf, "\"%s\"", (char *)arg2); |
790 g_snprintf(buf, sizeof buf, "\"%s\"", (char *)arg2); |
| 778 break; |
791 break; |
| 779 case event_chat_buddy_join: |
792 case event_chat_leave: |
| 780 g_snprintf(buf, sizeof buf, "\"%s\" \"%s\"", (char *)arg2, (char *)arg3); |
793 g_snprintf(buf, sizeof buf, "\"%s\"", (char *)arg2); |
| 781 break; |
794 break; |
| 782 case event_chat_buddy_leave: |
795 case event_chat_buddy_join: |
| 783 g_snprintf(buf, sizeof buf, "\"%s\" \"%s\"", (char *)arg2, (char *)arg3); |
796 g_snprintf(buf, sizeof buf, "\"%s\" \"%s\"", (char *)arg2, (char *)arg3); |
| 784 break; |
797 break; |
| 785 case event_chat_recv: |
798 case event_chat_buddy_leave: |
| 786 g_snprintf(buf, sizeof buf, "\"%s\" \"%s\" %s", (char *)arg2, (char *)arg3, (char *)arg4); |
799 g_snprintf(buf, sizeof buf, "\"%s\" \"%s\"", (char *)arg2, (char *)arg3); |
| 787 break; |
800 break; |
| 788 case event_chat_send: |
801 case event_chat_recv: |
| 789 g_snprintf(buf, sizeof buf, "\"%s\" %s", (char *)arg2, *(char **)arg3); |
802 g_snprintf(buf, sizeof buf, "\"%s\" \"%s\" %s", (char *)arg2, (char *)arg3, |
| 790 break; |
803 (char *)arg4); |
| 791 case event_warned: |
804 break; |
| 792 g_snprintf(buf, sizeof buf, "\"%s\" %d", (char *)arg1, (int)arg2); |
805 case event_chat_send: |
| 793 break; |
806 g_snprintf(buf, sizeof buf, "\"%s\" %s", (char *)arg2, *(char **)arg3); |
| 794 case event_error: |
807 break; |
| 795 g_snprintf(buf, sizeof buf, "%d", (int)arg1); |
808 case event_warned: |
| 796 break; |
809 g_snprintf(buf, sizeof buf, "\"%s\" %d", (char *)arg1, (int)arg2); |
| 797 case event_quit: |
810 break; |
| 798 buf[0] = 0; |
811 case event_error: |
| 799 break; |
812 g_snprintf(buf, sizeof buf, "%d", (int)arg1); |
| 800 case event_new_conversation: |
813 break; |
| 801 g_snprintf(buf, sizeof buf, "\"%s\"", (char *)arg1); |
814 case event_quit: |
| 802 break; |
815 buf[0] = 0; |
| 803 default: |
816 break; |
| 804 break; |
817 case event_new_conversation: |
| |
818 g_snprintf(buf, sizeof buf, "\"%s\"", (char *)arg1); |
| |
819 break; |
| |
820 default: |
| |
821 break; |
| 805 } |
822 } |
| 806 tmp = event_name(event); |
823 tmp = event_name(event); |
| 807 debug_printf("%s: %s\n", tmp, buf); |
824 debug_printf("%s: %s\n", tmp, buf); |
| 808 return perl_event(tmp, buf); |
825 return perl_event(tmp, buf); |
| 809 #else |
826 #else |