URI: 
       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: