comparison src/gtkblist.c @ 8815:ada0cf2f49fe

[gaim-migrate @ 9577] " This patch creates the subsystem like most of the core to connect to signals and emit them. It also adds a "gtkblist-created" signal so plugins that want to add something to the gtkblist know when it's created. Using the same subsytem setup as the rest of gaim helps plugin authors avoid connecting to the buddy signon even to know when they can connect to the "drawing-menu" signal." --Gary Kramlich committer: Tailor Script <tailor@pidgin.im>
author Luke Schierer <lschiere@pidgin.im>
date Mon, 26 Apr 2004 16:10:16 +0000
parents 36b043fe2740
children 48c6552be372
comparison
equal deleted inserted replaced
8814:c61be128dff3 8815:ada0cf2f49fe
2901 gtk_window_deiconify(GTK_WINDOW(gtkblist->window)); 2901 gtk_window_deiconify(GTK_WINDOW(gtkblist->window));
2902 gdk_window_raise(gtkblist->window->window); 2902 gdk_window_raise(gtkblist->window->window);
2903 } 2903 }
2904 } 2904 }
2905 2905
2906
2907 /********************************************************************************** 2906 /**********************************************************************************
2908 * Public API Functions * 2907 * Public API Functions *
2909 **********************************************************************************/ 2908 **********************************************************************************/
2910 static void gaim_gtk_blist_new_list(GaimBuddyList *blist) 2909 static void gaim_gtk_blist_new_list(GaimBuddyList *blist)
2911 { 2910 {
2912 GaimGtkBuddyList *gtkblist; 2911 GaimGtkBuddyList *gtkblist;
2913 2912
2914 gtkblist = g_new0(GaimGtkBuddyList, 1); 2913 gtkblist = g_new0(GaimGtkBuddyList, 1);
2915 blist->ui_data = gtkblist; 2914 blist->ui_data = gtkblist;
2916
2917 /* Register some of our own. */
2918 gaim_signal_register(gtkblist, "drawing-menu",
2919 gaim_marshal_VOID__POINTER_POINTER, NULL, 2,
2920 gaim_value_new(GAIM_TYPE_BOXED, "GtkMenu"),
2921 gaim_value_new(GAIM_TYPE_SUBTYPE,
2922 GAIM_SUBTYPE_BLIST_BUDDY));
2923 2915
2924 /* All of these signal handlers are for the "Raise on Events" option */ 2916 /* All of these signal handlers are for the "Raise on Events" option */
2925 gaim_signal_connect(gaim_blist_get_handle(), "buddy-signed-on", 2917 gaim_signal_connect(gaim_blist_get_handle(), "buddy-signed-on",
2926 gtkblist, GAIM_CALLBACK(raise_on_events_cb), NULL); 2918 gtkblist, GAIM_CALLBACK(raise_on_events_cb), NULL);
2927 gaim_signal_connect(gaim_blist_get_handle(), "buddy-signed-off", 2919 gaim_signal_connect(gaim_blist_get_handle(), "buddy-signed-off",
3252 /* Setup some gaim signal handlers. */ 3244 /* Setup some gaim signal handlers. */
3253 gaim_signal_connect(gaim_connections_get_handle(), "signing-on", 3245 gaim_signal_connect(gaim_connections_get_handle(), "signing-on",
3254 gtkblist, GAIM_CALLBACK(signed_on_off_cb), list); 3246 gtkblist, GAIM_CALLBACK(signed_on_off_cb), list);
3255 gaim_signal_connect(gaim_connections_get_handle(), "signing-off", 3247 gaim_signal_connect(gaim_connections_get_handle(), "signing-off",
3256 gtkblist, GAIM_CALLBACK(signed_on_off_cb), list); 3248 gtkblist, GAIM_CALLBACK(signed_on_off_cb), list);
3249
3250 /* emit our created signal */
3251 gaim_signal_emit(gaim_gtk_blist_get_handle(), "gtkblist-created", list);
3257 } 3252 }
3258 3253
3259 /* XXX: does this need fixing? */ 3254 /* XXX: does this need fixing? */
3260 static void redo_buddy_list(GaimBuddyList *list, gboolean remove) 3255 static void redo_buddy_list(GaimBuddyList *list, gboolean remove)
3261 { 3256 {
4456 serv_join_chat(gc, chat->components); 4451 serv_join_chat(gc, chat->components);
4457 } 4452 }
4458 } 4453 }
4459 } 4454 }
4460 4455
4456 void *
4457 gaim_gtk_blist_get_handle() {
4458 static int handle;
4459
4460 return &handle;
4461 }
4462
4461 void gaim_gtk_blist_init(void) 4463 void gaim_gtk_blist_init(void)
4462 { 4464 {
4463 /* XXX */ 4465 void *gtk_blist_handle = gaim_gtk_blist_get_handle();
4464 static int gtk_blist_handle;
4465 4466
4466 gaim_signal_connect(gaim_connections_get_handle(), "signed-on", 4467 gaim_signal_connect(gaim_connections_get_handle(), "signed-on",
4467 &gtk_blist_handle, GAIM_CALLBACK(account_signon_cb), 4468 gtk_blist_handle, GAIM_CALLBACK(account_signon_cb),
4468 NULL); 4469 NULL);
4469 4470
4470 /* Initialize prefs */ 4471 /* Initialize prefs */
4471 gaim_prefs_add_none("/gaim/gtk/blist"); 4472 gaim_prefs_add_none("/gaim/gtk/blist");
4472 gaim_prefs_add_bool("/gaim/gtk/blist/auto_expand_contacts", TRUE); 4473 gaim_prefs_add_bool("/gaim/gtk/blist/auto_expand_contacts", TRUE);
4484 gaim_prefs_add_int("/gaim/gtk/blist/y", 0); 4485 gaim_prefs_add_int("/gaim/gtk/blist/y", 0);
4485 gaim_prefs_add_int("/gaim/gtk/blist/width", 0); 4486 gaim_prefs_add_int("/gaim/gtk/blist/width", 0);
4486 gaim_prefs_add_int("/gaim/gtk/blist/height", 0); 4487 gaim_prefs_add_int("/gaim/gtk/blist/height", 0);
4487 gaim_prefs_add_int("/gaim/gtk/blist/tooltip_delay", 500); 4488 gaim_prefs_add_int("/gaim/gtk/blist/tooltip_delay", 500);
4488 4489
4489 } 4490 /* Register our signals */
4490 4491 gaim_signal_register(gtk_blist_handle, "drawing-menu",
4491 4492 gaim_marshal_VOID__POINTER_POINTER, NULL, 2,
4493 gaim_value_new(GAIM_TYPE_BOXED, "GtkMenu"),
4494 gaim_value_new(GAIM_TYPE_SUBTYPE,
4495 GAIM_SUBTYPE_BLIST_BUDDY));
4496
4497 gaim_signal_register(gtk_blist_handle, "gtkblist-created",
4498 gaim_marshal_VOID__POINTER, NULL, 1,
4499 gaim_value_new(GAIM_TYPE_SUBTYPE,
4500 GAIM_SUBTYPE_BLIST));
4501 }
4502
4503 void
4504 gaim_gtk_blist_uninit(void) {
4505 gaim_signals_unregister_by_instance(gaim_gtk_blist_get_handle());
4506 }
4492 4507
4493 /********************************************************************* 4508 /*********************************************************************
4494 * Public utility functions * 4509 * Public utility functions *
4495 *********************************************************************/ 4510 *********************************************************************/
4496 4511