parent
b0f7411a0a
commit
bad9030554
|
@ -1043,31 +1043,7 @@ class ElectrumWindow(QMainWindow):
|
|||
self.completions.setStringList(l)
|
||||
|
||||
def protected(func):
|
||||
'''Password request wrapper. The password is passed to the function
|
||||
as the 'password' named argument. Return value is a 2-element
|
||||
tuple: (Cancelled, Result) where Cancelled is True if the user
|
||||
cancels the password request, otherwise False. Result is the
|
||||
return value of the wrapped function, or None if cancelled.
|
||||
'''
|
||||
def request_password(self, *args, **kwargs):
|
||||
parent = kwargs.get('parent', self)
|
||||
if self.wallet.use_encryption:
|
||||
while True:
|
||||
password = self.password_dialog(parent=parent)
|
||||
if not password:
|
||||
return True, None
|
||||
try:
|
||||
self.wallet.check_password(password)
|
||||
break
|
||||
except Exception as e:
|
||||
QMessageBox.warning(parent, _('Error'), str(e), _('OK'))
|
||||
continue
|
||||
else:
|
||||
password = None
|
||||
|
||||
kwargs['password'] = password
|
||||
return False, func(self, *args, **kwargs)
|
||||
return request_password
|
||||
return lambda s, *args: s.do_protect(func, args)
|
||||
|
||||
def read_send_tab(self):
|
||||
if self.payment_request and self.payment_request.has_expired():
|
||||
|
@ -1886,6 +1862,29 @@ class ElectrumWindow(QMainWindow):
|
|||
d = QRDialog(data, self, title)
|
||||
d.exec_()
|
||||
|
||||
|
||||
def do_protect(self, func, args):
|
||||
if self.wallet.use_encryption:
|
||||
while True:
|
||||
password = self.password_dialog()
|
||||
if not password:
|
||||
return
|
||||
try:
|
||||
self.wallet.check_password(password)
|
||||
break
|
||||
except Exception as e:
|
||||
QMessageBox.warning(self, _('Error'), str(e), _('OK'))
|
||||
continue
|
||||
else:
|
||||
password = None
|
||||
|
||||
if args != (False,):
|
||||
args = (self,) + args + (password,)
|
||||
else:
|
||||
args = (self, password)
|
||||
apply(func, args)
|
||||
|
||||
|
||||
def show_public_keys(self, address):
|
||||
if not address: return
|
||||
try:
|
||||
|
@ -2065,10 +2064,8 @@ class ElectrumWindow(QMainWindow):
|
|||
def show_warning(self, msg):
|
||||
QMessageBox.warning(self, _('Warning'), msg, _('OK'))
|
||||
|
||||
def password_dialog(self, msg=None, parent=None):
|
||||
if parent == None:
|
||||
parent = self
|
||||
d = QDialog(parent)
|
||||
def password_dialog(self, msg=None):
|
||||
d = QDialog(self)
|
||||
d.setModal(1)
|
||||
d.setWindowTitle(_("Enter Password"))
|
||||
pw = QLineEdit()
|
||||
|
|
Loading…
Reference in New Issue