|
|
|
|
@ -18,8 +18,7 @@ from electrum.plugins.hw_wallet.plugin import only_hook_if_libraries_available,
|
|
|
|
|
|
|
|
|
|
from electrum.gui.qt.util import (WindowModalDialog, WWLabel, Buttons, CancelButton, |
|
|
|
|
OkButton, CloseButton, PasswordLineEdit, getOpenFileName, ChoiceWidget) |
|
|
|
|
from electrum.gui.qt.wizard.wallet import WCScriptAndDerivation, WCHWUnlock, WCHWXPub |
|
|
|
|
from electrum.gui.qt.wizard.wizard import WizardComponent |
|
|
|
|
from electrum.gui.qt.wizard.wallet import WCScriptAndDerivation, WCHWUnlock, WCHWXPub, WalletWizardComponent |
|
|
|
|
|
|
|
|
|
from .trezor import (TrezorPlugin, TIM_NEW, TIM_RECOVER, TrezorInitSettings, |
|
|
|
|
PASSPHRASE_ON_DEVICE, Capability, BackupType, RecoveryDeviceType) |
|
|
|
|
@ -807,7 +806,8 @@ class WCTrezorXPub(WCHWXPub):
|
|
|
|
|
WCHWXPub.__init__(self, parent, wizard) |
|
|
|
|
|
|
|
|
|
def get_xpub_from_client(self, client, derivation, xtype): |
|
|
|
|
_name, _info = self.wizard_data['hardware_device'] |
|
|
|
|
current_cosigner = self.wizard.current_cosigner(self.wizard_data) |
|
|
|
|
_name, _info = current_cosigner['hardware_device'] |
|
|
|
|
if xtype not in self.plugin.SUPPORTED_XTYPES: |
|
|
|
|
raise ScriptTypeNotSupported(_('This type of script is not supported with {}').format(_info.model_name)) |
|
|
|
|
if not client.is_uptodate(): |
|
|
|
|
@ -818,15 +818,16 @@ class WCTrezorXPub(WCHWXPub):
|
|
|
|
|
return client.get_xpub(derivation, xtype, True) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class WCTrezorInitMethod(WizardComponent, Logger): |
|
|
|
|
class WCTrezorInitMethod(WalletWizardComponent, Logger): |
|
|
|
|
def __init__(self, parent, wizard): |
|
|
|
|
WizardComponent.__init__(self, parent, wizard, title=_('Trezor Setup')) |
|
|
|
|
WalletWizardComponent.__init__(self, parent, wizard, title=_('Trezor Setup')) |
|
|
|
|
Logger.__init__(self) |
|
|
|
|
self.plugins = wizard.plugins |
|
|
|
|
self.plugin = None |
|
|
|
|
|
|
|
|
|
def on_ready(self): |
|
|
|
|
_name, _info = self.wizard_data['hardware_device'] |
|
|
|
|
current_cosigner = self.wizard.current_cosigner(self.wizard_data) |
|
|
|
|
_name, _info = current_cosigner['hardware_device'] |
|
|
|
|
self.plugin = self.plugins.get_plugin(_info.plugin_name) |
|
|
|
|
device_id = _info.device.id_ |
|
|
|
|
client = self.plugins.device_manager.client_by_id(device_id, scan_now=False) |
|
|
|
|
@ -858,18 +859,20 @@ class WCTrezorInitMethod(WizardComponent, Logger):
|
|
|
|
|
def apply(self): |
|
|
|
|
if not self.valid: |
|
|
|
|
return |
|
|
|
|
self.wizard_data['trezor_init'] = self.choice_w.selected_key |
|
|
|
|
current_cosigner = self.wizard.current_cosigner(self.wizard_data) |
|
|
|
|
current_cosigner['trezor_init'] = self.choice_w.selected_key |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class WCTrezorInitParams(WizardComponent): |
|
|
|
|
class WCTrezorInitParams(WalletWizardComponent): |
|
|
|
|
def __init__(self, parent, wizard): |
|
|
|
|
WizardComponent.__init__(self, parent, wizard, title=_('Trezor Setup')) |
|
|
|
|
WalletWizardComponent.__init__(self, parent, wizard, title=_('Trezor Setup')) |
|
|
|
|
self.plugins = wizard.plugins |
|
|
|
|
self._busy = True |
|
|
|
|
|
|
|
|
|
def on_ready(self): |
|
|
|
|
_name, _info = self.wizard_data['hardware_device'] |
|
|
|
|
self.settings_layout = InitSettingsLayout(self.plugins.device_manager, self.wizard_data['trezor_init'], _info.device.id_) |
|
|
|
|
current_cosigner = self.wizard.current_cosigner(self.wizard_data) |
|
|
|
|
_name, _info = current_cosigner['hardware_device'] |
|
|
|
|
self.settings_layout = InitSettingsLayout(self.plugins.device_manager, current_cosigner['trezor_init'], _info.device.id_) |
|
|
|
|
self.layout().addLayout(self.settings_layout) |
|
|
|
|
self.layout().addStretch(1) |
|
|
|
|
|
|
|
|
|
@ -877,12 +880,13 @@ class WCTrezorInitParams(WizardComponent):
|
|
|
|
|
self.busy = False |
|
|
|
|
|
|
|
|
|
def apply(self): |
|
|
|
|
self.wizard_data['trezor_settings'] = self.settings_layout.get_settings() |
|
|
|
|
current_cosigner = self.wizard.current_cosigner(self.wizard_data) |
|
|
|
|
current_cosigner['trezor_settings'] = self.settings_layout.get_settings() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class WCTrezorInit(WizardComponent, Logger): |
|
|
|
|
class WCTrezorInit(WalletWizardComponent, Logger): |
|
|
|
|
def __init__(self, parent, wizard): |
|
|
|
|
WizardComponent.__init__(self, parent, wizard, title=_('Trezor Setup')) |
|
|
|
|
WalletWizardComponent.__init__(self, parent, wizard, title=_('Trezor Setup')) |
|
|
|
|
Logger.__init__(self) |
|
|
|
|
self.plugins = wizard.plugins |
|
|
|
|
self.plugin = self.plugins.get_plugin('trezor') |
|
|
|
|
@ -892,9 +896,10 @@ class WCTrezorInit(WizardComponent, Logger):
|
|
|
|
|
self._busy = True |
|
|
|
|
|
|
|
|
|
def on_ready(self): |
|
|
|
|
settings = self.wizard_data['trezor_settings'] |
|
|
|
|
method = self.wizard_data['trezor_init'] |
|
|
|
|
_name, _info = self.wizard_data['hardware_device'] |
|
|
|
|
current_cosigner = self.wizard.current_cosigner(self.wizard_data) |
|
|
|
|
settings = current_cosigner['trezor_settings'] |
|
|
|
|
method = current_cosigner['trezor_init'] |
|
|
|
|
_name, _info = current_cosigner['hardware_device'] |
|
|
|
|
device_id = _info.device.id_ |
|
|
|
|
client = self.plugins.device_manager.client_by_id(device_id, scan_now=False) |
|
|
|
|
client.handler = self.plugin.create_handler(self.wizard) |
|
|
|
|
|