URI: 
       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.',