--- /dev/null
+#
+# Copyright (c) 2008 INdT - Instituto Nokia de Tecnologia
+#
+# This file is part of python-purple.
+#
+# python-purple is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# python-purple is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+cimport purple
+
+cdef extern from *:
+ ctypedef char const_char "const char"
+
+account_cbs = {}
+
+cdef void notify_added (account.PurpleAccount *account, const_char *remote_user, const_char *id, const_char *alias, const_char *message):
+ debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "account", "notify_added\n")
+ global account_cbs
+ try:
+ (<object>account_cbs["notify_added"])("notify_added")
+ except KeyError:
+ pass
+
+cdef void status_changed (account.PurpleAccount *account, status.PurpleStatus *status):
+ debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "account", "status_changed\n")
+ global account_cbs
+ try:
+ (<object>account_cbs["status_changed"])("status_changed")
+ except KeyError:
+ pass
+
+cdef void request_add (account.PurpleAccount *account, const_char *remote_user, const_char *id, const_char *alias, const_char *message):
+ debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "account", "request_add\n")
+ global account_cbs
+ try:
+ (<object>account_cbs["request_add"])("request_add")
+ except KeyError:
+ pass
+
+cdef void *request_authorize (account.PurpleAccount *account, const_char *remote_user, const_char *id, const_char *alias, const_char *message, glib.gboolean on_list, account.PurpleAccountRequestAuthorizationCb authorize_cb, account.PurpleAccountRequestAuthorizationCb deny_cb, void *user_data):
+ debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "account", "request_authorize\n")
+ global account_cbs
+ try:
+ (<object>account_cbs["request_authorize"])("request_authorize")
+ return NULL
+ except KeyError:
+ pass
+
+cdef void close_account_request (void *ui_handle):
+ debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "account", "close_account_request\n")
+ global account_cbs
+ try:
+ (<object>account_cbs["close_account_request"])("close_account_request")
+ except KeyError:
+ pass
cdef extern from "time.h":
ctypedef long int time_t
-conversations_cbs = {}
+conversation_cbs = {}
cdef void create_conversation (conversation.PurpleConversation *conv):
debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "conversation", "create_conversation\n")
- global conversations_cbs
+ global conversation_cbs
try:
- (<object>conversations_cbs["create_conversation"])("create_conversation")
+ (<object>conversation_cbs["create_conversation"])("create_conversation")
except KeyError:
pass
cdef void destroy_conversation (conversation.PurpleConversation *conv):
debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "conversation", "destroy_conversation\n")
- global conversations_cbs
+ global conversation_cbs
try:
- (<object>conversations_cbs["destroy_conversation"])("destroy_conversation")
+ (<object>conversation_cbs["destroy_conversation"])("destroy_conversation")
except KeyError:
pass
const_char *message, conversation.PurpleMessageFlags flags,
time_t mtime):
debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "conversation", "write_chat\n")
- global conversations_cbs
+ global conversation_cbs
try:
- (<object>conversations_cbs["write_chat"])("write_chat")
+ (<object>conversation_cbs["write_chat"])("write_chat")
except KeyError:
pass
const_char *message, conversation.PurpleMessageFlags flags,
time_t mtime):
debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "conversation", "write_im\n")
- global conversations_cbs
+ global conversation_cbs
try:
- (<object>conversations_cbs["write_im"])("write_im")
+ (<object>conversation_cbs["write_im"])("write_im")
except KeyError:
pass
const_char *alias, const_char *message,
conversation.PurpleMessageFlags flags, time_t mtime):
debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "conversation", "write_conv\n")
- global conversations_cbs
+ global conversation_cbs
try:
- (<object>conversations_cbs["write_conv"])("write_conv")
+ (<object>conversation_cbs["write_conv"])("write_conv")
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")
- global conversations_cbs
+ global conversation_cbs
try:
- (<object>conversations_cbs["chat_add_users"])("chat_add_users")
+ (<object>conversation_cbs["chat_add_users"])("chat_add_users")
except KeyError:
pass
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")
- global conversations_cbs
+ global conversation_cbs
try:
- (<object>conversations_cbs["chat_rename_user"])("chat_rename_user")
+ (<object>conversation_cbs["chat_rename_user"])("chat_rename_user")
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")
- global conversations_cbs
+ global conversation_cbs
try:
- (<object>conversations_cbs["chat_remove_users"])("chat_remove_users")
+ (<object>conversation_cbs["chat_remove_users"])("chat_remove_users")
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")
- global conversations_cbs
+ global conversation_cbs
try:
- (<object>conversations_cbs["chat_update_user"])("chat_update_user")
+ (<object>conversation_cbs["chat_update_user"])("chat_update_user")
except KeyError:
pass
cdef void present (conversation.PurpleConversation *conv):
debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "conversation", "present\n")
- global conversations_cbs
+ global conversation_cbs
try:
- (<object>conversations_cbs["present"])("present")
+ (<object>conversation_cbs["present"])("present")
except KeyError:
pass
cdef glib.gboolean has_focus (conversation.PurpleConversation *conv):
debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "conversation", "has_focus\n")
- global conversations_cbs
+ global conversation_cbs
try:
- (<object>conversations_cbs["has_focus"])("has_focus")
+ (<object>conversation_cbs["has_focus"])("has_focus")
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")
- global conversations_cbs
+ global conversation_cbs
try:
- (<object>conversations_cbs["custom_smiley_add"])("custom_smiley_add")
+ (<object>conversation_cbs["custom_smiley_add"])("custom_smiley_add")
return False
except KeyError:
return False
glib.gsize size):
debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "conversation", "custom_smiley_write\n")
try:
- (<object>conversations_cbs["custom_smiley_write"])("custom_smiley_write")
+ (<object>conversation_cbs["custom_smiley_write"])("custom_smiley_write")
except KeyError:
pass
const_char *smile):
debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "conversation", "custom_smiley_close\n")
try:
- (<object>conversations_cbs["custom_smiley_close"])("custom_smiley_close")
+ (<object>conversation_cbs["custom_smiley_close"])("custom_smiley_close")
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:
- (<object>conversations_cbs["send_confirm"])("send_confirm")
+ (<object>conversation_cbs["send_confirm"])("send_confirm")
except KeyError:
pass
#
cimport glib
+
cimport proxy
+cimport status
+
+cdef extern from *:
+ ctypedef char const_char "const char"
cdef extern from "libpurple/account.h":
+ ctypedef void (*PurpleAccountRequestAuthorizationCb) (void *)
+
ctypedef struct PurpleAccount:
char *username
char *alias
char *protocol_id
ctypedef struct PurpleAccountUiOps:
- pass
+ void (*notify_added) (PurpleAccount *account, const_char *remote_user, \
+ const_char *id, const_char *alias, const_char *message)
+ void (*status_changed) (PurpleAccount *account, \
+ status.PurpleStatus *status)
+ void (*request_add) (PurpleAccount *account, const_char *remote_user, \
+ const_char *id, const_char *alias, const_char *message)
+ void *(*request_authorize) (PurpleAccount *account, \
+ const_char *remote_user, const_char *id, const_char *alias, \
+ const_char *message, glib.gboolean on_list, \
+ PurpleAccountRequestAuthorizationCb authorize_cb, \
+ PurpleAccountRequestAuthorizationCb deny_cb, void *user_data)
+ void (*close_account_request) (void *ui_handle)
PurpleAccount *c_purple_account_new "purple_account_new" \
(char *username, char *protocol_id)
cimport glib
cdef extern from "libpurple/status.h":
+ ctypedef struct PurpleStatus
+
ctypedef struct PurplePresence:
pass
import sys
cbs = {}
+acc_cbs = {}
conv_cbs = {}
-def callback(name):
- print "---- callback example: %s" % name
-
-conv_cbs["create_conversation"] = callback
-conv_cbs["destroy_conversation"] = callback
-conv_cbs["write_chat"] = callback
-conv_cbs["write_im"] = callback
-conv_cbs["write_conv"] = callback
-conv_cbs["chat_add_users"] = callback
-conv_cbs["chat_rename_user"] = callback
-conv_cbs["chat_remove_users"] = callback
-conv_cbs["chat_update_user"] = callback
-conv_cbs["present"] = callback
-conv_cbs["has_focus"] = callback
-conv_cbs["custom_smiley_add"] = callback
-conv_cbs["custom_smiley_write"] = callback
-conv_cbs["custom_smiley_close"] = callback
-conv_cbs["send_confirm"] = callback
+def account_callback(name):
+ print "---- account callback example: %s" % name
+
+acc_cbs["notify_added"] = account_callback
+acc_cbs["status_changed"] = account_callback
+acc_cbs["request_add"] = account_callback
+acc_cbs["request_authorize"] = account_callback
+acc_cbs["close_account_request"] = account_callback
+
+cbs["account"] = acc_cbs
+
+def conv_callback(name):
+ print "---- conversation callback example: %s" % name
+
+conv_cbs["create_conversation"] = conv_callback
+conv_cbs["destroy_conversation"] = conv_callback
+conv_cbs["write_chat"] = conv_callback
+conv_cbs["write_im"] = conv_callback
+conv_cbs["write_conv"] = conv_callback
+conv_cbs["chat_add_users"] = conv_callback
+conv_cbs["chat_rename_user"] = conv_callback
+conv_cbs["chat_remove_users"] = conv_callback
+conv_cbs["chat_update_user"] = conv_callback
+conv_cbs["present"] = conv_callback
+conv_cbs["has_focus"] = conv_callback
+conv_cbs["custom_smiley_add"] = conv_callback
+conv_cbs["custom_smiley_write"] = conv_callback
+conv_cbs["custom_smiley_close"] = conv_callback
+conv_cbs["send_confirm"] = conv_callback
cbs["conversation"] = conv_cbs
__APP_VERSION__ = "0.1"
cdef core.PurpleCoreUiOps c_core_ui_ops
+cdef account.PurpleAccountUiOps c_account_ui_ops
cdef conversation.PurpleConversationUiOps c_conv_ui_ops
cdef eventloop.PurpleEventLoopUiOps c_eventloop_ui_ops
cdef glib.GHashTable *c_ui_info
c_ui_info = NULL
+include "account_cbs.pxd"
include "conversation_cbs.pxd"
cdef class Purple:
cdef void __core_ui_ops_ui_init(self):
debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "core_ui_ops", "ui_init\n")
+ global c_account_ui_ops
global c_conv_ui_ops
+ account.c_purple_accounts_set_ui_ops(&c_account_ui_ops)
conversation.c_purple_conversations_set_ui_ops(&c_conv_ui_ops)
# FIXME: Add core ui initialization here
def purple_init(self, callbacks_dict=None):
""" Initializes libpurple """
+ global c_account_ui_ops
global c_conv_ui_ops
global c_core_ui_ops
global c_eventloop_ui_ops
if callbacks_dict is not None:
- global conversations_cbs
- conversations_cbs = callbacks_dict["conversation"]
+ global account_cbs
+ global conversation_cbs
+
+ account_cbs = callbacks_dict["account"]
+ conversation_cbs = callbacks_dict["conversation"]
+
+ c_account_ui_ops.notify_added = notify_added
+ c_account_ui_ops.status_changed = status_changed
+ c_account_ui_ops.request_add = request_add
+ c_account_ui_ops.request_authorize = request_authorize
+ c_account_ui_ops.close_account_request = close_account_request
c_conv_ui_ops.create_conversation = create_conversation
c_conv_ui_ops.destroy_conversation = destroy_conversation