update text gui for lightning invoices
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user