URI: 
       timprove wizard messages; skip choice screen if there is only one choice - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 4bc756751b109bfd03682ff72a54a39d891a44a4
   DIR parent 9f7ca3dcb7d607361d798f0c5f93b5a6c1c657ec
  HTML Author: ThomasV <thomasv@electrum.org>
       Date:   Mon, 26 Sep 2016 12:02:54 +0200
       
       improve wizard messages; skip choice screen if there is only one choice
       
       Diffstat:
         M gui/kivy/uix/dialogs/installwizard… |      26 +++++++++++++++-----------
         M gui/qt/installwizard.py             |       5 +++--
         M lib/base_wizard.py                  |      19 +++++++++----------
       
       3 files changed, 27 insertions(+), 23 deletions(-)
       ---
   DIR diff --git a/gui/kivy/uix/dialogs/installwizard.py b/gui/kivy/uix/dialogs/installwizard.py
       t@@ -408,17 +408,13 @@ Builder.load_string('''
                text: root.title
            SeedLabel:
                text: root.message
       -    GridLayout:
       -        cols: 2
       +    TextInput:
       +        id: passphrase_input
       +        multiline: False
                size_hint: 1, None
                height: '27dp'
       -        BigLabel:
       -            text: ''
       -        TextInput:
       -            id: passphrase_input
       -            multiline: False
       -            size_hint: 1, None
       -            height: '27dp'
       +    SeedLabel:
       +        text: root.warning
        
        ''')
        
       t@@ -515,6 +511,7 @@ class WizardChoiceDialog(WizardDialog):
        class LineDialog(WizardDialog):
            title = StringProperty('')
            message = StringProperty('')
       +    warning = StringProperty('')
        
            def __init__(self, wizard, **kwargs):
                WizardDialog.__init__(self, wizard, **kwargs)
       t@@ -741,7 +738,14 @@ class InstallWizard(BaseWizard, Widget):
                self.wallet.start_threads(self.network)
                self.dispatch('on_wizard_complete', self.wallet)
        
       -    def choice_dialog(self, **kwargs): WizardChoiceDialog(self, **kwargs).open()
       +    def choice_dialog(self, **kwargs):
       +        choices = kwargs['choices']
       +        if len(choices) > 1:
       +            WizardChoiceDialog(self, **kwargs).open()
       +        else:
       +            f = kwargs['run_next']
       +            apply(f, (choices[0][0],))
       +
            def multisig_dialog(self, **kwargs): WizardMultisigDialog(self, **kwargs).open()
            def show_seed_dialog(self, **kwargs): ShowSeedDialog(self, **kwargs).open()
            def line_dialog(self, **kwargs): LineDialog(self, **kwargs).open()
       t@@ -754,7 +758,7 @@ class InstallWizard(BaseWizard, Widget):
            def restore_seed_dialog(self, **kwargs):
                RestoreSeedDialog(self, **kwargs).open()
        
       -    def restore_keys_dialog(self, **kwargs):
       +    def add_xpub_dialog(self, **kwargs):
                kwargs['message'] += ' ' + _('Use the camera button to scan a QR code.')
                AddXpubDialog(self, **kwargs).open()
        
   DIR diff --git a/gui/qt/installwizard.py b/gui/qt/installwizard.py
       t@@ -267,7 +267,7 @@ class InstallWizard(QDialog, MessageBoxMixin, BaseWizard):
                return seed, is_bip39
        
            @wizard_dialog
       -    def restore_keys_dialog(self, title, message, is_valid, run_next):
       +    def add_xpub_dialog(self, title, message, is_valid, run_next):
                return self.text_input(title, message, is_valid)
        
            @wizard_dialog
       t@@ -378,7 +378,7 @@ class InstallWizard(QDialog, MessageBoxMixin, BaseWizard):
                return clayout.selected_index()
        
            @wizard_dialog
       -    def line_dialog(self, run_next, title, message, default, test):
       +    def line_dialog(self, run_next, title, message, warning, default, test):
                vbox = QVBoxLayout()
                vbox.addWidget(WWLabel(message))
                line = QLineEdit()
       t@@ -387,6 +387,7 @@ class InstallWizard(QDialog, MessageBoxMixin, BaseWizard):
                    self.next_button.setEnabled(test(text))
                line.textEdited.connect(f)
                vbox.addWidget(line)
       +        vbox.addWidget(WWLabel(warning))
                self.set_main_layout(vbox, title, next_enabled=test(default))
                return ' '.join(unicode(line.text()).split())
        
   DIR diff --git a/lib/base_wizard.py b/lib/base_wizard.py
       t@@ -152,14 +152,11 @@ class BaseWizard(object):
                        _("To create a watching-only wallet, please enter your master public key (xpub)."),
                        _("To create a spending wallet, please enter a master private key (xprv), or a list of Bitcoin private keys.")
                    ])
       +            self.add_xpub_dialog(title=title, message=message, run_next=self.on_restore_from_key, is_valid=v)
                else:
                    v = keystore.is_bip32_key
       -            title = _("Master public or private key")
       -            message = ' '.join([
       -                _("To create a watching-only wallet, please enter your master public key (xpub)."),
       -                _("To create a spending wallet, please enter a master private key (xprv).")
       -            ])
       -        self.restore_keys_dialog(title=title, message=message, run_next=self.on_restore_from_key, is_valid=v)
       +            i = len(self.keystores) + 1
       +            self.add_cosigner_dialog(index=i, run_next=self.on_restore_from_key, is_valid=v)
        
            def on_restore_from_key(self, text):
                k = keystore.from_keys(text)
       t@@ -255,12 +252,13 @@ class BaseWizard(object):
                    message = '\n'.join([
                        _('Your seed may have a passphrase.'),
                        _('If that is the case, enter it here.'),
       -                '\n',
       +            ])
       +            warning = '\n'.join([
                        _('Note that this is NOT your encryption password.'),
                        _('If you do not know what this is, leave this field empty.'),
                    ])
                    f = lambda x: self.on_restore_passphrase(seed, x, is_bip39)
       -            self.line_dialog(title=_('Passphrase'), message=message, default='', test=lambda x:True, run_next=f)
       +            self.line_dialog(title=_('Passphrase'), message=message, warning=warning, default='', test=lambda x:True, run_next=f)
                else:
                    self.on_restore_passphrase(seed, '', False)
        
       t@@ -344,12 +342,13 @@ class BaseWizard(object):
                message = '\n'.join([
                    _('You may extend your seed with a passphrase.'),
                    _('This allows you to derive several wallets from the same seed.'),
       -            '\n',
       +        ])
       +        warning = '\n'.join([
                    _('Note that this is NOT your encryption password.'),
                    _('If you do not know what this is, leave this field empty.'),
                ])
                f = lambda x: self.confirm_seed(seed, x)
       -        self.line_dialog(run_next=f, title=title, message=message, default='', test=lambda x:True)
       +        self.line_dialog(run_next=f, title=title, message=message, warning=warning, default='', test=lambda x:True)
        
            def confirm_seed(self, seed, passphrase):
                f = lambda x: self.confirm_passphrase(seed, passphrase)