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