From 9a89fa0a03c234b2df1cca0201fb9234f434a20b Mon Sep 17 00:00:00 2001 From: MMGen Date: Tue, 16 Oct 2018 12:50:17 +0000 Subject: [PATCH] tw view: additional cleanups --- mmgen/altcoins/eth/tw.py | 6 +++- mmgen/tw.py | 77 +++++++++++++++++++--------------------- 2 files changed, 42 insertions(+), 41 deletions(-) diff --git a/mmgen/altcoins/eth/tw.py b/mmgen/altcoins/eth/tw.py index 6e0afe61..84e21ad1 100755 --- a/mmgen/altcoins/eth/tw.py +++ b/mmgen/altcoins/eth/tw.py @@ -189,7 +189,11 @@ Display options: show [m]mgen addr, r[e]draw screen Actions: [q]uit view, [p]rint to file, pager [v]iew, [w]ide view, add [l]abel, [R]emove address: """ - valid_keypresses = 'adrMmeqpvwlR' + key_mappings = { + 'a':'s_amt','d':'s_addr','r':'d_reverse','M':'s_twmmid', + 'm':'d_mmid','e':'d_redraw', + 'q':'a_quit','p':'a_print','v':'a_view','w':'a_view_wide','l':'a_lbl_add', + 'R':'a_addr_remove' } def do_sort(self,key=None,reverse=False): if key == 'txid': return diff --git a/mmgen/tw.py b/mmgen/tw.py index 864afa64..2c6f89aa 100755 --- a/mmgen/tw.py +++ b/mmgen/tw.py @@ -45,7 +45,10 @@ Sort options: [t]xid, [a]mount, a[d]dress, [A]ge, [r]everse, [M]mgen addr Display options: show [D]ays, [g]roup, show [m]mgen addr, r[e]draw screen Actions: [q]uit view, [p]rint to file, pager [v]iew, [w]ide view, add [l]abel: """ - valid_keypresses = 'tadArMDgmeqpvwl' + key_mappings = { + 't':'s_txid','a':'s_amt','d':'s_addr','A':'s_age','r':'d_reverse','M':'s_twmmid', + 'D':'d_days','g':'d_group','m':'d_mmid','e':'d_redraw', + 'q':'a_quit','p':'a_print','v':'a_view','w':'a_view_wide','l':'a_lbl_add' } col_adj = 38 class MMGenTwOutputList(list,MMGenObject): pass @@ -160,10 +163,6 @@ watch-only wallet using '{}-addrimport' and then re-run this program. m2 = 'Please resize your screen to at least {} characters and hit ENTER ' my_raw_input((m1+m2).format(g.min_screen_width)) - def display(self): - if not opt.no_blank: msg_r(CUR_HOME+ERASE_ALL) - msg(self.format_for_display()) - def format_for_display(self): unsp = self.unspent self.set_term_columns() @@ -309,47 +308,44 @@ watch-only wallet using '{}-addrimport' and then re-run this program. return n def view_and_sort(self,tx): - self.display() from mmgen.term import get_char prompt = self.prompt.strip() + '\b' - skip_prompt,oneshot_msg = False,None + no_output,oneshot_msg = False,None while True: - reply = get_char('' if skip_prompt else (oneshot_msg or '')+prompt,immed_chars=self.valid_keypresses) - skip_prompt = False + msg_r('' if no_output else '\n\n' if opt.no_blank else CUR_HOME+ERASE_ALL) + reply = get_char('' if no_output else self.format_for_display()+'\n'+(oneshot_msg or '')+prompt, + immed_chars=self.key_mappings) + no_output = False oneshot_msg = '' if oneshot_msg else None # tristate, saves previous state - if reply not in self.valid_keypresses: + if reply not in self.key_mappings: msg_r('\ninvalid keypress ') time.sleep(0.5) - elif reply == 'a': self.do_sort('amt') - elif reply == 'A': self.do_sort('age') - elif reply == 'd': self.do_sort('addr') - elif reply == 'D': self.show_days = not self.show_days - elif reply == 'e': pass - elif reply == 'g': + continue + + action = self.key_mappings[reply] + if action[:2] == 's_': + self.do_sort(action[2:]) + if action == 's_twmmid': self.show_mmid = True + elif action == 'd_days': self.show_days = not self.show_days + elif action == 'd_mmid': self.show_mmid = not self.show_mmid + elif action == 'd_group': if self.can_group: self.group = not self.group - elif reply == 'l': + elif action == 'd_redraw': pass + elif action == 'd_reverse': self.unspent.reverse(); self.reverse = not self.reverse + elif action == 'a_quit': msg(''); return self.unspent + elif action == 'a_lbl_add': idx,lbl = self.get_idx_from_user(get_label=True) if idx: e = self.unspent[idx-1] if TrackingWallet(mode='w').add_label(e.twmmid,lbl,addr=e.addr): self.get_unspent_data() self.do_sort() - action = 'added to' if lbl else 'removed from' - oneshot_msg = yellow("Label {} {} #{}\n\n".format(action,self.item_desc,idx)) + a = 'added to' if lbl else 'removed from' + oneshot_msg = yellow("Label {} {} #{}\n\n".format(a,self.item_desc,idx)) else: - msg('Label could not be added\n{}'.format(prompt)) - elif reply == 'M': self.do_sort('twmmid'); self.show_mmid = True - elif reply == 'm': self.show_mmid = not self.show_mmid - elif reply == 'p': - of = '{}-{}[{}].out'.format(self.dump_fn_pfx,g.dcoin, - ','.join(self.sort_info(include_group=False)).lower()) - msg('') - write_data_to_file(of,self.format_for_printing(),desc='{} listing'.format(self.desc)) - oneshot_msg = yellow("Data written to '{}'\n\n".format(of)) - elif reply == 'q': msg(''); return self.unspent - elif reply == 'r': self.unspent.reverse(); self.reverse = not self.reverse - elif reply == 'R': + oneshot_msg = red('Label could not be added\n\n') + elif action == 'a_addr_remove': idx = self.get_idx_from_user() if idx: e = self.unspent[idx-1] @@ -359,17 +355,18 @@ watch-only wallet using '{}-addrimport' and then re-run this program. self.total = self.get_total_coin() oneshot_msg = yellow("{} #{} removed\n\n".format(capfirst(self.item_desc),idx)) else: - msg('Address could not be removed\n{}'.format(prompt)) - elif reply == 't': self.do_sort('txid') - elif reply in ('v','w'): - do_pager(self.fmt_display if reply == 'v' else self.format_for_printing(color=True)) + oneshot_msg = red('Address could not be removed\n\n') + elif action == 'a_print': + of = '{}-{}[{}].out'.format(self.dump_fn_pfx,g.dcoin, + ','.join(self.sort_info(include_group=False)).lower()) + msg('') + write_data_to_file(of,self.format_for_printing(),desc='{} listing'.format(self.desc)) + oneshot_msg = yellow("Data written to '{}'\n\n".format(of)) + elif action in ('a_view','a_view_wide'): + do_pager(self.fmt_display if action == 'a_view' else self.format_for_printing(color=True)) if g.platform == 'linux' and oneshot_msg == None: msg_r(CUR_RIGHT(len(prompt.split('\n')[-1])-2)) - skip_prompt = True - continue - - msg('\n') - self.display() # creates self.fmt_display + no_output = True class TwAddrList(MMGenDict):