comparison pidgin/gtkblist.c @ 30038:d75813811637

Add a new signal, drawing-buddy, to allow plugins to handle markup in buddy names, or anything else a plugin author might choose to dream up. Fixes #4598.
author John Bailey <rekkanoryo@rekkanoryo.org>
date Thu, 25 Mar 2010 02:21:03 +0000
parents 986a73d7ddd0
children fdeb9a9543ce d98eee650379
comparison
equal deleted inserted replaced
30036:33a4d72232a7 30038:d75813811637
4269 if (gtkcontactnode && !gtkcontactnode->contact_expanded && contact->alias) 4269 if (gtkcontactnode && !gtkcontactnode->contact_expanded && contact->alias)
4270 name = contact->alias; 4270 name = contact->alias;
4271 else 4271 else
4272 name = purple_buddy_get_alias(b); 4272 name = purple_buddy_get_alias(b);
4273 4273
4274 nametext = g_markup_escape_text(name, strlen(name)); 4274 /* Raise a contact pre-draw signal here. THe callback will return an
4275 * escaped version of the name. */
4276 nametext = purple_signal_emit_return_1(pidgin_blist_get_handle(), "drawing-buddy", b);
4277
4278 if(!nametext)
4279 nametext = g_markup_escape_text(name, strlen(name));
4275 4280
4276 presence = purple_buddy_get_presence(b); 4281 presence = purple_buddy_get_presence(b);
4277 4282
4278 /* Name is all that is needed */ 4283 /* Name is all that is needed */
4279 if (!aliased || biglist) { 4284 if (!aliased || biglist) {
7593 purple_value_new(PURPLE_TYPE_SUBTYPE, 7598 purple_value_new(PURPLE_TYPE_SUBTYPE,
7594 PURPLE_SUBTYPE_BLIST_NODE), 7599 PURPLE_SUBTYPE_BLIST_NODE),
7595 purple_value_new_outgoing(PURPLE_TYPE_BOXED, "GString *"), 7600 purple_value_new_outgoing(PURPLE_TYPE_BOXED, "GString *"),
7596 purple_value_new(PURPLE_TYPE_BOOLEAN)); 7601 purple_value_new(PURPLE_TYPE_BOOLEAN));
7597 7602
7598 7603 purple_signal_register(gtk_blist_handle, "drawing-buddy",
7599 purple_signal_connect(purple_blist_get_handle(), "buddy-signed-on", gtk_blist_handle, PURPLE_CALLBACK(buddy_signonoff_cb), NULL); 7604 purple_marshal_POINTER__POINTER,
7600 purple_signal_connect(purple_blist_get_handle(), "buddy-signed-off", gtk_blist_handle, PURPLE_CALLBACK(buddy_signonoff_cb), NULL); 7605 purple_value_new(PURPLE_TYPE_STRING), 1,
7601 purple_signal_connect(purple_blist_get_handle(), "buddy-privacy-changed", gtk_blist_handle, PURPLE_CALLBACK(pidgin_blist_update_privacy_cb), NULL); 7606 purple_value_new(PURPLE_TYPE_SUBTYPE,
7607 PURPLE_SUBTYPE_BLIST_BUDDY));
7608
7609 purple_signal_connect(purple_blist_get_handle(), "buddy-signed-on",
7610 gtk_blist_handle, PURPLE_CALLBACK(buddy_signonoff_cb), NULL);
7611 purple_signal_connect(purple_blist_get_handle(), "buddy-signed-off",
7612 gtk_blist_handle, PURPLE_CALLBACK(buddy_signonoff_cb), NULL);
7613 purple_signal_connect(purple_blist_get_handle(), "buddy-privacy-changed",
7614 gtk_blist_handle, PURPLE_CALLBACK(pidgin_blist_update_privacy_cb), NULL);
7615
7602 } 7616 }
7603 7617
7604 void 7618 void
7605 pidgin_blist_uninit(void) { 7619 pidgin_blist_uninit(void) {
7606 g_hash_table_destroy(cached_emblems); 7620 g_hash_table_destroy(cached_emblems);