From: Ragner Magalhaes Date: Tue, 2 Dec 2008 20:20:15 +0000 (+0000) Subject: All includes now uses cimport. Moved .pxd files from root dir to .pyx files, fixed... X-Git-Url: http://git.maemo.org/git/?p=python-purple;a=commitdiff_plain;h=e7e4e8ff4937aed9c1b732719bc310c3e8a88f5e;hp=3317112f6f04d1fdc7b338b947f18e811c9b9e7e All includes now uses cimport. Moved .pxd files from root dir to .pyx files, fixed enum declarations. Hi all, sorry for the long patch. FIXES: - Moved all .pxd files from root directory to .pyx ones. - Use "cimport " instead of "include". - Fixed enum declarations. - Fixed directory declaration on setup.py. Signed-off-by: Bruno Abinader git-svn-id: https://garage.maemo.org/svn/carman/branches/carman-0.7-beta2/python-purple@1295 596f6dd7-e928-0410-a184-9e12fd12cf7e --- diff --git a/account.pxd b/account.pxd deleted file mode 100644 index b5c765f..0000000 --- a/account.pxd +++ /dev/null @@ -1,81 +0,0 @@ -# -# 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 . -# - -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 = 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 diff --git a/account.pyx b/account.pyx new file mode 100644 index 0000000..0e98548 --- /dev/null +++ b/account.pyx @@ -0,0 +1,65 @@ +# +# 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 . +# + +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 = iter.data + if 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 diff --git a/buddy.pxd b/buddy.pxd deleted file mode 100644 index fa3be79..0000000 --- a/buddy.pxd +++ /dev/null @@ -1,34 +0,0 @@ -# -# 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 . -# - -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(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) diff --git a/buddy.pyx b/buddy.pyx new file mode 100644 index 0000000..33d36b7 --- /dev/null +++ b/buddy.pyx @@ -0,0 +1,36 @@ +# +# 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 . +# + +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(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) diff --git a/connection.pxd b/connection.pxd deleted file mode 100644 index 1531059..0000000 --- a/connection.pxd +++ /dev/null @@ -1,25 +0,0 @@ -# -# 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 . -# - -cdef class Connection: - """ Connection class """ - cdef PurpleConnection *__conn - - def connect(self): - connect_to_signals_for_demonstration_purposes_only() diff --git a/connection.pyx b/connection.pyx new file mode 100644 index 0000000..2e9a8f4 --- /dev/null +++ b/connection.pyx @@ -0,0 +1,27 @@ +# +# 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 . +# + +cimport connection + +cdef class Connection: + """ Connection class """ + cdef connection.PurpleConnection *__conn + + def connect(self): + connect_to_signals_for_demonstration_purposes_only() diff --git a/conversation.pxd b/conversation.pxd deleted file mode 100644 index ee3b26c..0000000 --- a/conversation.pxd +++ /dev/null @@ -1,62 +0,0 @@ -# -# 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 . -# - -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, 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) diff --git a/conversation.pyx b/conversation.pyx new file mode 100644 index 0000000..a00d0ed --- /dev/null +++ b/conversation.pyx @@ -0,0 +1,64 @@ +# +# 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 . +# + +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, 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) diff --git a/glib.pxd b/glib.pxd deleted file mode 100644 index e651a95..0000000 --- a/glib.pxd +++ /dev/null @@ -1,62 +0,0 @@ -# -# 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 . -# - -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) diff --git a/libpurple/account.pxd b/libpurple/account.pxd index 69d6eff..bbda93a 100644 --- a/libpurple/account.pxd +++ b/libpurple/account.pxd @@ -17,6 +17,8 @@ # along with this program. If not, see . # +cimport glib + cdef extern from "libpurple/account.h": ctypedef struct PurpleAccount: char* username @@ -24,11 +26,11 @@ cdef extern from "libpurple/account.h": 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) diff --git a/libpurple/blist.pxd b/libpurple/blist.pxd index 2c1ffff..37780fe 100644 --- a/libpurple/blist.pxd +++ b/libpurple/blist.pxd @@ -17,6 +17,10 @@ # along with this program. If not, see . # +cimport glib +cimport account +cimport status + cdef extern from "libpurple/blist.h": ctypedef struct PurpleBlistNode: pass @@ -24,11 +28,9 @@ cdef extern from "libpurple/blist.h": ctypedef struct PurpleBlistUiOps: pass - cdef struct _PurpleBuddy: + ctypedef struct PurpleBuddy: char *name - ctypedef _PurpleBuddy PurpleBuddy - ctypedef struct PurpleBuddyList: pass @@ -40,13 +42,12 @@ cdef extern from "libpurple/blist.h": 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) diff --git a/libpurple/conversation.pxd b/libpurple/conversation.pxd index e4710b7..8932eb4 100644 --- a/libpurple/conversation.pxd +++ b/libpurple/conversation.pxd @@ -17,6 +17,13 @@ # along with this program. If not, see . # +cimport glib + +cimport account + +cdef extern from "time.h": + ctypedef long int time_t + cdef extern from "libpurple/conversation.h": ctypedef struct PurpleConversation: pass @@ -44,25 +51,25 @@ cdef extern from "libpurple/conversation.h": 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) diff --git a/libpurple/core.pxd b/libpurple/core.pxd index 10803a2..c5348b3 100644 --- a/libpurple/core.pxd +++ b/libpurple/core.pxd @@ -17,15 +17,17 @@ # along with this program. If not, see . # +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" () diff --git a/libpurple/debug.pxd b/libpurple/debug.pxd index 5132501..52dc9e9 100644 --- a/libpurple/debug.pxd +++ b/libpurple/debug.pxd @@ -17,6 +17,8 @@ # along with this program. If not, see . # +cimport glib + cdef extern from "libpurple/debug.h": ctypedef enum PurpleDebugLevel: PURPLE_DEBUG_ALL @@ -26,5 +28,5 @@ cdef extern from "libpurple/debug.h": 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) diff --git a/libpurple/eventloop.pxd b/libpurple/eventloop.pxd index 4e8f1d3..f48d681 100644 --- a/libpurple/eventloop.pxd +++ b/libpurple/eventloop.pxd @@ -17,19 +17,21 @@ # along with this program. If not, see . # +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) diff --git a/libpurple/glib.pxd b/libpurple/glib.pxd new file mode 100644 index 0000000..4038da3 --- /dev/null +++ b/libpurple/glib.pxd @@ -0,0 +1,64 @@ +# +# 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 . +# + +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) diff --git a/libpurple/plugin.pxd b/libpurple/plugin.pxd index 15f9428..5e5343e 100644 --- a/libpurple/plugin.pxd +++ b/libpurple/plugin.pxd @@ -17,6 +17,8 @@ # along with this program. If not, see . # +cimport glib + cdef extern from "libpurple/plugin.h": ctypedef struct PurplePluginInfo: char *id @@ -25,5 +27,5 @@ cdef extern from "libpurple/plugin.h": 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" () diff --git a/libpurple/pounce.pxd b/libpurple/pounce.pxd index 2fa9d5f..8d63ad2 100644 --- a/libpurple/pounce.pxd +++ b/libpurple/pounce.pxd @@ -17,5 +17,7 @@ # along with this program. If not, see . # +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" () diff --git a/libpurple/prefs.pxd b/libpurple/prefs.pxd index ea6958f..dc96fce 100644 --- a/libpurple/prefs.pxd +++ b/libpurple/prefs.pxd @@ -17,8 +17,10 @@ # along with this program. If not, see . # +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" () diff --git a/libpurple/proxy.pxd b/libpurple/proxy.pxd index 59e7e4b..4644913 100644 --- a/libpurple/proxy.pxd +++ b/libpurple/proxy.pxd @@ -24,5 +24,5 @@ cdef extern from "libpurple/proxy.h": 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) diff --git a/libpurple/savedstatuses.pxd b/libpurple/savedstatuses.pxd index d6430e8..7071d2f 100644 --- a/libpurple/savedstatuses.pxd +++ b/libpurple/savedstatuses.pxd @@ -17,9 +17,11 @@ # along with this program. If not, see . # +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) diff --git a/libpurple/signals.pxd b/libpurple/signals.pxd index 569f654..9f4135c 100644 --- a/libpurple/signals.pxd +++ b/libpurple/signals.pxd @@ -17,11 +17,13 @@ # along with this program. If not, see . # +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) diff --git a/libpurple/status.pxd b/libpurple/status.pxd index 2713158..1460ffa 100644 --- a/libpurple/status.pxd +++ b/libpurple/status.pxd @@ -17,10 +17,22 @@ # along with this program. If not, see . # +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) diff --git a/libpurple/util.pxd b/libpurple/util.pxd index 7132a4d..04bd446 100644 --- a/libpurple/util.pxd +++ b/libpurple/util.pxd @@ -18,5 +18,5 @@ # 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) diff --git a/purple.pyx b/purple.pyx index 9d87b67..fcce7ff 100644 --- a/purple.pyx +++ b/purple.pyx @@ -17,40 +17,36 @@ # along with this program. If not, see . # -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 @@ -64,9 +60,9 @@ global __APP_VERSION__ 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 @@ -77,61 +73,62 @@ cdef class Purple: 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", __APP_NAME__) - g_hash_table_insert(self.c_ui_info, "version", __APP_VERSION__) + glib.g_hash_table_insert(self.c_ui_info, "name", __APP_NAME__) + glib.g_hash_table_insert(self.c_ui_info, "version", __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 @@ -142,51 +139,51 @@ cdef class Purple: self.c_core_ui_ops.debug_ui_init = self.__core_ui_ops_debug_init self.c_core_ui_ops.ui_init = self.__core_ui_ops_ui_init self.c_core_ui_ops.quit = self.__core_ui_ops_quit - self.c_core_ui_ops.get_ui_info = self.__core_ui_ops_get_ui_info + self.c_core_ui_ops.get_ui_info = 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 = iter.data - if plugin.info and plugin.info.name: - protocols += [(plugin.info.id, plugin.info.name)] + __plugin = iter.data + if __plugin.info and __plugin.info.name: + protocols += [(__plugin.info.id, __plugin.info.name)] iter = iter.next return protocols # get_protocols @@ -197,7 +194,7 @@ cdef class Purple: # 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" diff --git a/setup.py b/setup.py index 3b2c9e8..bf58b71 100755 --- a/setup.py +++ b/setup.py @@ -1,6 +1,7 @@ #!/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 @@ -14,16 +15,17 @@ ldflags = Popen(['pkg-config', '--libs', 'purple'], stdout=PIPE).communicate()[0 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)])