URI: 
       tcall load_wallet and close_wallet for each plugin - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit dda4a0fcb3671a260cd5bee61ef83b747e179678
   DIR parent 9d40fb2ea8b347e08b4b64897537e2197d4325e3
  HTML Author: ThomasV <thomasv@gitorious>
       Date:   Mon, 26 Jan 2015 20:42:32 +0100
       
       call load_wallet and close_wallet for each plugin
       
       Diffstat:
         M gui/qt/main_window.py               |       9 ++++++++-
         M lib/plugins.py                      |      25 +++++++++++++++----------
         M plugins/trezor.py                   |       2 +-
       
       3 files changed, 24 insertions(+), 12 deletions(-)
       ---
   DIR diff --git a/gui/qt/main_window.py b/gui/qt/main_window.py
       t@@ -203,6 +203,7 @@ class ElectrumWindow(QMainWindow):
        
            def close_wallet(self):
                self.wallet.stop_threads()
       +        self.hide()
                run_hook('close_wallet')
        
            def load_wallet(self, wallet):
       t@@ -210,13 +211,17 @@ class ElectrumWindow(QMainWindow):
                self.wallet = wallet
                self.update_wallet_format()
                # address used to create a dummy transaction and estimate transaction fee
       -        self.dummy_address = self.wallet.addresses(False)[0]
       +        a = self.wallet.addresses(False)
       +        self.dummy_address = a[0] if a else None
       +
                self.invoices = self.wallet.storage.get('invoices', {})
                self.accounts_expanded = self.wallet.storage.get('accounts_expanded',{})
                self.current_account = self.wallet.storage.get("current_account", None)
                title = 'Electrum ' + self.wallet.electrum_version + '  -  ' + os.path.basename(self.wallet.storage.path)
                if self.wallet.is_watching_only(): title += ' [%s]' % (_('watching only'))
                self.setWindowTitle( title )
       +        self.update_history_tab()
       +        self.show()
                self.update_wallet()
                # Once GUI has been initialized check if we want to announce something since the callback has been called before the GUI was initialized
                self.notify_transactions()
       t@@ -308,6 +313,8 @@ class ElectrumWindow(QMainWindow):
                    QMessageBox.critical(None, "Error", _("File exists"))
                    return
        
       +        if self.wallet:
       +            self.close_wallet()
                wizard = installwizard.InstallWizard(self.config, self.network, storage)
                wallet = wizard.run('new')
                if wallet:
   DIR diff --git a/lib/plugins.py b/lib/plugins.py
       t@@ -45,16 +45,17 @@ def run_hook(name, *args):
            for p, f in f_list:
                if name == 'load_wallet':
                    p.wallet = args[0]
       -        if not p.is_enabled():
       -            continue
       -        try:
       -            r = f(*args)
       -        except Exception:
       -            print_error("Plugin error")
       -            traceback.print_exc(file=sys.stdout)
       -            r = False
       -        if r:
       -            results.append(r)
       +        if p.is_enabled():
       +            try:
       +                r = f(*args)
       +            except Exception:
       +                print_error("Plugin error")
       +                traceback.print_exc(file=sys.stdout)
       +                r = False
       +            if r:
       +                results.append(r)
       +        if name == 'close_wallet':
       +            p.wallet = None
        
            if results:
                assert len(results) == 1, results
       t@@ -92,8 +93,12 @@ class BasePlugin:
        
            def init_qt(self, gui): pass
        
       +    @hook
            def load_wallet(self, wallet): pass
        
       +    @hook
       +    def close_wallet(self): pass
       +
            #def init(self): pass
        
            def close(self): pass
   DIR diff --git a/plugins/trezor.py b/plugins/trezor.py
       t@@ -93,7 +93,7 @@ class Plugin(BasePlugin):
            @hook
            def close_wallet(self):
                print_error("trezor: clear session")
       -        if self.wallet.client:
       +        if self.wallet and self.wallet.client:
                    self.wallet.client.clear_session()
        
            @hook