Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 28 additions & 5 deletions electrum/gui/qt/wizard/wallet.py
Original file line number Diff line number Diff line change
Expand Up @@ -1086,7 +1086,7 @@ def paintEvent(self, event):


class WCChooseHWDevice(WalletWizardComponent, Logger):
scanFailed = pyqtSignal([str, str], arguments=['code', 'message'])
scanFailed = pyqtSignal([str, str, str], arguments=['code', 'message', 'debug_message'])
scanComplete = pyqtSignal()

def __init__(self, parent, wizard):
Expand All @@ -1100,6 +1100,14 @@ def __init__(self, parent, wizard):
self.error_l = WWLabel()
self.error_l.setVisible(False)

self.debug_message_toggle = QLabel()
self.debug_message_toggle.setTextInteractionFlags(Qt.TextInteractionFlag.LinksAccessibleByMouse)
self.debug_message_toggle.linkActivated.connect(self.on_toggle_debug_message)
self.debug_message_toggle.setVisible(False)

self.debug_l = WWLabel()
self.debug_l.setVisible(False)

self.device_list = QWidget()
self.device_list_layout = QVBoxLayout()
self.device_list.setLayout(self.device_list_layout)
Expand All @@ -1122,6 +1130,8 @@ def __init__(self, parent, wizard):
self.layout().addStretch(1)
self.layout().addLayout(hbox)
self.layout().addStretch(1)
self.layout().addWidget(self.debug_l)
self.layout().addWidget(self.debug_message_toggle, alignment=Qt.AlignmentFlag.AlignLeft)

def on_ready(self):
self.scan_devices()
Expand All @@ -1134,15 +1144,29 @@ def on_add_plugin(self):
d.exec()
self.scan_devices()

def on_scan_failed(self, code, message):
def on_scan_failed(self, code, message, debug_message):
self.error_l.setText(message)
self.error_l.setVisible(True)
self.debug_l.setText(debug_message)
self.debug_l.setVisible(False)
self._update_debug_message_toggle()
self.debug_message_toggle.setVisible(True)
self.device_list.setVisible(False)

self.valid = False

def _update_debug_message_toggle(self):
link = _('Hide debug message') if self.debug_l.isVisible() else _('Show debug message')
self.debug_message_toggle.setText(f'<a href="toggle">{link}</a>')

def on_toggle_debug_message(self, _link):
self.debug_l.setVisible(not self.debug_l.isVisible())
self._update_debug_message_toggle()

def on_scan_complete(self):
self.error_l.setVisible(False)
self.debug_message_toggle.setVisible(False)
self.debug_l.setVisible(False)
self.device_list.setVisible(True)

choices = [] # type: List[ChoiceItem]
Expand Down Expand Up @@ -1235,10 +1259,9 @@ def failed_getting_device_infos(name, e):
msg += _('While this is less than ideal, it might help if you run Electrum as Administrator.') + '\n'
else:
msg += _('On Linux, you might have to add a new permission to your udev rules.') + '\n'
msg += '\n\n'
msg += _('Debug message') + '\n' + debug_msg

self.scanFailed.emit('no_devices', msg)
debug_message = _('Debug message') + '\n' + debug_msg
self.scanFailed.emit('no_devices', msg, debug_message)
self.busy = False
return

Expand Down