-cbs = {}
-conv_cbs = {}
-
-def callback(name):
- print "---- callback example: %s" % name
-
-conv_cbs["create_conversation"] = callback
-conv_cbs["destroy_conversation"] = callback
-conv_cbs["write_chat"] = callback
-conv_cbs["write_im"] = callback
-conv_cbs["write_conv"] = callback
-conv_cbs["chat_add_users"] = callback
-conv_cbs["chat_rename_user"] = callback
-conv_cbs["chat_remove_users"] = callback
-conv_cbs["chat_update_user"] = callback
-conv_cbs["present"] = callback
-conv_cbs["has_focus"] = callback
-conv_cbs["custom_smiley_add"] = callback
-conv_cbs["custom_smiley_write"] = callback
-conv_cbs["custom_smiley_close"] = callback
-conv_cbs["send_confirm"] = callback
-
-cbs["conversation"] = conv_cbs
-
-class NullClient:
+
+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: