use NEC to handle account creation events

This commit is contained in:
Yann Leboulanger 2010-11-07 18:26:31 +01:00
parent 375c9cf05e
commit 60e8c63a29
5 changed files with 42 additions and 27 deletions

View file

@ -823,9 +823,11 @@ class Connection(CommonConnection, ConnectionHandlers):
self.new_account_info['hostname'] == data[0]: self.new_account_info['hostname'] == data[0]:
# it's a new account # it's a new account
if not data[1]: # wrong answer if not data[1]: # wrong answer
self.dispatch('ACC_NOT_OK', ( reason = _('Server %(name)s answered wrongly to '
_('Server %(name)s answered wrongly to register request: ' 'register request: %(error)s') % {'name': data[0],
'%(error)s') % {'name': data[0], 'error': data[3]})) 'error': data[3]}
gajim.nec.push_incoming_event(AccountNotCreated(None,
conn=self, reason=reason))
return return
is_form = data[2] is_form = data[2]
conf = data[1] conf = data[1]
@ -833,13 +835,16 @@ class Connection(CommonConnection, ConnectionHandlers):
if self.new_account_form: if self.new_account_form:
def _on_register_result(result): def _on_register_result(result):
if not common.xmpp.isResultNode(result): if not common.xmpp.isResultNode(result):
self.dispatch('ACC_NOT_OK', (result.getError())) gajim.nec.push_incoming_event(AccountNotCreated(
None, conn=self, reason=result.getError()))
return return
if gajim.HAVE_GPG: if gajim.HAVE_GPG:
self.USE_GPG = True self.USE_GPG = True
self.gpg = GnuPG.GnuPG(gajim.config.get( self.gpg = GnuPG.GnuPG(gajim.config.get(
'use_gpg_agent')) 'use_gpg_agent'))
self.dispatch('ACC_OK', (self.new_account_info)) gajim.nec.push_incoming_event(
AccountCreatedEvent(None, conn=self,
account_info = self.new_account_info))
self.new_account_info = None self.new_account_info = None
self.new_account_form = None self.new_account_form = None
if self.connection: if self.connection:
@ -858,9 +863,10 @@ class Connection(CommonConnection, ConnectionHandlers):
if self.new_account_form.keys().sort() != \ if self.new_account_form.keys().sort() != \
conf.keys().sort(): conf.keys().sort():
# requested config has changed since first connection # requested config has changed since first connection
self.dispatch('ACC_NOT_OK', (_( reason = _('Server %s provided a different '
'Server %s provided a different registration form')\ 'registration form') % data[0]
% data[0])) gajim.nec.push_incoming_event(AccountNotCreated(
None, conn=self, reason=reason))
return return
common.xmpp.features_nb.register(self.connection, common.xmpp.features_nb.register(self.connection,
self._hostname, self.new_account_form, self._hostname, self.new_account_form,

View file

@ -1232,4 +1232,12 @@ class ArchivingPreferencesChangedReceivedEvent(nec.NetworkIncomingEvent):
elif self.stanza.getTag('itemremove'): elif self.stanza.getTag('itemremove'):
for item in pref.getTags('item'): for item in pref.getTags('item'):
self.removed_items.append(item.getAttr('jid')) self.removed_items.append(item.getAttr('jid'))
return True return True
class AccountCreatedEvent(nec.NetworkIncomingEvent):
name = 'account-created'
base_network_events = []
class AccountNotCreatedEvent(nec.NetworkIncomingEvent):
name = 'account-not-created'
base_network_events = []

View file

@ -3447,9 +3447,10 @@ class AccountCreationWizardWindow:
self.new_acc_connected) self.new_acc_connected)
gajim.ged.register_event_handler('NEW_ACC_NOT_CONNECTED', ged.CORE, gajim.ged.register_event_handler('NEW_ACC_NOT_CONNECTED', ged.CORE,
self.new_acc_not_connected) self.new_acc_not_connected)
gajim.ged.register_event_handler('ACC_OK', ged.CORE, self.acc_is_ok) gajim.ged.register_event_handler('account-created', ged.GUI1,
gajim.ged.register_event_handler('ACC_NOT_OK', ged.CORE, self._nec_acc_is_ok)
self.acc_is_not_ok) gajim.ged.register_event_handler('account-not-created', ged.GUI1,
self._nec_acc_is_not_ok)
def on_wizard_window_destroy(self, widget): def on_wizard_window_destroy(self, widget):
page = self.notebook.get_current_page() page = self.notebook.get_current_page()
@ -3463,9 +3464,10 @@ class AccountCreationWizardWindow:
self.new_acc_connected) self.new_acc_connected)
gajim.ged.remove_event_handler('NEW_ACC_NOT_CONNECTED', ged.CORE, gajim.ged.remove_event_handler('NEW_ACC_NOT_CONNECTED', ged.CORE,
self.new_acc_not_connected) self.new_acc_not_connected)
gajim.ged.remove_event_handler('ACC_OK', ged.CORE, self.acc_is_ok) gajim.ged.remove_event_handler('account-created', ged.GUI1,
gajim.ged.remove_event_handler('ACC_NOT_OK', ged.CORE, self._nec_acc_is_ok)
self.acc_is_not_ok) gajim.ged.remove_event_handler('account-not-created', ged.GUI1,
self._nec_acc_is_not_ok)
del gajim.interface.instances['account_creation_wizard'] del gajim.interface.instances['account_creation_wizard']
def on_register_server_features_button_clicked(self, widget): def on_register_server_features_button_clicked(self, widget):
@ -3772,25 +3774,25 @@ class AccountCreationWizardWindow:
self.finish_label.set_markup(finish_text) self.finish_label.set_markup(finish_text)
self.notebook.set_current_page(6) # show finish page self.notebook.set_current_page(6) # show finish page
def acc_is_ok(self, account, config): def _nec_acc_is_ok(self, obj):
""" """
Account creation succeeded Account creation succeeded
""" """
# We receive events from all accounts from GED # We receive events from all accounts from GED
if account != self.account: if obj.conn.name != self.account:
return return
self.create_vars(config) self.create_vars(obj.account_info)
self.show_finish_page() self.show_finish_page()
if self.update_progressbar_timeout_id is not None: if self.update_progressbar_timeout_id is not None:
gobject.source_remove(self.update_progressbar_timeout_id) gobject.source_remove(self.update_progressbar_timeout_id)
def acc_is_not_ok(self, account, reason): def _nec_acc_is_not_ok(self, obj):
""" """
Account creation failed Account creation failed
""" """
# We receive events from all accounts from GED # We receive events from all accounts from GED
if account != self.account: if obj.conn.name != self.account:
return return
self.back_button.show() self.back_button.show()
self.cancel_button.show() self.cancel_button.show()
@ -3802,7 +3804,7 @@ class AccountCreationWizardWindow:
img = self.xml.get_object('finish_image') img = self.xml.get_object('finish_image')
img.set_from_stock(gtk.STOCK_DIALOG_ERROR, gtk.ICON_SIZE_DIALOG) img.set_from_stock(gtk.STOCK_DIALOG_ERROR, gtk.ICON_SIZE_DIALOG)
finish_text = '<big><b>%s</b></big>\n\n%s' % (_( finish_text = '<big><b>%s</b></big>\n\n%s' % (_(
'An error occurred during account creation'), reason) 'An error occurred during account creation'), obj.reason)
self.finish_label.set_markup(finish_text) self.finish_label.set_markup(finish_text)
self.notebook.set_current_page(6) # show finish page self.notebook.set_current_page(6) # show finish page

View file

@ -585,11 +585,6 @@ class Interface:
gajim.interface.instances[account]['pep_services'].items_received( gajim.interface.instances[account]['pep_services'].items_received(
array[2]) array[2])
def handle_event_acc_ok(self, account, array):
#('ACC_OK', account, (config))
if self.remote_ctrl:
self.remote_ctrl.raise_signal('NewAccount', (account, array))
def handle_event_myvcard(self, account, array): def handle_event_myvcard(self, account, array):
nick = '' nick = ''
if 'NICKNAME' in array and array['NICKNAME']: if 'NICKNAME' in array and array['NICKNAME']:
@ -1811,7 +1806,6 @@ class Interface:
'AGENT_REMOVED': [self.handle_event_agent_removed], 'AGENT_REMOVED': [self.handle_event_agent_removed],
'REGISTER_AGENT_INFO': [self.handle_event_register_agent_info], 'REGISTER_AGENT_INFO': [self.handle_event_register_agent_info],
'AGENT_INFO_ITEMS': [self.handle_event_agent_info_items], 'AGENT_INFO_ITEMS': [self.handle_event_agent_info_items],
'ACC_OK': [self.handle_event_acc_ok],
'MYVCARD': [self.handle_event_myvcard], 'MYVCARD': [self.handle_event_myvcard],
'VCARD': [self.handle_event_vcard], 'VCARD': [self.handle_event_vcard],
'GC_NOTIFY': [self.handle_event_gc_notify], 'GC_NOTIFY': [self.handle_event_gc_notify],

View file

@ -127,6 +127,8 @@ class Remote:
ged.POSTGUI, self.on_gc_message_received) ged.POSTGUI, self.on_gc_message_received)
gajim.ged.register_event_handler('our-show', gajim.ged.register_event_handler('our-show',
ged.POSTGUI, self.on_our_status) ged.POSTGUI, self.on_our_status)
gajim.ged.register_event_handler('account-created',
ged.POSTGUI, self.on_account_created)
def on_last_status_time(self, obj): def on_last_status_time(self, obj):
self.raise_signal('LastStatusTime', (obj.conn.name, [ self.raise_signal('LastStatusTime', (obj.conn.name, [
@ -183,6 +185,9 @@ class Remote:
def on_our_status(self, obj): def on_our_status(self, obj):
self.raise_signal('AccountPresence', (obj.show, obj.conn.name)) self.raise_signal('AccountPresence', (obj.show, obj.conn.name))
def on_account_created(self, obj):
self.raise_signal('NewAccount', (obj.conn.name, obj.account_info))
def raise_signal(self, signal, arg): def raise_signal(self, signal, arg):
if self.signal_object: if self.signal_object:
try: try: