#
# 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 .
#
cimport purple
cdef extern from *:
ctypedef char const_char "const char"
blist_cbs = {}
cdef void __group_node_cb(blist.PurpleBlistNode *node, object callback):
cdef blist.PurpleGroup *group = node
if group.name:
name = group.name
else:
name = None
try:
callback(node.type, name, group.totalsize, group.currentsize, \
group.online)
except KeyError:
pass
cdef void __contact_node_cb(blist.PurpleBlistNode *node, object callback):
cdef blist.PurpleContact *contact = node
if contact.alias:
alias = contact.alias
else:
alias = None
try:
callback(node.type, alias, contact.totalsize, contact.currentsize, \
contact.online)
except KeyError:
pass
cdef void __buddy_node_cb(blist.PurpleBlistNode *node, object callback):
cdef blist.PurpleBuddy *buddy = node
if buddy.server_alias:
alias = buddy.server_alias
elif buddy.alias:
alias = buddy.alias
else:
alias = None
if buddy.name:
name = buddy.name
else:
name = None
try:
callback(node.type, name, alias)
except KeyError:
pass
cdef void __chat_node_cb(blist.PurpleBlistNode *node, object callback):
cdef blist.PurpleChat *chat = node
if chat.alias:
alias = chat.alias
else:
alias = None
try:
callback(node.type, alias)
except KeyError:
pass
cdef void __other_node_cb(blist.PurpleBlistNode *node, object callback):
try:
callback(node.type)
except KeyError:
pass
cdef void new_list (blist.PurpleBuddyList *list):
debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "blist", "new_list\n")
try:
(