URI: 
       tplugins: do not assume that handler belongs to keystore - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 33c77879418c0e479582fa690582516518417000
   DIR parent 8b729d0f83efa9c690571bd0c388258b51f119fb
  HTML Author: ThomasV <thomasv@electrum.org>
       Date:   Sat, 27 Aug 2016 09:46:02 +0200
       
       plugins: do not assume that handler belongs to keystore
       
       Diffstat:
         M lib/plugins.py                      |       9 ++++-----
         M plugins/trezor/plugin.py            |       5 +++--
       
       2 files changed, 7 insertions(+), 7 deletions(-)
       ---
   DIR diff --git a/lib/plugins.py b/lib/plugins.py
       t@@ -383,15 +383,14 @@ class DeviceMgr(ThreadJob, PrintError):
                self.scan_devices()
                return self.client_lookup(id_)
        
       -    def client_for_keystore(self, plugin, keystore, force_pair):
       +    def client_for_keystore(self, plugin, handler, keystore, force_pair):
                with self.lock:
                    devices = self.scan_devices()
                    xpub = keystore.xpub
                    derivation = keystore.get_derivation()
       -            handler = keystore.handler
                    client = self.client_by_xpub(plugin, xpub, handler, devices)
                    if client is None and force_pair:
       -                info = self.select_device(handler, plugin, keystore, devices)
       +                info = self.select_device(plugin, handler, keystore, devices)
                        client = self.force_pair_xpub(plugin, handler, info, xpub, derivation, devices)
                    return client
        
       t@@ -453,7 +452,7 @@ class DeviceMgr(ThreadJob, PrintError):
        
                return infos
        
       -    def select_device(self, handler, plugin, keystore, devices=None):
       +    def select_device(self, plugin, handler, keystore, devices=None):
                '''Ask the user to select a device to use if there is more than one,
                and return the DeviceInfo for the device.'''
                while True:
       t@@ -478,7 +477,7 @@ class DeviceMgr(ThreadJob, PrintError):
                info = infos[c]
                # save new label
                keystore.set_label(info.label)
       -        keystore.handler.win.wallet.save_keystore()
       +        handler.win.wallet.save_keystore()
                return info
        
            def scan_devices(self):
   DIR diff --git a/plugins/trezor/plugin.py b/plugins/trezor/plugin.py
       t@@ -134,7 +134,8 @@ class TrezorCompatiblePlugin(HW_PluginBase):
                # All client interaction should not be in the main GUI thread
                assert self.main_thread != threading.current_thread()
                devmgr = self.device_manager()
       -        client = devmgr.client_for_keystore(self, keystore, force_pair)
       +        handler = keystore.handler
       +        client = devmgr.client_for_keystore(self, handler, keystore, force_pair)
                # returns the client for a given keystore. can use xpub
                if client:
                    client.used()
       t@@ -237,7 +238,7 @@ class TrezorCompatiblePlugin(HW_PluginBase):
            def show_address(self, wallet, address):
                client = self.get_client(wallet.keystore)
                if not client.atleast_version(1, 3):
       -            wallet.handler.show_error(_("Your device firmware is too old"))
       +            keystore.handler.show_error(_("Your device firmware is too old"))
                    return
                change, index = wallet.get_address_index(address)
                derivation = wallet.keystore.derivation