cimport purple
-cdef extern from *:
- ctypedef char const_char "const char"
+from protocol import Protocol
cdef class Account:
- """ Account class """
- cdef account.PurpleAccount *c_account
- cdef plugin.PurplePlugin *c_plugin
- cdef prpl.PurplePluginProtocolInfo *c_prpl_info
- cdef plugin.PurplePluginInfo *c_plugin_info
- cdef savedstatuses.PurpleSavedStatus *__sstatus
+ """
+ Account class
+ @param username
+ @param protocol_id
+ """
- cdef object __proxy
- cdef object __protocol
+ def __init__(self, username, protocol_id):
+ self.__username = username
+ self.__protocol_id = Protocol(self, protocol_id)
- def __init__(self):
- self.__proxy = purple.ProxyInfo()
- self.__protocol = purple.Plugin()
-
- '''
- def __init__(self, char *username, char *protocol_id):
- cdef proxy.PurpleProxyInfo *c_proxyinfo
- cdef account.PurpleAccount *acc = NULL
-
- acc = account.c_purple_accounts_find(username, protocol_id)
- if acc:
- self.c_account = acc
- c_proxyinfo = account.c_purple_account_get_proxy_info(self.c_account)
+ if self.__get_structure() == NULL:
+ self.__exists = False
else:
- self.c_account = account.c_purple_account_new(username, protocol_id)
- c_proxyinfo = account.c_purple_account_get_proxy_info(self.c_account)
- if c_proxyinfo == NULL:
- c_proxyinfo = proxy.c_purple_proxy_info_new()
- proxy.c_purple_proxy_info_set_type(c_proxyinfo, proxy.PURPLE_PROXY_NONE)
- account.c_purple_account_set_proxy_info(self.c_account, c_proxyinfo)
- self.__proxy = ProxyInfo()
- self.__proxy.c_proxyinfo = c_proxyinfo
- acc = NULL
-
- self.c_plugin = plugin.c_purple_plugins_find_with_id(protocol_id)
- self.c_prpl_info = plugin.c_PURPLE_PLUGIN_PROTOCOL_INFO(self.c_plugin)
- '''
+ self.__exists = True
def __get_username(self):
- if self.c_account:
- return account.c_purple_account_get_username(self.c_account)
- else:
- return None
- def __set_username(self, username):
- if self.c_account:
- account.c_purple_account_set_username(self.c_account, username)
- username = property(__get_password, __set_username)
-
- def __get_password(self):
- if self.c_account:
- return account.c_purple_account_get_password(self.c_account)
- else:
- return None
- def __set_password(self, password):
- if self.c_account:
- account.c_purple_account_set_password(self.c_account, password)
- password = property(__get_password, __set_password)
-
- def __get_alias(self):
- if self.c_account:
- return account.c_purple_account_get_alias(self.c_account)
- else:
- return None
- def __set_alias(self, alias):
- if self.c_account:
- account.c_purple_account_set_alias(self.c_account, alias)
- alias = property(__get_alias, __set_alias)
-
- def __get_user_info(self):
- if self.c_account:
- return account.c_purple_account_get_user_info(self.c_account)
- else:
- return None
- def __set_user_info(self, user_info):
- if self.c_account:
- account.c_purple_account_set_user_info(self.c_account, user_info)
- user_info = property(__get_user_info, __set_user_info)
+ return self.__username
+ username = property(__get_username)
def __get_protocol_id(self):
- if self.c_account:
- return account.c_purple_account_get_protocol_id(self.c_account)
- else:
- return None
- def __set_protocol_id(self, protocol_id):
- if self.c_account:
- account.c_purple_account_set_protocol_id(self.c_account, protocol_id)
- protocol_id = property(__get_protocol_id, __set_protocol_id)
-
- def __get_remember_password(self):
- if self.c_account:
- return account.c_purple_account_get_remember_password(self.c_account)
- else:
- return None
- def __set_remember_password(self, value):
- if self.c_account:
- account.c_purple_account_set_remember_password(self.c_account, value)
- remember_password = property(__get_remember_password, __set_remember_password)
-
- def _get_protocol_options(self):
- cdef glib.GList *iter
- cdef accountopt.PurpleAccountOption *option
- cdef prefs.PurplePrefType type
- cdef const_char *label_name
- cdef const_char *str_value
- cdef const_char *setting
- cdef int int_value
- cdef glib.gboolean bool_value
-
- if self.c_account == NULL:
- return None
-
- po = {}
-
- iter = self.c_prpl_info.protocol_options
-
- while iter:
-
- option = <accountopt.PurpleAccountOption *> iter.data
- type = accountopt.c_purple_account_option_get_type(option)
- label_name = accountopt.c_purple_account_option_get_text(option)
- setting = accountopt.c_purple_account_option_get_setting(option)
-
- sett = str(<char *> setting)
-
- if type == prefs.PURPLE_PREF_STRING:
-
- str_value = accountopt.c_purple_account_option_get_default_string(option)
-
- # Google Talk default domain hackery!
- if str_value == NULL and str(<char *> label_name) == "Connect server":
- str_value = "talk.google.com"
- str_value = account.c_purple_account_get_string(self.c_account, setting, str_value)
-
- val = str(<char *> str_value)
-
- elif type == prefs.PURPLE_PREF_INT:
-
- int_value = accountopt.c_purple_account_option_get_default_int(option)
- int_value = account.c_purple_account_get_int(self.c_account, setting, int_value)
-
- val = int(int_value)
-
- elif type == prefs.PURPLE_PREF_BOOLEAN:
-
- bool_value = accountopt.c_purple_account_option_get_default_bool(option)
- bool_value = account.c_purple_account_get_bool(self.c_account, setting, bool_value)
-
- val = bool(bool_value)
-
- elif type == prefs.PURPLE_PREF_STRING_LIST:
-
- str_value = accountopt.c_purple_account_option_get_default_list_value(option)
- str_value = account.c_purple_account_get_string(self.c_account, setting, str_value)
-
- val = str(<char *> str_value)
-
- iter = iter.next
-
- po[sett] = val
-
- return po
-
- def _set_protocol_options(self, po):
- cdef glib.GList *iter
- cdef accountopt.PurpleAccountOption *option
- cdef prefs.PurplePrefType type
- cdef const_char *str_value
- cdef const_char *setting
- cdef int int_value
- cdef glib.gboolean bool_value
-
- if self.c_account == NULL:
- return
-
- po = {}
-
- iter = self.c_prpl_info.protocol_options
-
- while iter:
-
- option = <accountopt.PurpleAccountOption *> iter.data
- type = accountopt.c_purple_account_option_get_type(option)
- setting = accountopt.c_purple_account_option_get_setting(option)
-
- sett = str(<char *> setting)
-
- if type == prefs.PURPLE_PREF_STRING:
-
- str_value = <char *> po[sett]
- account.c_purple_account_set_string(self.c_account, setting, str_value)
-
- elif type == prefs.PURPLE_PREF_INT:
-
- int_value = int(po[sett])
- account.c_purple_account_set_int(self.c_account, setting, int_value)
-
- elif type == prefs.PURPLE_PREF_BOOLEAN:
-
- bool_value = bool(po[sett])
- account.c_purple_account_set_bool(self.c_account, setting, bool_value)
-
- elif type == prefs.PURPLE_PREF_STRING_LIST:
-
- str_value = <char *> po[sett]
- account.c_purple_account_set_string(self.c_account, setting, str_value)
-
- iter = iter.next
-
- protocol_options = property(_get_protocol_options, _set_protocol_options)
-
- def _get_protocol_labels(self):
- cdef glib.GList *iter
- cdef accountopt.PurpleAccountOption *option
- cdef const_char *label_name
- cdef const_char *setting
-
- if self.c_account == NULL:
- return None
-
- po = {}
-
- iter = self.c_prpl_info.protocol_options
-
- while iter:
-
- option = <accountopt.PurpleAccountOption *> iter.data
- label_name = accountopt.c_purple_account_option_get_text(option)
- setting = accountopt.c_purple_account_option_get_setting(option)
+ return self.__protocol_id.protocol_id
+ protocol_id = property(__get_protocol_id)
- sett = str(<char *> setting)
- label = str(<char *> label_name)
+ def __get_exists(self):
+ return self.__exists
+ exists = property(__get_exists)
- po[sett] = label
+ cdef purple.account.PurpleAccount *__get_structure(self):
+ return purple.account.purple_accounts_find(self.username, self.protocol_id)
- return po
-
- protocol_labels = property(_get_protocol_labels)
-
- def __get_proxy(self):
- return self.__proxy
- proxy = property(__get_proxy)
-
- def __get_protocol(self):
- return self.__protocol
- protocol = property(__get_protocol)
-
- def get_protocol_name(self):
- if self.c_account:
- return account.c_purple_account_get_protocol_name(self.c_account)
- else:
- return None
-
- 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 account.PurpleAccount *c_account
- cdef glib.GSList *iter
- cdef blist.PurpleBuddy *buddy
- cdef char *c_name = NULL
- cdef char *c_alias = NULL
-
- c_account = account.c_purple_accounts_find(acc[0], acc[1])
- if c_account:
- iter = blist.c_purple_find_buddies(c_account, NULL)
- else:
- return None
-
- buddies = []
- while iter:
- c_name = NULL
- c_alias = NULL
- buddy = <blist.PurpleBuddy *> iter.data
- if <blist.PurpleBuddy *>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)):
- c_name = <char *> blist.c_purple_buddy_get_name(buddy)
- if c_name == NULL:
- name = None
- else:
- name = c_name
- c_alias = <char *> blist.c_purple_buddy_get_alias_only(buddy)
- if c_alias == NULL:
- alias = None
- else:
- alias = c_alias
- buddies.append((name, alias))
- iter = iter.next
- return buddies
-
- def new(self, username, protocol_id):
- cdef account.PurpleAccount *c_account
- c_account = account.c_purple_account_new(username, protocol_id)
-
- if c_account == NULL:
- return None
-
- account.c_purple_accounts_add(c_account)
-
- return (username, protocol_id)
-
- def get_all(self):
- cdef glib.GList *iter
- cdef account.PurpleAccount *acc
-
- accounts = []
-
- iter = account.c_purple_accounts_get_all()
- while iter:
- acc = <account.PurpleAccount *> iter.data
- if <account.PurpleAccount *>acc:
- username = account.c_purple_account_get_username(acc)
- protocol_id = account.c_purple_account_get_protocol_id(acc)
-
- accounts.append((username, protocol_id))
- iter = iter.next
-
- return accounts
-
- def get_password(self, acc):
- ''' @param acc Tuple (username, protocol id) '''
- cdef account.PurpleAccount *c_account
- cdef char *value
- value = NULL
-
- c_account = account.c_purple_accounts_find(acc[0], acc[1])
- if c_account:
- value = <char *> account.c_purple_account_get_password(c_account)
-
- if value == NULL:
- return None
- else:
- return value
-
-
- def set_password(self, acc, password):
- ''' @param acc Tuple (username, protocol id) '''
- ''' @param password The account's password '''
- cdef account.PurpleAccount *c_account
-
- if not password:
- return
-
- c_account = account.c_purple_accounts_find(acc[0], acc[1])
- if c_account:
- account.c_purple_account_set_password(c_account, password)
-
- def get_alias(self, acc):
- ''' @param acc Tuple (username, protocol id) '''
- cdef account.PurpleAccount *c_account
- cdef char *value
- value = NULL
-
- c_account = account.c_purple_accounts_find(acc[0], acc[1])
- if c_account:
- value = <char *> account.c_purple_account_get_alias(c_account)
-
- if value == NULL:
- return None
- else:
- return value
-
- def set_alias(self, acc, alias):
- ''' @param acc Tuple (username, protocol id) '''
- ''' @param alias The account's alias '''
- cdef account.PurpleAccount *c_account
-
- if not alias:
- return
-
- c_account = account.c_purple_accounts_find(acc[0], acc[1])
- if c_account:
- account.c_purple_account_set_alias(c_account, alias)
-
- def set_protocol_id(self, acc, protocol_id):
- ''' @param acc Tuple (username, protocol id) '''
- ''' @param protocol_id The new account's protocol id '''
- cdef account.PurpleAccount *c_account
-
- if not protocol_id:
- return
-
- c_account = account.c_purple_accounts_find(acc[0], acc[1])
- if c_account:
- account.c_purple_account_set_protocol_id(c_account, protocol_id)
-
- def get_protocol_id(self, acc):
- ''' @param acc Tuple (username, protocol id) '''
- ''' @return account's protocol id '''
- cdef account.PurpleAccount *c_account
- cdef char *value
- value = NULL
-
- c_account = account.c_purple_accounts_find(acc[0], acc[1])
- if c_account:
- value = <char *> account.c_purple_account_get_protocol_id(c_account)
-
- if value == NULL:
- return None
- else:
- return value
-
-
- def set_enabled(self, acc, ui, value):
- ''' @param acc Tuple (username, protocol id) '''
- ''' @param ui The UI '''
- ''' @param value True to enabled or False to disabled '''
- cdef account.PurpleAccount *c_account
-
- c_account = account.c_purple_accounts_find(acc[0], acc[1])
- if c_account:
- account.c_purple_account_set_enabled(c_account, <char *> ui, bool(value))
-
- def get_enabled(self, acc, ui):
- ''' @param acc Tuple (username, protocol id) '''
- ''' @param ui The UI '''
- cdef account.PurpleAccount *c_account
-
- c_account = account.c_purple_accounts_find(acc[0], acc[1])
- if c_account:
- return account.c_purple_account_get_enabled(c_account, ui)
- else:
+ def new(self):
+ if self.__exists:
return False
- def is_connected(self, acc):
- ''' @param acc Tuple (username, protocol id) '''
- ''' @param ui The UI '''
- cdef account.PurpleAccount *c_account
-
- c_account = account.c_purple_accounts_find(acc[0], acc[1])
- if c_account:
- return account.c_purple_account_is_connected(c_account)
- else:
- return False
-
- def connect(self, acc):
- ''' @param acc Tuple (username, protocol id) '''
- ''' @param ui The UI '''
- cdef account.PurpleAccount *c_account
-
- c_account = account.c_purple_accounts_find(acc[0], acc[1])
- if c_account:
- account.c_purple_account_connect(c_account)
-
- def disconnect(self, acc):
- ''' @param acc Tuple (username, protocol id) '''
- ''' @param ui The UI '''
- cdef account.PurpleAccount *c_account
-
- c_account = account.c_purple_accounts_find(acc[0], acc[1])
- if c_account:
- account.c_purple_account_disconnect(c_account)
-
- def set_remember_password(self, acc, value):
- cdef account.PurpleAccount *c_account
- c_account = account.c_purple_accounts_find(acc[0], acc[1])
- if c_account:
- account.c_purple_account_set_remember_password(c_account, value)
-
- def get_remember_password(self, acc):
- cdef account.PurpleAccount *c_account
- c_account = account.c_purple_accounts_find(acc[0], acc[1])
- if c_account:
- return account.c_purple_account_get_remember_password(c_account)
- else:
- return None
-
- def remove(self, acc):
- cdef account.PurpleAccount *c_account
-
- c_account = account.c_purple_accounts_find(acc[0], acc[1])
- if c_account:
- account.c_purple_accounts_delete(c_account)
+ purple.account.purple_account_new(self.username, self.protocol_id)
+ self.__exists = True
+ return True
return None
name = property(__get_name)
+ """
def __get_online(self): # FIXME
name = self.name
self.c_buddy = blist.c_purple_find_buddy(self.__acc.c_account, name)
return status.c_purple_presence_is_online(blist.c_purple_buddy_get_presence(self.c_buddy))
online = property(__get_online)
+ """
def new_buddy(self, acc, name, alias):
self.__acc = acc
self.__acc = acc
self.__name = name
- c_account = account.c_purple_accounts_find(acc[0], acc[1])
+ c_account = account.purple_accounts_find(<char *> acc[0], <char *> acc[1])
if not c_account:
return
cdef char *c_username = NULL
cdef char *c_sender_alias = NULL
- c_username = <char *> account.c_purple_account_get_username(acc)
+ c_username = <char *> account.purple_account_get_username(acc)
if c_username:
username = c_username
else:
cimport glib
-cdef extern from *:
- ctypedef char const_char "const char"
-
# hack to avoid recursive loops by cython
+cdef extern from "libpurple/blist.h":
+ ctypedef struct PurpleBuddy:
+ pass
+
+ ctypedef struct PurpleGroup:
+ pass
+
cdef extern from "libpurple/connection.h":
ctypedef struct PurpleConnection:
pass
+ ctypedef struct PurpleConnectionErrorInfo:
+ pass
+
cdef extern from "libpurple/log.h":
ctypedef struct PurpleLog:
pass
ctypedef struct PurpleStatus:
pass
+ ctypedef struct PurpleStatusType:
+ pass
+
+ ctypedef struct PurpleStatusPrimitive:
+ pass
+
ctypedef struct PurplePresence:
pass
PURPLE_ACCOUNT_REQUEST_AUTHORIZATION = 0
ctypedef struct PurpleAccountUiOps:
- void (*notify_added) (PurpleAccount *account, const_char *remote_user, \
- const_char *id, const_char *alias, const_char *message)
+ void (*notify_added) (PurpleAccount *account, char *remote_user, \
+ char *id, char *alias, char *message)
void (*status_changed) (PurpleAccount *account, PurpleStatus *status)
- void (*request_add) (PurpleAccount *account, const_char *remote_user, \
- const_char *id, const_char *alias, const_char *message)
+ void (*request_add) (PurpleAccount *account, char *remote_user, \
+ char *id, char *alias, char *message)
void *(*request_authorize) (PurpleAccount *account, \
- const_char *remote_user, const_char *id, const_char *alias, \
- const_char *message, glib.gboolean on_list, \
+ char *remote_user, char *id, char *alias, \
+ char *message, glib.gboolean on_list, \
PurpleAccountRequestAuthorizationCb authorize_cb, \
PurpleAccountRequestAuthorizationCb deny_cb, void *user_data)
void (*close_account_request) (void *ui_handle)
void *registration_cb_user_data
glib.gpointer priv
- PurpleAccount *c_purple_account_new "purple_account_new" \
- (char *username, char *protocol_id)
-
- glib.gboolean c_purple_account_get_enabled "purple_account_get_enabled" \
- (PurpleAccount *account, char *ui)
- char *c_purple_account_get_username "purple_account_get_username" \
- (PurpleAccount *account)
- char *c_purple_account_get_password "purple_account_get_password" \
- (PurpleAccount *account)
- char *c_purple_account_get_alias "purple_account_get_alias" \
- (PurpleAccount *account)
- char *c_purple_account_get_user_info "purple_account_get_user_info" \
- (PurpleAccount *account)
- char *c_purple_account_get_protocol_id "purple_account_get_protocol_id" \
- (PurpleAccount *account)
- char *c_purple_account_get_protocol_name \
- "purple_account_get_protocol_name" (PurpleAccount *account)
- glib.gboolean c_purple_account_get_remember_password \
- "purple_account_get_remember_password" (PurpleAccount *account)
-
- void c_purple_account_set_enabled "purple_account_set_enabled" \
- (PurpleAccount *account, char *ui, glib.gboolean value)
- void c_purple_account_set_username "purple_account_set_username" \
- (PurpleAccount *account, char *username)
- void c_purple_account_set_password "purple_account_set_password" \
- (PurpleAccount *account, char *password)
- void c_purple_account_set_alias "purple_account_set_alias" \
- (PurpleAccount *account, char *alias)
- void c_purple_account_set_user_info "purple_account_set_user_info" \
- (PurpleAccount *account, char *user_info)
- void c_purple_account_set_protocol_id "purple_account_set_protocol_id" \
- (PurpleAccount *account, char *protocol_id)
- void c_purple_account_set_remember_password \
- "purple_account_set_remember_password" (PurpleAccount *account, \
- glib.gboolean value)
-
- 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)
- void c_purple_account_connect "purple_account_connect" \
- (PurpleAccount *account)
- void c_purple_account_disconnect "purple_account_disconnect" \
- (PurpleAccount *account)
- glib.gboolean c_purple_account_is_connected "purple_account_is_connected" \
- (PurpleAccount *account)
- PurpleProxyInfo *c_purple_account_get_proxy_info \
- "purple_account_get_proxy_info" (PurpleAccount *account)
- void c_purple_account_set_proxy_info "purple_account_set_proxy_info" \
- (PurpleAccount *account, PurpleProxyInfo *info)
- char *c_purple_account_get_string "purple_account_get_string" \
- (PurpleAccount *account, char *name, char *default_value)
- int c_purple_account_get_int "purple_account_get_int" \
- (PurpleAccount *account, char *name, int default_value)
- glib.gboolean c_purple_account_get_bool "purple_account_get_bool" \
- (PurpleAccount *account, char *name, glib.gboolean default_value)
- void c_purple_account_clear_settings "purple_account_clear_settings" \
- (PurpleAccount *account)
- void c_purple_account_set_int "purple_account_set_int" \
- (PurpleAccount *account, char *name, int value)
- void c_purple_account_set_string "purple_account_set_string" \
- (PurpleAccount *account, char *name, char *value)
- void c_purple_account_set_bool "purple_account_set_bool" \
- (PurpleAccount *account, char *name, glib.gboolean value)
- PurpleAccount *c_purple_accounts_find "purple_accounts_find" \
- (char *name, char *protocol)
- glib.GList *c_purple_accounts_get_all "purple_accounts_get_all" ()
- void c_purple_accounts_add "purple_accounts_add" (PurpleAccount *account)
- void c_purple_accounts_delete "purple_accounts_delete" (PurpleAccount
- *account)
+ # Account API
+ PurpleAccount *purple_account_new(char *username, char *protocol_id)
+ void purple_account_destroy(PurpleAccount *account)
+ void purple_account_connect(PurpleAccount *account)
+ void purple_account_set_register_callback(PurpleAccount *account, PurpleAccountRegistrationCb cb, void *user_data)
+ void purple_account_register(PurpleAccount *account)
+ void purple_account_unregister(PurpleAccount *account, PurpleAccountUnregistrationCb cb, void *user_data)
+ void purple_account_disconnect(PurpleAccount *account)
+ void purple_account_notify_added(PurpleAccount *account, \
+ char *remote_user, char *id, char *alias, \
+ char *message)
+ void purple_account_request_add(PurpleAccount *account, \
+ char *remote_user, char *id, char *alias, \
+ char *message)
+ void *purple_account_request_authorization(PurpleAccount *account, \
+ char *remote_user, char *id, char *alias, \
+ char *message, glib.gboolean on_list, \
+ PurpleAccountRequestAuthorizationCb auth_cb, \
+ PurpleAccountRequestAuthorizationCb deny_cb, void *user_data)
+ void purple_account_request_close_with_account(PurpleAccount *account)
+ void purple_account_request_close(void *ui_handle)
+ void purple_account_request_password(PurpleAccount *account, \
+ glib.GCallback ok_cb, glib.GCallback cancel_cb, void *user_data)
+ void purple_account_request_change_password(PurpleAccount *account)
+ void purple_account_request_change_user_info(PurpleAccount *account)
+ void purple_account_set_username(PurpleAccount *account, char *username)
+ void purple_account_set_password(PurpleAccount *account, char *password)
+ void purple_account_set_alias(PurpleAccount *account, char *alias)
+ void purple_account_set_user_info(PurpleAccount *account, char *user_info)
+ void purple_account_set_buddy_icon_path(PurpleAccount *account, char *path)
+ void purple_account_set_protocol_id(PurpleAccount *account, \
+ char *protocol_id)
+ void purple_account_set_connection(PurpleAccount *account, \
+ PurpleConnection *gc)
+ void purple_account_set_remember_password(PurpleAccount *account, \
+ glib.gboolean value)
+ void purple_account_set_check_mail(PurpleAccount *account, \
+ glib.gboolean value)
+ void purple_account_set_enabled(PurpleAccount *account, \
+ char *ui, glib.gboolean value)
+ void purple_account_set_proxy_info(PurpleAccount *account, \
+ PurpleProxyInfo *info)
+ void purple_account_set_status_types(PurpleAccount *account, \
+ glib.GList *status_types)
+ void purple_account_set_status_list(PurpleAccount *account, \
+ char *status_id, glib.gboolean active, glib.GList *attrs)
+ void purple_account_set_status(PurpleAccount *account, \
+ char *status_id, glib.gboolean active, NULL) # FIXME
+ void purple_account_set_status_list(PurpleAccount *account, \
+ char *status_id, glib.gboolean active, glib.GList *attrs)
+ void purple_account_clear_settings(PurpleAccount *account)
+ void purple_account_set_int(PurpleAccount *account, char *name, \
+ int value)
+ void purple_account_set_string(PurpleAccount *account, char *name, \
+ char *value)
+ void purple_account_set_bool(PurpleAccount *account, char *name, \
+ glib.gboolean value)
+ void purple_account_set_ui_int(PurpleAccount *account, char *ui, \
+ char *name, int value)
+ void purple_account_set_ui_string(PurpleAccount *account, char *ui, \
+ char *name, char *value)
+ void purple_account_set_ui_bool(PurpleAccount *account, char *ui, \
+ char *name, glib.gboolean value)
+ glib.gboolean purple_account_is_connected(PurpleAccount *account)
+ glib.gboolean purple_account_is_connecting(PurpleAccount *account)
+ glib.gboolean purple_account_is_disconnected(PurpleAccount *account)
+ char *purple_account_get_username(PurpleAccount *account)
+ char *purple_account_get_password(PurpleAccount *account)
+ char *purple_account_get_alias(PurpleAccount *account)
+ char *purple_account_get_user_info(PurpleAccount *account)
+ char *purple_account_get_buddy_icon_path(PurpleAccount *account)
+ char *purple_account_get_protocol_id(PurpleAccount *account)
+ char *purple_account_get_protocol_name(PurpleAccount *account)
+ PurpleConnection *purple_account_get_connection(PurpleAccount *account)
+ glib.gboolean purple_account_get_remember_password(PurpleAccount *account)
+ glib.gboolean purple_account_get_check_mail(PurpleAccount *account)
+ glib.gboolean purple_account_get_enabled(PurpleAccount *account, char *ui)
+ PurpleProxyInfo *purple_account_get_proxy_info(PurpleAccount *account)
+ PurpleStatus *purple_account_get_active_status(PurpleAccount *account)
+ PurpleStatus *purple_account_get_status(PurpleAccount *account, \
+ char *status_id)
+ PurpleStatusType *purple_account_get_status_type(PurpleAccount *account, \
+ char *id)
+ PurpleStatusType *purple_account_get_status_type_with_primitive( \
+ PurpleAccount *account, PurpleStatusPrimitive primitive)
+ PurplePresence *purple_account_get_presence(PurpleAccount *account)
+ glib.gboolean purple_account_is_status_active(PurpleAccount *account, \
+ char *status_id)
+ glib.GList *purple_account_get_status_types(PurpleAccount *account)
+ int purple_account_get_int(PurpleAccount *account, char *name, \
+ int default_value)
+ char *purple_account_get_string(PurpleAccount *account, \
+ char *name, char *default_value)
+ glib.gboolean purple_account_get_bool(PurpleAccount *account, \
+ char *name, glib.gboolean default_value)
+ int purple_account_get_ui_int(PurpleAccount *account, \
+ char *ui, char *name, int default_value)
+ char *purple_account_get_ui_string(PurpleAccount *account, \
+ char *ui, char *name, char *default_value)
+ glib.gboolean purple_account_get_ui_bool(PurpleAccount *account, \
+ char *ui, char *name, glib.gboolean default_value)
+ PurpleLog *purple_account_get_log(PurpleAccount *account, \
+ glib.gboolean create)
+ void purple_account_destroy_log(PurpleAccount *account)
+ void purple_account_add_buddy(PurpleAccount *account, PurpleBuddy *buddy)
+ void purple_account_add_buddies(PurpleAccount *account, \
+ glib.GList *buddies)
+ void purple_account_remove_buddy(PurpleAccount *account, \
+ PurpleBuddy *buddy, PurpleGroup *group)
+ void purple_account_remove_buddies(PurpleAccount *account, \
+ glib.GList *buddies, glib.GList *groups)
+ void purple_account_remove_group(PurpleAccount *account, \
+ PurpleGroup *group)
+ void purple_account_change_password(PurpleAccount *account, \
+ char *orig_pw, char *new_pw)
+ glib.gboolean purple_account_supports_offline_message( \
+ PurpleAccount *account, PurpleBuddy *buddy)
+ PurpleConnectionErrorInfo *purple_account_get_current_error( \
+ PurpleAccount *account)
+ void purple_account_clear_current_error(PurpleAccount *account)
+
+ # Accounts API
+ void purple_accounts_add(PurpleAccount *account)
+ void purple_accounts_remove(PurpleAccount *account)
+ void purple_accounts_delete(PurpleAccount *account)
+ void purple_accounts_reorder(PurpleAccount *account, glib.gint new_index)
+ glib.GList *purple_accounts_get_all()
+ glib.GList *purple_accounts_get_all_active()
+ PurpleAccount *purple_accounts_find(char *name, char *protocol)
+ void purple_accounts_restore_current_statuses()
+
+ # UI Registration Functions
+ void purple_accounts_set_ui_ops(PurpleAccountUiOps *ops)
+ PurpleAccountUiOps *purple_accounts_get_ui_ops()
+
+ # Accounts Subsystem
+ void *purple_accounts_get_handle()
+ void purple_accounts_init()
+ void purple_accounts_uninit()
cimport prefs
-cdef extern from *:
- ctypedef char const_char "const char"
-
cdef extern from "libpurple/accountopt.h":
ctypedef struct UnionType:
UnionType default_value
glib.gboolean masked
- prefs.PurplePrefType c_purple_account_option_get_type "purple_account_option_get_type" (PurpleAccountOption *option)
- char *c_purple_account_option_get_setting "purple_account_option_get_setting" (PurpleAccountOption *option)
- char *c_purple_account_option_get_default_string "purple_account_option_get_default_string" (PurpleAccountOption *option)
- int c_purple_account_option_get_default_int "purple_account_option_get_default_int" (PurpleAccountOption *option)
- glib.gboolean c_purple_account_option_get_default_bool "purple_account_option_get_default_bool" (PurpleAccountOption *option)
- const_char *c_purple_account_option_get_default_list_value "purple_account_option_get_default_list_value" (PurpleAccountOption *option)
- const_char *c_purple_account_option_get_text "purple_account_option_get_text" (PurpleAccountOption *option)
+ ctypedef struct PurpleAccountUserSplit:
+ char *text
+ char *default_value
+ char field_sep
+ glib.gboolean reverse
+
+ # Account Option API
+ PurpleAccountOption *purple_account_option_new(prefs.PurplePrefType type, \
+ char *text, char *pref_name)
+ PurpleAccountOption *purple_account_option_bool_new(char *text, \
+ char *pref_name, glib.gboolean default_value)
+ PurpleAccountOption *purple_account_option_int_new(char *text, \
+ char *pref_name, int default_value)
+ PurpleAccountOption *purple_account_option_string_new(char *text, \
+ char *pref_name, char *default_value)
+ PurpleAccountOption *purple_account_option_list_new(char *text, \
+ char *pref_name, glib.GList *list)
+ void purple_account_option_destroy(PurpleAccountOption *option)
+ void purple_account_option_set_default_bool(PurpleAccountOption *option, \
+ glib.gboolean value)
+ void purple_account_option_set_default_int(PurpleAccountOption *option, \
+ int value)
+ void purple_account_option_set_default_string( \
+ PurpleAccountOption *option, char *value)
+ void purple_account_option_set_masked(PurpleAccountOption *option, \
+ glib.gboolean masked)
+ void purple_account_option_set_list(PurpleAccountOption *option, \
+ glib.GList *values)
+ void purple_account_option_add_list_item(PurpleAccountOption *option, \
+ char *key, char *value)
+ prefs.PurplePrefType purple_account_option_get_type( \
+ PurpleAccountOption *option)
+ char *purple_account_option_get_text( PurpleAccountOption *option)
+ char *purple_account_option_get_setting( PurpleAccountOption *option)
+ glib.gboolean purple_account_option_get_default_bool( \
+ PurpleAccountOption *option)
+ int purple_account_option_get_default_int(PurpleAccountOption *option)
+ char *purple_account_option_get_default_string(PurpleAccountOption *option)
+ char *purple_account_option_get_default_list_value( \
+ PurpleAccountOption *option)
+ glib.gboolean purple_account_option_get_masked( \
+ PurpleAccountOption *option)
+ glib.GList *purple_account_option_get_list( \
+ PurpleAccountOption *option)
+ PurpleAccountUserSplit *purple_account_user_split_new(char *text, \
+ char *default_value, char sep)
+ void purple_account_user_split_destroy(PurpleAccountUserSplit *split)
+ char *purple_account_user_split_get_text( PurpleAccountUserSplit *split)
+ char *purple_account_user_split_get_default_value( \
+ PurpleAccountUserSplit *split)
+ char purple_account_user_split_get_separator(PurpleAccountUserSplit *split)
+ glib.gboolean purple_account_user_split_get_reverse( \
+ PurpleAccountUserSplit *split)
+ void purple_account_user_split_set_reverse(PurpleAccountUserSplit *split, \
+ glib.gboolean reverse)
c_account = NULL
if username:
- c_account = account.c_purple_accounts_find(username, id)
+ c_account = account.purple_accounts_find(username, id)
c_plugin = plugin.c_purple_plugins_find_with_id(id)
c_prpl_info = plugin.c_PURPLE_PLUGIN_PROTOCOL_INFO(c_plugin)
while iter:
option = <accountopt.PurpleAccountOption *> iter.data
- type = accountopt.c_purple_account_option_get_type(option)
- label_name = accountopt.c_purple_account_option_get_text(option)
- setting = accountopt.c_purple_account_option_get_setting(option)
+ type = accountopt.purple_account_option_get_type(option)
+ label_name = accountopt.purple_account_option_get_text(option)
+ setting = accountopt.purple_account_option_get_setting(option)
sett = str(<char *> setting)
label = str(<char *> label_name)
if type == prefs.PURPLE_PREF_STRING:
- str_value = accountopt.c_purple_account_option_get_default_string(option)
+ str_value = accountopt.purple_account_option_get_default_string(option)
# Google Talk default domain hackery!
if str_value == NULL and label == "Connect server":
str_value = "talk.google.com"
if c_account != NULL:
- str_value = account.c_purple_account_get_string(c_account, setting, str_value)
+ str_value = account.purple_account_get_string(c_account, setting, str_value)
val = str(<char *> str_value)
elif type == prefs.PURPLE_PREF_INT:
- int_value = accountopt.c_purple_account_option_get_default_int(option)
+ int_value = accountopt.purple_account_option_get_default_int(option)
if sett == "port":
int_value = int(443)
if c_account != NULL:
- int_value = account.c_purple_account_get_int(c_account, setting, int_value)
+ int_value = account.purple_account_get_int(c_account, setting, int_value)
val = int(int_value)
elif type == prefs.PURPLE_PREF_BOOLEAN:
- bool_value = accountopt.c_purple_account_option_get_default_bool(option)
+ bool_value = accountopt.purple_account_option_get_default_bool(option)
if c_account != NULL:
- bool_value = account.c_purple_account_get_bool(c_account, setting, bool_value)
+ bool_value = account.purple_account_get_bool(c_account, setting, bool_value)
val = bool(bool_value)
elif type == prefs.PURPLE_PREF_STRING_LIST:
- str_value = accountopt.c_purple_account_option_get_default_list_value(option)
+ str_value = accountopt.purple_account_option_get_default_list_value(option)
if c_account != NULL:
- str_value = account.c_purple_account_get_string(c_account, setting, str_value)
+ str_value = account.purple_account_get_string(c_account, setting, str_value)
val = str(<char *> str_value)
c_account = NULL
- c_account = account.c_purple_accounts_find(acc[0], acc[1])
+ c_account = account.purple_accounts_find(acc[0], acc[1])
if c_account == NULL:
# FIXME: Message error or call a error handler
return False
while iter:
option = <accountopt.PurpleAccountOption *> iter.data
- type = accountopt.c_purple_account_option_get_type(option)
- setting = accountopt.c_purple_account_option_get_setting(option)
+ type = accountopt.purple_account_option_get_type(option)
+ setting = accountopt.purple_account_option_get_setting(option)
sett = str(<char *> setting)
if type == prefs.PURPLE_PREF_STRING:
str_value = <char *> po[sett]
- account.c_purple_account_set_string(c_account, setting, str_value)
+ account.purple_account_set_string(c_account, setting, str_value)
elif type == prefs.PURPLE_PREF_INT:
int_value = int(po[sett])
- account.c_purple_account_set_int(c_account, setting, int_value)
+ account.purple_account_set_int(c_account, setting, int_value)
elif type == prefs.PURPLE_PREF_BOOLEAN:
bool_value = bool(po[sett])
- account.c_purple_account_set_bool(c_account, setting, bool_value)
+ account.purple_account_set_bool(c_account, setting, bool_value)
elif type == prefs.PURPLE_PREF_STRING_LIST:
str_value = <char *> po[sett]
- account.c_purple_account_set_string(c_account, setting, str_value)
+ account.purple_account_set_string(c_account, setting, str_value)
return True
--- /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 Protocol:
+ """
+ Protocol class
+ @param protocol_id
+ """
+
+ def __init__(self, protocol_id):
+ self.__protocol_id = protocol_id
+
+ def __get_protocol_id(self):
+ return self.__protocol_id.protocol_id
+ protocol_id = property(__get_protocol_id)
cdef account.PurpleAccount *c_account
cdef proxy.PurpleProxyInfo *c_proxyinfo
- c_account = account.c_purple_accounts_find(acc[0], acc[1])
+ c_account = account.purple_accounts_find(acc[0], acc[1])
if c_account == NULL:
#FIXME: Message error or call a callback handle to error
return False
- c_proxyinfo = account.c_purple_account_get_proxy_info(c_account)
+ c_proxyinfo = account.purple_account_get_proxy_info(c_account)
if c_proxyinfo == NULL:
c_proxyinfo = proxy.c_purple_proxy_info_new()
- account.c_purple_account_set_proxy_info(c_account, c_proxyinfo)
+ account.purple_account_set_proxy_info(c_account, c_proxyinfo)
if info.has_key('type') and info['type']:
type = info['type']
cdef void __core_ui_ops_ui_init(self):
debug.c_purple_debug_info("core_ui_ops", "%s", "ui_init\n")
- account.c_purple_accounts_set_ui_ops(&c_account_ui_ops)
+ account.purple_accounts_set_ui_ops(&c_account_ui_ops)
connection.c_purple_connections_set_ui_ops(&c_conn_ui_ops)
blist.c_purple_blist_set_ui_ops(&c_blist_ui_ops)
conversation.c_purple_conversations_set_ui_ops(&c_conv_ui_ops)
global c_ui_info
- account.c_purple_accounts_set_ui_ops(NULL)
+ account.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)
def load_accounts(self):
cdef glib.GList *iter
cdef account.PurpleAccount *acc
- iter = account.c_purple_accounts_get_all()
+ iter = account.purple_accounts_get_all()
while iter:
acc = <account.PurpleAccount *> iter.data
if <account.PurpleAccount *>acc:
- username = account.c_purple_account_get_username(acc)
- protocol_id = account.c_purple_account_get_protocol_id(acc)
- self.account_add(username.split("/")[0], protocol_id, "172.18.216.211", 8080)
+ username = <char *> account.purple_account_get_username(acc)
+ protocol_id = <char *> account.purple_account_get_protocol_id(acc)
+ self.account_add(username.split("/")[0], protocol_id, \
+ "172.18.216.211", 8080)
iter = iter.next
def account_add(self, username, protocol_id, host, port):
if not self.account_verify(username):
acc = purple.Account(username, protocol_id)
self.__accounts[username] = acc
- if not account.c_purple_accounts_find(username, protocol_id):
+ if not account.purple_accounts_find(username, protocol_id):
acc.proxy.set_type(purple.ProxyInfoType().HTTP)
acc.proxy.set_host(host)
acc.proxy.set_port(port)
include "plugin.pyx"
include "proxy.pyx"
+#include "protocol.pyx"
include "account.pyx"
include "buddy.pyx"
#include "connection.pyx"
include "conversation.pyx"
+
cdef char *c_username = NULL
cdef char *c_protocol_id = NULL
- c_username = <char *> account.c_purple_account_get_username(acc)
+ c_username = <char *> account.purple_account_get_username(acc)
if c_username == NULL:
username = None
else:
username = c_username
- c_protocol_id = <char *> account.c_purple_account_get_protocol_id(acc)
+ c_protocol_id = <char *> account.purple_account_get_protocol_id(acc)
if c_protocol_id == NULL:
protocol_id = None
else:
cdef char *c_username = NULL
cdef char *c_protocol_id = NULL
- c_username = <char *> account.c_purple_account_get_username(acc)
+ c_username = <char *> account.purple_account_get_username(acc)
if c_username == NULL:
username = None
else:
username = c_username
- c_protocol_id = <char *> account.c_purple_account_get_protocol_id(acc)
+ c_protocol_id = <char *> account.purple_account_get_protocol_id(acc)
if c_protocol_id == NULL:
protocol_id = None
else: