correctly show the result of an account creation (success / fail)

This commit is contained in:
Yann Leboulanger 2005-11-04 21:27:14 +00:00
parent ca05945f63
commit febe8d4a1a
4 changed files with 176 additions and 86 deletions

View File

@ -1402,8 +1402,9 @@ class Connection:
else: else:
gajim.config.set('usegpg', False) gajim.config.set('usegpg', False)
gajim.connections[self.name] = self gajim.connections[self.name] = self
self.dispatch('ACC_OK', (self.name, self.new_account_info)) self.dispatch('ACC_OK', (self.new_account_info))
self.new_account_info = None self.new_account_info = None
self.connection = None
return return
is_form = data[2] is_form = data[2]
if is_form: if is_form:

View File

@ -2434,10 +2434,13 @@ class AccountCreationWizardWindow:
# Generic widgets # Generic widgets
self.notebook = self.xml.get_widget('notebook') self.notebook = self.xml.get_widget('notebook')
self.cancel_button = self.xml.get_widget('cancel_button')
self.back_button = self.xml.get_widget('back_button') self.back_button = self.xml.get_widget('back_button')
self.forward_button = self.xml.get_widget('forward_button')
self.finish_button = self.xml.get_widget('finish_button') self.finish_button = self.xml.get_widget('finish_button')
self.advanced_button = self.xml.get_widget('advanced_button') self.advanced_button = self.xml.get_widget('advanced_button')
self.finish_label = self.xml.get_widget('finish_label') self.finish_label = self.xml.get_widget('finish_label')
self.go_online_checkbutton = self.xml.get_widget('go_online_checkbutton')
# Some vars # Some vars
self.sync = False self.sync = False
@ -2453,6 +2456,7 @@ class AccountCreationWizardWindow:
self.account = _('Main') + str(i) self.account = _('Main') + str(i)
i += 1 i += 1
self.notebook.set_current_page(0)
self.advanced_button.set_no_show_all(True) self.advanced_button.set_no_show_all(True)
self.xml.signal_autoconnect(self) self.xml.signal_autoconnect(self)
self.window.show_all() self.window.show_all()
@ -2472,7 +2476,10 @@ class AccountCreationWizardWindow:
def on_back_button_clicked(self, widget): def on_back_button_clicked(self, widget):
if self.notebook.get_current_page() == 1: if self.notebook.get_current_page() == 1:
self.notebook.set_current_page(0) self.notebook.set_current_page(0)
self.back_button.set_sensitive(False) self.back_button.set_sensitive(False)
elif self.notebook.get_current_page() == 3: # finish page
self.forward_button.show()
self.notebook.set_current_page(1) # Goto parameters page
def get_widgets(self): def get_widgets(self):
widgets = {} widgets = {}
@ -2505,15 +2512,6 @@ class AccountCreationWizardWindow:
return return
else: else:
if self.modify:
#FIXME: pango me
finish_text = _('Account has been added successfully.\n'
'You can set advanced account options by pressing Advanced button,\nor later by clicking in Accounts menuitem under Edit menu from the main window.')
else:
#FIXME: pango me
finish_text = _('Your new account has been created successfully.\n'
'You can set advanced account options by pressing Advanced button,\nor later by clicking in Accounts menuitem under Edit menu from the main window.')
widgets = self.get_widgets() widgets = self.get_widgets()
username = widgets['nick_entry'].get_text().decode('utf-8') username = widgets['nick_entry'].get_text().decode('utf-8')
if not username: if not username:
@ -2540,15 +2538,53 @@ class AccountCreationWizardWindow:
return return
username, server = gajim.get_room_name_and_server_from_room_jid(jid) username, server = gajim.get_room_name_and_server_from_room_jid(jid)
self.save_account(self.account, username, server, savepass, password) self.save_account(username, server, savepass, password)
self.finish_label.set_text(finish_text) self.cancel_button.hide()
self.xml.get_widget('cancel_button').hide()
self.back_button.hide() self.back_button.hide()
self.xml.get_widget('forward_button').hide() self.forward_button.hide()
self.finish_button.set_sensitive(True) if self.modify:
self.finish_button.set_property('has-default', True) #FIXME: pango me
self.advanced_button.show() finish_text = _('Account has been added successfully.\n'
self.notebook.set_current_page(2) # show finish page 'You can set advanced account options by pressing Advanced button,\nor later by clicking in Accounts menuitem under Edit menu from the main window.')
self.finish_label.set_text(finish_text)
self.finish_button.set_sensitive(True)
self.finish_button.set_property('has-default', True)
self.advanced_button.show()
self.go_online_checkbutton.show()
img = self.xml.get_widget('finish_image')
img.set_from_stock(gtk.STOCK_APPLY, gtk.ICON_SIZE_DIALOG)
self.notebook.set_current_page(3) # show finish page
else:
self.notebook.set_current_page(2) # show creqting page
def acc_is_ok(self, config):
'''Account creation succeeded'''
con = gajim.connections[self.account]
gajim.interface.register_handlers(con)
self.create_vars(config)
self.finish_button.set_sensitive(True)
self.finish_button.set_property('has-default', True)
self.advanced_button.show()
self.go_online_checkbutton.show()
img = self.xml.get_widget('finish_image')
img.set_from_stock(gtk.STOCK_APPLY, gtk.ICON_SIZE_DIALOG)
#FIXME: pango me
finish_text = _('Your new account has been created successfully.\n'
'You can set advanced account options by pressing Advanced button,\nor later by clicking in Accounts menuitem under Edit menu from the main window.')
self.finish_label.set_text(finish_text)
self.notebook.set_current_page(3) # show finish page
def acc_is_not_ok(self, reason):
'''Account creation failed'''
self.back_button.show()
self.cancel_button.show()
self.go_online_checkbutton.hide()
img = self.xml.get_widget('finish_image')
img.set_from_stock(gtk.STOCK_DIALOG_ERROR, gtk.ICON_SIZE_DIALOG)
#FIXME: pango me
finish_text = _('An error occured during account creation:\n') + reason
self.finish_label.set_text(finish_text)
self.notebook.set_current_page(3) # show finish page
def on_advanced_button_clicked(self, widget): def on_advanced_button_clicked(self, widget):
gajim.interface.windows[self.account]['account_modification'] = \ gajim.interface.windows[self.account]['account_modification'] = \
@ -2556,7 +2592,7 @@ class AccountCreationWizardWindow:
self.window.destroy() self.window.destroy()
def on_finish_button_clicked(self, widget): def on_finish_button_clicked(self, widget):
go_online = self.xml.get_widget('go_online_checkbutton') go_online = self.xml.get_widget('go_online_checkbutton').get_active()
self.window.destroy() self.window.destroy()
if go_online: if go_online:
gajim.interface.roster.send_status(self.account, 'online', '') gajim.interface.roster.send_status(self.account, 'online', '')
@ -2598,7 +2634,7 @@ class AccountCreationWizardWindow:
string = '<span background="lightyellow">%s@%s</span>' % (name, server) string = '<span background="lightyellow">%s@%s</span>' % (name, server)
jid_label.set_label(string) jid_label.set_label(string)
def save_account(self, name, login, server, savepass, password): def save_account(self, login, server, savepass, password):
config = {} config = {}
config['name'] = login config['name'] = login
config['hostname'] = server config['hostname'] = server
@ -2619,43 +2655,44 @@ class AccountCreationWizardWindow:
config['savegpgpass'] = False config['savegpgpass'] = False
config['gpgpassword'] = '' config['gpgpassword'] = ''
if name in gajim.connections: if self.account in gajim.connections:
dialogs.ErrorDialog(_('Account name is in use'), dialogs.ErrorDialog(_('Account name is in use'),
_('You already have an account using this name.')).get_response() _('You already have an account using this name.')).get_response()
return return
con = connection.Connection(name) con = connection.Connection(self.account)
gajim.interface.register_handlers(con) gajim.events_for_ui[self.account] = []
if not self.modify: if not self.modify:
gajim.events_for_ui[name] = [] con.new_account(self.account, config)
con.new_account(name, config)
return return
# The account we add already exists on the server gajim.connections[self.account] = con
gajim.connections[name] = con gajim.interface.register_handlers(con)
gajim.config.add_per('accounts', name) self.create_vars(config)
def create_vars(self, config):
gajim.config.add_per('accounts', self.account)
for opt in config: for opt in config:
gajim.config.set_per('accounts', name, opt, config[opt]) gajim.config.set_per('accounts', self.account, opt, config[opt])
if config['savepass']:
gajim.connections[name].password = config['password']
# update variables # update variables
gajim.interface.windows[name] = {'infos': {}, 'disco': {}, 'chats': {}, gajim.interface.windows[self.account] = {'infos': {}, 'disco': {},
'gc': {}, 'gc_config': {}} 'chats': {}, 'gc': {}, 'gc_config': {}}
gajim.interface.windows[name]['xml_console'] = \ gajim.interface.windows[self.account]['xml_console'] = \
dialogs.XMLConsoleWindow(name) dialogs.XMLConsoleWindow(self.account)
gajim.awaiting_events[name] = {} gajim.awaiting_events[self.account] = {}
gajim.connections[name].connected = 0 gajim.connections[self.account].connected = 0
gajim.groups[name] = {} gajim.groups[self.account] = {}
gajim.contacts[name] = {} gajim.contacts[self.account] = {}
gajim.gc_contacts[name] = {} gajim.gc_contacts[self.account] = {}
gajim.gc_connected[name] = {} gajim.gc_connected[self.account] = {}
gajim.newly_added[name] = [] gajim.newly_added[self.account] = []
gajim.to_be_removed[name] = [] gajim.to_be_removed[self.account] = []
gajim.nicks[name] = config['name'] gajim.nicks[self.account] = config['name']
gajim.allow_notifications[name] = False gajim.allow_notifications[self.account] = False
gajim.sleeper_state[name] = 'off' gajim.sleeper_state[self.account] = 'off'
gajim.encrypted_chats[name] = [] gajim.encrypted_chats[self.account] = []
gajim.last_message_time[name] = {} gajim.last_message_time[self.account] = {}
gajim.status_before_autoaway[name] = '' gajim.status_before_autoaway[self.account] = ''
gajim.events_for_ui[name] = [] gajim.events_for_ui[self.account] = []
# refresh accounts window # refresh accounts window
if gajim.interface.windows.has_key('accounts'): if gajim.interface.windows.has_key('accounts'):
gajim.interface.windows['accounts'].init_accounts() gajim.interface.windows['accounts'].init_accounts()

View File

@ -607,41 +607,18 @@ class Interface:
return return
def handle_event_acc_ok(self, account, array): def handle_event_acc_ok(self, account, array):
#('ACC_OK', account, (name, config)) #('ACC_OK', account, (config))
name = array[0] if self.windows.has_key('account_creation_wizard'):
dialogs.InformationDialog(_('Account registration successful'), self.windows['account_creation_wizard'].acc_is_ok(array)
_('The account "%s" has been registered with the Jabber server.') % name)
gajim.config.add_per('accounts', name)
for opt in array[1]:
gajim.config.set_per('accounts', name, opt, array[1][opt])
self.windows[name] = {'infos': {}, 'disco': {}, 'chats': {},
'gc': {}, 'gc_config': {}}
self.windows[name]['xml_console'] = dialogs.XMLConsoleWindow(name)
gajim.awaiting_events[name] = {}
# disconnect from server - our status in roster is offline
gajim.connections[name].connected = 1
gajim.gc_contacts[name] = {}
gajim.gc_connected[name] = {}
gajim.nicks[name] = array[1]['name']
gajim.allow_notifications[name] = False
gajim.groups[name] = {}
gajim.contacts[name] = {}
gajim.newly_added[name] = []
gajim.to_be_removed[name] = []
gajim.sleeper_state[name] = 'off'
gajim.encrypted_chats[name] = []
gajim.last_message_time[name] = {}
gajim.status_before_autoaway[name] = ''
gajim.events_for_ui[name] = []
gajim.connections[name].change_status('offline', None, True)
gajim.connections[name].connected = 0
if self.windows.has_key('accounts'):
self.windows['accounts'].init_accounts()
self.roster.draw_roster()
if self.remote and self.remote.is_enabled(): if self.remote and self.remote.is_enabled():
self.remote.raise_signal('NewAccount', (account, array)) self.remote.raise_signal('NewAccount', (account, array))
def handle_event_acc_not_ok(self, account, array):
#('ACC_NOT_OK', account, (reason))
if self.windows.has_key('account_creation_wizard'):
self.windows['account_creation_wizard'].acc_is_not_ok(array)
def handle_event_quit(self, p1, p2): def handle_event_quit(self, p1, p2):
self.roster.quit_gtkgui_interface() self.roster.quit_gtkgui_interface()
@ -1144,6 +1121,7 @@ class Interface:
'AGENT_INFO_INFO': self.handle_event_agent_info_info, 'AGENT_INFO_INFO': self.handle_event_agent_info_info,
'QUIT': self.handle_event_quit, 'QUIT': self.handle_event_quit,
'ACC_OK': self.handle_event_acc_ok, 'ACC_OK': self.handle_event_acc_ok,
'ACC_NOT_OK': self.handle_event_acc_not_ok,
'MYVCARD': self.handle_event_myvcard, 'MYVCARD': self.handle_event_myvcard,
'VCARD': self.handle_event_vcard, 'VCARD': self.handle_event_vcard,
'OS_INFO': self.handle_event_os_info, 'OS_INFO': self.handle_event_os_info,

View File

@ -14257,6 +14257,82 @@ to the Jabber network.</property>
</packing> </packing>
</child> </child>
<child>
<widget class="GtkVBox" id="vbox104">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child>
<widget class="GtkLabel" id="label366">
<property name="visible">True</property>
<property name="label" translatable="yes">Account is being created
Please wait.</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">False</property>
</packing>
</child>
<child>
<widget class="GtkProgressBar" id="progressbar1">
<property name="visible">True</property>
<property name="orientation">GTK_PROGRESS_LEFT_TO_RIGHT</property>
<property name="fraction">0</property>
<property name="pulse_step">0.10000000149</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
</widget>
<packing>
<property name="tab_expand">False</property>
<property name="tab_fill">True</property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label365">
<property name="visible">True</property>
<property name="label" translatable="yes"></property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="type">tab</property>
</packing>
</child>
<child> <child>
<widget class="GtkVBox" id="vbox103"> <widget class="GtkVBox" id="vbox103">
<property name="visible">True</property> <property name="visible">True</property>
@ -14270,10 +14346,8 @@ to the Jabber network.</property>
<property name="spacing">12</property> <property name="spacing">12</property>
<child> <child>
<widget class="GtkImage" id="image942"> <widget class="GtkImage" id="finish_image">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-apply</property>
<property name="icon_size">4</property>
<property name="xalign">0.5</property> <property name="xalign">0.5</property>
<property name="yalign">0.5</property> <property name="yalign">0.5</property>
<property name="xpad">0</property> <property name="xpad">0</property>