kivy: if password is unified, allow user to reset pin code
This commit is contained in:
@@ -39,7 +39,8 @@ from kivy.clock import Clock
|
|||||||
from kivy.factory import Factory
|
from kivy.factory import Factory
|
||||||
from kivy.metrics import inch
|
from kivy.metrics import inch
|
||||||
from kivy.lang import Builder
|
from kivy.lang import Builder
|
||||||
from .uix.dialogs.password_dialog import OpenWalletDialog, ChangePasswordDialog, PincodeDialog
|
from .uix.dialogs.password_dialog import OpenWalletDialog, ChangePasswordDialog, PincodeDialog, PasswordDialog
|
||||||
|
from .uix.dialogs.choice_dialog import ChoiceDialog
|
||||||
|
|
||||||
## lazy imports for factory so that widgets can be used in kv
|
## lazy imports for factory so that widgets can be used in kv
|
||||||
#Factory.register('InstallWizard', module='electrum.gui.kivy.uix.dialogs.installwizard')
|
#Factory.register('InstallWizard', module='electrum.gui.kivy.uix.dialogs.installwizard')
|
||||||
@@ -143,7 +144,6 @@ class ElectrumWindow(App, Logger):
|
|||||||
self.proxy_str = (host + ':' + port) if mode else _('None')
|
self.proxy_str = (host + ':' + port) if mode else _('None')
|
||||||
|
|
||||||
def choose_server_dialog(self, popup):
|
def choose_server_dialog(self, popup):
|
||||||
from .uix.dialogs.choice_dialog import ChoiceDialog
|
|
||||||
protocol = PREFERRED_NETWORK_PROTOCOL
|
protocol = PREFERRED_NETWORK_PROTOCOL
|
||||||
def cb2(server_str):
|
def cb2(server_str):
|
||||||
popup.ids.server_str.text = server_str
|
popup.ids.server_str.text = server_str
|
||||||
@@ -168,7 +168,6 @@ class ElectrumWindow(App, Logger):
|
|||||||
self.network.run_from_another_thread(self.network.set_parameters(net_params))
|
self.network.run_from_another_thread(self.network.set_parameters(net_params))
|
||||||
|
|
||||||
def choose_blockchain_dialog(self, dt):
|
def choose_blockchain_dialog(self, dt):
|
||||||
from .uix.dialogs.choice_dialog import ChoiceDialog
|
|
||||||
chains = self.network.get_blockchains()
|
chains = self.network.get_blockchains()
|
||||||
def cb(name):
|
def cb(name):
|
||||||
with blockchain.blockchains_lock: blockchain_items = list(blockchain.blockchains.items())
|
with blockchain.blockchains_lock: blockchain_items = list(blockchain.blockchains.items())
|
||||||
@@ -1282,12 +1281,41 @@ class ElectrumWindow(App, Logger):
|
|||||||
d = ChangePasswordDialog(self, self.wallet, on_success, on_failure)
|
d = ChangePasswordDialog(self, self.wallet, on_success, on_failure)
|
||||||
d.open()
|
d.open()
|
||||||
|
|
||||||
|
def pin_code_dialog(self, cb):
|
||||||
|
if self._use_single_password and self.has_pin_code():
|
||||||
|
def on_choice(choice):
|
||||||
|
if choice == 0:
|
||||||
|
self.change_pin_code(cb)
|
||||||
|
else:
|
||||||
|
self.reset_pin_code(cb)
|
||||||
|
choices = {0:'Change PIN code', 1:'Reset PIN'}
|
||||||
|
dialog = ChoiceDialog(
|
||||||
|
_('PIN Code'), choices, 0,
|
||||||
|
on_choice,
|
||||||
|
keep_choice_order=True)
|
||||||
|
dialog.open()
|
||||||
|
else:
|
||||||
|
self.change_pin_code(cb)
|
||||||
|
|
||||||
|
def reset_pin_code(self, cb):
|
||||||
|
on_success = lambda x: self._set_new_pin_code(None, cb)
|
||||||
|
d = PasswordDialog(self,
|
||||||
|
basename = self.wallet.basename(),
|
||||||
|
check_password = self.wallet.check_password,
|
||||||
|
on_success=on_success,
|
||||||
|
on_failure=lambda: None,
|
||||||
|
is_change=False,
|
||||||
|
has_password=self.wallet.has_password())
|
||||||
|
d.open()
|
||||||
|
|
||||||
|
def _set_new_pin_code(self, new_pin, cb):
|
||||||
|
self.electrum_config.set_key('pin_code', new_pin)
|
||||||
|
cb()
|
||||||
|
self.show_info(_("PIN updated") if new_pin else _('PIN disabled'))
|
||||||
|
|
||||||
def change_pin_code(self, cb):
|
def change_pin_code(self, cb):
|
||||||
def on_success(old_password, new_password):
|
|
||||||
self.electrum_config.set_key('pin_code', new_password)
|
|
||||||
cb()
|
|
||||||
self.show_info(_("PIN updated") if new_password else _('PIN disabled'))
|
|
||||||
on_failure = lambda: self.show_error(_("PIN not updated"))
|
on_failure = lambda: self.show_error(_("PIN not updated"))
|
||||||
|
on_success = lambda old_pin, new_pin: self._set_new_pin_code(new_pin, cb)
|
||||||
d = PincodeDialog(
|
d = PincodeDialog(
|
||||||
self,
|
self,
|
||||||
check_password=self.check_pin_code,
|
check_password=self.check_pin_code,
|
||||||
|
|||||||
@@ -133,7 +133,7 @@ class SettingsDialog(Factory.Popup):
|
|||||||
self.app.change_password(self.update)
|
self.app.change_password(self.update)
|
||||||
|
|
||||||
def change_pin_code(self, label, dt):
|
def change_pin_code(self, label, dt):
|
||||||
self.app.change_pin_code(self.update)
|
self.app.pin_code_dialog(self.update)
|
||||||
|
|
||||||
def language_dialog(self, item, dt):
|
def language_dialog(self, item, dt):
|
||||||
if self._language_dialog is None:
|
if self._language_dialog is None:
|
||||||
|
|||||||
Reference in New Issue
Block a user