--- /dev/null
+#
+# Copyright (c) 2008 INdT - Instituto Nokia de Tecnologia
+#
+# This file is part of python-purple.
+#
+# python-purple is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# python-purple is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+cimport purple
+
+cdef extern from *:
+ ctypedef char const_char "const char"
+
+blist_cbs = {}
+
+cdef void new_list (blist.PurpleBuddyList *list):
+ debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "blist", "new_list\n")
+ try:
+ (<object>blist_cbs["new_list"])("new_list")
+ except KeyError:
+ pass
+
+cdef void new_node (blist.PurpleBlistNode *node):
+ debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "blist", "new_node\n")
+ try:
+ (<object>blist_cbs["new_node"])("new_node")
+ except KeyError:
+ pass
+
+cdef void show (blist.PurpleBuddyList *list):
+ debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "blist", "show\n")
+ try:
+ (<object>blist_cbs["show"])("show")
+ except KeyError:
+ pass
+
+cdef void update (blist.PurpleBuddyList *list, blist.PurpleBlistNode *node):
+ debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "blist", "update\n")
+ try:
+ (<object>blist_cbs["update"])("update")
+ except KeyError:
+ pass
+
+cdef void remove (blist.PurpleBuddyList *list, blist.PurpleBlistNode *node):
+ debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "blist", "remove\n")
+ try:
+ (<object>blist_cbs["remove"])("remove")
+ except KeyError:
+ pass
+
+cdef void destroy (blist.PurpleBuddyList *list):
+ debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "blist", "destroy\n")
+ try:
+ (<object>blist_cbs["destroy"])("destroy")
+ except KeyError:
+ pass
+
+cdef void set_visible (blist.PurpleBuddyList *list, glib.gboolean show):
+ debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "blist", "set_visible\n")
+ try:
+ (<object>blist_cbs["set_visible"])("set_visible")
+ except KeyError:
+ pass
+
+cdef void request_add_buddy (account.PurpleAccount *account,
+ const_char *username, const_char *group,
+ const_char *alias):
+ debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "blist", "request_add_buddy\n")
+ try:
+ (<object>blist_cbs["request_add_buddy"])("request_add_buddy")
+ except KeyError:
+ pass
+
+cdef void request_add_chat (account.PurpleAccount *account,
+ blist.PurpleGroup *group, const_char *alias,
+ const_char *name):
+ debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "blist", "request_add_chat\n")
+ try:
+ (<object>blist_cbs["request_add_chat"])("request_add_chat")
+ except KeyError:
+ pass
+
+cdef void request_add_group ():
+ debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "blist", "request_add_group\n")
+ try:
+ (<object>blist_cbs["request_add_chat"])("request_add_group")
+ except KeyError:
+ pass
#
cimport glib
+
cimport account
cimport status
+cdef extern from *:
+ ctypedef char const_char "const char"
+
cdef extern from "libpurple/blist.h":
- ctypedef struct PurpleBlistNode:
- pass
+ ctypedef struct PurpleBuddyList
+ ctypedef struct PurpleBlistUiOps
+ ctypedef struct PurpleBlistNode
+ ctypedef struct PurpleChat
+ ctypedef struct PurpleGroup
+ ctypedef struct PurpleContact
+ ctypedef struct PurpleBuddy
- ctypedef struct PurpleBlistUiOps:
+ ctypedef enum PurpleBlistNodeType:
+ PURPLE_BLIST_GROUP_NODE
+ PURPLE_BLIST_CONTACT_NODE
+ PURPLE_BLIST_BUDDY_NODE
+ PURPLE_BLIST_CHAT_NODE
+ PURPLE_BLIST_OTHER_NODE
+
+ ctypedef enum PurpleBlistNodeFlags:
+ PURPLE_BLIST_NODE_FLAG_NO_SAVE = 1 << 0
+
+ ctypedef struct PurpleBlistNode:
pass
ctypedef struct PurpleBuddy:
char *name
+ char *alias
+ char *server_alias
- ctypedef struct PurpleBuddyList:
+ ctypedef struct PurpleContact:
+ pass
+
+ ctypedef struct PurpleGroup:
+ pass
+
+ ctypedef struct PurpleChat:
pass
- ctypedef struct PurplePresence:
+ ctypedef struct PurpleBuddyList:
pass
+ ctypedef struct PurpleBlistUiOps:
+ void (*new_list) (PurpleBuddyList *list)
+ void (*new_node) (PurpleBlistNode *node)
+ void (*show) (PurpleBuddyList *list)
+ void (*update) (PurpleBuddyList *list, PurpleBlistNode *node)
+ void (*remove) (PurpleBuddyList *list, PurpleBlistNode *node)
+ void (*destroy) (PurpleBuddyList *list)
+ void (*set_visible) (PurpleBuddyList *list, glib.gboolean show)
+ void (*request_add_buddy) (account.PurpleAccount *account, const_char *username, const_char *group, const_char *alias)
+ void (*request_add_chat) (account.PurpleAccount *account, PurpleGroup *group, const_char *alias, const_char *name)
+ void (*request_add_group) ()
+
void *c_purple_blist_get_handle "purple_blist_get_handle" ()
void c_purple_blist_load "purple_blist_load" ()
PurpleBuddyList* c_purple_blist_new "purple_blist_new" ()
cbs = {}
acc_cbs = {}
+blist_cbs = {}
conn_cbs = {}
conv_cbs = {}
cbs["account"] = acc_cbs
+def blist_callback(name):
+ print "---- blist callback example: %s" % name
+
+blist_cbs["new_list"] = blist_callback
+blist_cbs["new_node"] = blist_callback
+blist_cbs["show"] = blist_callback
+blist_cbs["update"] = blist_callback
+blist_cbs["remove"] = blist_callback
+blist_cbs["destroy"] = blist_callback
+blist_cbs["set_visible"] = blist_callback
+blist_cbs["request_add_buddy"] = blist_callback
+blist_cbs["request_add_chat"] = blist_callback
+blist_cbs["request_add_group"] = blist_callback
+
+cbs["blist"] = blist_cbs
+
def conn_callback(name):
print "---- connection callback example: %s" % name
__APP_VERSION__ = "0.1"
cdef account.PurpleAccountUiOps c_account_ui_ops
-#cdef blist.PurpleBlistUiOps c_blist_ui_ops
+cdef blist.PurpleBlistUiOps c_blist_ui_ops
cdef connection.PurpleConnectionUiOps c_conn_ui_ops
cdef conversation.PurpleConversationUiOps c_conv_ui_ops
cdef core.PurpleCoreUiOps c_core_ui_ops
c_ui_info = NULL
include "account_cbs.pxd"
+include "blist_cbs.pxd"
include "connection_cbs.pxd"
include "conversation_cbs.pxd"
account.c_purple_accounts_set_ui_ops(&c_account_ui_ops)
connection.c_purple_connections_set_ui_ops(&c_conn_ui_ops)
- #blist.c_purple_blist_set_ui_ops(&c_blist_ui_ops)
+ blist.c_purple_blist_set_ui_ops(&c_blist_ui_ops)
conversation.c_purple_conversations_set_ui_ops(&c_conv_ui_ops)
#notify.c_purple_notify_set_ui_ops(&c_notify_ui_ops)
#request.c_purple_request_set_ui_ops(&c_request_ui_ops)
if callbacks_dict is not None:
global account_cbs
+ global blist_cbs
global connection_cbs
global conversation_cbs
account_cbs = callbacks_dict["account"]
+ blist_cbs = callbacks_dict["blist"]
connection_cbs = callbacks_dict["connection"]
conversation_cbs = callbacks_dict["conversation"]
c_account_ui_ops.request_authorize = request_authorize
c_account_ui_ops.close_account_request = close_account_request
+ c_blist_ui_ops.new_list = new_list
+ c_blist_ui_ops.new_node = new_node
+ c_blist_ui_ops.show = show
+ c_blist_ui_ops.update = update
+ c_blist_ui_ops.remove = remove
+ c_blist_ui_ops.destroy = destroy
+ c_blist_ui_ops.set_visible = set_visible
+ c_blist_ui_ops.request_add_buddy = request_add_buddy
+ c_blist_ui_ops.request_add_chat = request_add_chat
+ c_blist_ui_ops.request_add_group = request_add_group
+
c_conn_ui_ops.connect_progress = connect_progress
c_conn_ui_ops.connected = connected
c_conn_ui_ops.disconnected = disconnected