twizard: make 'stack' private - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit 9013f6d59e4134b623688bd030d2e894c054e4bf DIR parent bc2a421d8776a8bc870a6e9521e004cd8e299b97 HTML Author: SomberNight <somber.night@protonmail.com> Date: Mon, 4 Feb 2019 16:51:19 +0100 wizard: make 'stack' private Diffstat: M electrum/base_wizard.py | 15 +++++++++------ M electrum/gui/qt/installwizard.py | 2 +- M electrum/plugins/trustedcoin/qt.py | 5 +++-- M electrum/plugins/trustedcoin/trust… | 9 +++++---- 4 files changed, 18 insertions(+), 13 deletions(-) --- DIR diff --git a/electrum/base_wizard.py b/electrum/base_wizard.py t@@ -64,7 +64,7 @@ class BaseWizard(object): self.plugins = plugins self.storage = storage self.wallet = None # type: Abstract_Wallet - self.stack = [] + self._stack = [] self.plugin = None self.keystores = [] self.is_kivy = config.get('gui') == 'kivy' t@@ -76,7 +76,7 @@ class BaseWizard(object): def run(self, *args): action = args[0] args = args[1:] - self.stack.append((action, args)) + self._stack.append((action, args)) if not action: return if type(action) is tuple: t@@ -91,15 +91,18 @@ class BaseWizard(object): raise Exception("unknown action", action) def can_go_back(self): - return len(self.stack)>1 + return len(self._stack) > 1 def go_back(self): if not self.can_go_back(): return - self.stack.pop() - action, args = self.stack.pop() + self._stack.pop() + action, args = self._stack.pop() self.run(action, *args) + def reset_stack(self): + self._stack = [] + def new(self): name = os.path.basename(self.storage.path) title = _("Create") + ' ' + name t@@ -476,7 +479,7 @@ class BaseWizard(object): self.keystores.append(k) if len(self.keystores) == 1: xpub = k.get_master_public_key() - self.stack = [] + self.reset_stack() self.run('show_xpub_and_add_cosigners', xpub) elif len(self.keystores) < self.n: self.run('choose_keystore') DIR diff --git a/electrum/gui/qt/installwizard.py b/electrum/gui/qt/installwizard.py t@@ -272,7 +272,7 @@ class InstallWizard(QDialog, MessageBoxMixin, BaseWizard): None, _('Error'), _('Failed to decrypt using this hardware device.') + '\n' + _('If you use a passphrase, make sure it is correct.')) - self.stack = [] + self.reset_stack() return self.run_and_get_wallet(get_wallet_from_daemon) except BaseException as e: traceback.print_exc(file=sys.stdout) DIR diff --git a/electrum/plugins/trustedcoin/qt.py b/electrum/plugins/trustedcoin/qt.py t@@ -36,6 +36,7 @@ from electrum.gui.qt.util import * from electrum.gui.qt.qrcodewidget import QRCodeWidget from electrum.gui.qt.amountedit import AmountEdit from electrum.gui.qt.main_window import StatusBarButton +from electrum.gui.qt.installwizard import InstallWizard from electrum.i18n import _ from electrum.plugin import hook from electrum.util import PrintError, is_valid_email t@@ -195,7 +196,7 @@ class Plugin(TrustedCoinPlugin): vbox.addLayout(Buttons(CloseButton(d))) d.exec_() - def go_online_dialog(self, wizard): + def go_online_dialog(self, wizard: InstallWizard): msg = [ _("Your wallet file is: {}.").format(os.path.abspath(wizard.storage.path)), _("You need to be online in order to complete the creation of " t@@ -206,7 +207,7 @@ class Plugin(TrustedCoinPlugin): _('If you are online, click on "{}" to continue.').format(_('Next')) ] msg = '\n\n'.join(msg) - wizard.stack = [] + wizard.reset_stack() wizard.confirm_dialog(title='', message=msg, run_next = lambda x: wizard.run('accept_terms_of_use')) def accept_terms_of_use(self, window): DIR diff --git a/electrum/plugins/trustedcoin/trustedcoin.py b/electrum/plugins/trustedcoin/trustedcoin.py t@@ -48,6 +48,7 @@ from electrum.plugin import BasePlugin, hook from electrum.util import NotEnoughFunds, UserFacingException from electrum.storage import STO_EV_USER_PW from electrum.network import Network +from electrum.base_wizard import BaseWizard def get_signing_xpub(xtype): if not constants.net.TESTNET: t@@ -491,9 +492,9 @@ class TrustedCoinPlugin(BasePlugin): def do_clear(self, window): window.wallet.is_billing = False - def show_disclaimer(self, wizard): + def show_disclaimer(self, wizard: BaseWizard): wizard.set_icon('trustedcoin-wizard.png') - wizard.stack = [] + wizard.reset_stack() wizard.confirm_dialog(title='Disclaimer', message='\n\n'.join(self.disclaimer_msg), run_next = lambda x: wizard.run('choose_seed')) def choose_seed(self, wizard): t@@ -580,9 +581,9 @@ class TrustedCoinPlugin(BasePlugin): f = lambda x: self.restore_choice(wizard, seed, x) wizard.passphrase_dialog(run_next=f) if is_ext else f('') - def restore_choice(self, wizard, seed, passphrase): + def restore_choice(self, wizard: BaseWizard, seed, passphrase): wizard.set_icon('trustedcoin-wizard.png') - wizard.stack = [] + wizard.reset_stack() title = _('Restore 2FA wallet') msg = ' '.join([ 'You are going to restore a wallet protected with two-factor authentication.',