Browse Source

add help text to channel backup QR code

bip39-recovery
ThomasV 5 years ago
parent
commit
661ecb2cf5
  1. 9
      electrum/gui/kivy/main_window.py
  2. 8
      electrum/gui/kivy/uix/dialogs/lightning_channels.py
  3. 8
      electrum/gui/kivy/uix/dialogs/qr_dialog.py
  4. 7
      electrum/gui/qt/channels_list.py
  5. 4
      electrum/gui/qt/main_window.py
  6. 14
      electrum/gui/qt/qrcodewidget.py

9
electrum/gui/kivy/main_window.py

@ -462,7 +462,7 @@ class ElectrumWindow(App):
self.invoice_popup = InvoiceDialog('Invoice', data, key)
self.invoice_popup.open()
def qr_dialog(self, title, data, show_text=False, text_for_clipboard=None):
def qr_dialog(self, title, data, show_text=False, text_for_clipboard=None, help_text=None):
from .uix.dialogs.qr_dialog import QRDialog
def on_qr_failure():
popup.dismiss()
@ -471,8 +471,11 @@ class ElectrumWindow(App):
msg += '\n' + _('Text copied to clipboard.')
self._clipboard.copy(text_for_clipboard)
Clock.schedule_once(lambda dt: self.show_info(msg))
popup = QRDialog(title, data, show_text, failure_cb=on_qr_failure,
text_for_clipboard=text_for_clipboard)
popup = QRDialog(
title, data, show_text,
failure_cb=on_qr_failure,
text_for_clipboard=text_for_clipboard,
help_text=help_text)
popup.open()
def scan_qr(self, on_complete):

8
electrum/gui/kivy/uix/dialogs/lightning_channels.py

@ -373,7 +373,13 @@ class ChannelDetailsPopup(Popup):
def export_backup(self):
text = self.app.wallet.lnworker.export_channel_backup(self.chan.channel_id)
self.app.qr_dialog(_("Channel Backup " + self.chan.short_id_for_GUI()), 'channel_backup:'+text)
# TODO: some messages are duplicated between Kivy and Qt.
help_text = ' '.join([
_("Channel backups can be imported in another instance of the same wallet, by scanning this QR code."),
_("Please note that channel backups cannot be used to restore your channels."),
_("If you lose your wallet file, the only thing you can do with a backup is to request your channel to be closed, so that your funds will be sent on-chain."),
])
self.app.qr_dialog(_("Channel Backup " + self.chan.short_id_for_GUI()), 'channel_backup:'+text, help_text=help_text)
def force_close(self):
Question(_('Force-close channel?'), self._force_close).open()

8
electrum/gui/kivy/uix/dialogs/qr_dialog.py

@ -13,7 +13,7 @@ Builder.load_string('''
title: ''
data: ''
shaded: False
show_text: False
help_text: ''
AnchorLayout:
anchor_x: 'center'
BoxLayout:
@ -29,7 +29,7 @@ Builder.load_string('''
touch = args[1]
if self.collide_point(*touch.pos): self.shaded = not self.shaded
TopLabel:
text: root.data if root.show_text else ''
text: root.help_text
Widget:
size_hint: 1, 0.2
BoxLayout:
@ -56,12 +56,12 @@ Builder.load_string('''
class QRDialog(Factory.Popup):
def __init__(self, title, data, show_text, *,
failure_cb=None, text_for_clipboard=None):
failure_cb=None, text_for_clipboard=None, help_text=None):
Factory.Popup.__init__(self)
self.app = App.get_running_app()
self.title = title
self.data = data
self.show_text = show_text
self.help_text = data if show_text else help_text
self.failure_cb = failure_cb
self.text_for_clipboard = text_for_clipboard if text_for_clipboard else data

7
electrum/gui/qt/channels_list.py

@ -126,8 +126,13 @@ class ChannelsList(MyTreeView):
self.lnbackups.remove_channel_backup(channel_id)
def export_channel_backup(self, channel_id):
msg = ' '.join([
_("Channel backups can be imported in another instance of the same wallet, by scanning this QR code."),
_("Please note that channel backups cannot be used to restore your channels."),
_("If you lose your wallet file, the only thing you can do with a backup is to request your channel to be closed, so that your funds will be sent on-chain."),
])
data = self.lnworker.export_channel_backup(channel_id)
self.main_window.show_qrcode('channel_backup:' + data, 'channel backup')
self.main_window.show_qrcode('channel_backup:' + data, 'channel backup', help_text=msg)
def request_force_close(self, channel_id):
def task():

4
electrum/gui/qt/main_window.py

@ -2372,10 +2372,10 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger):
d = SeedDialog(self, seed, passphrase)
d.exec_()
def show_qrcode(self, data, title = _("QR code"), parent=None):
def show_qrcode(self, data, title = _("QR code"), parent=None, help_text=None):
if not data:
return
d = QRDialog(data, parent or self, title)
d = QRDialog(data, parent or self, title, help_text=help_text)
d.exec_()
@protected

14
electrum/gui/qt/qrcodewidget.py

@ -10,7 +10,7 @@ from PyQt5.QtWidgets import (
from electrum.i18n import _
from .util import WindowModalDialog, get_parent_main_window
from .util import WindowModalDialog, get_parent_main_window, WWLabel
class QRCodeWidget(QWidget):
@ -93,17 +93,17 @@ class QRCodeWidget(QWidget):
class QRDialog(WindowModalDialog):
def __init__(self, data, parent=None, title = "", show_text=False):
def __init__(self, data, parent=None, title = "", show_text=False, help_text=None):
WindowModalDialog.__init__(self, parent, title)
vbox = QVBoxLayout()
qrw = QRCodeWidget(data)
vbox.addWidget(qrw, 1)
if show_text:
text = QTextEdit()
text.setText(data)
text.setReadOnly(True)
vbox.addWidget(text)
help_text = data if show_text else help_text
if help_text:
text_label = WWLabel()
text_label.setText(help_text)
vbox.addWidget(text_label)
hbox = QHBoxLayout()
hbox.addStretch(1)

Loading…
Cancel
Save