text GUI: simplify show_request
This commit is contained in:
@@ -86,7 +86,6 @@ class ElectrumGui(BaseElectrumGui, EventListener):
|
||||
self.tab = 0
|
||||
self.pos = 0
|
||||
self.popup_pos = 0
|
||||
self.qr_mode = 0
|
||||
|
||||
self.str_recipient = ""
|
||||
self.str_description = ""
|
||||
@@ -234,30 +233,12 @@ class ElectrumGui(BaseElectrumGui, EventListener):
|
||||
self.buttons[self.pos]()
|
||||
elif self.pos >= 5 and c == 10:
|
||||
key = self.requests[self.pos - 5]
|
||||
self.show_request_menu(key)
|
||||
self.show_request(key)
|
||||
|
||||
def question(self, msg):
|
||||
out = self.run_popup(msg, ["No", "Yes"]).get('button')
|
||||
return out == "Yes"
|
||||
|
||||
def show_request_menu(self, key):
|
||||
req = self.wallet.get_request(key)
|
||||
addr = req.get_address() or ''
|
||||
URI = req.get_bip21_URI()
|
||||
lnaddr = req.lightning_invoice or ''
|
||||
out = self.run_popup('Request', ["View", "Copy address", "Copy URI", "Copy Lightning Invoice", "Delete"]).get('button')
|
||||
if out == "Delete":
|
||||
self.wallet.delete_request(key)
|
||||
self.max_pos -= 1
|
||||
elif out == "Copy address":
|
||||
pyperclip.copy(addr)
|
||||
elif out == "Copy URI":
|
||||
pyperclip.copy(URI)
|
||||
elif out == "Copy Lightning Invoice":
|
||||
pyperclip.copy(lnaddr)
|
||||
elif out == "View":
|
||||
self.show_request(key)
|
||||
|
||||
def show_invoice_menu(self):
|
||||
key = self.invoices[self.pos - 7]
|
||||
invoice = self.wallet.get_invoice(key)
|
||||
@@ -858,11 +839,11 @@ class ElectrumGui(BaseElectrumGui, EventListener):
|
||||
break
|
||||
return out
|
||||
|
||||
def print_textbox(self, w, y, x, _text, pos):
|
||||
def print_textbox(self, w, y, x, _text, highlighted):
|
||||
width = 60
|
||||
for i in range(len(_text)//width + 1):
|
||||
s = _text[i*width:(i+1)*width]
|
||||
w.addstr(y+i, x, s, curses.A_REVERSE if self.qr_mode == pos else curses.A_NORMAL)
|
||||
w.addstr(y+i, x, s, curses.A_REVERSE if highlighted else curses.A_NORMAL)
|
||||
return i
|
||||
|
||||
def show_request(self, key):
|
||||
@@ -870,31 +851,31 @@ class ElectrumGui(BaseElectrumGui, EventListener):
|
||||
addr = req.get_address() or ''
|
||||
URI = req.get_bip21_URI()
|
||||
lnaddr = req.lightning_invoice or ''
|
||||
self.w = curses.newwin(self.maxy - 2, self.maxx - 2, 1, 1)
|
||||
w = self.w
|
||||
w = curses.newwin(self.maxy - 2, self.maxx - 2, 1, 1)
|
||||
pos = 4
|
||||
while True:
|
||||
if self.qr_mode == 0:
|
||||
text = addr
|
||||
data = addr
|
||||
elif self.qr_mode == 1:
|
||||
if pos == 1:
|
||||
text = URI
|
||||
data = URI
|
||||
elif self.qr_mode == 2:
|
||||
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, 0)
|
||||
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, 1)
|
||||
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, 2)
|
||||
h3 = self.print_textbox(w, y, 13, lnaddr, pos==2)
|
||||
y += h3 + 2
|
||||
lines = self.get_qr(data)
|
||||
qr_width = len(lines) * 2
|
||||
@@ -902,19 +883,28 @@ class ElectrumGui(BaseElectrumGui, EventListener):
|
||||
if x > 60:
|
||||
self.print_qr(w, 1, x, lines)
|
||||
else:
|
||||
w.addstr(y, 2, "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, 25, "[Close]", curses.A_REVERSE if pos==4 else curses.color_pair(2))
|
||||
w.refresh()
|
||||
c = self.getch()
|
||||
if c in [curses.KEY_UP]:
|
||||
self.qr_mode -= 1
|
||||
pos -= 1
|
||||
elif c in [curses.KEY_DOWN, 9]:
|
||||
self.qr_mode +=1
|
||||
elif c == ord(' '):
|
||||
pyperclip.copy(text)
|
||||
self.print_clipboard()
|
||||
pos +=1
|
||||
elif c == 10:
|
||||
if pos in [0,1,2]:
|
||||
pyperclip.copy(text)
|
||||
self.show_message('Text copied to clipboard')
|
||||
elif pos == 3:
|
||||
if self.question("Delete Request?"):
|
||||
self.wallet.delete_request(key)
|
||||
self.max_pos -= 1
|
||||
break
|
||||
elif pos ==4:
|
||||
break
|
||||
else:
|
||||
break
|
||||
self.qr_mode = self.qr_mode % 3
|
||||
|
||||
pos = pos % 5
|
||||
self.stdscr.refresh()
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user