mirror of
https://github.com/LBRYFoundation/LBRY-Vault.git
synced 2025-08-29 08:21:27 +00:00
add help text to channel backup QR code
This commit is contained in:
parent
83cabccdb5
commit
661ecb2cf5
6 changed files with 32 additions and 18 deletions
|
@ -462,7 +462,7 @@ class ElectrumWindow(App):
|
||||||
self.invoice_popup = InvoiceDialog('Invoice', data, key)
|
self.invoice_popup = InvoiceDialog('Invoice', data, key)
|
||||||
self.invoice_popup.open()
|
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
|
from .uix.dialogs.qr_dialog import QRDialog
|
||||||
def on_qr_failure():
|
def on_qr_failure():
|
||||||
popup.dismiss()
|
popup.dismiss()
|
||||||
|
@ -471,8 +471,11 @@ class ElectrumWindow(App):
|
||||||
msg += '\n' + _('Text copied to clipboard.')
|
msg += '\n' + _('Text copied to clipboard.')
|
||||||
self._clipboard.copy(text_for_clipboard)
|
self._clipboard.copy(text_for_clipboard)
|
||||||
Clock.schedule_once(lambda dt: self.show_info(msg))
|
Clock.schedule_once(lambda dt: self.show_info(msg))
|
||||||
popup = QRDialog(title, data, show_text, failure_cb=on_qr_failure,
|
popup = QRDialog(
|
||||||
text_for_clipboard=text_for_clipboard)
|
title, data, show_text,
|
||||||
|
failure_cb=on_qr_failure,
|
||||||
|
text_for_clipboard=text_for_clipboard,
|
||||||
|
help_text=help_text)
|
||||||
popup.open()
|
popup.open()
|
||||||
|
|
||||||
def scan_qr(self, on_complete):
|
def scan_qr(self, on_complete):
|
||||||
|
|
|
@ -373,7 +373,13 @@ class ChannelDetailsPopup(Popup):
|
||||||
|
|
||||||
def export_backup(self):
|
def export_backup(self):
|
||||||
text = self.app.wallet.lnworker.export_channel_backup(self.chan.channel_id)
|
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):
|
def force_close(self):
|
||||||
Question(_('Force-close channel?'), self._force_close).open()
|
Question(_('Force-close channel?'), self._force_close).open()
|
||||||
|
|
|
@ -13,7 +13,7 @@ Builder.load_string('''
|
||||||
title: ''
|
title: ''
|
||||||
data: ''
|
data: ''
|
||||||
shaded: False
|
shaded: False
|
||||||
show_text: False
|
help_text: ''
|
||||||
AnchorLayout:
|
AnchorLayout:
|
||||||
anchor_x: 'center'
|
anchor_x: 'center'
|
||||||
BoxLayout:
|
BoxLayout:
|
||||||
|
@ -29,7 +29,7 @@ Builder.load_string('''
|
||||||
touch = args[1]
|
touch = args[1]
|
||||||
if self.collide_point(*touch.pos): self.shaded = not self.shaded
|
if self.collide_point(*touch.pos): self.shaded = not self.shaded
|
||||||
TopLabel:
|
TopLabel:
|
||||||
text: root.data if root.show_text else ''
|
text: root.help_text
|
||||||
Widget:
|
Widget:
|
||||||
size_hint: 1, 0.2
|
size_hint: 1, 0.2
|
||||||
BoxLayout:
|
BoxLayout:
|
||||||
|
@ -56,12 +56,12 @@ Builder.load_string('''
|
||||||
|
|
||||||
class QRDialog(Factory.Popup):
|
class QRDialog(Factory.Popup):
|
||||||
def __init__(self, title, data, show_text, *,
|
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)
|
Factory.Popup.__init__(self)
|
||||||
self.app = App.get_running_app()
|
self.app = App.get_running_app()
|
||||||
self.title = title
|
self.title = title
|
||||||
self.data = data
|
self.data = data
|
||||||
self.show_text = show_text
|
self.help_text = data if show_text else help_text
|
||||||
self.failure_cb = failure_cb
|
self.failure_cb = failure_cb
|
||||||
self.text_for_clipboard = text_for_clipboard if text_for_clipboard else data
|
self.text_for_clipboard = text_for_clipboard if text_for_clipboard else data
|
||||||
|
|
||||||
|
|
|
@ -126,8 +126,13 @@ class ChannelsList(MyTreeView):
|
||||||
self.lnbackups.remove_channel_backup(channel_id)
|
self.lnbackups.remove_channel_backup(channel_id)
|
||||||
|
|
||||||
def export_channel_backup(self, 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)
|
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 request_force_close(self, channel_id):
|
||||||
def task():
|
def task():
|
||||||
|
|
|
@ -2372,10 +2372,10 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger):
|
||||||
d = SeedDialog(self, seed, passphrase)
|
d = SeedDialog(self, seed, passphrase)
|
||||||
d.exec_()
|
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:
|
if not data:
|
||||||
return
|
return
|
||||||
d = QRDialog(data, parent or self, title)
|
d = QRDialog(data, parent or self, title, help_text=help_text)
|
||||||
d.exec_()
|
d.exec_()
|
||||||
|
|
||||||
@protected
|
@protected
|
||||||
|
|
|
@ -10,7 +10,7 @@ from PyQt5.QtWidgets import (
|
||||||
|
|
||||||
from electrum.i18n 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):
|
class QRCodeWidget(QWidget):
|
||||||
|
@ -93,17 +93,17 @@ class QRCodeWidget(QWidget):
|
||||||
|
|
||||||
class QRDialog(WindowModalDialog):
|
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)
|
WindowModalDialog.__init__(self, parent, title)
|
||||||
|
|
||||||
vbox = QVBoxLayout()
|
vbox = QVBoxLayout()
|
||||||
qrw = QRCodeWidget(data)
|
qrw = QRCodeWidget(data)
|
||||||
vbox.addWidget(qrw, 1)
|
vbox.addWidget(qrw, 1)
|
||||||
if show_text:
|
help_text = data if show_text else help_text
|
||||||
text = QTextEdit()
|
if help_text:
|
||||||
text.setText(data)
|
text_label = WWLabel()
|
||||||
text.setReadOnly(True)
|
text_label.setText(help_text)
|
||||||
vbox.addWidget(text)
|
vbox.addWidget(text_label)
|
||||||
hbox = QHBoxLayout()
|
hbox = QHBoxLayout()
|
||||||
hbox.addStretch(1)
|
hbox.addStretch(1)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue