URI: 
       tTrezor: small improvements for device initialization - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 1e030706cb96f19a7e55dbc01acae48b91b0ce14
   DIR parent 3cd088b2e6dcf1a46a47de72d39d466dcf5e6e87
  HTML Author: Neil Booth <kyuupichan@gmail.com>
       Date:   Fri, 22 Jan 2016 19:48:04 +0900
       
       Trezor: small improvements for device initialization
       
       Diffstat:
         M plugins/trezor/clientbase.py        |      10 +++++-----
         M plugins/trezor/plugin.py            |      10 ++++++++++
         M plugins/trezor/qt_generic.py        |       3 +--
       
       3 files changed, 16 insertions(+), 7 deletions(-)
       ---
   DIR diff --git a/plugins/trezor/clientbase.py b/plugins/trezor/clientbase.py
       t@@ -59,10 +59,11 @@ class GuiMixin(object):
                return self.proto.PassphraseAck(passphrase=passphrase)
        
            def callback_WordRequest(self, msg):
       -        msg = _("Enter seed word as explained on your %s") % self.device
       +        self.step += 1
       +        msg = _("Step %d/24.  Enter seed word as explained on "
       +                "your %s") % (self.step, self.device)
                word = self.handler.get_word(msg)
       -        if word is None:
       -            return self.proto.Cancel()
       +        # Unfortunately the device can't handle self.proto.Cancel()
                return self.proto.WordAck(word=word)
        
        
       t@@ -172,8 +173,7 @@ class TrezorClientBase(GuiMixin, PrintError):
        
            @staticmethod
            def wrapper(func):
       -        '''Wrap base class methods to show exceptions and clear
       -        any dialog box it opened.'''
       +        '''Wrap methods to clear any message box they opened.'''
        
                def wrapped(self, *args, **kwargs):
                    try:
   DIR diff --git a/plugins/trezor/plugin.py b/plugins/trezor/plugin.py
       t@@ -283,6 +283,15 @@ class TrezorCompatiblePlugin(BasePlugin, ThreadJob):
                (item, label, pin_protection, passphrase_protection) \
                    = wallet.handler.request_trezor_init_settings(method, self.device)
        
       +        if method == TIM_RECOVER:
       +            # Warn user about firmware lameness
       +            wallet.handler.show_error(_(
       +                "You will be asked to enter 24 words regardless of your "
       +                "seed's actual length.  If you enter a word incorrectly or "
       +                "misspell it, you cannot change it or go back - you will need "
       +                "to start again from the beginning.\n\nSo please enter "
       +                "the words carefully!"))
       +
                language = 'english'
        
                def initialize_device():
       t@@ -294,6 +303,7 @@ class TrezorCompatiblePlugin(BasePlugin, ThreadJob):
                                            pin_protection, label, language)
                    elif method == TIM_RECOVER:
                        word_count = 6 * (item + 2)  # 12, 18 or 24
       +                client.step = 0
                        client.recovery_device(word_count, passphrase_protection,
                                               pin_protection, label, language)
                    elif method == TIM_MNEMONIC:
   DIR diff --git a/plugins/trezor/qt_generic.py b/plugins/trezor/qt_generic.py
       t@@ -112,8 +112,7 @@ class QtHandler(PrintError):
                text.returnPressed.connect(dialog.accept)
                hbox.addWidget(text)
                hbox.addStretch(1)
       -        if not dialog.exec_():
       -            return None
       +        dialog.exec_()  # Firmware cannot handle cancellation
                self.word = unicode(text.text())
                self.done.set()