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/>.
25 # hack to avoid recursive loops by cython
26 cdef extern from "libpurple/status.h":
27 ctypedef struct PurpleStatus
28 ctypedef struct PurplePresence
30 cdef extern from "libpurple/blist.h":
31 ctypedef struct PurpleBuddyList
32 ctypedef struct PurpleBlistUiOps
33 ctypedef struct PurpleBlistNode
34 ctypedef struct PurpleChat
35 ctypedef struct PurpleGroup
36 ctypedef struct PurpleContact
37 ctypedef struct PurpleBuddy
39 ctypedef enum PurpleBlistNodeType:
40 PURPLE_BLIST_GROUP_NODE
41 PURPLE_BLIST_CONTACT_NODE
42 PURPLE_BLIST_BUDDY_NODE
43 PURPLE_BLIST_CHAT_NODE
44 PURPLE_BLIST_OTHER_NODE
46 ctypedef enum PurpleBlistNodeFlags:
47 PURPLE_BLIST_NODE_FLAG_NO_SAVE = 1 << 0
49 ctypedef struct PurpleBlistNode:
50 PurpleBlistNodeType type
53 PurpleBlistNode *parent
54 PurpleBlistNode *child
55 glib.GHashTable *settings
57 PurpleBlistNodeFlags flags
59 ctypedef struct PurpleBuddy:
64 buddyicon.PurpleBuddyIcon *icon
65 account.PurpleAccount *account
66 PurplePresence *presence
68 ctypedef struct PurpleContact:
75 glib.gboolean priority_valid
77 ctypedef struct PurpleGroup:
84 ctypedef struct PurpleChat:
87 glib.GHashTable *components
88 account.PurpleAccount *account
90 ctypedef struct PurpleBuddyList:
92 glib.GHashTable *buddies
95 ctypedef struct PurpleBlistUiOps:
96 void (*new_list) (PurpleBuddyList *list)
97 void (*new_node) (PurpleBlistNode *node)
98 void (*show) (PurpleBuddyList *list)
99 void (*update) (PurpleBuddyList *list, PurpleBlistNode *node)
100 void (*remove) (PurpleBuddyList *list, PurpleBlistNode *node)
101 void (*destroy) (PurpleBuddyList *list)
102 void (*set_visible) (PurpleBuddyList *list, glib.gboolean show)
103 void (*request_add_buddy) (account.PurpleAccount *account, char *username, char *group, char *alias)
104 void (*request_add_chat) (account.PurpleAccount *account, PurpleGroup *group, char *alias, char *name)
105 void (*request_add_group) ()
108 PurpleBuddyList *purple_blist_new()
109 void purple_set_blist(PurpleBuddyList *blist)
110 PurpleBuddyList *purple_get_blist()
111 PurpleBlistNode *purple_blist_get_root()
112 PurpleBlistNode *purple_blist_node_next(PurpleBlistNode *node, \
113 glib.gboolean offline)
114 PurpleBlistNode *purple_blist_node_get_parent(PurpleBlistNode *node)
115 PurpleBlistNode *purple_blist_node_get_first_child(PurpleBlistNode *node)
116 PurpleBlistNode *purple_blist_node_get_sibling_next(PurpleBlistNode *node)
117 PurpleBlistNode *purple_blist_node_get_sibling_prev(PurpleBlistNode *node)
118 void purple_blist_show()
119 void purple_blist_destroy()
120 void purple_blist_set_visible(glib.gboolean show)
121 void purple_blist_update_buddy_status(PurpleBuddy *buddy, \
122 PurpleStatus *old_status)
123 void purple_blist_update_node_icon(PurpleBlistNode *node)
124 void purple_blist_rename_buddy(PurpleBuddy *buddy, char *name)
125 void purple_blist_alias_contact(PurpleContact *contact, char *alias)
126 void purple_blist_alias_buddy(PurpleBuddy *buddy, char *alias)
127 void purple_blist_server_alias_buddy(PurpleBuddy *buddy, char *alias)
128 void purple_blist_alias_chat(PurpleChat *chat, char *alias)
129 void purple_blist_rename_group(PurpleGroup *group, char *name)
130 PurpleChat *purple_chat_new(account.PurpleAccount *account, char *alias, \
131 glib.GHashTable *components)
132 void purple_blist_add_chat(PurpleChat *chat, PurpleGroup *group, \
133 PurpleBlistNode *node)
134 PurpleBuddy *purple_buddy_new(account.PurpleAccount *account, \
135 char *screenname, char *alias)
136 void purple_buddy_set_icon(PurpleBuddy *buddy, \
137 buddyicon.PurpleBuddyIcon *icon)
138 account.PurpleAccount *purple_buddy_get_account(PurpleBuddy *buddy)
139 char *purple_buddy_get_name(PurpleBuddy *buddy)
140 buddyicon.PurpleBuddyIcon *purple_buddy_get_icon(PurpleBuddy *buddy)
141 PurpleContact *purple_buddy_get_contact(PurpleBuddy *buddy)
142 PurplePresence *purple_buddy_get_presence(PurpleBuddy *buddy)
143 void purple_blist_add_buddy(PurpleBuddy *buddy, PurpleContact *contact, \
144 PurpleGroup *group, PurpleBlistNode *node)
145 PurpleGroup *purple_group_new(char *name)
146 void purple_blist_add_group(PurpleGroup *group, PurpleBlistNode *node)
147 PurpleContact *purple_contact_new()
148 void purple_blist_add_contact(PurpleContact *contact, PurpleGroup *group, \
149 PurpleBlistNode *node)
150 void purple_blist_merge_contact(PurpleContact *source, \
151 PurpleBlistNode *node)
152 PurpleBuddy *purple_contact_get_priority_buddy(PurpleContact *contact)
153 char *purple_contact_get_alias(PurpleContact *contact)
154 glib.gboolean purple_contact_on_account(PurpleContact *contact, \
155 account.PurpleAccount *account)
156 void purple_contact_invalidate_priority_buddy(PurpleContact *contact)
157 void purple_blist_remove_buddy(PurpleBuddy *buddy)
158 void purple_blist_remove_contact(PurpleContact *contact)
159 void purple_blist_remove_chat(PurpleChat *chat)
160 void purple_blist_remove_group(PurpleGroup *group)
161 char *purple_buddy_get_alias_only(PurpleBuddy *buddy)
162 char *purple_buddy_get_server_alias(PurpleBuddy *buddy)
163 char *purple_buddy_get_contact_alias(PurpleBuddy *buddy)
164 char *purple_buddy_get_local_alias(PurpleBuddy *buddy)
165 char *purple_buddy_get_alias(PurpleBuddy *buddy)
166 char *purple_chat_get_name(PurpleChat *chat)
167 PurpleBuddy *purple_find_buddy(account.PurpleAccount *account, char *name)
168 PurpleBuddy *purple_find_buddy_in_group(account.PurpleAccount *account, \
169 char *name, PurpleGroup *group)
170 glib.GSList *purple_find_buddies(account.PurpleAccount *account, \
172 PurpleGroup *purple_find_group(char *name)
173 PurpleChat *purple_blist_find_chat(account.PurpleAccount *account, \
175 PurpleGroup *purple_chat_get_group(PurpleChat *chat)
176 account.PurpleAccount *purple_chat_get_account(PurpleChat *chat)
177 glib.GHashTable *purple_chat_get_components(PurpleChat *chat)
178 PurpleGroup *purple_buddy_get_group(PurpleBuddy *buddy)
179 glib.GSList *purple_group_get_accounts(PurpleGroup *g)
180 glib.gboolean purple_group_on_account(PurpleGroup *g, \
181 account.PurpleAccount *account)
182 char *purple_group_get_name(PurpleGroup *group)
183 void purple_blist_add_account(account.PurpleAccount *account)
184 void purple_blist_remove_account(account.PurpleAccount *account)
185 int purple_blist_get_group_size(PurpleGroup *group, glib.gboolean offline)
186 int purple_blist_get_group_online_count(PurpleGroup *group)
188 # Buddy list file management API
189 void purple_blist_load()
190 void purple_blist_schedule_save()
191 void purple_blist_request_add_buddy(account.PurpleAccount *account, \
192 char *username, char *group, char *alias)
193 void purple_blist_request_add_chat(account.PurpleAccount *account, \
194 PurpleGroup *group, char *alias, char *name)
195 void purple_blist_request_add_group()
196 void purple_blist_node_set_bool(PurpleBlistNode *node, char *key, \
198 glib.gboolean purple_blist_node_get_bool(PurpleBlistNode *node, char *key)
199 void purple_blist_node_set_int(PurpleBlistNode *node, char *key, int value)
200 int purple_blist_node_get_int(PurpleBlistNode *node, char *key)
201 void purple_blist_node_set_string(PurpleBlistNode *node, char *key, \
203 char *purple_blist_node_get_string(PurpleBlistNode *node, char *key)
204 void purple_blist_node_remove_setting(PurpleBlistNode *node, char *key)
205 void purple_blist_node_set_flags(PurpleBlistNode *node, \
206 PurpleBlistNodeFlags flags)
207 PurpleBlistNodeFlags purple_blist_node_get_flags(PurpleBlistNode *node)
208 PurpleBlistNodeType purple_blist_node_get_type(PurpleBlistNode *node)
209 glib.GList *purple_blist_node_get_extended_menu(PurpleBlistNode *n)
211 # UI Registration Functions
212 void purple_blist_set_ui_ops(PurpleBlistUiOps *ops)
213 PurpleBlistUiOps *purple_blist_get_ui_ops()
215 # Buddy List Subsystem
216 void *purple_blist_get_handle()
217 void purple_blist_init()
218 void purple_blist_uninit()