X-Git-Url: http://git.maemo.org/git/?p=python-purple;a=blobdiff_plain;f=purple.pyx;h=be7fbbcc954afdcca607afea3a5aea4cd79e82e9;hp=bd2bed5a1020098c787b44c51b61572091da065b;hb=805e82e4da2a3f69bab5cd32c3a470960636e907;hpb=22ed5fb55427ef6c065ce5899606cb238c97997b diff --git a/purple.pyx b/purple.pyx index bd2bed5..be7fbbc 100644 --- a/purple.pyx +++ b/purple.pyx @@ -24,6 +24,8 @@ cdef extern from "c_purple.h": import ecore +include "plugin.pyx" + __DEFAULT_PATH__ = "/tmp" __APP_NAME__ = "carman-purple-python" __APP_VERSION__ = "0.1" @@ -51,6 +53,7 @@ include "conversation_cbs.pxd" include "notify_cbs.pxd" include "request_cbs.pxd" #include "roomlist_cbs.pxd" +include "signal_cbs.pxd" cdef class Purple: """ Purple class. @@ -60,6 +63,8 @@ cdef class Purple: @parm default_path: Full path for libpurple user files. """ + cdef Plugins plugins + def __init__(self, debug_enabled=True, app_name=__APP_NAME__, default_path=__DEFAULT_PATH__): if app_name is not __APP_NAME__: __APP_NAME__ = app_name @@ -70,9 +75,10 @@ cdef class Purple: debug.c_purple_debug_set_enabled(debug_enabled) util.c_purple_util_set_user_dir(default_path) plugin.c_purple_plugins_add_search_path(default_path) + self.plugins = Plugins() # adds glib iteration inside ecore main loop - ecore.idler_add(self.__glib_iteration_when_idle) + ecore.timer_add(0.001, self.__glib_iteration_when_idle) def __del__(self): core.c_purple_core_quit() @@ -245,21 +251,28 @@ cdef class Purple: return ret def get_protocols(self): - cdef glib.GList *iter - cdef plugin.PurplePlugin *__plugin - protocols = [] - iter = plugin.c_purple_plugins_get_protocols() - while iter: - __plugin = iter.data - if __plugin.info and __plugin.info.name: - protocols += [(__plugin.info.id, __plugin.info.name)] - iter = iter.next - return protocols + return self.plugins.get_protocols() def connect(self): conn = Connection() conn.connect() + def attach_signals(self, __signal_cbs=None): + if __signal_cbs is not None: + global signal_cbs + signal_cbs = __signal_cbs + + 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) + include "proxy.pyx" include "account.pyx" include "buddy.pyx"