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