text gui: rm some magic numbers (ascii key codes), and small clean-up
This commit is contained in:
@@ -5,10 +5,11 @@ import datetime
|
|||||||
import locale
|
import locale
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
import getpass
|
import getpass
|
||||||
import logging
|
|
||||||
import pyperclip
|
|
||||||
from typing import TYPE_CHECKING, Optional
|
from typing import TYPE_CHECKING, Optional
|
||||||
|
|
||||||
|
# 3rd-party dependency:
|
||||||
|
import pyperclip
|
||||||
|
|
||||||
import electrum
|
import electrum
|
||||||
from electrum.gui import BaseElectrumGui
|
from electrum.gui import BaseElectrumGui
|
||||||
from electrum.bip21 import parse_bip21_URI
|
from electrum.bip21 import parse_bip21_URI
|
||||||
@@ -22,7 +23,6 @@ from electrum.storage import WalletStorage
|
|||||||
from electrum.network import NetworkParameters, TxBroadcastError, BestEffortRequestFailed
|
from electrum.network import NetworkParameters, TxBroadcastError, BestEffortRequestFailed
|
||||||
from electrum.interface import ServerAddr
|
from electrum.interface import ServerAddr
|
||||||
from electrum.invoices import Invoice
|
from electrum.invoices import Invoice
|
||||||
from electrum.invoices import PR_DEFAULT_EXPIRATION_WHEN_CREATING
|
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from electrum.daemon import Daemon
|
from electrum.daemon import Daemon
|
||||||
@@ -33,6 +33,12 @@ if TYPE_CHECKING:
|
|||||||
_ = lambda x:x # i18n
|
_ = lambda x:x # i18n
|
||||||
|
|
||||||
|
|
||||||
|
# ascii key codes
|
||||||
|
KEY_BACKSPACE = 8
|
||||||
|
KEY_ESC = 27
|
||||||
|
KEY_DELETE = 127
|
||||||
|
|
||||||
|
|
||||||
def parse_bip21(text):
|
def parse_bip21(text):
|
||||||
try:
|
try:
|
||||||
return parse_bip21_URI(text)
|
return parse_bip21_URI(text)
|
||||||
@@ -233,9 +239,9 @@ class ElectrumGui(BaseElectrumGui, EventListener):
|
|||||||
self.str_recv_description = self.edit_str(self.str_recv_description, c)
|
self.str_recv_description = self.edit_str(self.str_recv_description, c)
|
||||||
elif self.pos == 1:
|
elif self.pos == 1:
|
||||||
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 == 10:
|
elif self.pos in self.buttons and c == ord("\n"):
|
||||||
self.buttons[self.pos]()
|
self.buttons[self.pos]()
|
||||||
elif self.pos >= 5 and c == 10:
|
elif self.pos >= 5 and c == ord("\n"):
|
||||||
key = self.requests[self.pos - 5]
|
key = self.requests[self.pos - 5]
|
||||||
self.show_request(key)
|
self.show_request(key)
|
||||||
|
|
||||||
@@ -434,7 +440,7 @@ class ElectrumGui(BaseElectrumGui, EventListener):
|
|||||||
if self.need_update and redraw:
|
if self.need_update and redraw:
|
||||||
self.update()
|
self.update()
|
||||||
if self.tab == -1:
|
if self.tab == -1:
|
||||||
return 27
|
return KEY_ESC
|
||||||
|
|
||||||
def main_command(self):
|
def main_command(self):
|
||||||
c = self.getch(redraw=True)
|
c = self.getch(redraw=True)
|
||||||
@@ -443,7 +449,7 @@ class ElectrumGui(BaseElectrumGui, EventListener):
|
|||||||
self.tab = (self.tab + 1)%self.num_tabs
|
self.tab = (self.tab + 1)%self.num_tabs
|
||||||
elif c == curses.KEY_LEFT:
|
elif c == curses.KEY_LEFT:
|
||||||
self.tab = (self.tab - 1)%self.num_tabs
|
self.tab = (self.tab - 1)%self.num_tabs
|
||||||
elif c in [curses.KEY_DOWN, 9]:
|
elif c in [curses.KEY_DOWN, ord("\t")]:
|
||||||
self.increase_cursor(1)
|
self.increase_cursor(1)
|
||||||
elif c == curses.KEY_UP:
|
elif c == curses.KEY_UP:
|
||||||
self.increase_cursor(-1)
|
self.increase_cursor(-1)
|
||||||
@@ -466,7 +472,7 @@ class ElectrumGui(BaseElectrumGui, EventListener):
|
|||||||
|
|
||||||
def run_history_tab(self, c):
|
def run_history_tab(self, c):
|
||||||
# Get txid from cursor position
|
# Get txid from cursor position
|
||||||
if c == 10:
|
if c == ord("\n"):
|
||||||
out = self.run_popup('', ['Transaction ID:', self.txid[self.pos]])
|
out = self.run_popup('', ['Transaction ID:', self.txid[self.pos]])
|
||||||
|
|
||||||
def edit_str(self, target, c, is_num=False):
|
def edit_str(self, target, c, is_num=False):
|
||||||
@@ -474,7 +480,7 @@ class ElectrumGui(BaseElectrumGui, EventListener):
|
|||||||
target = ''
|
target = ''
|
||||||
# detect backspace
|
# detect backspace
|
||||||
cc = curses.unctrl(c).decode()
|
cc = curses.unctrl(c).decode()
|
||||||
if c in [8, 127, 263] and target:
|
if c in [KEY_BACKSPACE, KEY_DELETE, curses.KEY_BACKSPACE] and target:
|
||||||
target = target[:-1]
|
target = target[:-1]
|
||||||
elif not is_num or cc in '0123456789.':
|
elif not is_num or cc in '0123456789.':
|
||||||
target += cc
|
target += cc
|
||||||
@@ -488,13 +494,13 @@ class ElectrumGui(BaseElectrumGui, EventListener):
|
|||||||
self.str_description = self.edit_str(self.str_description, c)
|
self.str_description = self.edit_str(self.str_description, c)
|
||||||
elif self.pos == 2:
|
elif self.pos == 2:
|
||||||
self.str_amount = self.edit_str(self.str_amount, c, True)
|
self.str_amount = self.edit_str(self.str_amount, c, True)
|
||||||
elif self.pos in self.buttons and c == 10:
|
elif self.pos in self.buttons and c == ord("\n"):
|
||||||
self.buttons[self.pos]()
|
self.buttons[self.pos]()
|
||||||
elif self.pos >= 7 and c == 10:
|
elif self.pos >= 7 and c == ord("\n"):
|
||||||
self.show_invoice_menu()
|
self.show_invoice_menu()
|
||||||
|
|
||||||
def run_contacts_tab(self, c):
|
def run_contacts_tab(self, c):
|
||||||
if c == 10 and self.contacts:
|
if c == ord("\n") and self.contacts:
|
||||||
out = self.run_popup('Address', ["Copy", "Pay to", "Edit label", "Delete"]).get('button')
|
out = self.run_popup('Address', ["Copy", "Pay to", "Edit label", "Delete"]).get('button')
|
||||||
key = list(self.contacts.keys())[self.pos%len(self.contacts.keys())]
|
key = list(self.contacts.keys())[self.pos%len(self.contacts.keys())]
|
||||||
if out == "Pay to":
|
if out == "Pay to":
|
||||||
@@ -513,7 +519,7 @@ class ElectrumGui(BaseElectrumGui, EventListener):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
def run_channels_tab(self, c):
|
def run_channels_tab(self, c):
|
||||||
if c == 10:
|
if c == ord("\n"):
|
||||||
out = self.run_popup('Channel Details', ['Short channel ID:', self.channel_ids[self.pos]])
|
out = self.run_popup('Channel Details', ['Short channel ID:', self.channel_ids[self.pos]])
|
||||||
|
|
||||||
def run_banner_tab(self, c):
|
def run_banner_tab(self, c):
|
||||||
@@ -811,7 +817,7 @@ class ElectrumGui(BaseElectrumGui, EventListener):
|
|||||||
w.refresh()
|
w.refresh()
|
||||||
|
|
||||||
c = self.getch()
|
c = self.getch()
|
||||||
if c in [ord('q'), 27]:
|
if c in [ord('q'), KEY_ESC]:
|
||||||
break
|
break
|
||||||
elif c in [curses.KEY_LEFT, curses.KEY_UP]:
|
elif c in [curses.KEY_LEFT, curses.KEY_UP]:
|
||||||
self.popup_pos -= 1
|
self.popup_pos -= 1
|
||||||
@@ -819,7 +825,7 @@ class ElectrumGui(BaseElectrumGui, EventListener):
|
|||||||
self.popup_pos +=1
|
self.popup_pos +=1
|
||||||
else:
|
else:
|
||||||
i = self.popup_pos%numpos
|
i = self.popup_pos%numpos
|
||||||
if buttons and c==10:
|
if buttons and c == ord("\n"):
|
||||||
if i == numpos-2:
|
if i == numpos-2:
|
||||||
return out
|
return out
|
||||||
elif i == numpos -1:
|
elif i == numpos -1:
|
||||||
@@ -906,9 +912,9 @@ class ElectrumGui(BaseElectrumGui, EventListener):
|
|||||||
c = self.getch()
|
c = self.getch()
|
||||||
if c in [curses.KEY_UP]:
|
if c in [curses.KEY_UP]:
|
||||||
pos -= 1
|
pos -= 1
|
||||||
elif c in [curses.KEY_DOWN, 9]:
|
elif c in [curses.KEY_DOWN, ord("\t")]:
|
||||||
pos +=1
|
pos += 1
|
||||||
elif c == 10:
|
elif c == ord("\n"):
|
||||||
if pos in [0,1,2]:
|
if pos in [0,1,2]:
|
||||||
pyperclip.copy(text)
|
pyperclip.copy(text)
|
||||||
self.show_message('Text copied to clipboard')
|
self.show_message('Text copied to clipboard')
|
||||||
|
|||||||
Reference in New Issue
Block a user