diff --git a/src/common/connection.py b/src/common/connection.py
index ff8fa5657..901933b62 100644
--- a/src/common/connection.py
+++ b/src/common/connection.py
@@ -1402,8 +1402,9 @@ class Connection:
else:
gajim.config.set('usegpg', False)
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.connection = None
return
is_form = data[2]
if is_form:
diff --git a/src/config.py b/src/config.py
index a7d434d42..022b9beae 100644
--- a/src/config.py
+++ b/src/config.py
@@ -2434,10 +2434,13 @@ class AccountCreationWizardWindow:
# Generic widgets
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.forward_button = self.xml.get_widget('forward_button')
self.finish_button = self.xml.get_widget('finish_button')
self.advanced_button = self.xml.get_widget('advanced_button')
self.finish_label = self.xml.get_widget('finish_label')
+ self.go_online_checkbutton = self.xml.get_widget('go_online_checkbutton')
# Some vars
self.sync = False
@@ -2453,6 +2456,7 @@ class AccountCreationWizardWindow:
self.account = _('Main') + str(i)
i += 1
+ self.notebook.set_current_page(0)
self.advanced_button.set_no_show_all(True)
self.xml.signal_autoconnect(self)
self.window.show_all()
@@ -2472,7 +2476,10 @@ class AccountCreationWizardWindow:
def on_back_button_clicked(self, widget):
if self.notebook.get_current_page() == 1:
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):
widgets = {}
@@ -2505,15 +2512,6 @@ class AccountCreationWizardWindow:
return
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()
username = widgets['nick_entry'].get_text().decode('utf-8')
if not username:
@@ -2540,15 +2538,53 @@ class AccountCreationWizardWindow:
return
username, server = gajim.get_room_name_and_server_from_room_jid(jid)
- self.save_account(self.account, username, server, savepass, password)
- self.finish_label.set_text(finish_text)
- self.xml.get_widget('cancel_button').hide()
+ self.save_account(username, server, savepass, password)
+ self.cancel_button.hide()
self.back_button.hide()
- self.xml.get_widget('forward_button').hide()
- self.finish_button.set_sensitive(True)
- self.finish_button.set_property('has-default', True)
- self.advanced_button.show()
- self.notebook.set_current_page(2) # show finish page
+ self.forward_button.hide()
+ 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.')
+ 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):
gajim.interface.windows[self.account]['account_modification'] = \
@@ -2556,7 +2592,7 @@ class AccountCreationWizardWindow:
self.window.destroy()
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()
if go_online:
gajim.interface.roster.send_status(self.account, 'online', '')
@@ -2598,7 +2634,7 @@ class AccountCreationWizardWindow:
string = '%s@%s' % (name, server)
jid_label.set_label(string)
- def save_account(self, name, login, server, savepass, password):
+ def save_account(self, login, server, savepass, password):
config = {}
config['name'] = login
config['hostname'] = server
@@ -2619,43 +2655,44 @@ class AccountCreationWizardWindow:
config['savegpgpass'] = False
config['gpgpassword'] = ''
- if name in gajim.connections:
+ if self.account in gajim.connections:
dialogs.ErrorDialog(_('Account name is in use'),
_('You already have an account using this name.')).get_response()
return
- con = connection.Connection(name)
- gajim.interface.register_handlers(con)
+ con = connection.Connection(self.account)
+ gajim.events_for_ui[self.account] = []
if not self.modify:
- gajim.events_for_ui[name] = []
- con.new_account(name, config)
+ con.new_account(self.account, config)
return
- # The account we add already exists on the server
- gajim.connections[name] = con
- gajim.config.add_per('accounts', name)
+ gajim.connections[self.account] = con
+ gajim.interface.register_handlers(con)
+ self.create_vars(config)
+
+ def create_vars(self, config):
+ gajim.config.add_per('accounts', self.account)
for opt in config:
- gajim.config.set_per('accounts', name, opt, config[opt])
- if config['savepass']:
- gajim.connections[name].password = config['password']
+ gajim.config.set_per('accounts', self.account, opt, config[opt])
+
# update variables
- gajim.interface.windows[name] = {'infos': {}, 'disco': {}, 'chats': {},
- 'gc': {}, 'gc_config': {}}
- gajim.interface.windows[name]['xml_console'] = \
- dialogs.XMLConsoleWindow(name)
- gajim.awaiting_events[name] = {}
- gajim.connections[name].connected = 0
- gajim.groups[name] = {}
- gajim.contacts[name] = {}
- gajim.gc_contacts[name] = {}
- gajim.gc_connected[name] = {}
- gajim.newly_added[name] = []
- gajim.to_be_removed[name] = []
- gajim.nicks[name] = config['name']
- gajim.allow_notifications[name] = False
- 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.interface.windows[self.account] = {'infos': {}, 'disco': {},
+ 'chats': {}, 'gc': {}, 'gc_config': {}}
+ gajim.interface.windows[self.account]['xml_console'] = \
+ dialogs.XMLConsoleWindow(self.account)
+ gajim.awaiting_events[self.account] = {}
+ gajim.connections[self.account].connected = 0
+ gajim.groups[self.account] = {}
+ gajim.contacts[self.account] = {}
+ gajim.gc_contacts[self.account] = {}
+ gajim.gc_connected[self.account] = {}
+ gajim.newly_added[self.account] = []
+ gajim.to_be_removed[self.account] = []
+ gajim.nicks[self.account] = config['name']
+ gajim.allow_notifications[self.account] = False
+ gajim.sleeper_state[self.account] = 'off'
+ gajim.encrypted_chats[self.account] = []
+ gajim.last_message_time[self.account] = {}
+ gajim.status_before_autoaway[self.account] = ''
+ gajim.events_for_ui[self.account] = []
# refresh accounts window
if gajim.interface.windows.has_key('accounts'):
gajim.interface.windows['accounts'].init_accounts()
diff --git a/src/gajim.py b/src/gajim.py
index 60e93e193..a106f9d3a 100755
--- a/src/gajim.py
+++ b/src/gajim.py
@@ -607,41 +607,18 @@ class Interface:
return
def handle_event_acc_ok(self, account, array):
- #('ACC_OK', account, (name, config))
- name = array[0]
- dialogs.InformationDialog(_('Account registration successful'),
- _('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()
-
+ #('ACC_OK', account, (config))
+ if self.windows.has_key('account_creation_wizard'):
+ self.windows['account_creation_wizard'].acc_is_ok(array)
+
if self.remote and self.remote.is_enabled():
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):
self.roster.quit_gtkgui_interface()
@@ -1144,6 +1121,7 @@ class Interface:
'AGENT_INFO_INFO': self.handle_event_agent_info_info,
'QUIT': self.handle_event_quit,
'ACC_OK': self.handle_event_acc_ok,
+ 'ACC_NOT_OK': self.handle_event_acc_not_ok,
'MYVCARD': self.handle_event_myvcard,
'VCARD': self.handle_event_vcard,
'OS_INFO': self.handle_event_os_info,
diff --git a/src/gtkgui.glade b/src/gtkgui.glade
index d758b7b25..d6be637cd 100644
--- a/src/gtkgui.glade
+++ b/src/gtkgui.glade
@@ -14257,6 +14257,82 @@ to the Jabber network.
+
+
+ True
+ False
+ 0
+
+
+
+ True
+ Account is being created
+Please wait.
+ False
+ False
+ GTK_JUSTIFY_LEFT
+ False
+ False
+ 0.5
+ 0.5
+ 0
+ 0
+ PANGO_ELLIPSIZE_NONE
+ -1
+ False
+ 0
+
+
+ 0
+ True
+ False
+
+
+
+
+
+ True
+ GTK_PROGRESS_LEFT_TO_RIGHT
+ 0
+ 0.10000000149
+ PANGO_ELLIPSIZE_NONE
+
+
+ 0
+ False
+ False
+
+
+
+
+ False
+ True
+
+
+
+
+
+ True
+
+ False
+ False
+ GTK_JUSTIFY_LEFT
+ False
+ False
+ 0.5
+ 0.5
+ 0
+ 0
+ PANGO_ELLIPSIZE_NONE
+ -1
+ False
+ 0
+
+
+ tab
+
+
+
True
@@ -14270,10 +14346,8 @@ to the Jabber network.
12
-
+
True
- gtk-apply
- 4
0.5
0.5
0