tfix #862: ask passphrase only once - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit 2996ec927f9313bc4a603b50cf38b6fb53998718 DIR parent 2ffd419e66ac4d2cedae1dd5e91d11203101f4ec HTML Author: ThomasV <thomasv@gitorious> Date: Wed, 19 Aug 2015 10:15:36 +0200 fix #862: ask passphrase only once Diffstat: M plugins/trezor.py | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) --- DIR diff --git a/plugins/trezor.py b/plugins/trezor.py t@@ -23,6 +23,7 @@ from electrum.wallet import pw_decode, bip32_private_derivation, bip32_root from electrum_gui.qt.util import * from electrum_gui.qt.main_window import StatusBarButton, ElectrumWindow +from electrum_gui.qt.installwizard import InstallWizard try: from trezorlib.client import types t@@ -133,7 +134,7 @@ class Plugin(BasePlugin): if type(window) is ElectrumWindow: self.window.statusBar().addPermanentWidget(self.trezor_button) if self.handler is None: - self.handler = TrezorQtHandler(self.window.app) + self.handler = TrezorQtHandler(self.window) try: self.get_client().ping('t') except BaseException as e: t@@ -625,18 +626,23 @@ class TrezorQtHandler: self.done.set() def passphrase_dialog(self): - from electrum_gui.qt.password_dialog import make_password_dialog, run_password_dialog - d = QDialog() - d.setModal(1) - d.setLayout(make_password_dialog(d, None, self.message, False)) - confirmed, p, passphrase = run_password_dialog(d, None, None) - if not confirmed: - QMessageBox.critical(None, _('Error'), _("Password request canceled"), _('OK')) - self.passphrase = None - else: - if passphrase is None: - passphrase = '' # Even blank string is valid Trezor passphrase + if type(self.win) is ElectrumWindow: + passphrase = self.win.password_dialog(_("Please enter your Trezor passphrase")) self.passphrase = unicodedata.normalize('NFKD', unicode(passphrase)) + else: + assert type(self.win) is InstallWizard + from electrum_gui.qt.password_dialog import make_password_dialog, run_password_dialog + d = QDialog() + d.setModal(1) + d.setLayout(make_password_dialog(d, None, self.message, False)) + confirmed, p, passphrase = run_password_dialog(d, None, None) + if not confirmed: + QMessageBox.critical(None, _('Error'), _("Password request canceled"), _('OK')) + self.passphrase = None + else: + if passphrase is None: + passphrase = '' # Even blank string is valid Trezor passphrase + self.passphrase = unicodedata.normalize('NFKD', unicode(passphrase)) self.done.set() def message_dialog(self):