+
+class ClientModel:
+ def __init__(self):
+ self.purple = purple.Purple(debug_enabled=True)
+ self.purple.purple_init()
+ self.account = purple.Account()
+
+ def add_account(self, acc):
+ ''' @param acc: {'username': "foo@gmail.com", 'protocol': "XMPP"} '''
+
+ new_acc = self.account.new(acc['username'], acc['protocol'])
+
+ return new_acc
+
+ def get_protocols(self):
+ return self.account.protocol.get_all()
+
+ def get_protocol_options(self, protocol_id):
+ return self.account.protocol.get_options(protocol_id)
+
+ def set_account_info(self, acc, info):
+ ''' @param info: {protocol: 'prpl-jabber', alias: '', password: ' ', server: 'new server', port: '' } ||
+ {server: 'new server'} '''
+
+ if info.has_key('protocol'):
+ self.account.set_protocol_id(acc, info['protocol'])
+ if info.has_key('alias'):
+ self.account.set_alias(acc, info['alias'])
+ if info.has_key('password'):
+ self.account.set_password(acc, info['password'])
+
+ self.account.protocol.set_options(acc, info)
+
+ def get_account_info(self, acc):
+ info = {}
+ po = self.account.protocol.get_options(acc[1], acc[0])
+ info['protocol'] = self.account.get_protocol_id(acc)
+ info['alias'] = self.account.get_alias(acc)
+ info['password'] = self.account.get_password(acc)
+ info['connect_server'] = po['connect_server'][1]
+ info['port'] = po['port'][1]
+
+ return info
+
+ def set_account_proxy(self, acc, info):
+ self.account.proxy.set_info(acc, info)
+
+ def account_connect(self, acc):
+ self.account.set_enabled(acc, "carman-purple-python", True)
+ # self.account.connect(acc)
+ self.purple.connect()
+
+ def account_disconnect(self, acc):
+ self.account.disconnect(acc)
+
+
+class ClientCtrl: