tinitialize device in separate thread - electrum - Electrum Bitcoin wallet (HTM) git clone https://git.parazyd.org/electrum (DIR) Log (DIR) Files (DIR) Refs (DIR) Submodules --- (DIR) commit 11abdd7175285ee11c4ae204440e598daacae821 (DIR) parent 0f9fb49db77cd75014b7b19c34894c8b05c68cd5 (HTM) Author: ThomasV <thomasv@electrum.org> Date: Thu, 25 Aug 2016 15:00:42 +0200 initialize device in separate thread Diffstat: M plugins/trezor/plugin.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) --- (DIR) diff --git a/plugins/trezor/plugin.py b/plugins/trezor/plugin.py t@@ -160,12 +160,18 @@ class TrezorCompatiblePlugin(HW_PluginBase): (TIM_MNEMONIC, _("Upload a BIP39 mnemonic to generate the seed")), (TIM_PRIVKEY, _("Upload a master private key")) ] - f = lambda x: self._initialize_device(x, device_id, wizard, handler) + def f(method): + import threading + settings = self.request_trezor_init_settings(wizard, method, self.device) + t = threading.Thread(target = self._initialize_device, args=(settings, method, device_id, wizard, handler)) + t.setDaemon(True) + t.start() + wizard.loop.exec_() wizard.choice_dialog(title=_('Initialize Device'), message=msg, choices=choices, run_next=f) - def _initialize_device(self, method, device_id, wizard, handler): - (item, label, pin_protection, passphrase_protection) \ - = self.request_trezor_init_settings(wizard, method, self.device) + def _initialize_device(self, settings, method, device_id, wizard, handler): + item, label, pin_protection, passphrase_protection = settings + if method == TIM_RECOVER and self.device == 'TREZOR': # Warn user about firmware lameness handler.show_error(_( t@@ -197,6 +203,7 @@ class TrezorCompatiblePlugin(HW_PluginBase): pin = pin_protection # It's the pin, not a boolean client.load_device_by_xprv(item, pin, passphrase_protection, label, language) + wizard.loop.exit(0) def setup_device(self, device_info, wizard): '''Called when creating a new wallet. Select the device to use. If