X-Git-Url: http://git.maemo.org/git/?p=python-purple;a=blobdiff_plain;f=conversation_cbs.pxd;h=87218be947f5d5695d84ff9ec6d3070d8fa943bc;hp=b230d81e158e1c967d6d9abc5c3625720c91a322;hb=624d72e36278a64bfcbd4f9eb31b20e26d781263;hpb=824a5557c0aac16a1bde0f1c20505ace55f7805e diff --git a/conversation_cbs.pxd b/conversation_cbs.pxd index b230d81..87218be 100644 --- a/conversation_cbs.pxd +++ b/conversation_cbs.pxd @@ -26,9 +26,12 @@ cdef extern from *: conversation_cbs = {} -cdef void create_conversation (conversation.PurpleConversation *conv): - debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "conversation", - "create-conversation\n") +cdef void create_conversation(conversation.PurpleConversation *conv): + """ + Called when a conv is created (but before the conversation-created + signal is emitted). + """ + debug.c_purple_debug_info("conversation", "%s", "create-conversation\n") cdef char *c_name = NULL c_name = conversation.c_purple_conversation_get_name(conv) @@ -39,35 +42,40 @@ cdef void create_conversation (conversation.PurpleConversation *conv): type = conversation.c_purple_conversation_get_type(conv) - try: - (conversation_cbs["create-conversation"])(name, type) - except KeyError: - pass - -cdef void destroy_conversation (conversation.PurpleConversation *conv): - debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "conversation", - "destroy-conversation\n") - try: - (conversation_cbs["destroy-conversation"])("destroy-conversation: TODO") - except KeyError: - pass - -cdef void write_chat (conversation.PurpleConversation *conv, const_char *who, - const_char *message, conversation.PurpleMessageFlags flags, - time_t mtime): - debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "conversation", - "write-chat\n") - try: - (conversation_cbs["write-chat"])("write-chat: TODO") - except KeyError: - pass - -cdef void write_im (conversation.PurpleConversation *conv, const_char *who, - const_char *c_message, conversation.PurpleMessageFlags flags, - time_t mtime): - debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "conversation", "write-im\n") + if conversation_cbs.has_key("create-conversation"): + ( conversation_cbs["create-conversation"])(name, type) + +cdef void destroy_conversation(conversation.PurpleConversation *conv): + """ + Called just before a conv is freed. + """ + debug.c_purple_debug_info("conversation", "%s", "destroy-conversation\n") + if conversation_cbs.has_key("destroy-conversation"): + ( conversation_cbs["destroy-conversation"])("destroy-conversation: TODO") + +cdef void write_chat(conversation.PurpleConversation *conv, const_char *who, \ + const_char *message, conversation.PurpleMessageFlags flags, \ + time_t mtime): + """ + Write a message to a chat. If this field is NULL, libpurple will fall + back to using write_conv. + @see purple_conv_chat_write() + """ + debug.c_purple_debug_info("conversation", "%s", "write-chat\n") + if conversation_cbs.has_key("write-chat"): + ( conversation_cbs["write-chat"])("write-chat: TODO") + +cdef void write_im(conversation.PurpleConversation *conv, const_char *who, \ + const_char *c_message, conversation.PurpleMessageFlags flags, \ + time_t mtime): + """ + Write a message to an IM conversation. If this field is NULL, libpurple + will fall back to using write_conv. + @see purple_conv_im_write() + """ + debug.c_purple_debug_info("conversation", "%s", "write-im\n") cdef account.PurpleAccount *acc = conversation.c_purple_conversation_get_account(conv) - cdef blist.PurpleBuddy *buddy = blist.c_purple_find_buddy(acc, who) + cdef blist.PurpleBuddy *buddy = NULL cdef char *c_username = NULL cdef char *c_sender_alias = NULL @@ -79,6 +87,7 @@ cdef void write_im (conversation.PurpleConversation *conv, const_char *who, if who: sender = who + buddy = blist.c_purple_find_buddy(acc, who) c_sender_alias = blist.c_purple_buddy_get_alias_only(buddy) else: sender = None @@ -93,111 +102,126 @@ cdef void write_im (conversation.PurpleConversation *conv, const_char *who, else: message = None - try: - (conversation_cbs["write-im"])(username, sender, \ - sender_alias, message) - except KeyError: - pass - -cdef void write_conv (conversation.PurpleConversation *conv, const_char *name, - const_char *alias, const_char *message, - conversation.PurpleMessageFlags flags, time_t mtime): - debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "conversation", - "write-conv\n") - try: - (conversation_cbs["write-conv"])("write-conv: TODO") - except KeyError: - pass - -cdef void chat_add_users (conversation.PurpleConversation *conv, - glib.GList *cbuddies, glib.gboolean new_arrivals): - debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "conversation", - "chat-add-users\n") - try: - (conversation_cbs["chat-add-users"])("chat-add-users: TODO") - except KeyError: - pass - -cdef void chat_rename_user (conversation.PurpleConversation *conv, - const_char *old_name, const_char *new_name, - const_char *new_alias): - debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "conversation", - "chat-rename-user\n") - try: - (conversation_cbs["chat-rename-user"])("chat-rename-user: TODO") - except KeyError: - pass - -cdef void chat_remove_users (conversation.PurpleConversation *conv, - glib.GList *users): - debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "conversation", - "chat-remove-users\n") - try: - (conversation_cbs["chat-remove-users"])("chat-remove-users: TODO") - except KeyError: - pass - -cdef void chat_update_user (conversation.PurpleConversation *conv, - const_char *user): - debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "conversation", - "chat-update-user\n") - try: - (conversation_cbs["chat-update-user"])("chat-update-user: TODO") - except KeyError: - pass - -cdef void present (conversation.PurpleConversation *conv): - debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "conversation", - "present\n") - try: - (conversation_cbs["present"])("present: TODO") - except KeyError: - pass - -cdef glib.gboolean has_focus (conversation.PurpleConversation *conv): - debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "conversation", - "has-focus\n") - try: - (conversation_cbs["has-focus"])("has-focus: TODO") - return False - except KeyError: - return False - -cdef glib.gboolean custom_smiley_add (conversation.PurpleConversation *conv, - const_char *smile, glib.gboolean remote): - debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "conversation", - "custom-smiley-add\n") - try: - (conversation_cbs["custom-smiley-add"])("custom-smiley-add: TODO") - return False - except KeyError: - return False - -cdef void custom_smiley_write (conversation.PurpleConversation *conv, - const_char *smile, const_guchar *data, - glib.gsize size): - debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "conversation", - "custom-smiley-write\n") - try: - (conversation_cbs["custom-smiley-write"])("custom-smiley-write: TODO") - except KeyError: - pass - - -cdef void custom_smiley_close (conversation.PurpleConversation *conv, - const_char *smile): - debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "conversation", - "custom-smiley-close\n") - try: - (conversation_cbs["custom-smiley-close"])("custom-smiley-close: TODO") - except KeyError: - pass - -cdef void send_confirm (conversation.PurpleConversation *conv, - const_char *message): - debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "conversation", - "send-confirm\n") - try: - (conversation_cbs["send-confirm"])("send-confirm: TODO") - except KeyError: - pass + if conversation_cbs.has_key("write-im"): + ( conversation_cbs["write-im"])(username, sender, \ + sender_alias, message) + +cdef void write_conv(conversation.PurpleConversation *conv, const_char *name, \ + const_char *alias, const_char *message, \ + conversation.PurpleMessageFlags flags, time_t mtime): + """ + Write a message to a conversation. This is used rather than the chat- or + im-specific ops for errors, system messages (such as "x is now known as + y"), and as the fallback if write_im and write_chat are not implemented. + It should be implemented, or the UI will miss conversation error messages + and your users will hate you. + @see purple_conversation_write() + """ + debug.c_purple_debug_info("conversation", "%s", "write-conv\n") + if conversation_cbs.has_key("write-conv"): + ( conversation_cbs["write-conv"])("write-conv: TODO") + +cdef void chat_add_users(conversation.PurpleConversation *conv, \ + glib.GList *cbuddies, glib.gboolean new_arrivals): + """ + Add cbuddies to a chat. + @param cbuddies A GList of PurpleConvChatBuddy structs. + @param new_arrivals Wheter join notices should be shown. + (Join notices are actually written to the + conversation by purple_conv_chat_add_users().) + @see purple_conv_chat_add_users() + """ + debug.c_purple_debug_info("conversation", "%s", "chat-add-users\n") + if conversation_cbs.has_key("chat-add-users"): + ( conversation_cbs["chat-add-users"])("chat-add-users: TODO") + +cdef void chat_rename_user(conversation.PurpleConversation *conv, \ + const_char *old_name, const_char *new_name, + const_char *new_alias): + """ + Rename the user in this chat name old_name to new_name. (The rename + message is written to the conversation by libpurple.) + @param new_alias new_name's new_alias, if they have one. + @see purple_conv_chat_rename_user() + """ + debug.c_purple_debug_info("conversation", "%s", "chat-rename-user\n") + if conversation_cbs.has_key("chat-rename-user"): + ( conversation_cbs["chat-rename-user"])("chat-rename-user: TODO") + +cdef void chat_remove_users(conversation.PurpleConversation *conv, \ + glib.GList *users): + """ + Remove users from a chat. + @param users A GList of const char *s. + """ + debug.c_purple_debug_info("conversation", "%s", "chat-remove-users\n") + if conversation_cbs.has_key("chat-remove-users"): + ( conversation_cbs["chat-remove-users"])("chat-remove-users: TODO") + +cdef void chat_update_user(conversation.PurpleConversation *conv, \ + const_char *user): + """ + Called when a user's flags are changed. + @see purple_conv_chat_user_set_flags() + """ + debug.c_purple_debug_info("conversation", "%s", "chat-update-user\n") + if conversation_cbs.has_key("chat-update-user"): + ( conversation_cbs["chat-update-user"])("chat-update-user: TODO") + +cdef void present(conversation.PurpleConversation *conv): + """ + Present this conversation to the user; for example, by displaying the IM + dialog. + """ + debug.c_purple_debug_info("conversation", "%s", "present\n") + if conversation_cbs.has_key("present"): + ( conversation_cbs["present"])("present: TODO") + +cdef glib.gboolean has_focus(conversation.PurpleConversation *conv): + """ + If this UI has a concept of focus (as in a windowing system) and this + conversation has the focus, return TRUE; otherwise, return FALSE. + """ + debug.c_purple_debug_info("conversation", "%s", "has-focus\n") + if conversation_cbs.has_key("has-focus"): + ( conversation_cbs["has-focus"])("has-focus: TODO") + return False + +cdef glib.gboolean custom_smiley_add(conversation.PurpleConversation *conv, \ + const_char *smile, glib.gboolean remote): + """ + Custom smileys (add). + """ + debug.c_purple_debug_info("conversation", "%s", "custom-smiley-add\n") + if conversation_cbs.has_key("custom-smiley-add"): + ( conversation_cbs["custom-smiley-add"])("custom-smiley-add: TODO") + return False + +cdef void custom_smiley_write(conversation.PurpleConversation *conv, \ + const_char *smile, const_guchar *data, glib.gsize size): + """ + Custom smileys (write). + """ + debug.c_purple_debug_info("conversation", "%s", "custom-smiley-write\n") + if conversation_cbs.has_key("custom-smiley-write"): + ( conversation_cbs["custom-smiley-write"])("custom-smiley-write: TODO") + +cdef void custom_smiley_close(conversation.PurpleConversation *conv, \ + const_char *smile): + """ + Custom smileys (close). + """ + debug.c_purple_debug_info("conversation", "%s", "custom-smiley-close\n") + if conversation_cbs.has_key("custom-smiley-close"): + ( conversation_cbs["custom-smiley-close"])("custom-smiley-close: TODO") + +cdef void send_confirm(conversation.PurpleConversation *conv, \ + const_char *message): + """ + Prompt the user for confirmation to send mesage. This function should + arrange for the message to be sent if the user accepts. If this field + is NULL, libpurple will fall back to using purple_request_action(). + """ + debug.c_purple_debug_info("conversation", "%s", "send-confirm\n") + if conversation_cbs.has_key("send-confirm"): + ( conversation_cbs["send-confirm"])("send-confirm: TODO")