diff --git a/src/config.py b/src/config.py index 5e4cbbbf4..2f5410a90 100644 --- a/src/config.py +++ b/src/config.py @@ -2553,16 +2553,19 @@ class RemoveAccountWindow: gajim.connections[self.account].change_status('offline', 'offline') if self.remove_and_unregister_radiobutton.get_active(): if not gajim.connections[self.account].password: - passphrase = '' + def on_ok(passphrase, checked): + if passphrase == -1: + # We don't remove account cause we canceled pw window + return + gajim.connections[self.account].password = passphrase + gajim.connections[self.account].unregister_account( + self._on_remove_success) + w = dialogs.PassphraseDialog( _('Password Required'), _('Enter your password for account %s') % self.account, - _('Save password')) - passphrase, save = w.run() - if passphrase == -1: - # We don't remove account cause we canceled pw window - return - gajim.connections[self.account].password = passphrase + _('Save password'), ok_handler=on_ok) + return gajim.connections[self.account].unregister_account( self._on_remove_success) else: @@ -2572,7 +2575,7 @@ class RemoveAccountWindow: dialog = dialogs.ConfirmationDialog( _('Account "%s" is connected to the server') % self.account, _('If you remove it, the connection will be lost.'), - on_response_ok = remove) + on_response_ok=remove) else: remove() @@ -3737,4 +3740,4 @@ class ManagePEPServicesWindow: window.set_title(title) window.show_all() -# vim: se ts=3: \ No newline at end of file +# vim: se ts=3: diff --git a/src/dialogs.py b/src/dialogs.py index b4e78f7e1..8f0c4cd47 100644 --- a/src/dialogs.py +++ b/src/dialogs.py @@ -199,26 +199,8 @@ class EditGroupsDialog: class PassphraseDialog: '''Class for Passphrase dialog''' - def run(self): - '''Wait for OK button to be pressed and return passphrase/password''' - rep = self.window.run() - if rep == gtk.RESPONSE_OK: - passphrase = self.passphrase_entry.get_text().decode('utf-8') - else: - passphrase = -1 - - if self.check: - save_passphrase_checkbutton = self.xml.\ - get_widget('save_passphrase_checkbutton') - checked = save_passphrase_checkbutton.get_active() - else: - checked = False - - self.window.destroy() - return passphrase, checked - - def __init__(self, titletext, labeltext, checkbuttontext=None, is_modal=True, - ok_handler = None, cancel_handler = None): + def __init__(self, titletext, labeltext, checkbuttontext=None, + ok_handler=None, cancel_handler=None): self.xml = gtkgui_helpers.get_glade('passphrase_dialog.glade') self.window = self.xml.get_widget('passphrase_dialog') self.passphrase_entry = self.xml.get_widget('passphrase_entry') @@ -229,13 +211,11 @@ class PassphraseDialog: self.ok = False self.cancel_handler = cancel_handler - self.is_modal = is_modal - if not is_modal and ok_handler is not None: - self.ok_handler = ok_handler - okbutton = self.xml.get_widget('ok_button') - okbutton.connect('clicked', self.on_okbutton_clicked) - cancelbutton = self.xml.get_widget('cancel_button') - cancelbutton.connect('clicked', self.on_cancelbutton_clicked) + self.ok_handler = ok_handler + okbutton = self.xml.get_widget('ok_button') + okbutton.connect('clicked', self.on_okbutton_clicked) + cancelbutton = self.xml.get_widget('cancel_button') + cancelbutton.connect('clicked', self.on_cancelbutton_clicked) self.xml.signal_autoconnect(self) self.window.show_all() @@ -248,6 +228,9 @@ class PassphraseDialog: checkbutton.hide() def on_okbutton_clicked(self, widget): + if not self.ok_handler: + return + passph = self.passphrase_entry.get_text().decode('utf-8') if self.check: diff --git a/src/gajim.py b/src/gajim.py index 4f203b9fb..30a666bb9 100755 --- a/src/gajim.py +++ b/src/gajim.py @@ -1440,11 +1440,10 @@ class Interface: # ask again dialogs.PassphraseDialog(_('Wrong Passphrase'), _('Please retype your GPG passphrase or press Cancel.'), - is_modal=False, ok_handler=(_ok, count), cancel_handler=_cancel) - - dialogs.PassphraseDialog(title, second, - is_modal=False, ok_handler=(_ok, 0), cancel_handler=_cancel) + ok_handler=(_ok, count), cancel_handler=_cancel) + dialogs.PassphraseDialog(title, second, ok_handler=(_ok, 0), + cancel_handler=_cancel) def handle_event_roster_info(self, account, array): #('ROSTER_INFO', account, (jid, name, sub, ask, groups)) diff --git a/src/roster_window.py b/src/roster_window.py index bdbb4c379..6d74ddaf9 100644 --- a/src/roster_window.py +++ b/src/roster_window.py @@ -1932,7 +1932,7 @@ class RosterWindow: if gajim.interface.systray_enabled: gajim.interface.systray.change_status('connecting') - def send_status(self, account, status, txt, auto = False, to = None): + def send_status(self, account, status, txt, auto=False, to=None): child_iterA = self._get_account_iter(account, self.model) if status != 'offline': if to is None: @@ -1950,27 +1950,39 @@ class RosterWindow: text += '\n' + _('Gnome Keyring is installed but not \ correctly started (environment variable probably not \ correctly set)') - w = dialogs.PassphraseDialog(_('Password Required'), text, - _('Save password')) - passphrase, save = w.run() - if passphrase == -1: + def on_ok(passphrase, save): + gajim.connections[account].password = passphrase + if save: + gajim.config.set_per('accounts', account, 'savepass', True) + passwords.save_password(account, passphrase) + keyid = gajim.config.get_per('accounts', account, 'keyid') + if keyid and not gajim.connections[account].gpg: + dialog = dialogs.WarningDialog(_('GPG is not usable'), + _('You will be connected to %s without OpenPGP.') % \ + account) + self.send_status_continue(account, status, txt, auto, to) + + def on_cancel(): if child_iterA: self.model[child_iterA][0] = \ gajim.interface.jabber_state_images['16']['offline'] if gajim.interface.systray_enabled: gajim.interface.systray.change_status('offline') self.update_status_combobox() - return - gajim.connections[account].password = passphrase - if save: - gajim.config.set_per('accounts', account, 'savepass', True) - passwords.save_password(account, passphrase) + + w = dialogs.PassphraseDialog(_('Password Required'), text, + _('Save password'), ok_handler=on_ok, + cancel_handler=on_cancel) + return keyid = gajim.config.get_per('accounts', account, 'keyid') if keyid and not gajim.connections[account].gpg: dialog = dialogs.WarningDialog(_('GPG is not usable'), _('You will be connected to %s without OpenPGP.') % account) + self.send_status_continue(account, status, txt, auto, to) + + def send_status_continue(self, account, status, txt, auto, to): if gajim.account_is_connected(account): if status == 'online' and gajim.interface.sleeper.getState() != \ common.sleepy.STATE_UNKNOWN: @@ -6338,4 +6350,4 @@ class RosterWindow: self.setup_for_osx() -# vim: se ts=3: \ No newline at end of file +# vim: se ts=3: