tmove update_status in handler - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit 47f1a7b632f76a1ef05bdaf7ba1c2989001dad2b DIR parent 257c0915b5bb57130e0299bfce76d5bf14dab09f HTML Author: ThomasV <thomasv@electrum.org> Date: Sat, 27 Aug 2016 14:56:31 +0200 move update_status in handler Diffstat: M lib/plugins.py | 9 ++++----- M plugins/hw_wallet/qt.py | 10 ++++++++++ M plugins/trezor/plugin.py | 1 - M plugins/trezor/qt_generic.py | 11 ++--------- 4 files changed, 16 insertions(+), 15 deletions(-) --- DIR diff --git a/lib/plugins.py b/lib/plugins.py t@@ -384,7 +384,7 @@ class DeviceMgr(ThreadJob, PrintError): def client_for_keystore(self, plugin, handler, keystore, force_pair): self.print_error("getting client for keystore") - plugin.update_status(handler, False) + handler.update_status(False) devices = self.scan_devices() xpub = keystore.xpub derivation = keystore.get_derivation() t@@ -393,7 +393,7 @@ class DeviceMgr(ThreadJob, PrintError): info = self.select_device(plugin, handler, keystore, devices) client = self.force_pair_xpub(plugin, handler, info, xpub, derivation, devices) if client: - plugin.update_status(handler, True) + handler.update_status(True) self.print_error("end client for keystore") return client t@@ -489,12 +489,11 @@ class DeviceMgr(ThreadJob, PrintError): # Note this import must be local so those without hardware # wallet libraries are not affected. import hid - self.print_error("scanning devices...") - + hid_list = hid.enumerate(0, 0) # First see what's connected that we know about devices = [] - for d in hid.enumerate(0, 0): + for d in hid_list: product_key = (d['vendor_id'], d['product_id']) if product_key in self.recognised_hardware: # Older versions of hid don't provide interface_number DIR diff --git a/plugins/hw_wallet/qt.py b/plugins/hw_wallet/qt.py t@@ -46,6 +46,7 @@ class QtHandlerBase(QObject, PrintError): clear_signal = pyqtSignal() query_signal = pyqtSignal(object, object) yes_no_signal = pyqtSignal(object) + status_signal = pyqtSignal(object) def __init__(self, win, device): super(QtHandlerBase, self).__init__() t@@ -56,6 +57,7 @@ class QtHandlerBase(QObject, PrintError): self.word_signal.connect(self.word_dialog) self.query_signal.connect(self.win_query_choice) self.yes_no_signal.connect(self.win_yes_no_question) + self.status_signal.connect(self._update_status) self.win = win self.device = device self.dialog = None t@@ -64,6 +66,14 @@ class QtHandlerBase(QObject, PrintError): def top_level_window(self): return self.win.top_level_window() + def update_status(self, paired): + self.status_signal.emit(paired) + + def _update_status(self, paired): + button = self.button + icon = button.icon_paired if paired else button.icon_unpaired + button.setIcon(QIcon(icon)) + def query_choice(self, msg, labels): self.done.clear() self.query_signal.emit(msg, labels) DIR diff --git a/plugins/trezor/plugin.py b/plugins/trezor/plugin.py t@@ -97,7 +97,6 @@ class TrezorCompatiblePlugin(HW_PluginBase): def _try_bridge(self, device): self.print_error("Trying to connect over Trezor Bridge...") - try: return self.bridge_transport({'path': hexlify(device.path)}) except BaseException as e: DIR diff --git a/plugins/trezor/qt_generic.py b/plugins/trezor/qt_generic.py t@@ -194,6 +194,8 @@ class QtPlugin(object): tooltip = self.device + ' ' + (keystore.label or '') cb = lambda: self.show_settings_dialog(window, keystore) button = StatusBarButton(QIcon(self.icon_unpaired), tooltip, cb) + button.icon_paired = self.icon_paired + button.icon_unpaired = self.icon_unpaired window.statusBar().addPermanentWidget(button) handler = self.create_handler(window) handler.button = button t@@ -202,15 +204,6 @@ class QtPlugin(object): # Trigger a pairing keystore.thread.add(partial(self.get_client, keystore)) - window.connect(window, SIGNAL('keystore_status'), self._update_status) - - def update_status(self, handler, paired): - handler.win.emit(SIGNAL('keystore_status'), handler, paired) - - def _update_status(self, handler, paired): - icon = self.icon_paired if paired else self.icon_unpaired - handler.button.setIcon(QIcon(icon)) - @hook def receive_menu(self, menu, addrs, wallet): if type(wallet) is not Standard_Wallet: