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