qt+plugins: cleanup. remove all old wizard code
This commit is contained in:
@@ -19,7 +19,7 @@ from ..hw_wallet.qt import QtHandlerBase, QtPluginBase
|
||||
from ..hw_wallet.plugin import only_hook_if_libraries_available
|
||||
from .safe_t import SafeTPlugin, TIM_NEW, TIM_RECOVER, TIM_MNEMONIC, TIM_PRIVKEY
|
||||
|
||||
from electrum.gui.qt.wizard.wallet import WCScriptAndDerivation, WCHWUninitialized, WCHWUnlock, WCHWXPub
|
||||
from electrum.gui.qt.wizard.wallet import WCScriptAndDerivation, WCHWUnlock, WCHWXPub
|
||||
from electrum.gui.qt.wizard.wizard import WizardComponent
|
||||
|
||||
if TYPE_CHECKING:
|
||||
@@ -98,14 +98,6 @@ class QtPlugin(QtPluginBase):
|
||||
SettingsDialog(window, self, keystore, device_id).exec_()
|
||||
keystore.thread.add(connect, on_success=show_dialog)
|
||||
|
||||
def request_safe_t_init_settings(self, wizard, method, device):
|
||||
safe_t_init_layout = SafeTInitLayout(method, device)
|
||||
safe_t_init_layout.validChanged.connect(wizard.next_button.setEnabled)
|
||||
next_enabled = method != TIM_PRIVKEY
|
||||
wizard.exec_layout(safe_t_init_layout, next_enabled=next_enabled)
|
||||
|
||||
return safe_t_init_layout.get_settings()
|
||||
|
||||
|
||||
def clean_text(widget):
|
||||
text = widget.toPlainText().strip()
|
||||
@@ -611,13 +603,13 @@ class WCSafeTInit(WizardComponent, Logger):
|
||||
client = self.plugins.device_manager.client_by_id(device_id, scan_now=False)
|
||||
client.handler = self.plugin.create_handler(self.wizard)
|
||||
|
||||
def initialize_device_task(settings, method, device_id, wizard, handler):
|
||||
self.plugin._initialize_device(settings, method, device_id, wizard, handler)
|
||||
def initialize_device_task(settings, method, device_id, handler):
|
||||
self.plugin._initialize_device(settings, method, device_id, handler)
|
||||
self.init_done()
|
||||
|
||||
t = threading.Thread(
|
||||
target=initialize_device_task,
|
||||
args=(settings, method, device_id, None, client.handler),
|
||||
args=(settings, method, device_id, client.handler),
|
||||
daemon=True)
|
||||
t.start()
|
||||
|
||||
|
||||
@@ -1,17 +1,13 @@
|
||||
from binascii import hexlify, unhexlify
|
||||
import traceback
|
||||
import sys
|
||||
from typing import NamedTuple, Any, Optional, Dict, Union, List, Tuple, TYPE_CHECKING, Sequence
|
||||
from typing import Optional, TYPE_CHECKING, Sequence
|
||||
|
||||
from electrum.util import bfh, versiontuple, UserCancelled, UserFacingException
|
||||
from electrum.util import UserFacingException
|
||||
from electrum.bip32 import BIP32Node
|
||||
from electrum import descriptor
|
||||
from electrum import constants
|
||||
from electrum.i18n import _
|
||||
from electrum.plugin import Device, runs_in_hwd_thread
|
||||
from electrum.transaction import Transaction, PartialTransaction, PartialTxInput, PartialTxOutput, Sighash
|
||||
from electrum.transaction import Transaction, PartialTransaction, PartialTxInput, Sighash
|
||||
from electrum.keystore import Hardware_KeyStore
|
||||
from electrum.base_wizard import ScriptTypeNotSupported
|
||||
|
||||
from ..hw_wallet import HW_PluginBase
|
||||
from ..hw_wallet.plugin import is_any_tx_output_on_change_branch, trezor_validate_op_return_output_and_get_data
|
||||
@@ -158,52 +154,8 @@ class SafeTPlugin(HW_PluginBase):
|
||||
def get_coin_name(self):
|
||||
return "Testnet" if constants.net.TESTNET else "Bitcoin"
|
||||
|
||||
def initialize_device(self, device_id, wizard, handler):
|
||||
# Initialization method
|
||||
msg = _("Choose how you want to initialize your {}.\n\n"
|
||||
"The first two methods are secure as no secret information "
|
||||
"is entered into your computer.\n\n"
|
||||
"For the last two methods you input secrets on your keyboard "
|
||||
"and upload them to your {}, and so you should "
|
||||
"only do those on a computer you know to be trustworthy "
|
||||
"and free of malware."
|
||||
).format(self.device, self.device)
|
||||
choices = [
|
||||
# Must be short as QT doesn't word-wrap radio button text
|
||||
(TIM_NEW, _("Let the device generate a completely new seed randomly")),
|
||||
(TIM_RECOVER, _("Recover from a seed you have previously written down")),
|
||||
(TIM_MNEMONIC, _("Upload a BIP39 mnemonic to generate the seed")),
|
||||
(TIM_PRIVKEY, _("Upload a master private key"))
|
||||
]
|
||||
def f(method):
|
||||
import threading
|
||||
settings = self.request_safe_t_init_settings(wizard, method, self.device)
|
||||
t = threading.Thread(target=self._initialize_device_safe, args=(settings, method, device_id, wizard, handler))
|
||||
t.daemon = True
|
||||
t.start()
|
||||
exit_code = wizard.loop.exec_()
|
||||
if exit_code != 0:
|
||||
# this method (initialize_device) was called with the expectation
|
||||
# of leaving the device in an initialized state when finishing.
|
||||
# signal that this is not the case:
|
||||
raise UserCancelled()
|
||||
wizard.choice_dialog(title=_('Initialize Device'), message=msg, choices=choices, run_next=f)
|
||||
|
||||
def _initialize_device_safe(self, settings, method, device_id, wizard, handler):
|
||||
exit_code = 0
|
||||
try:
|
||||
self._initialize_device(settings, method, device_id, wizard, handler)
|
||||
except UserCancelled:
|
||||
exit_code = 1
|
||||
except BaseException as e:
|
||||
self.logger.exception('')
|
||||
handler.show_error(repr(e))
|
||||
exit_code = 1
|
||||
finally:
|
||||
wizard.loop.exit(exit_code)
|
||||
|
||||
@runs_in_hwd_thread
|
||||
def _initialize_device(self, settings, method, device_id, wizard, handler):
|
||||
def _initialize_device(self, settings, method, device_id, handler):
|
||||
item, label, pin_protection, passphrase_protection = settings
|
||||
|
||||
if method == TIM_RECOVER:
|
||||
@@ -254,24 +206,6 @@ class SafeTPlugin(HW_PluginBase):
|
||||
)
|
||||
return self.types.HDNodePathType(node=node, address_n=address_n)
|
||||
|
||||
def setup_device(self, device_info, wizard, purpose):
|
||||
device_id = device_info.device.id_
|
||||
client = self.scan_and_create_client_for_device(device_id=device_id, wizard=wizard)
|
||||
if not device_info.initialized:
|
||||
self.initialize_device(device_id, wizard, client.handler)
|
||||
wizard.run_task_without_blocking_gui(
|
||||
task=lambda: client.get_xpub("m", 'standard'))
|
||||
client.used()
|
||||
return client
|
||||
|
||||
def get_xpub(self, device_id, derivation, xtype, wizard):
|
||||
if xtype not in self.SUPPORTED_XTYPES:
|
||||
raise ScriptTypeNotSupported(_('This type of script is not supported with {}.').format(self.device))
|
||||
client = self.scan_and_create_client_for_device(device_id=device_id, wizard=wizard)
|
||||
xpub = client.get_xpub(derivation, xtype)
|
||||
client.used()
|
||||
return xpub
|
||||
|
||||
def get_safet_input_script_type(self, electrum_txin_type: str):
|
||||
if electrum_txin_type in ('p2wpkh', 'p2wsh'):
|
||||
return self.types.InputScriptType.SPENDWITNESS
|
||||
|
||||
Reference in New Issue
Block a user