+++ /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/>.
-#
-
-class ProxyType:
- def __init__(self):
- self.PROXY_USE_GLOBAL = -1
- self.PROXY_NONE = 0
- self.PROXY_HTTP = 1
- self.PROXY_SOCKS4 = 2
- self.PROXY_SOCKS5 = 3
- self.PROXY_USE_ENVVAR = 4
-
-
-class StatusPrimitive:
- def __init__(self):
- self.STAUTS_UNSET = 0
- self.STATUS_OFFLINE = 1
- self.STATUS_AVAILABLE = 2
- self.STATUS_UNAVAILABLE = 3
- self.STATUS_INVISIBLE = 4
- self.STATUS_AWAY = 5
- self.STATUS_EXTENDED_AWAY = 6
- self.STATUS_MOBILE = 7
- self.STATUS_TUNE = 8
- self.STATUS_NUN_PRIMITIVE = 9
-
-cdef class Account:
- """ Account class """
- cdef PurpleAccount *__account
- cdef PurpleSavedStatus *__sstatus
-
- def __cinit__(self, const_char_ptr username, const_char_ptr protocol_id):
- self.__account = c_purple_account_new(username, protocol_id)
-
- def set_password(self, password):
- c_purple_account_set_password(self.__account, password)
-
- def set_enabled(self, ui, value):
- c_purple_account_set_enabled(self.__account, ui, value)
-
- def get_acc_username(self):
- if self.__account:
- return c_purple_account_get_username(self.__account)
-
- def get_password(self):
- if self.__account:
- return c_purple_account_get_password(self.__account)
-
- def set_status(self):
- self.__sstatus = c_purple_savedstatus_new(NULL, StatusPrimitive().STATUS_AVAILABLE)
- c_purple_savedstatus_activate(self.__sstatus)
-
- def get_buddies_online(self, account):
- cdef GSList *iter
- cdef PurpleBuddy *buddy
- buddies = []
- iter = c_purple_find_buddies(self.__account, NULL)
- while iter:
- buddy = <PurpleBuddy *>iter.data
- if buddy and \
- c_purple_account_is_connected(c_purple_buddy_get_account(buddy)) and \
- c_purple_presence_is_online(c_purple_buddy_get_presence(buddy)):
- buddies += [buddy.name]
- iter = iter.next
- return buddies
--- /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 glib
+
+cimport account
+cimport blist
+cimport savedstatuses
+cimport status
+
+cdef class Account:
+ """ Account class """
+ cdef account.PurpleAccount *__account
+ cdef savedstatuses.PurpleSavedStatus *__sstatus
+
+ def __cinit__(self, char *username, char *protocol_id):
+ self.__account = account.c_purple_account_new(username, protocol_id)
+
+ def set_password(self, password):
+ account.c_purple_account_set_password(self.__account, password)
+
+ def set_enabled(self, ui, value):
+ account.c_purple_account_set_enabled(self.__account, ui, value)
+
+ def get_acc_username(self):
+ if self.__account:
+ return account.c_purple_account_get_username(self.__account)
+
+ def get_password(self):
+ if self.__account:
+ return account.c_purple_account_get_password(self.__account)
+
+ def set_status(self):
+ self.__sstatus = savedstatuses.c_purple_savedstatus_new(NULL, status.PURPLE_STATUS_AVAILABLE)
+ savedstatuses.c_purple_savedstatus_activate(self.__sstatus)
+
+ def get_buddies_online(self, acc):
+ cdef glib.GSList *iter
+ cdef blist.PurpleBuddy *buddy
+ buddies = []
+ iter = blist.c_purple_find_buddies(self.__account, NULL)
+ while iter:
+ buddy = <blist.PurpleBuddy *> iter.data
+ if <object> buddy and \
+ account.c_purple_account_is_connected(blist.c_purple_buddy_get_account(buddy)) and \
+ status.c_purple_presence_is_online(blist.c_purple_buddy_get_presence(buddy)):
+ buddies += [buddy.name]
+ iter = iter.next
+ return buddies
+++ /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/>.
-#
-
-cdef class Buddy:
- """ Buddy class """
- cdef PurpleBuddy *__buddy
-
- def __cinit__(self):
- self.__buddy = NULL
-
- def new_buddy(self, acc, const_char_ptr scr, const_char_ptr alias):
- self.__buddy = c_purple_buddy_new(<PurpleAccount *>acc.__account, scr, alias)
-
- def get_alias(self):
- return c_purple_buddy_get_alias_only(self.__buddy)
-
- def get_name(self):
- return c_purple_buddy_get_name(self.__buddy)
--- /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 blist
+
+cdef class Buddy:
+ """ Buddy class """
+ cdef blist.PurpleBuddy *__buddy
+
+ def __cinit__(self):
+ self.__buddy = NULL
+
+ def new_buddy(self, acc, char *scr, char *alias):
+ self.__buddy = blist.c_purple_buddy_new(<account.PurpleAccount *>acc.__account, scr, alias)
+
+ def get_alias(self):
+ return blist.c_purple_buddy_get_alias_only(self.__buddy)
+
+ def get_name(self):
+ return blist.c_purple_buddy_get_name(self.__buddy)
+++ /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/>.
-#
-
-cdef class Connection:
- """ Connection class """
- cdef PurpleConnection *__conn
-
- def connect(self):
- connect_to_signals_for_demonstration_purposes_only()
--- /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 connection
+
+cdef class Connection:
+ """ Connection class """
+ cdef connection.PurpleConnection *__conn
+
+ def connect(self):
+ connect_to_signals_for_demonstration_purposes_only()
+++ /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/>.
-#
-
-cdef class Conversation:
- """ Conversation class """
- cdef PurpleConversation *__conv
-
- def __cinit__(self):
- c_purple_conversations_init()
-
- def conversation_new(self, type, acc, const_char_ptr name):
- self.__conv = c_purple_conversation_new(type, <PurpleAccount*>acc.__account, name)
-
- def conversation_set_ui_ops(self):
- cdef PurpleConversationUiOps c_conv_ui_ops
- c_conv_ui_ops.create_conversation = NULL
- c_conv_ui_ops.destroy_conversation = NULL
- c_conv_ui_ops.write_chat = NULL
- c_conv_ui_ops.write_im = NULL
- c_conv_ui_ops.write_conv = NULL
- c_conv_ui_ops.chat_add_users = NULL
- c_conv_ui_ops.chat_rename_user = NULL
- c_conv_ui_ops.chat_remove_users = NULL
- c_conv_ui_ops.chat_update_user = NULL
- c_conv_ui_ops.present = NULL
- c_conv_ui_ops.has_focus = NULL
- c_conv_ui_ops.custom_smiley_add = NULL
- c_conv_ui_ops.custom_smiley_write = NULL
- c_conv_ui_ops.custom_smiley_close = NULL
- c_conv_ui_ops.send_confirm = NULL
-
- c_purple_conversation_set_ui_ops(self.__conv, &c_conv_ui_ops)
-
- def conversation_write(self, const_char_ptr message):
- c_purple_conv_im_send(c_purple_conversation_get_im_data(self.__conv), message)
-
- def conversation_destroy(self):
- c_purple_conversation_destroy(self.__conv)
-
- def conversation_get_handle(self):
- c_purple_conversations_get_handle()
-
- def send_message(self, buddy, const_char_ptr message):
- self.conversation_new(1, buddy.account, buddy.name)
- self.conversation_set_ui_ops()
- self.conversation_write(message)
--- /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 conversation
+
+cdef class Conversation:
+ """ Conversation class """
+ cdef conversation.PurpleConversation *__conv
+
+ def __cinit__(self):
+ conversation.c_purple_conversations_init()
+
+ def conversation_new(self, type, acc, char *name):
+ self.__conv = conversation.c_purple_conversation_new(type, <account.PurpleAccount*>acc.__account, name)
+
+ def conversation_set_ui_ops(self):
+ cdef conversation.PurpleConversationUiOps c_conv_ui_ops
+ c_conv_ui_ops.create_conversation = NULL
+ c_conv_ui_ops.destroy_conversation = NULL
+ c_conv_ui_ops.write_chat = NULL
+ c_conv_ui_ops.write_im = NULL
+ c_conv_ui_ops.write_conv = NULL
+ c_conv_ui_ops.chat_add_users = NULL
+ c_conv_ui_ops.chat_rename_user = NULL
+ c_conv_ui_ops.chat_remove_users = NULL
+ c_conv_ui_ops.chat_update_user = NULL
+ c_conv_ui_ops.present = NULL
+ c_conv_ui_ops.has_focus = NULL
+ c_conv_ui_ops.custom_smiley_add = NULL
+ c_conv_ui_ops.custom_smiley_write = NULL
+ c_conv_ui_ops.custom_smiley_close = NULL
+ c_conv_ui_ops.send_confirm = NULL
+
+ conversation.c_purple_conversation_set_ui_ops(self.__conv, &c_conv_ui_ops)
+
+ def conversation_write(self, char *message):
+ conversation.c_purple_conv_im_send(conversation.c_purple_conversation_get_im_data(self.__conv), message)
+
+ def conversation_destroy(self):
+ conversation.c_purple_conversation_destroy(self.__conv)
+
+ def conversation_get_handle(self):
+ conversation.c_purple_conversations_get_handle()
+
+ def send_message(self, buddy, char *message):
+ self.conversation_new(1, buddy.account, buddy.name)
+ self.conversation_set_ui_ops()
+ self.conversation_write(message)
+++ /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/>.
-#
-
-cdef extern from "glib.h":
- ctypedef void *gpointer
- ctypedef void *gconstpointer
- ctypedef int gint
- ctypedef unsigned int guint
- ctypedef unsigned long gulong
- ctypedef gint gboolean
- ctypedef gboolean (*GSourceFunc) (gpointer data)
- ctypedef unsigned int gsize
-
- ctypedef struct GHashTable:
- pass
-
- ctypedef struct GMainContext:
- pass
-
- struct _GSList:
- gpointer data
- _GSList *next
- ctypedef _GSList GSList
-
- struct _GList:
- gpointer data
- _GList *next
- _GList *prev
- ctypedef _GList GList
-
- ctypedef guint GHashFunc (gconstpointer)
- ctypedef gboolean GEqualFunc (gconstpointer, gconstpointer)
-
- gboolean g_str_equal (gconstpointer, gconstpointer)
- guint g_str_hash (gconstpointer)
-
- GHashTable *g_hash_table_new (GHashFunc, GEqualFunc)
- void g_hash_table_insert (GHashTable*, gpointer, gpointer)
- void g_hash_table_destroy (GHashTable*)
-
- guint g_timeout_add(guint interval, GSourceFunc function, gpointer data)
- guint g_timeout_add_seconds(guint interval, GSourceFunc function, gpointer data)
-
- gboolean g_main_context_iteration (GMainContext *context, gboolean may_block)
-
- gboolean g_source_remove(guint tag)
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
+cimport glib
+
cdef extern from "libpurple/account.h":
ctypedef struct PurpleAccount:
char* username
ctypedef struct PurpleAccountUiOps:
pass
- PurpleAccount *c_purple_account_new "purple_account_new" (const_char_ptr username, const_char_ptr protocol_id)
- void c_purple_account_set_password "purple_account_set_password" (PurpleAccount *account, const_char_ptr password)
- const_char_ptr c_purple_account_get_password "purple_account_get_password" (PurpleAccount *account)
- void c_purple_account_set_enabled "purple_account_set_enabled" (PurpleAccount *account, const_char_ptr ui, gboolean value)
- const_char_ptr c_purple_account_get_username "purple_account_get_username" (PurpleAccount *account)
- GList *c_purple_accounts_get_all_active "purple_accounts_get_all_active" ()
+ PurpleAccount *c_purple_account_new "purple_account_new" (char *username, char *protocol_id)
+ void c_purple_account_set_password "purple_account_set_password" (PurpleAccount *account, char *password)
+ char *c_purple_account_get_password "purple_account_get_password" (PurpleAccount *account)
+ void c_purple_account_set_enabled "purple_account_set_enabled" (PurpleAccount *account, char *ui, glib.gboolean value)
+ char *c_purple_account_get_username "purple_account_get_username" (PurpleAccount *account)
+ glib.GList *c_purple_accounts_get_all_active "purple_accounts_get_all_active" ()
void c_purple_accounts_set_ui_ops "purple_accounts_set_ui_ops" (PurpleAccountUiOps *ops)
- gboolean c_purple_account_is_connected "purple_account_is_connected" (PurpleAccount *account)
+ glib.gboolean c_purple_account_is_connected "purple_account_is_connected" (PurpleAccount *account)
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
+cimport glib
+cimport account
+cimport status
+
cdef extern from "libpurple/blist.h":
ctypedef struct PurpleBlistNode:
pass
ctypedef struct PurpleBlistUiOps:
pass
- cdef struct _PurpleBuddy:
+ ctypedef struct PurpleBuddy:
char *name
- ctypedef _PurpleBuddy PurpleBuddy
-
ctypedef struct PurpleBuddyList:
pass
PurpleBuddyList* c_purple_blist_new "purple_blist_new" ()
void c_purple_blist_set_ui_ops "purple_blist_set_ui_ops" (PurpleBlistUiOps *ops)
- PurpleBuddy *c_purple_buddy_new "purple_buddy_new" (PurpleAccount *account,
- const_char_ptr screenname, const_char_ptr alias)
- const_char_ptr c_purple_buddy_get_alias_only "purple_buddy_get_alias_only" (PurpleBuddy *buddy)
- const_char_ptr c_purple_buddy_get_name "purple_buddy_get_name" (PurpleBuddy *buddy)
- PurpleBuddy *c_purple_find_buddy "purple_find_buddy" (PurpleAccount *account,
- const_char_ptr name)
+ PurpleBuddy *c_purple_buddy_new "purple_buddy_new" (account.PurpleAccount *account,
+ char *screenname, char *alias)
+ char *c_purple_buddy_get_alias_only "purple_buddy_get_alias_only" (PurpleBuddy *buddy)
+ char *c_purple_buddy_get_name "purple_buddy_get_name" (PurpleBuddy *buddy)
+ PurpleBuddy *c_purple_find_buddy "purple_find_buddy" (account.PurpleAccount *account, char *name)
void c_purple_set_blist "purple_set_blist" (PurpleBuddyList *list)
- GSList *c_purple_find_buddies "purple_find_buddies" (PurpleAccount *account, const_char_ptr name)
- PurpleAccount *c_purple_buddy_get_account "purple_buddy_get_account" (PurpleBuddy *buddy)
- PurplePresence *c_purple_buddy_get_presence "purple_buddy_get_presence" (PurpleBuddy *buddy)
+ glib.GSList *c_purple_find_buddies "purple_find_buddies" (account.PurpleAccount *account, char *name)
+ account.PurpleAccount *c_purple_buddy_get_account "purple_buddy_get_account" (PurpleBuddy *buddy)
+ status.PurplePresence *c_purple_buddy_get_presence "purple_buddy_get_presence" (PurpleBuddy *buddy)
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
+cimport glib
+
+cimport account
+
+cdef extern from "time.h":
+ ctypedef long int time_t
+
cdef extern from "libpurple/conversation.h":
ctypedef struct PurpleConversation:
pass
ctypedef struct PurpleConversationUiOps:
void (*create_conversation) (PurpleConversation *conv)
void (*destroy_conversation) (PurpleConversation *conv)
- void (*write_chat) (PurpleConversation *conv, const_char_ptr who, const_char_ptr message, PurpleMessageFlags flags, time_t mtime)
- void (*write_im) (PurpleConversation *conv, const_char_ptr who, const_char_ptr message, PurpleMessageFlags flags, time_t mtime)
- void (*write_conv) (PurpleConversation *conv, const_char_ptr name, const_char_ptr alias, const_char_ptr message, PurpleMessageFlags flags, time_t mtime)
- void (*chat_add_users) (PurpleConversation *conv, GList *cbuddies, gboolean new_arrivals)
- void (*chat_rename_user) (PurpleConversation *conv, const_char_ptr old_name, const_char_ptr new_name, const_char_ptr new_alias)
- void (*chat_remove_users) (PurpleConversation *conv, GList *users)
- void (*chat_update_user) (PurpleConversation *conv, const_char_ptr user)
+ void (*write_chat) (PurpleConversation *conv, char *who, char *message, PurpleMessageFlags flags, time_t mtime)
+ void (*write_im) (PurpleConversation *conv, char *who, char *message, PurpleMessageFlags flags, time_t mtime)
+ void (*write_conv) (PurpleConversation *conv, char *name, char *alias, char *message, PurpleMessageFlags flags, time_t mtime)
+ void (*chat_add_users) (PurpleConversation *conv, glib.GList *cbuddies, glib.gboolean new_arrivals)
+ void (*chat_rename_user) (PurpleConversation *conv, char *old_name, char *new_name, char *new_alias)
+ void (*chat_remove_users) (PurpleConversation *conv, glib.GList *users)
+ void (*chat_update_user) (PurpleConversation *conv, char *user)
void (*present) (PurpleConversation *conv)
- gboolean (*has_focus) (PurpleConversation *conv)
- gboolean (*custom_smiley_add) (PurpleConversation *conv, const_char_ptr smile, gboolean remote)
- void (*custom_smiley_write) (PurpleConversation *conv, const_char_ptr smile, const_guchar_ptr data, gsize size)
- void (*custom_smiley_close) (PurpleConversation *conv, const_char_ptr smile)
- void (*send_confirm) (PurpleConversation *conv, const_char_ptr message)
+ glib.gboolean (*has_focus) (PurpleConversation *conv)
+ glib.gboolean (*custom_smiley_add) (PurpleConversation *conv, char *smile, glib.gboolean remote)
+ void (*custom_smiley_write) (PurpleConversation *conv, char *smile, glib.guchar *data, glib.gsize size)
+ void (*custom_smiley_close) (PurpleConversation *conv, char *smile)
+ void (*send_confirm) (PurpleConversation *conv, char *message)
void c_purple_conversations_init "purple_conversations_init" ()
void *c_purple_conversations_get_handle "purple_conversations_get_handle" ()
- PurpleConversation *c_purple_conversation_new "purple_conversation_new" (int type, PurpleAccount *account, const_char_ptr name)
+ PurpleConversation *c_purple_conversation_new "purple_conversation_new" (int type, account.PurpleAccount *account, char *name)
void c_purple_conversation_set_ui_ops "purple_conversation_set_ui_ops" (PurpleConversation *conv, PurpleConversationUiOps *ops)
void c_purple_conversations_set_ui_ops "purple_conversations_set_ui_ops" (PurpleConversationUiOps *ops)
PurpleConvIm *c_purple_conversation_get_im_data "purple_conversation_get_im_data" (PurpleConversation *conv)
- void c_purple_conv_im_send "purple_conv_im_send" (PurpleConvIm *im, const_char_ptr message)
+ void c_purple_conv_im_send "purple_conv_im_send" (PurpleConvIm *im, char *message)
void c_purple_conversation_destroy "purple_conversation_destroy" (PurpleConversation *conv)
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
+cimport glib
+
cdef extern from "libpurple/core.h":
ctypedef struct PurpleCoreUiOps:
void (*ui_prefs_init) ()
void (*debug_ui_init) ()
void (*ui_init) ()
void (*quit) ()
- GHashTable* (*get_ui_info) ()
+ glib.GHashTable* (*get_ui_info) ()
- gboolean c_purple_core_init "purple_core_init" (const_char_ptr ui_name)
+ glib.gboolean c_purple_core_init "purple_core_init" (char *ui_name)
void c_purple_core_quit "purple_core_quit" ()
void c_purple_core_set_ui_ops "purple_core_set_ui_ops" (PurpleCoreUiOps *ops)
- gboolean c_purple_core_ensure_single_instance "purple_core_ensure_single_instance" ()
+ glib.gboolean c_purple_core_ensure_single_instance "purple_core_ensure_single_instance" ()
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
+cimport glib
+
cdef extern from "libpurple/debug.h":
ctypedef enum PurpleDebugLevel:
PURPLE_DEBUG_ALL
PURPLE_DEBUG_ERROR
PURPLE_DEBUG_FATAL
- void c_purple_debug "purple_debug" (PurpleDebugLevel level, const_char_ptr category, const_char_ptr format)
- void c_purple_debug_set_enabled "purple_debug_set_enabled" (gboolean debug_enabled)
+ void c_purple_debug "purple_debug" (PurpleDebugLevel level, char *category, char *format)
+ void c_purple_debug_set_enabled "purple_debug_set_enabled" (glib.gboolean debug_enabled)
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
+cimport glib
+
cdef extern from "libpurple/eventloop.h":
ctypedef enum PurpleInputCondition:
PURPLE_INPUT_READ
PURPLE_INPUT_WRITE
- ctypedef void (*PurpleInputFunction) (gpointer, gint, PurpleInputCondition)
+ ctypedef void (*PurpleInputFunction) (glib.gpointer, glib.gint, PurpleInputCondition)
ctypedef struct PurpleEventLoopUiOps:
- guint (*timeout_add) (guint interval, GSourceFunc function, gpointer data)
- gboolean (*timeout_remove) (guint handle)
- guint (*input_add) (int fd, PurpleInputCondition cond, PurpleInputFunction func, gpointer user_data)
- gboolean (*input_remove) (guint handle)
+ glib.guint (*timeout_add) (glib.guint interval, glib.GSourceFunc function, glib.gpointer data)
+ glib.gboolean (*timeout_remove) (glib.guint handle)
+ glib.guint (*input_add) (int fd, PurpleInputCondition cond, PurpleInputFunction func, glib.gpointer user_data)
+ glib.gboolean (*input_remove) (glib.guint handle)
int (*input_get_error) (int fd, int *error)
- guint (*timeout_add_seconds)(guint interval, GSourceFunc function, gpointer data)
+ glib.guint (*timeout_add_seconds) (glib.guint interval, glib.GSourceFunc function, glib.gpointer data)
void c_purple_eventloop_set_ui_ops "purple_eventloop_set_ui_ops" (PurpleEventLoopUiOps *ops)
--- /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/>.
+#
+
+cdef extern from "glib.h":
+ ctypedef void *gpointer
+ ctypedef void *gconstpointer
+ ctypedef int gint
+ ctypedef unsigned int guint
+ ctypedef unsigned long gulong
+ ctypedef gint gboolean
+ ctypedef gboolean (*GSourceFunc) (gpointer data)
+ ctypedef unsigned int gsize
+ ctypedef char gchar
+ ctypedef unsigned char guchar
+
+ ctypedef struct GHashTable:
+ pass
+
+ ctypedef struct GMainContext:
+ pass
+
+ struct _GSList:
+ gpointer data
+ _GSList *next
+ ctypedef _GSList GSList
+
+ struct _GList:
+ gpointer data
+ _GList *next
+ _GList *prev
+ ctypedef _GList GList
+
+ ctypedef guint GHashFunc (gconstpointer)
+ ctypedef gboolean GEqualFunc (gconstpointer, gconstpointer)
+
+ gboolean g_str_equal (gconstpointer, gconstpointer)
+ guint g_str_hash (gconstpointer)
+
+ GHashTable *g_hash_table_new (GHashFunc, GEqualFunc)
+ void g_hash_table_insert (GHashTable*, gpointer, gpointer)
+ void g_hash_table_destroy (GHashTable*)
+
+ guint g_timeout_add(guint interval, GSourceFunc function, gpointer data)
+ guint g_timeout_add_seconds(guint interval, GSourceFunc function, gpointer data)
+
+ gboolean g_main_context_iteration (GMainContext *context, gboolean may_block)
+
+ gboolean g_source_remove(guint tag)
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
+cimport glib
+
cdef extern from "libpurple/plugin.h":
ctypedef struct PurplePluginInfo:
char *id
ctypedef struct PurplePlugin:
PurplePluginInfo *info
- void c_purple_plugins_add_search_path "purple_plugins_add_search_path" (const_char_ptr path)
- GList *c_purple_plugins_get_protocols "purple_plugins_get_protocols" ()
+ void c_purple_plugins_add_search_path "purple_plugins_add_search_path" (char *path)
+ glib.GList *c_purple_plugins_get_protocols "purple_plugins_get_protocols" ()
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
+cimport glib
+
cdef extern from "libpurple/pounce.h":
- gboolean c_purple_pounces_load "purple_pounces_load" ()
+ glib.gboolean c_purple_pounces_load "purple_pounces_load" ()
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
+cimport glib
+
cdef extern from "libpurple/prefs.h":
- void c_purple_prefs_add_none "purple_prefs_add_none" (const_char_ptr name)
- void c_purple_prefs_rename "purple_prefs_rename" (const_char_ptr oldname, const_char_ptr newname)
- const_char_ptr c_purple_prefs_get_string "purple_prefs_get_string" (const_char_ptr name)
- gboolean c_purple_prefs_load "purple_prefs_load" ()
+ void c_purple_prefs_add_none "purple_prefs_add_none" (char *name)
+ void c_purple_prefs_rename "purple_prefs_rename" (char *oldname, char *newname)
+ char *c_purple_prefs_get_string "purple_prefs_get_string" (char *name)
+ glib.gboolean c_purple_prefs_load "purple_prefs_load" ()
PurpleProxyInfo *c_purple_proxy_info_new "purple_proxy_info_new" ()
void c_purple_proxy_info_set_type "purple_proxy_info_set_type" (PurpleProxyInfo *info, PurpleProxyType type)
- void c_purple_proxy_info_set_host "purple_proxy_info_set_host" (const_char_ptr host)
- void c_purple_proxy_info_set_port "purple_proxy_info_set_port" (const_char_ptr port)
+ void c_purple_proxy_info_set_host "purple_proxy_info_set_host" (char *host)
+ void c_purple_proxy_info_set_port "purple_proxy_info_set_port" (char *port)
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
+cimport status
+
cdef extern from "libpurple/savedstatuses.h":
ctypedef struct PurpleSavedStatus:
pass
- PurpleSavedStatus *c_purple_savedstatus_new "purple_savedstatus_new" (const_char_ptr title, PurpleStatusPrimitive type)
+ PurpleSavedStatus *c_purple_savedstatus_new "purple_savedstatus_new" (char *title, status.PurpleStatusPrimitive type)
void c_purple_savedstatus_activate "purple_savedstatus_activate" (PurpleSavedStatus *saved_status)
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
+cimport glib
+
cdef extern from "libpurple/signals.h":
ctypedef void (*PurpleCallback) ()
- gulong c_purple_signal_connect "purple_signal_connect" (void *instance,
- const_char_ptr signal, void *handle, PurpleCallback func,
+ glib.gulong c_purple_signal_connect "purple_signal_connect" (void *instance,
+ char *signal, void *handle, PurpleCallback func,
void *data)
void c_purple_signal_disconnect "purple_signal_disconnect" (void *instance,
- const_char_ptr signal, void *handle, PurpleCallback func)
+ char *signal, void *handle, PurpleCallback func)
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
+cimport glib
+
cdef extern from "libpurple/status.h":
ctypedef struct PurplePresence:
pass
- ctypedef int PurpleStatusPrimitive
+ ctypedef enum PurpleStatusPrimitive:
+ PURPLE_STATUS_UNSET
+ PURPLE_STATUS_OFFLINE
+ PURPLE_STATUS_AVAILABLE
+ PURPLE_STATUS_UNAVAILABLE
+ PURPLE_STATUS_INVISIBLE
+ PURPLE_STATUS_AWAY
+ PURPLE_STATUS_EXTENDED_AWAY
+ PURPLE_STATUS_MOBILE
+ PURPLE_STATUS_TUNE
+ PURPLE_STATUS_NUN_PRIMITIVE
- gboolean c_purple_presence_is_online "purple_presence_is_online" (PurplePresence *presence)
+ glib.gboolean c_purple_presence_is_online "purple_presence_is_online" (PurplePresence *presence)
#
cdef extern from "libpurple/util.h":
- void *c_purple_markup_strip_html "purple_markup_strip_html" (const_char_ptr str)
+ void *c_purple_markup_strip_html "purple_markup_strip_html" (char *str)
void c_purple_util_set_user_dir "purple_util_set_user_dir" (char *dir)
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
-include "glib.pxd"
-
-cdef extern from *:
- ctypedef char* const_char_ptr "const char *"
- ctypedef char* const_guchar_ptr "const guchar *"
-
-cdef extern from "time.h":
- ctypedef long int time_t
-
-include "libpurple/account.pxd"
-include "libpurple/buddyicon.pxd"
-include "libpurple/blist.pxd"
-include "libpurple/connection.pxd"
-include "libpurple/conversation.pxd"
-include "libpurple/core.pxd"
-include "libpurple/debug.pxd"
-include "libpurple/eventloop.pxd"
-include "libpurple/ft.pxd"
-include "libpurple/idle.pxd"
-include "libpurple/notify.pxd"
-include "libpurple/plugin.pxd"
-include "libpurple/pounce.pxd"
-include "libpurple/prefs.pxd"
-include "libpurple/proxy.pxd"
-include "libpurple/request.pxd"
-include "libpurple/roomlist.pxd"
-include "libpurple/signals.pxd"
-include "libpurple/status.pxd"
-include "libpurple/savedstatuses.pxd"
-include "libpurple/util.pxd"
+cdef extern from "libpurple/purple.h":
+ pass
+
+cimport glib
+
+cimport account
+cimport buddyicon
+cimport blist
+cimport connection
+cimport conversation
+cimport core
+cimport debug
+cimport eventloop
+cimport ft
+cimport idle
+cimport notify
+cimport plugin
+cimport pounce
+cimport prefs
+cimport proxy
+cimport request
+cimport roomlist
+cimport signals
+cimport status
+cimport savedstatuses
+cimport util
cdef extern from "c_purple.h":
void connect_to_signals_for_demonstration_purposes_only ()
- guint glib_input_add(gint fd, PurpleInputCondition condition, PurpleInputFunction function, gpointer data)
+ glib.guint glib_input_add(glib.gint fd, eventloop.PurpleInputCondition condition, eventloop.PurpleInputFunction function, glib.gpointer data)
import ecore
cdef class Purple:
""" Purple class """
- cdef PurpleCoreUiOps c_core_ui_ops
- cdef PurpleEventLoopUiOps c_eventloop_ui_ops
- cdef GHashTable *c_ui_info
+ cdef core.PurpleCoreUiOps c_core_ui_ops
+ cdef eventloop.PurpleEventLoopUiOps c_eventloop_ui_ops
+ cdef glib.GHashTable *c_ui_info
def __cinit__(self, debug_enabled=True, app_name=__APP_NAME__, default_path=__DEFAULT_PATH__):
self.c_ui_info = NULL
if default_path is not __DEFAULT_PATH__:
__DEFAULT_PATH__ = default_path
- c_purple_debug_set_enabled(debug_enabled)
- c_purple_util_set_user_dir(default_path)
- c_purple_plugins_add_search_path(default_path)
+ debug.c_purple_debug_set_enabled(debug_enabled)
+ util.c_purple_util_set_user_dir(default_path)
+ plugin.c_purple_plugins_add_search_path(default_path)
# adds glib iteration inside ecore main loop
ecore.idler_add(self.__glib_iteration_when_idle)
# __cinit__
def __del__(self):
- c_purple_core_quit()
+ core.c_purple_core_quit()
# __del__
cdef void __core_ui_ops_ui_prefs_init(self):
- c_purple_debug(PURPLE_DEBUG_INFO, "core_ui_ops", "ui_prefs_init\n")
- c_purple_prefs_load()
+ debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "core_ui_ops", "ui_prefs_init\n")
+ prefs.c_purple_prefs_load()
- c_purple_prefs_add_none("/carman")
+ prefs.c_purple_prefs_add_none("/carman")
# __core_ui_ops_ui_prefs_init
cdef void __core_ui_ops_debug_init(self):
- c_purple_debug(PURPLE_DEBUG_INFO, "core_ui_ops", "debug_ui_init\n")
+ debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "core_ui_ops", "debug_ui_init\n")
# __core_ui_ops_debug_init
cdef void __core_ui_ops_ui_init(self):
- c_purple_debug(PURPLE_DEBUG_INFO, "core_ui_ops", "ui_init\n")
+ debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "core_ui_ops", "ui_init\n")
# FIXME: Add core ui initialization here
# __core_ui_ops_ui_init
cdef void __core_ui_ops_quit(self):
- c_purple_debug(PURPLE_DEBUG_INFO, "core_ui_ops", "quit\n")
- c_purple_accounts_set_ui_ops(NULL)
- c_purple_connections_set_ui_ops(NULL)
- c_purple_blist_set_ui_ops(NULL)
- c_purple_conversations_set_ui_ops(NULL)
- c_purple_notify_set_ui_ops(NULL)
- c_purple_request_set_ui_ops(NULL)
- c_purple_xfers_set_ui_ops(NULL)
- c_purple_roomlist_set_ui_ops(NULL)
+ debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "core_ui_ops", "quit\n")
+
+ account.c_purple_accounts_set_ui_ops(NULL)
+ connection.c_purple_connections_set_ui_ops(NULL)
+ blist.c_purple_blist_set_ui_ops(NULL)
+ conversation.c_purple_conversations_set_ui_ops(NULL)
+ notify.c_purple_notify_set_ui_ops(NULL)
+ request.c_purple_request_set_ui_ops(NULL)
+ ft.c_purple_xfers_set_ui_ops(NULL)
+ roomlist.c_purple_roomlist_set_ui_ops(NULL)
if self.c_ui_info:
- g_hash_table_destroy(self.c_ui_info)
+ glib.g_hash_table_destroy(self.c_ui_info)
# __core_ui_ops_quit
- cdef GHashTable *__core_ui_ops_get_ui_info(self):
+ cdef glib.GHashTable *__core_ui_ops_get_ui_info(self):
if self.c_ui_info == NULL:
- self.c_ui_info = g_hash_table_new(g_str_hash, g_str_equal)
+ self.c_ui_info = glib.g_hash_table_new(glib.g_str_hash, glib.g_str_equal)
- g_hash_table_insert(self.c_ui_info, "name", <gpointer> __APP_NAME__)
- g_hash_table_insert(self.c_ui_info, "version", <gpointer> __APP_VERSION__)
+ glib.g_hash_table_insert(self.c_ui_info, "name", <glib.gpointer> __APP_NAME__)
+ glib.g_hash_table_insert(self.c_ui_info, "version", <glib.gpointer> __APP_VERSION__)
return self.c_ui_info
# __core_ui_ops_get_ui_info
def __glib_iteration_when_idle(self):
- g_main_context_iteration(NULL, False)
+ glib.g_main_context_iteration(NULL, False)
return True
# __glib_iteration_when_idle
self.c_core_ui_ops.debug_ui_init = <void (*)()> self.__core_ui_ops_debug_init
self.c_core_ui_ops.ui_init = <void (*)()> self.__core_ui_ops_ui_init
self.c_core_ui_ops.quit = <void (*)()> self.__core_ui_ops_quit
- self.c_core_ui_ops.get_ui_info = <GHashTable* (*)()> self.__core_ui_ops_get_ui_info
+ self.c_core_ui_ops.get_ui_info = <glib.GHashTable* (*)()> self.__core_ui_ops_get_ui_info
- c_purple_core_set_ui_ops(&self.c_core_ui_ops)
+ core.c_purple_core_set_ui_ops(&self.c_core_ui_ops)
# initialize c_eventloop_ui_ops structure
- self.c_eventloop_ui_ops.timeout_add = g_timeout_add
- self.c_eventloop_ui_ops.timeout_remove = g_source_remove
+ self.c_eventloop_ui_ops.timeout_add = glib.g_timeout_add
+ self.c_eventloop_ui_ops.timeout_remove = glib.g_source_remove
self.c_eventloop_ui_ops.input_add = glib_input_add
- self.c_eventloop_ui_ops.input_remove = g_source_remove
+ self.c_eventloop_ui_ops.input_remove = glib.g_source_remove
self.c_eventloop_ui_ops.input_get_error = NULL
- self.c_eventloop_ui_ops.timeout_add_seconds = g_timeout_add_seconds
+ self.c_eventloop_ui_ops.timeout_add_seconds = glib.g_timeout_add_seconds
- c_purple_eventloop_set_ui_ops(&self.c_eventloop_ui_ops)
+ eventloop.c_purple_eventloop_set_ui_ops(&self.c_eventloop_ui_ops)
# initialize purple core
- ret = c_purple_core_init(__APP_NAME__)
+ ret = core.c_purple_core_init(__APP_NAME__)
if ret is False:
- c_purple_debug(PURPLE_DEBUG_INFO, "main", "Exiting because libpurple initialization failed.\n")
+ debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "main", "Exiting because libpurple initialization failed.\n")
return False
# check if there is another instance of libpurple running
- if c_purple_core_ensure_single_instance() == False:
- c_purple_debug(PURPLE_DEBUG_INFO, "main", "Exiting because another instance of libpurple is already running.\n")
- c_purple_core_quit()
+ if core.c_purple_core_ensure_single_instance() == False:
+ debug.c_purple_debug(debug.PURPLE_DEBUG_INFO, "main", "Exiting because another instance of libpurple is already running.\n")
+ core.c_purple_core_quit()
return False
# create and load the buddy list
- c_purple_set_blist(c_purple_blist_new())
- c_purple_blist_load()
+ blist.c_purple_set_blist(blist.c_purple_blist_new())
+ blist.c_purple_blist_load()
# load pounces
- c_purple_pounces_load()
+ pounce.c_purple_pounces_load()
return ret
# purple_init
def get_protocols(self):
- cdef GList *iter
- cdef PurplePlugin *plugin
+ cdef glib.GList *iter
+ cdef plugin.PurplePlugin *__plugin
protocols = []
- iter = c_purple_plugins_get_protocols()
+ iter = plugin.c_purple_plugins_get_protocols()
while iter:
- plugin = <PurplePlugin*> iter.data
- if plugin.info and plugin.info.name:
- protocols += [(plugin.info.id, plugin.info.name)]
+ __plugin = <plugin.PurplePlugin*> iter.data
+ if __plugin.info and __plugin.info.name:
+ protocols += [(__plugin.info.id, __plugin.info.name)]
iter = iter.next
return protocols
# get_protocols
# connect
# Purple
-include "account.pxd"
-include "buddy.pxd"
-include "connection.pxd"
-include "conversation.pxd"
+include "account.pyx"
+include "buddy.pyx"
+include "connection.pyx"
+include "conversation.pyx"
#!/usr/bin/env python
import sys
import os
+from glob import glob
from setuptools import setup, find_packages, Extension
from distutils.sysconfig import get_python_inc
class pypurple_build_ext(build_ext):
def finalize_options(self):
build_ext.finalize_options(self)
- self.include_dirs.insert(0, 'include')
+ self.include_dirs.insert(0, 'libpurple')
self.pyrex_include_dirs.extend(self.include_dirs)
setup(
- name = 'python-pypurple',
- version = '0.1',
- author ='Bruno Abinader',
- author_email='bruno.abinader@openbossa.org',
- cmdclass = {'build_ext': pypurple_build_ext},
- ext_modules=[Extension('purple',
- sources=['c_purple.c','purple.pyx'],
- extra_compile_args=cflags,
- extra_link_args=ldflags)])
+ name = 'python-pypurple',
+ version = '0.1',
+ author ='Bruno Abinader',
+ author_email='bruno.abinader@openbossa.org',
+ cmdclass = {'build_ext': pypurple_build_ext},
+ ext_modules=[Extension('purple',
+ sources=['c_purple.c','purple.pyx'],
+ depends=glob('libpurple/*.pxd'),
+ extra_compile_args=cflags,
+ extra_link_args=ldflags)])