ttrezor: print more info, in order to fix issue #1306 - electrum - Electrum Bitcoin wallet
 (HTM) git clone https://git.parazyd.org/electrum
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) Submodules
       ---
 (DIR) commit e994736bf5b7c3d2afaa3faa7e614280bb3b36c1
 (DIR) parent 1427d962499ff1f8dca56b3474a1e0173b211524
 (HTM) Author: ThomasV <thomasv@gitorious>
       Date:   Sun, 28 Jun 2015 21:55:01 +0200
       
       ttrezor: print more info, in order to fix issue #1306
       
       Diffstat:
         M plugins/trezor.py                   |      27 +++++++++++++--------------
       
       1 file changed, 13 insertions(+), 14 deletions(-)
       ---
 (DIR) diff --git a/plugins/trezor.py b/plugins/trezor.py
       t@@ -80,18 +80,13 @@ class Plugin(BasePlugin):
        
            def compare_version(self, major, minor=0, patch=0):
                features = self.get_client().features
       -        return cmp([features.major_version, features.minor_version, features.patch_version], [major, minor, patch])
       +        v = [features.major_version, features.minor_version, features.patch_version]
       +        self.print_error('firmware version', v)
       +        return cmp(v, [major, minor, patch])
        
            def atleast_version(self, major, minor=0, patch=0):
                return self.compare_version(major, minor, patch) >= 0
        
       -    def trezor_is_connected(self):
       -        try:
       -            self.get_client().ping('t')
       -        except:
       -            return False
       -        return True
       -
            def get_client(self):
                if not TREZOR:
                    give_error('please install github.com/trezor/python-trezor')
       t@@ -106,6 +101,7 @@ class Plugin(BasePlugin):
                    self.client.set_tx_api(self)
                    self.client.bad = False
                    if not self.atleast_version(1, 2, 1):
       +                self.client = None
                        give_error('Outdated Trezor firmware. Please update the firmware from https://www.mytrezor.com')
                return self.client
        
       t@@ -135,12 +131,15 @@ class Plugin(BasePlugin):
                if self.handler is None:
                    self.handler = TrezorQtHandler(self.window.app)
        
       -        if self.trezor_is_connected():
       -            if self.wallet.addresses() and not self.wallet.check_proper_device():
       -                QMessageBox.information(self.window, _('Error'), _("This wallet does not match your Trezor device"), _('OK'))
       -                self.wallet.force_watching_only = True
       -        else:
       -            QMessageBox.information(self.window, _('Error'), _("Trezor device not detected.\nContinuing in watching-only mode."), _('OK'))
       +        try:
       +            self.get_client().ping('t')
       +        except BaseException as e:
       +            QMessageBox.information(self.window, _('Error'), _("Trezor device not detected.\nContinuing in watching-only mode." + '\n\nReason:\n' + str(e)), _('OK'))
       +            self.wallet.force_watching_only = True
       +            return
       +
       +        if self.wallet.addresses() and not self.wallet.check_proper_device():
       +            QMessageBox.information(self.window, _('Error'), _("This wallet does not match your Trezor device"), _('OK'))
                    self.wallet.force_watching_only = True
        
            @hook