qt: trezor firmware checks on xpub and initial setup
This commit is contained in:
@@ -14,7 +14,7 @@ from electrum.plugin import hook
|
||||
from electrum.keystore import ScriptTypeNotSupported
|
||||
|
||||
from electrum.plugins.hw_wallet.qt import QtHandlerBase, QtPluginBase
|
||||
from electrum.plugins.hw_wallet.plugin import only_hook_if_libraries_available
|
||||
from electrum.plugins.hw_wallet.plugin import only_hook_if_libraries_available, OutdatedHwFirmwareException
|
||||
|
||||
from electrum.gui.qt.util import (WindowModalDialog, WWLabel, Buttons, CancelButton,
|
||||
OkButton, CloseButton, PasswordLineEdit, getOpenFileName, ChoiceWidget)
|
||||
@@ -803,6 +803,11 @@ class WCTrezorXPub(WCHWXPub):
|
||||
_name, _info = self.wizard_data['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():
|
||||
msg = (_('Outdated {} firmware for device labelled {}. Please '
|
||||
'download the updated firmware from {}')
|
||||
.format(_info.model_name, _info.label, self.plugin.firmware_URL))
|
||||
raise OutdatedHwFirmwareException(msg)
|
||||
return client.get_xpub(derivation, xtype, True)
|
||||
|
||||
|
||||
@@ -810,9 +815,20 @@ class WCTrezorInitMethod(WizardComponent, Logger):
|
||||
def __init__(self, parent, wizard):
|
||||
WizardComponent.__init__(self, parent, wizard, title=_('HW Setup'))
|
||||
Logger.__init__(self)
|
||||
self.plugin = None
|
||||
|
||||
def on_ready(self):
|
||||
_name, _info = self.wizard_data['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)
|
||||
if not client.is_uptodate():
|
||||
msg = (_('Outdated {} firmware for device labelled {}. Please '
|
||||
'download the updated firmware from {}')
|
||||
.format(_info.model_name, _info.label, self.plugin.firmware_URL))
|
||||
self.error = msg
|
||||
return
|
||||
|
||||
message = _('Choose how you want to initialize your {}.').format(_info.model_name)
|
||||
choices = [
|
||||
# Must be short as QT doesn't word-wrap radio button text
|
||||
|
||||
Reference in New Issue
Block a user