2 # Copyright (c) 2008 INdT - Instituto Nokia de Tecnologia
4 # This file is part of python-purple.
6 # python-purple is free software: you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation, either version 3 of the License, or
9 # (at your option) any later version.
11 # python-purple is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
16 # You should have received a copy of the GNU General Public License
17 # along with this program. If not, see <http://www.gnu.org/licenses/>.
26 ctypedef char const_char "const char"
28 # hack to avoid recursive loops by cython
29 cdef extern from "libpurple/status.h":
30 ctypedef struct PurplePresence:
33 cdef extern from "libpurple/blist.h":
34 ctypedef struct PurpleBuddyList
35 ctypedef struct PurpleBlistUiOps
36 ctypedef struct PurpleBlistNode
37 ctypedef struct PurpleChat
38 ctypedef struct PurpleGroup
39 ctypedef struct PurpleContact
40 ctypedef struct PurpleBuddy
42 ctypedef enum PurpleBlistNodeType:
43 PURPLE_BLIST_GROUP_NODE
44 PURPLE_BLIST_CONTACT_NODE
45 PURPLE_BLIST_BUDDY_NODE
46 PURPLE_BLIST_CHAT_NODE
47 PURPLE_BLIST_OTHER_NODE
49 ctypedef enum PurpleBlistNodeFlags:
50 PURPLE_BLIST_NODE_FLAG_NO_SAVE = 1 << 0
52 ctypedef struct PurpleBlistNode:
53 PurpleBlistNodeType type
56 PurpleBlistNode *parent
57 PurpleBlistNode *child
58 glib.GHashTable *settings
60 PurpleBlistNodeFlags flags
62 ctypedef struct PurpleBuddy:
67 buddyicon.PurpleBuddyIcon *icon
68 account.PurpleAccount *account
69 PurplePresence *presence
71 ctypedef struct PurpleContact:
78 glib.gboolean priority_valid
80 ctypedef struct PurpleGroup:
87 ctypedef struct PurpleChat:
90 glib.GHashTable *components
91 account.PurpleAccount *account
93 ctypedef struct PurpleBuddyList:
95 glib.GHashTable *buddies
98 ctypedef struct PurpleBlistUiOps:
99 void (*new_list) (PurpleBuddyList *list)
100 void (*new_node) (PurpleBlistNode *node)
101 void (*show) (PurpleBuddyList *list)
102 void (*update) (PurpleBuddyList *list, PurpleBlistNode *node)
103 void (*remove) (PurpleBuddyList *list, PurpleBlistNode *node)
104 void (*destroy) (PurpleBuddyList *list)
105 void (*set_visible) (PurpleBuddyList *list, glib.gboolean show)
106 void (*request_add_buddy) (account.PurpleAccount *account, const_char *username, const_char *group, const_char *alias)
107 void (*request_add_chat) (account.PurpleAccount *account, PurpleGroup *group, const_char *alias, const_char *name)
108 void (*request_add_group) ()
110 void *c_purple_blist_get_handle "purple_blist_get_handle" ()
111 void c_purple_blist_load "purple_blist_load" ()
112 PurpleBuddyList* c_purple_blist_new "purple_blist_new" ()
113 void c_purple_blist_set_ui_ops "purple_blist_set_ui_ops" (PurpleBlistUiOps *ops)
115 PurpleBuddy *c_purple_buddy_new "purple_buddy_new" (account.PurpleAccount *account,
116 char *screenname, char *alias)
117 char *c_purple_buddy_get_alias_only "purple_buddy_get_alias_only" (PurpleBuddy *buddy)
118 char *c_purple_buddy_get_name "purple_buddy_get_name" (PurpleBuddy *buddy)
119 PurpleBuddy *c_purple_find_buddy "purple_find_buddy" (account.PurpleAccount *account, char *name)
120 void c_purple_set_blist "purple_set_blist" (PurpleBuddyList *list)
121 glib.GSList *c_purple_find_buddies "purple_find_buddies" (account.PurpleAccount *account, char *name)
122 account.PurpleAccount *c_purple_buddy_get_account "purple_buddy_get_account" (PurpleBuddy *buddy)
123 PurplePresence *c_purple_buddy_get_presence "purple_buddy_get_presence" (PurpleBuddy *buddy)