1
0

update text gui for lightning invoices

This commit is contained in:
ThomasV
2025-02-25 09:31:36 +01:00
parent d005da1ea2
commit a371102a4c

View File

@@ -226,15 +226,16 @@ class ElectrumGui(BaseElectrumGui, EventListener):
def print_receive_tab(self):
self.stdscr.clear()
self.buttons = {}
self.max_pos = 5 + len(list(self.wallet.get_unpaid_requests()))
self.max_pos = 6 + len(list(self.wallet.get_unpaid_requests()))
self.index = 0
self.add_edit_line(3, 2, _("Description"), self.str_recv_description, 40)
self.add_edit_line(5, 2, _("Amount"), self.str_recv_amount, 15)
self.stdscr.addstr(5, 31, self.config.get_base_unit())
self.add_edit_line(7, 2, _("Expiry"), self.str_recv_expiry, 15)
self.add_button(9, 15, _("[Create]"), self.do_create_request)
self.add_button(9, 25, _("[Clear]"), self.do_clear_request)
self.print_requests_list(13, 2, offset_pos=5)
self.add_button(9, 15, _("[Clear]"), self.do_clear_request)
self.add_button(9, 25, _("[Onchain]"), lambda: self.do_create_request(lightning=False))
self.add_button(9, 35, _("[Lightning]"), lambda: self.do_create_request(lightning=True))
self.print_requests_list(13, 2, offset_pos=6)
return
def run_receive_tab(self, c):
@@ -244,8 +245,8 @@ class ElectrumGui(BaseElectrumGui, EventListener):
self.str_recv_amount = self.edit_str(self.str_recv_amount, c)
elif self.pos in self.buttons and c == ord("\n"):
self.buttons[self.pos]()
elif self.pos >= 5 and c == ord("\n"):
key = self.requests[self.pos - 5]
elif self.pos >= 6 and c == ord("\n"):
key = self.requests[self.pos - 6]
self.show_request(key)
def question(self, msg):
@@ -557,19 +558,22 @@ class ElectrumGui(BaseElectrumGui, EventListener):
self.str_fee = ''
self.str_description = ''
def do_create_request(self):
amount_sat = self.parse_amount(self.str_recv_amount)
if not amount_sat:
self.show_message(_('Invalid Amount'))
return
if amount_sat < self.wallet.dust_threshold():
address = None
if not self.wallet.has_lightning():
def do_create_request(self, lightning:bool):
amount_sat = self.parse_amount(self.str_recv_amount) or 0
if not lightning:
if amount_sat and amount_sat < self.wallet.dust_threshold():
self.show_message(_('Amount too low'))
return
else:
address = self.wallet.get_unused_address()
if not address:
self.show_message(_('Nor more unused sddress'))
return
else:
if not self.wallet.has_lightning():
self.show_message(_('Lightning is disabled on this wallet'))
return
address = None
message = self.str_recv_description
expiry = self.config.WALLET_PAYREQ_EXPIRY_SECONDS
key = self.wallet.create_request(amount_sat, message, expiry, address)
@@ -877,31 +881,26 @@ class ElectrumGui(BaseElectrumGui, EventListener):
URI = self.wallet.get_request_URI(req) or ''
lnaddr = self.wallet.get_bolt11_invoice(req) or ''
w = curses.newwin(self.maxy - 2, self.maxx - 2, 1, 1)
pos = 4
pos = 2
text = URI or addr or lnaddr
data = URI or addr or lnaddr.upper()
while True:
if pos == 1:
text = URI
data = URI
elif pos == 2:
text = lnaddr
data = lnaddr.upper()
else:
text = addr
data = addr
w.clear()
w.border(0)
w.addstr(0, 2, ' ' + _('Payment Request') + ' ')
y = 2
w.addstr(y, 2, "Address")
h1 = self.print_textbox(w, y, 13, addr, pos==0)
y += h1 + 2
w.addstr(y, 2, "URI")
h2 = self.print_textbox(w, y, 13, URI, pos==1)
y += h2 + 2
w.addstr(y, 2, "Lightning")
h3 = self.print_textbox(w, y, 13, lnaddr, pos==2)
y += h3 + 2
if URI:
w.addstr(y, 2, "URI")
h = self.print_textbox(w, y, 13, URI, False)
elif addr:
w.addstr(y, 2, "Address")
h = self.print_textbox(w, y, 13, addr, False)
elif lnaddr:
w.addstr(y, 2, "Lightning")
h = self.print_textbox(w, y, 13, lnaddr, False)
else:
return
y += h + 2
lines = self.get_qr(data)
qr_width = len(lines) * 2
x = self.maxx - qr_width
@@ -909,27 +908,28 @@ class ElectrumGui(BaseElectrumGui, EventListener):
self.print_qr(w, 1, x, lines)
else:
w.addstr(y, 35, "(Window too small for QR code)")
w.addstr(y, 13, "[Delete]", curses.A_REVERSE if pos==3 else curses.color_pair(2))
w.addstr(y, 25, "[Close]", curses.A_REVERSE if pos==4 else curses.color_pair(2))
w.addstr(y, 13, "[Copy]", curses.A_REVERSE if pos==0 else curses.color_pair(2))
w.addstr(y, 23, "[Delete]", curses.A_REVERSE if pos==1 else curses.color_pair(2))
w.addstr(y, 35, "[Close]", curses.A_REVERSE if pos==2 else curses.color_pair(2))
w.refresh()
c = self.getch()
if c in [curses.KEY_UP]:
if c in [curses.KEY_UP, curses.KEY_LEFT]:
pos -= 1
elif c in [curses.KEY_DOWN, ord("\t")]:
elif c in [curses.KEY_DOWN, curses.KEY_RIGHT, ord("\t")]:
pos += 1
elif c == ord("\n"):
if pos in [0,1,2]:
if pos == 0:
pyperclip.copy(text)
self.show_message('Text copied to clipboard')
elif pos == 3:
elif pos == 1:
if self.question("Delete Request?"):
self.wallet.delete_request(key)
self.max_pos -= 1
break
elif pos ==4:
elif pos == 2:
break
else:
break
pos = pos % 5
pos = pos % 3
self.stdscr.refresh()
return