URI: 
       tplugin: separate get_xpub and setup_device - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 665d1bc153a41b922e87f17337d81cd004acb2ec
   DIR parent d2dcea67baeaeed87f948aa46be228d99dcdb170
  HTML Author: ThomasV <thomasv@electrum.org>
       Date:   Wed, 24 Aug 2016 10:47:27 +0200
       
       plugin: separate get_xpub and setup_device
       
       Diffstat:
         M lib/base_wizard.py                  |       8 +++-----
         M plugins/trezor/plugin.py            |       8 +++++++-
       
       2 files changed, 10 insertions(+), 6 deletions(-)
       ---
   DIR diff --git a/lib/base_wizard.py b/lib/base_wizard.py
       t@@ -204,17 +204,15 @@ class BaseWizard(object):
                self.choice_dialog(title=title, message=msg, choices=choices, run_next=self.on_device)
        
            def on_device(self, name, device_info):
       -        plugin = self.plugins.get_plugin(name)
       -        self.plugin = plugin
       -        xpub = plugin.setup_device(device_info, 'm', self)
       +        self.plugin = self.plugins.get_plugin(name)
       +        self.plugin.setup_device(device_info, self)
                f = lambda x: self.run('on_hardware_account_id', name, device_info, x)
                self.account_id_dialog(run_next=f)
        
            def on_hardware_account_id(self, name, device_info, account_id):
                from keystore import hardware_keystore, bip44_derivation
       -        plugin = self.plugins.get_plugin(name)
                derivation = bip44_derivation(int(account_id))
       -        xpub = plugin.setup_device(device_info, derivation, self)
       +        xpub = self.plugin.get_xpub(device_info.device.id_, derivation, self)
                d = {
                    'type': 'hardware',
                    'hw_type': name,
   DIR diff --git a/plugins/trezor/plugin.py b/plugins/trezor/plugin.py
       t@@ -198,7 +198,7 @@ class TrezorCompatiblePlugin(HW_PluginBase):
                    client.load_device_by_xprv(item, pin, passphrase_protection,
                                               label, language)
        
       -    def setup_device(self, device_info, derivation, wizard):
       +    def setup_device(self, device_info, wizard):
                '''Called when creating a new wallet.  Select the device to use.  If
                the device is uninitialized, go through the intialization
                process.'''
       t@@ -209,7 +209,13 @@ class TrezorCompatiblePlugin(HW_PluginBase):
                    handler = self.create_handler(wizard)
                    client.handler = handler
                    self.initialize_device(device_id, wizard, handler)
       +        client.handler = wizard
       +        client.get_xpub('m')
       +        client.used()
        
       +    def get_xpub(self, device_id, derivation, wizard):
       +        devmgr = self.device_manager()
       +        client = devmgr.client_by_id(device_id)
                client.handler = wizard
                xpub = client.get_xpub(derivation)
                client.used()