Fix compilation error using python2.7
[python-purple] / libpurple / blist.pxd
1 #
2 #  Copyright (c) 2008 INdT - Instituto Nokia de Tecnologia
3 #
4 #  This file is part of python-purple.
5 #
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.
10 #
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.
15 #
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/>.
18 #
19
20 cimport glib
21
22 cimport account
23 cimport buddyicon
24
25 # hack to avoid recursive loops by cython
26 cdef extern from "libpurple/status.h":
27     ctypedef struct PurpleStatus
28     ctypedef struct PurplePresence
29
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
38
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
45
46     ctypedef enum PurpleBlistNodeFlags:
47         PURPLE_BLIST_NODE_FLAG_NO_SAVE = 1 << 0
48
49     ctypedef struct PurpleBlistNode:
50         PurpleBlistNodeType type
51         PurpleBlistNode *prev
52         PurpleBlistNode *next
53         PurpleBlistNode *parent
54         PurpleBlistNode *child
55         glib.GHashTable *settings
56         void *ui_data
57         PurpleBlistNodeFlags flags
58
59     ctypedef struct PurpleBuddy:
60         char *name
61         char *alias
62         char *server_alias
63         void *proto_data
64         buddyicon.PurpleBuddyIcon *icon
65         account.PurpleAccount *account
66         PurplePresence *presence
67
68     ctypedef struct PurpleContact:
69         PurpleBlistNode node
70         char *alias
71         int totalsize
72         int currentsize
73         int online
74         PurpleBuddy *priority
75         glib.gboolean priority_valid
76
77     ctypedef struct PurpleGroup:
78         PurpleBlistNode node
79         char *name
80         int totalsize
81         int currentsize
82         int online
83
84     ctypedef struct PurpleChat:
85         PurpleBlistNode node
86         char *alias
87         glib.GHashTable *components
88         account.PurpleAccount *account
89
90     ctypedef struct PurpleBuddyList:
91         PurpleBlistNode *root
92         glib.GHashTable *buddies
93         void *ui_data
94
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) ()
106
107     # Buddy List API
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, \
171             char *name)
172     PurpleGroup *purple_find_group(char *name)
173     PurpleChat *purple_blist_find_chat(account.PurpleAccount *account, \
174             char *name)
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)
187
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, \
197             glib.gboolean value)
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, \
202             char *value)
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)
210
211     # UI Registration Functions
212     void purple_blist_set_ui_ops(PurpleBlistUiOps *ops)
213     PurpleBlistUiOps *purple_blist_get_ui_ops()
214
215     # Buddy List Subsystem
216     void *purple_blist_get_handle()
217     void purple_blist_init()
218     void purple_blist_uninit()