URI: 
       tsimplify wizard handling of hardware wallets. fixes #1793 - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 85aa633269b6bc8026f379df1e010ad54159737c
   DIR parent 0e853a6769b556113ab761c72f8bd505dd4cae1d
  HTML Author: ThomasV <thomasv@electrum.org>
       Date:   Sat, 21 May 2016 18:43:41 +0200
       
       simplify wizard handling of hardware wallets. fixes #1793
       
       Diffstat:
         M gui/qt/installwizard.py             |      26 ++++++++------------------
         M lib/wizard.py                       |      15 ++++++++-------
       
       2 files changed, 16 insertions(+), 25 deletions(-)
       ---
   DIR diff --git a/gui/qt/installwizard.py b/gui/qt/installwizard.py
       t@@ -260,7 +260,7 @@ class InstallWizard(QDialog, MessageBoxMixin, WizardBase):
                'restore', and kind the index of the wallet kind chosen."""
        
                actions = [_("Create a new wallet"),
       -                   _("Restore a wallet or import keys")]
       +                   _("Restore a wallet from seed words or from keys")]
                title = _("Electrum could not find an existing wallet.")
                actions_clayout = ChoicesLayout(_("What do you want to do?"), actions)
                wallet_clayout = ChoicesLayout(_("Wallet kind:"), wallet_kinds)
       t@@ -273,25 +273,15 @@ class InstallWizard(QDialog, MessageBoxMixin, WizardBase):
                action = ['create', 'restore'][actions_clayout.selected_index()]
                return action, wallet_clayout.selected_index()
        
       -    def query_hw_wallet_choice(self, msg, action, choices):
       -        actions = [_("Initialize a new or wiped device"),
       -                   _("Use a device you have already set up"),
       -                   _("Restore Electrum wallet from device seed words")]
       -        default_action = 1 if action == 'create' else 2
       -        actions_clayout = ChoicesLayout(_("What do you want to do?"), actions,
       -                                        checked_index=default_action)
       -        wallet_clayout = ChoicesLayout(msg, choices)
       -
       +    def query_hw_wallet_choice(self, msg, choices):
                vbox = QVBoxLayout()
       -        vbox.addLayout(actions_clayout.layout())
       -        vbox.addLayout(wallet_clayout.layout())
       -        self.set_main_layout(vbox, next_enabled=len(choices) != 0)
       -
       -        if actions_clayout.selected_index() == 2:
       -            action = 'restore'
       +        if choices:
       +            wallet_clayout = ChoicesLayout(msg, choices)
       +            vbox.addLayout(wallet_clayout.layout())
                else:
       -            action = 'create'
       -        return action, wallet_clayout.selected_index()
       +            vbox.addWidget(QLabel(msg, wordWrap=True))
       +        self.set_main_layout(vbox, next_enabled=len(choices) != 0)
       +        return wallet_clayout.selected_index() if choices else 0
        
            def request_many(self, n, xpub_hot=None):
                vbox = QVBoxLayout()
   DIR diff --git a/lib/wizard.py b/lib/wizard.py
       t@@ -209,19 +209,20 @@ class WizardBase(PrintError):
                kinds, descriptions = zip(*[pair for pair in WizardBase.wallet_kinds
                                            if pair[0] in registered_kinds])
                action, kind_index = self.query_create_or_restore(descriptions)
       -
                assert action in WizardBase.user_actions
       -
                kind = kinds[kind_index]
                if kind == 'multisig':
                    wallet_type = self.query_multisig(action)
                elif kind == 'hardware':
       -            # The create/restore distinction is not obvious for hardware
       -            # wallets; so we ask for the action again and default based
       -            # on the prior choice :)
                    hw_wallet_types, choices = self.plugins.hardware_wallets(action)
       -            msg = _('Select the type of hardware wallet: ')
       -            action, choice = self.query_hw_wallet_choice(msg, action, choices)
       +            if choices:
       +                msg = _('Select the type of hardware wallet: ')
       +            else:
       +                msg = ' '.join([
       +                    _('No hardware wallet support found on your system.'),
       +                    _('Please install the relevant libraries (eg python-trezor for Trezor).'),
       +                ])
       +            choice = self.query_hw_wallet_choice(msg, choices)
                    wallet_type = hw_wallet_types[choice]
                elif kind == 'twofactor':
                    wallet_type = '2fa'