From 4c0c79b5e686d123a21bd4b4cdc356782f0b24c8 Mon Sep 17 00:00:00 2001 From: Ragner Magalhaes Date: Tue, 2 Dec 2008 20:35:40 +0000 Subject: [PATCH] Fixed parameters passed as argument to signals used by pidgin-carman. FIXES: - Stripped HTML markups from message. - Added robust treatment for arguments passed to user-defined python callbacks. Signed-off-by: Bruno Abinader git-svn-id: https://garage.maemo.org/svn/carman/branches/carman-0.7-beta2/python-purple@1321 596f6dd7-e928-0410-a184-9e12fd12cf7e --- nullclient.py | 8 ++++---- signal_cbs.pxd | 28 +++++++++++++++++++++++++--- 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/nullclient.py b/nullclient.py index 81a5ac2..1e2a422 100644 --- a/nullclient.py +++ b/nullclient.py @@ -103,11 +103,11 @@ request_cbs["request_folder"] = request_callback cbs["request"] = request_cbs def buddy_signed_off_cb(name): - print "---- signal callback example: sign off from buddy %s" % name + print "---- sign off from buddy %s" % name -def receiving_im_msg_cb(sender, message): - print "---- signal callback example: receiving im message from %s" % sender - print "---- message: %s" % message +def receiving_im_msg_cb(sender, name, message): + print "---- receiving IM message from %s: %s" % (name, message) + return False signal_cbs["buddy_signed_off"] = buddy_signed_off_cb signal_cbs["receiving_im_msg"] = receiving_im_msg_cb diff --git a/signal_cbs.pxd b/signal_cbs.pxd index 00369e8..41ff95f 100644 --- a/signal_cbs.pxd +++ b/signal_cbs.pxd @@ -24,8 +24,17 @@ signal_cbs = {} cdef void signal_buddy_signed_off_cb (blist.PurpleBuddy *buddy): debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "signal", "buddy_signed_off\n") + + if buddy.server_alias: + name = buddy.server_alias + else: + if buddy.alias: + name = buddy.alias + else: + name = buddy.name + try: - (signal_cbs["buddy_signed_off"])(buddy.name) + (signal_cbs["buddy_signed_off"])(name) except KeyError: pass @@ -36,7 +45,20 @@ cdef glib.gboolean signal_receiving_im_msg_cb (account.PurpleAccount *account, conversation.PurpleMessageFlags *flags): debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "signal", "receivinv_im_msg_cb\n") + + cdef blist.PurpleBuddy *buddy = blist.c_purple_find_buddy(account, sender[0]) + + if buddy.server_alias: + name = buddy.server_alias + else: + if buddy.alias: + name = buddy.alias + else: + name = buddy.name + + stripped_msg = util.c_purple_markup_strip_html(message[0]) + try: - (signal_cbs["receiving_im_msg"])(sender[0], message[0]) + return (signal_cbs["receiving_im_msg"])(sender[0], name, stripped_msg) except KeyError: - pass + return False -- 1.7.9.5