commit d0e6b8c89dee017e4ad790d63e4f642a7e28e67c
parent 505cb2f65db2ef83d02e082acabcd8819dd347b2
Author: SomberNight <somber.night@protonmail.com>
Date: Wed, 28 Nov 2018 20:54:57 +0100
hw: fix passphrase dialog with confirmation
closes #4876
Diffstat:
3 files changed, 20 insertions(+), 15 deletions(-)
diff --git a/electrum/gui/qt/installwizard.py b/electrum/gui/qt/installwizard.py
@@ -432,7 +432,7 @@ class InstallWizard(QDialog, MessageBoxMixin, BaseWizard):
return slayout.is_ext
def pw_layout(self, msg, kind, force_disable_encrypt_cb):
- playout = PasswordLayout(None, msg, kind, self.next_button,
+ playout = PasswordLayout(msg=msg, kind=kind, OK_button=self.next_button,
force_disable_encrypt_cb=force_disable_encrypt_cb)
playout.encrypt_cb.setChecked(True)
self.exec_layout(playout.layout())
@@ -446,7 +446,7 @@ class InstallWizard(QDialog, MessageBoxMixin, BaseWizard):
@wizard_dialog
def request_storage_encryption(self, run_next):
- playout = PasswordLayoutForHW(None, MSG_HW_STORAGE_ENCRYPTION, PW_NEW, self.next_button)
+ playout = PasswordLayoutForHW(MSG_HW_STORAGE_ENCRYPTION)
playout.encrypt_cb.setChecked(True)
self.exec_layout(playout.layout())
return playout.encrypt_cb.isChecked()
diff --git a/electrum/gui/qt/password_dialog.py b/electrum/gui/qt/password_dialog.py
@@ -60,7 +60,7 @@ class PasswordLayout(object):
titles = [_("Enter Password"), _("Change Password"), _("Enter Passphrase")]
- def __init__(self, wallet, msg, kind, OK_button, force_disable_encrypt_cb=False):
+ def __init__(self, msg, kind, OK_button, wallet=None, force_disable_encrypt_cb=False):
self.wallet = wallet
self.pw = QLineEdit()
@@ -169,12 +169,9 @@ class PasswordLayout(object):
class PasswordLayoutForHW(object):
- def __init__(self, wallet, msg, kind, OK_button):
+ def __init__(self, msg, wallet=None):
self.wallet = wallet
- self.kind = kind
- self.OK_button = OK_button
-
vbox = QVBoxLayout()
label = QLabel(msg + "\n")
label.setWordWrap(True)
@@ -254,9 +251,11 @@ class ChangePasswordDialogForSW(ChangePasswordDialogBase):
else:
msg = _('Your wallet is password protected and encrypted.')
msg += ' ' + _('Use this dialog to change your password.')
- self.playout = PasswordLayout(
- wallet, msg, PW_CHANGE, OK_button,
- force_disable_encrypt_cb=not wallet.can_have_keystore_encryption())
+ self.playout = PasswordLayout(msg=msg,
+ kind=PW_CHANGE,
+ OK_button=OK_button,
+ wallet=wallet,
+ force_disable_encrypt_cb=not wallet.can_have_keystore_encryption())
def run(self):
if not self.exec_():
@@ -276,7 +275,7 @@ class ChangePasswordDialogForHW(ChangePasswordDialogBase):
msg = _('Your wallet file is encrypted.')
msg += '\n' + _('Note: If you enable this setting, you will need your hardware device to open your wallet.')
msg += '\n' + _('Use this dialog to toggle encryption.')
- self.playout = PasswordLayoutForHW(wallet, msg, PW_CHANGE, OK_button)
+ self.playout = PasswordLayoutForHW(msg)
def run(self):
if not self.exec_():
diff --git a/electrum/plugins/hw_wallet/qt.py b/electrum/plugins/hw_wallet/qt.py
@@ -27,7 +27,8 @@
import threading
from PyQt5.Qt import QVBoxLayout, QLabel
-from electrum.gui.qt.password_dialog import PasswordDialog, PW_PASSPHRASE
+
+from electrum.gui.qt.password_dialog import PasswordLayout, PW_PASSPHRASE
from electrum.gui.qt.util import *
from electrum.i18n import _
@@ -114,11 +115,16 @@ class QtHandlerBase(QObject, PrintError):
def passphrase_dialog(self, msg, confirm):
# If confirm is true, require the user to enter the passphrase twice
parent = self.top_level_window()
+ d = WindowModalDialog(parent, _("Enter Passphrase"))
if confirm:
- d = PasswordDialog(parent, None, msg, PW_PASSPHRASE)
- confirmed, p, passphrase = d.run()
+ OK_button = OkButton(d)
+ playout = PasswordLayout(msg=msg, kind=PW_PASSPHRASE, OK_button=OK_button)
+ vbox = QVBoxLayout()
+ vbox.addLayout(playout.layout())
+ vbox.addLayout(Buttons(CancelButton(d), OK_button))
+ d.setLayout(vbox)
+ passphrase = playout.new_password() if d.exec_() else None
else:
- d = WindowModalDialog(parent, _("Enter Passphrase"))
pw = QLineEdit()
pw.setEchoMode(2)
pw.setMinimumWidth(200)