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/>.
23 ctypedef char const_char "const char"
24 ctypedef glib.guchar const_guchar "const guchar"
25 ctypedef long int time_t
29 cdef void create_conversation(conversation.PurpleConversation *conv):
31 Called when a conv is created (but before the conversation-created
34 debug.purple_debug_info("conversation", "%s", "create-conversation\n")
35 cdef char *c_name = NULL
37 c_name = <char *> conversation.purple_conversation_get_name(conv)
43 type = conversation.purple_conversation_get_type(conv)
45 if conversation_cbs.has_key("create-conversation"):
46 (<object> conversation_cbs["create-conversation"])(name, type)
48 cdef void destroy_conversation(conversation.PurpleConversation *conv):
50 Called just before a conv is freed.
52 debug.purple_debug_info("conversation", "%s", "destroy-conversation\n")
53 if conversation_cbs.has_key("destroy-conversation"):
54 (<object> conversation_cbs["destroy-conversation"])("destroy-conversation: TODO")
56 cdef void write_chat(conversation.PurpleConversation *conv, const_char *who, \
57 const_char *message, conversation.PurpleMessageFlags flags, \
60 Write a message to a chat. If this field is NULL, libpurple will fall
61 back to using write_conv.
62 @see purple_conv_chat_write()
64 debug.purple_debug_info("conversation", "%s", "write-chat\n")
65 if conversation_cbs.has_key("write-chat"):
66 (<object> conversation_cbs["write-chat"])("write-chat: TODO")
68 cdef void write_im(conversation.PurpleConversation *conv, const_char *who, \
69 const_char *c_message, conversation.PurpleMessageFlags flags, \
72 Write a message to an IM conversation. If this field is NULL, libpurple
73 will fall back to using write_conv.
74 @see purple_conv_im_write()
76 debug.purple_debug_info("conversation", "%s", "write-im\n")
77 cdef account.PurpleAccount *acc = conversation.purple_conversation_get_account(conv)
78 cdef blist.PurpleBuddy *buddy = NULL
79 cdef char *c_username = NULL
80 cdef char *c_sender_alias = NULL
82 c_username = <char *> account.purple_account_get_username(acc)
89 who = conversation.purple_conversation_get_name(conv)
92 buddy = blist.purple_find_buddy(acc, <char *> who)
94 c_sender_alias = <char *> blist.purple_buddy_get_alias_only(buddy)
97 sender_alias = unicode(c_sender_alias, 'utf-8')
102 message = <char *> c_message
106 # FIXME: Maybe we need add more purple flags in the future
107 if flags & conversation.PURPLE_MESSAGE_SEND:
112 if conversation_cbs.has_key("write-im"):
113 (<object> conversation_cbs["write-im"])(username, sender, \
114 sender_alias, message, flag)
116 cdef void write_conv(conversation.PurpleConversation *conv, const_char *name, \
117 const_char *alias, const_char *message, \
118 conversation.PurpleMessageFlags flags, time_t mtime):
120 Write a message to a conversation. This is used rather than the chat- or
121 im-specific ops for errors, system messages (such as "x is now known as
122 y"), and as the fallback if write_im and write_chat are not implemented.
123 It should be implemented, or the UI will miss conversation error messages
124 and your users will hate you.
125 @see purple_conversation_write()
127 debug.purple_debug_info("conversation", "%s", "write-conv\n")
128 if conversation_cbs.has_key("write-conv"):
129 (<object> conversation_cbs["write-conv"])("write-conv: TODO")
131 cdef void chat_add_users(conversation.PurpleConversation *conv, \
132 glib.GList *cbuddies, glib.gboolean new_arrivals):
134 Add cbuddies to a chat.
135 @param cbuddies A GList of PurpleConvChatBuddy structs.
136 @param new_arrivals Wheter join notices should be shown.
137 (Join notices are actually written to the
138 conversation by purple_conv_chat_add_users().)
139 @see purple_conv_chat_add_users()
141 debug.purple_debug_info("conversation", "%s", "chat-add-users\n")
142 if conversation_cbs.has_key("chat-add-users"):
143 (<object> conversation_cbs["chat-add-users"])("chat-add-users: TODO")
145 cdef void chat_rename_user(conversation.PurpleConversation *conv, \
146 const_char *old_name, const_char *new_name,
147 const_char *new_alias):
149 Rename the user in this chat name old_name to new_name. (The rename
150 message is written to the conversation by libpurple.)
151 @param new_alias new_name's new_alias, if they have one.
152 @see purple_conv_chat_rename_user()
154 debug.purple_debug_info("conversation", "%s", "chat-rename-user\n")
155 if conversation_cbs.has_key("chat-rename-user"):
156 (<object> conversation_cbs["chat-rename-user"])("chat-rename-user: TODO")
158 cdef void chat_remove_users(conversation.PurpleConversation *conv, \
161 Remove users from a chat.
162 @param users A GList of const char *s.
164 debug.purple_debug_info("conversation", "%s", "chat-remove-users\n")
165 if conversation_cbs.has_key("chat-remove-users"):
166 (<object> conversation_cbs["chat-remove-users"])("chat-remove-users: TODO")
168 cdef void chat_update_user(conversation.PurpleConversation *conv, \
171 Called when a user's flags are changed.
172 @see purple_conv_chat_user_set_flags()
174 debug.purple_debug_info("conversation", "%s", "chat-update-user\n")
175 if conversation_cbs.has_key("chat-update-user"):
176 (<object> conversation_cbs["chat-update-user"])("chat-update-user: TODO")
178 cdef void present(conversation.PurpleConversation *conv):
180 Present this conversation to the user; for example, by displaying the IM
183 debug.purple_debug_info("conversation", "%s", "present\n")
184 if conversation_cbs.has_key("present"):
185 (<object> conversation_cbs["present"])("present: TODO")
187 cdef glib.gboolean has_focus(conversation.PurpleConversation *conv):
189 If this UI has a concept of focus (as in a windowing system) and this
190 conversation has the focus, return TRUE; otherwise, return FALSE.
192 debug.purple_debug_info("conversation", "%s", "has-focus\n")
193 if conversation_cbs.has_key("has-focus"):
194 (<object> conversation_cbs["has-focus"])("has-focus: TODO")
197 cdef glib.gboolean custom_smiley_add(conversation.PurpleConversation *conv, \
198 const_char *smile, glib.gboolean remote):
200 Custom smileys (add).
202 debug.purple_debug_info("conversation", "%s", "custom-smiley-add\n")
203 if conversation_cbs.has_key("custom-smiley-add"):
204 (<object> conversation_cbs["custom-smiley-add"])("custom-smiley-add: TODO")
207 cdef void custom_smiley_write(conversation.PurpleConversation *conv, \
208 const_char *smile, const_guchar *data, glib.gsize size):
210 Custom smileys (write).
212 debug.purple_debug_info("conversation", "%s", "custom-smiley-write\n")
213 if conversation_cbs.has_key("custom-smiley-write"):
214 (<object> conversation_cbs["custom-smiley-write"])("custom-smiley-write: TODO")
216 cdef void custom_smiley_close(conversation.PurpleConversation *conv, \
219 Custom smileys (close).
221 debug.purple_debug_info("conversation", "%s", "custom-smiley-close\n")
222 if conversation_cbs.has_key("custom-smiley-close"):
223 (<object> conversation_cbs["custom-smiley-close"])("custom-smiley-close: TODO")
225 cdef void send_confirm(conversation.PurpleConversation *conv, \
226 const_char *message):
228 Prompt the user for confirmation to send mesage. This function should
229 arrange for the message to be sent if the user accepts. If this field
230 is NULL, libpurple will fall back to using purple_request_action().
232 debug.purple_debug_info("conversation", "%s", "send-confirm\n")
233 if conversation_cbs.has_key("send-confirm"):
234 (<object> conversation_cbs["send-confirm"])("send-confirm: TODO")