diff --git a/src/gajim-remote.py b/src/gajim-remote.py index 62adc53ff..0452c7983 100755 --- a/src/gajim-remote.py +++ b/src/gajim-remote.py @@ -142,6 +142,12 @@ class GajimRemote: ('jid', _('JID of the contact'), True) ] ], + 'account_info': [ + _('Gets detailed info on a account'), + [ + ('account', _('Name of the account'), True) + ] + ], 'send_file': [ _('Sends file to a contact'), [ @@ -252,6 +258,9 @@ class GajimRemote: if isinstance(res, list): for account in res: print account + elif self.command == 'account_info': + if res: + print self.print_info(0, self.unrepr(res)[0]) elif self.command == 'list_contacts': for single_res in res: accounts = self.unrepr(single_res) @@ -382,10 +391,12 @@ class GajimRemote: res = self.print_info(level+1, val) if res != '': ret_str += '%s%s: \n%s' % (spacing, key, res) - if isinstance(ret_str, unicode): - return ret_str.encode(locale.getpreferredencoding()) - else: - return ret_str + + # utf-8 string come from gajim + # FIXME: why we have strings instead of unicode? + if isinstance(ret_str, str): + ret_str = ret_str.decode('utf-8') + return ret_str.encode(locale.getpreferredencoding()) def unrepr(self, serialized_data): ''' works the same as eval, but only for structural values, diff --git a/src/remote_control.py b/src/remote_control.py index 716833e98..220036464 100644 --- a/src/remote_control.py +++ b/src/remote_control.py @@ -95,6 +95,7 @@ class SignalObject(DbusPrototype): self.show_next_unread, self.list_contacts, self.list_accounts, + self.account_info, self.change_status, self.open_chat, self.send_message, @@ -310,10 +311,29 @@ class SignalObject(DbusPrototype): if result and len(result) > 0: result_array = [] for account in result: - result_array.append(account.encode('utf-8')) + result_array.append(account) return result_array return None - + + def account_info(self, *args): + ''' show info on account: resource, jid, nick, prio, message ''' + [for_account] = self._get_real_arguments(args, 1) + if not gajim.connections.has_key(for_account): + # account is invalid + return None + account = gajim.connections[for_account] + result = {} + index = account.connected + result['status'] = STATUS_LIST[index] + result['name'] = account.name + result['jid'] = gajim.get_jid_from_account(account.name) + result['message'] = account.status + result['priority'] = unicode(gajim.config.get_per('accounts', + account.name, 'priority')) + result['resource'] = unicode(gajim.config.get_per('accounts', + account.name, 'resource')) + return repr(result) + def list_contacts(self, *args): ''' list all contacts in the roster. If the first argument is specified, then return the contacts for the specified account ''' @@ -499,3 +519,4 @@ class SignalObject(DbusPrototype): add_contact = method(INTERFACE)(add_contact) get_status = method(INTERFACE)(get_status) get_status_message = method(INTERFACE)(get_status_message) + account_info = method(INTERFACE)(account_info)