X-Git-Url: http://git.maemo.org/git/?p=python-purple;a=blobdiff_plain;f=purple.pyx;h=b3ab8b14afe8183a9ce682f6a3468c1d1c7a34fb;hp=a011ff000e069dedd36ce4db317ac31d080ecc2b;hb=331a01e87b796450c4756c69bb88b45b1c46f9d0;hpb=bbd0f131da05d704e16ad19669fe7ef27a9ad6e0 diff --git a/purple.pyx b/purple.pyx index a011ff0..b3ab8b1 100644 --- a/purple.pyx +++ b/purple.pyx @@ -252,21 +252,34 @@ cdef class Purple: conn = Connection() conn.connect() - def attach_signals(self, __signal_cbs=None): - if __signal_cbs is not None: - global signal_cbs - signal_cbs = __signal_cbs - + def signal_connect(self, name=None, cb=None): cdef int handle - - signals.c_purple_signal_connect(blist.c_purple_blist_get_handle(), - "buddy-signed-off", &handle, - signal_buddy_signed_off_cb, NULL) - - signals.c_purple_signal_connect( - conversation.c_purple_conversations_get_handle(), - "receiving-im-msg", &handle, - signal_receiving_im_msg_cb, NULL) + cdef plugin.PurplePlugin *jabber + + if name is None: + return + + jabber = prpl.c_purple_find_prpl("prpl-jabber") + if jabber == NULL: + return + + global signal_cbs + signal_cbs[name] = cb + + if name == "buddy-signed-off": + signals.c_purple_signal_connect( + blist.c_purple_blist_get_handle(), + "buddy-signed-off", &handle, + signal_buddy_signed_off_cb, NULL) + elif name == "receiving-im-msg": + signals.c_purple_signal_connect( + conversation.c_purple_conversations_get_handle(), + "receiving-im-msg", &handle, + signal_receiving_im_msg_cb, NULL) + elif name == "jabber-receiving-xmlnode": + signals.c_purple_signal_connect( + jabber, "jabber-receiving-xmlnode", &handle, + jabber_receiving_xmlnode_cb, NULL) def new_account(self, username, protocol_id): acc = Account(username, protocol_id)