tplugins: call load_wallet in install wizard - electrum - Electrum Bitcoin wallet
 (HTM) git clone https://git.parazyd.org/electrum
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) Submodules
       ---
 (DIR) commit 060e3aa23e6affc5441b6173b17b7aa76e7fa964
 (DIR) parent 479a6f84e70eb28b75a845584a3f41493a515328
 (HTM) Author: ThomasV <thomasv@gitorious>
       Date:   Wed, 10 Jun 2015 12:40:08 +0200
       
       plugins: call load_wallet in install wizard
       
       Diffstat:
         M gui/qt/__init__.py                  |       2 +-
         M gui/qt/installwizard.py             |       8 ++++++--
         M gui/qt/main_window.py               |       2 +-
         M lib/plugins.py                      |       2 ++
         M plugins/trezor.py                   |       3 ++-
       
       5 files changed, 12 insertions(+), 5 deletions(-)
       ---
 (DIR) diff --git a/gui/qt/__init__.py b/gui/qt/__init__.py
       t@@ -153,7 +153,7 @@ class ElectrumGui:
                            QMessageBox.information(None, _('Warning'), _('The file was removed'), _('OK'))
                            return
                        return
       -        wizard = installwizard.InstallWizard(self.config, self.network, storage)
       +        wizard = installwizard.InstallWizard(self.config, self.network, storage, self.app)
                wizard.show()
                if action == 'new':
                    action, wallet_type = wizard.restore_or_create()
 (DIR) diff --git a/gui/qt/installwizard.py b/gui/qt/installwizard.py
       t@@ -15,7 +15,7 @@ from amountedit import AmountEdit
        
        import sys
        import threading
       -from electrum.plugins import always_hook
       +from electrum.plugins import always_hook, run_hook
        from electrum.mnemonic import prepare_seed
        
        MSG_ENTER_ANYTHING    = _("Please enter a wallet seed, a master public key, a list of Bitcoin addresses, or a list of private keys")
       t@@ -28,8 +28,9 @@ MSG_VERIFY_SEED       = _("Your seed is important!") + "\n" + _("To make sure th
        
        class InstallWizard(QDialog):
        
       -    def __init__(self, config, network, storage):
       +    def __init__(self, config, network, storage, app):
                QDialog.__init__(self)
       +        self.app = app
                self.config = config
                self.network = network
                self.storage = storage
       t@@ -345,6 +346,9 @@ class InstallWizard(QDialog):
                    # fixme: password is only needed for multiple accounts
                    password = None
        
       +        # load wallet in plugins
       +        run_hook('load_wallet', wallet, self)
       +
                while action is not None:
                    util.print_error("installwizard:", wallet, action)
        
 (DIR) diff --git a/gui/qt/main_window.py b/gui/qt/main_window.py
       t@@ -2635,7 +2635,7 @@ class ElectrumWindow(QMainWindow):
                    try:
                        cb = QCheckBox(descr['fullname'])
                        cb.setEnabled(is_available(name, self.wallet))
       -                cb.setChecked(p is not None)
       +                cb.setChecked(p is not None and p.is_enabled())
                        grid.addWidget(cb, i, 0)
                        if p and p.requires_settings():
                            w = p.settings_widget(self)
 (DIR) diff --git a/lib/plugins.py b/lib/plugins.py
       t@@ -63,9 +63,11 @@ def init_plugins(config, is_local, gui_name):
            def constructor(name, storage):
                if plugins.get(name) is None:
                    try:
       +                print_error(_("Loading plugin by constructor:"), name)
                        p = loader(name)
                        plugins[name] = p.Plugin(config, name)
                    except:
       +                print_msg(_("Error: cannot initialize plugin"), name)
                        return
                return plugins[name].constructor(storage)
        
 (DIR) diff --git a/plugins/trezor.py b/plugins/trezor.py
       t@@ -98,6 +98,7 @@ class Plugin(BasePlugin):
        
            @hook
            def load_wallet(self, wallet, window):
       +        self.print_error("load_wallet")
                self.wallet = wallet
                self.window = window
                self.wallet.plugin = self
       t@@ -106,7 +107,7 @@ class Plugin(BasePlugin):
                    self.handler = TrezorQtHandler(self.window.app)
        
                if self.trezor_is_connected():
       -            if not self.wallet.check_proper_device():
       +            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: