lightning: march 2018 rebase, without integration
This commit is contained in:
68
gui/kivy/uix/dialogs/lightning_payer.py
Normal file
68
gui/kivy/uix/dialogs/lightning_payer.py
Normal file
@@ -0,0 +1,68 @@
|
||||
from kivy.lang import Builder
|
||||
from kivy.factory import Factory
|
||||
from electrum_gui.kivy.i18n import _
|
||||
|
||||
Builder.load_string('''
|
||||
<LightningPayerDialog@Popup>
|
||||
id: s
|
||||
name: 'lightning_payer'
|
||||
invoice_data: ''
|
||||
BoxLayout:
|
||||
orientation: "vertical"
|
||||
BlueButton:
|
||||
text: s.invoice_data if s.invoice_data else _('Lightning invoice')
|
||||
shorten: True
|
||||
on_release: Clock.schedule_once(lambda dt: app.show_info(_('Copy and paste the lightning invoice using the Paste button, or use the camera to scan a QR code.')))
|
||||
GridLayout:
|
||||
cols: 4
|
||||
size_hint: 1, None
|
||||
height: '48dp'
|
||||
IconButton:
|
||||
id: qr
|
||||
on_release: Clock.schedule_once(lambda dt: app.scan_qr(on_complete=s.on_lightning_qr))
|
||||
icon: 'atlas://gui/kivy/theming/light/camera'
|
||||
Button:
|
||||
text: _('Paste')
|
||||
on_release: s.do_paste()
|
||||
Button:
|
||||
text: _('Paste sample')
|
||||
on_release: s.do_paste_sample()
|
||||
Button:
|
||||
text: _('Clear')
|
||||
on_release: s.do_clear()
|
||||
Button:
|
||||
size_hint: 1, None
|
||||
height: '48dp'
|
||||
text: _('Pay pasted/scanned invoice')
|
||||
on_release: s.do_pay()
|
||||
''')
|
||||
|
||||
class LightningPayerDialog(Factory.Popup):
|
||||
def __init__(self, app):
|
||||
super(LightningPayerDialog, self).__init__()
|
||||
self.app = app
|
||||
def open(self, *args, **kwargs):
|
||||
super(LightningPayerDialog, self).open(*args, **kwargs)
|
||||
class FakeQtSignal:
|
||||
def emit(self2, data):
|
||||
self.app.show_info(data)
|
||||
class MyConsole:
|
||||
newResult = FakeQtSignal()
|
||||
self.app.wallet.lightning.setConsole(MyConsole())
|
||||
def dismiss(self, *args, **kwargs):
|
||||
super(LightningPayerDialog, self).dismiss(*args, **kwargs)
|
||||
self.app.wallet.lightning.setConsole(None)
|
||||
def do_paste_sample(self):
|
||||
self.invoice_data = "lnbc1pvjluezpp5qqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqypqdpl2pkx2ctnv5sxxmmwwd5kgetjypeh2ursdae8g6twvus8g6rfwvs8qun0dfjkxaq8rkx3yf5tcsyz3d73gafnh3cax9rn449d9p5uxz9ezhhypd0elx87sjle52x86fux2ypatgddc6k63n7erqz25le42c4u4ecky03ylcqca784w"
|
||||
def do_paste(self):
|
||||
contents = self.app._clipboard.paste()
|
||||
if not contents:
|
||||
self.app.show_info(_("Clipboard is empty"))
|
||||
return
|
||||
self.invoice_data = contents
|
||||
def do_clear(self):
|
||||
self.invoice_data = ""
|
||||
def do_pay(self):
|
||||
lightning.lightningCall(self.app.wallet.lightning, "sendpayment")("--pay_req=" + self.invoice_data)
|
||||
def on_lightning_qr(self):
|
||||
self.app.show_info("Lightning Invoice QR scanning not implemented") #TODO
|
||||
Reference in New Issue
Block a user