From 80ed8d1d4c66b77ddf5a8a027d55dd6949595f1e Mon Sep 17 00:00:00 2001 From: MMGen Date: Fri, 8 Jun 2018 11:29:01 +0000 Subject: [PATCH] tx.py: add g.dcoin global var for token unit display --- mmgen/globalvars.py | 3 ++- mmgen/tw.py | 16 +++++++++------- mmgen/tx.py | 23 +++++++++++++++-------- 3 files changed, 26 insertions(+), 16 deletions(-) diff --git a/mmgen/globalvars.py b/mmgen/globalvars.py index 01e12b48..874955eb 100755 --- a/mmgen/globalvars.py +++ b/mmgen/globalvars.py @@ -65,6 +65,7 @@ class g(object): # Constant vars - some of these might be overriden in opts.py, but they don't change thereafter coin = 'BTC' + dcoin = None # the display coin unit token = '' debug = False debug_opts = False @@ -114,7 +115,7 @@ class g(object): common_opts = ( 'color','no_license','rpc_host','rpc_port','testnet','rpc_user','rpc_password', 'daemon_data_dir','force_256_color','regtest','coin','bob','alice', - 'accept_defaults' + 'accept_defaults','token' ) required_opts = ( 'quiet','verbose','debug','outdir','echo_passphrase','passwd_file','stdout', diff --git a/mmgen/tw.py b/mmgen/tw.py index 0618d4a6..61cd5771 100755 --- a/mmgen/tw.py +++ b/mmgen/tw.py @@ -79,6 +79,8 @@ watch-only wallet using '{}-addrimport' and then re-run this program. self.do_sort() self.total = self.get_total_coin() + g.dcoin = g.dcoin or g.coin + def get_total_coin(self): return sum(i.amt for i in self.unspent) @@ -178,7 +180,7 @@ watch-only wallet using '{}-addrimport' and then re-run this program. if self.sort_key == k and getattr(a,k) == getattr(b,k): b.skip = (k,'addr')[k=='twmmid'] - out = [self.hdr_fmt.format(' '.join(self.sort_info()),g.coin,self.total.hl())] + out = [self.hdr_fmt.format(' '.join(self.sort_info()),g.dcoin,self.total.hl())] if g.chain != 'mainnet': out += ['Chain: '+green(g.chain.upper())] if self.show_txid: fs = u' {n:%s} {t:%s} {v:2} {a} {A} {c:<}' % (col1_w,tx_w) @@ -188,7 +190,7 @@ watch-only wallet using '{}-addrimport' and then re-run this program. t='TXid'.ljust(tx_w - 5) + ' Vout', v='', a='Address'.ljust(addr_w), - A='Amt({})'.format(g.coin).ljust(g.proto.coin_amt.max_prec+4), + A='Amt({})'.format(g.dcoin).ljust(g.proto.coin_amt.max_prec+4), c=('Confs','Age(d)')[self.show_days])] for n,i in enumerate(unsp): @@ -231,7 +233,7 @@ watch-only wallet using '{}-addrimport' and then re-run this program. t='Tx ID,Vout', a='Address'.ljust(addr_w), m='MMGen ID'.ljust(mmid_w+1), - A='Amount({})'.format(g.coin), + A='Amount({})'.format(g.dcoin), c='Confs', g='Age(d)', l='Label')] @@ -257,13 +259,13 @@ watch-only wallet using '{}-addrimport' and then re-run this program. make_timestr(), ' '.join(self.sort_info(include_group=False)), '\n'.join(out), - g.coin, + g.dcoin, self.total.hl(color=color)) return self.fmt_print def display_total(self): fs = '\nTotal unspent: {} {} ({} outputs)' - msg(fs.format(self.total.hl(),g.coin,len(self.unspent))) + msg(fs.format(self.total.hl(),g.dcoin,len(self.unspent))) def get_idx_and_label_from_user(self): msg('') @@ -290,7 +292,7 @@ watch-only wallet using '{}-addrimport' and then re-run this program. def view_and_sort(self,tx): fs = 'Total to spend, excluding fees: {} {}\n\n' - txos = fs.format(tx.sum_outputs().hl(),g.coin) if tx.outputs else '' + txos = fs.format(tx.sum_outputs().hl(),g.dcoin) if tx.outputs else '' prompt = txos + self.prompt.strip() self.display() msg(prompt) @@ -321,7 +323,7 @@ watch-only wallet using '{}-addrimport' and then re-run this program. elif reply == 'm': self.show_mmid = not self.show_mmid elif reply == 'p': msg('') - of = '{}-{}[{}].out'.format(self.dump_fn_pfx,g.coin, + of = '{}-{}[{}].out'.format(self.dump_fn_pfx,g.dcoin, ','.join(self.sort_info(include_group=False)).lower()) write_data_to_file(of,self.format_for_printing(),'{} listing'.format(self.desc)) m = yellow("Data written to '{}'".format(of)) diff --git a/mmgen/tx.py b/mmgen/tx.py index 0fd76a7d..3fddaea4 100755 --- a/mmgen/tx.py +++ b/mmgen/tx.py @@ -287,9 +287,12 @@ Selected non-{pnm} inputs: {{}}""".strip().format(pnm=g.proj_name,pnl=g.proj_nam self.blockcount = 0 self.chain = None self.coin = None + self.dcoin = None self.caller = caller self.locktime = None + g.dcoin = g.dcoin or g.coin + if filename: self.parse_tx_file(filename,coin_sym_only=coin_sym_only,silent_open=silent_open) if coin_sym_only: return @@ -639,9 +642,10 @@ Selected non-{pnm} inputs: {{}}""".strip().format(pnm=g.proj_name,pnl=g.proj_nam self.outputs.check_coin_mismatch() def amt_to_str(d): return dict([(k,str(d[k]) if k == 'amt' else d[k]) for k in d]) + coin_id = '' if g.coin == 'BTC' else g.coin + ('' if g.coin == g.dcoin else ':'+g.dcoin) lines = [ '{}{} {} {} {} {}{}'.format( - (g.coin+' ','')[g.coin=='BTC'], + (coin_id+' ' if coin_id else ''), self.chain.upper() if self.chain else 'Unknown', self.txid, self.send_amt, @@ -947,7 +951,7 @@ Selected non-{pnm} inputs: {{}}""".strip().format(pnm=g.proj_name,pnl=g.proj_nam tn = ('','.testnet')[g.proto.is_testnet()] self.fn = u'{}{}[{!s}{}{}]{x}{}.{}'.format( self.txid, - ('-'+g.coin,'')[g.coin=='BTC'], + ('-'+g.dcoin,'')[g.coin=='BTC'], self.send_amt, ('',',{}'.format(self.fee_abs2rel(self.get_fee_from_tx())))[self.is_rbf()], ('',',tl={}'.format(tl))[bool(tl)], @@ -1018,12 +1022,12 @@ Selected non-{pnm} inputs: {{}}""".strip().format(pnm=g.proj_name,pnl=g.proj_nam if terse: out += '{:3} {} {} {} {}\n'.format(n+1, e.addr.fmt(color=True,width=addr_w), - mmid_fmt,e.amt.hl(),g.coin) + mmid_fmt,e.amt.hl(),g.dcoin) else: icommon = [ ((n+1,'')[ip],'address:',e.addr.fmt(color=True,width=addr_w) + ' '+mmid_fmt), ('','comment:',e.label.hl() if e.label else ''), - ('','amount:','{} {}'.format(e.amt.hl(),g.coin))] + ('','amount:','{} {}'.format(e.amt.hl(),g.dcoin))] items = [(n+1, 'tx,vout:','{},{}'.format(e.txid,e.vout))] + icommon + [ ('','confirmations:','{} (around {} days)'.format(confs,days) if blockcount else '') ] if ip else icommon + [ @@ -1069,7 +1073,7 @@ Selected non-{pnm} inputs: {{}}""".strip().format(pnm=g.proj_name,pnl=g.proj_nam out = (self.txview_hdr_fs,self.txview_hdr_fs_short)[bool(terse)].format( i=self.txid.hl(), a=self.send_amt.hl(), - c=g.coin, + c=g.dcoin, t=self.timestamp, r=(red('False'),green('True'))[self.is_rbf()], s=self.marked_signed(color=True), @@ -1078,7 +1082,7 @@ Selected non-{pnm} inputs: {{}}""".strip().format(pnm=g.proj_name,pnl=g.proj_nam if self.chain != 'mainnet': out += green('Chain: {}\n'.format(self.chain.upper())) if self.coin_txid: - out += '{} TxID: {}\n'.format(g.coin,self.coin_txid.hl()) + out += '{} TxID: {}\n'.format(g.dcoin,self.coin_txid.hl()) enl = ('\n','')[bool(terse)] out += enl if self.label: @@ -1091,7 +1095,7 @@ Selected non-{pnm} inputs: {{}}""".strip().format(pnm=g.proj_name,pnl=g.proj_nam o=self.sum_outputs().hl(), a=self.format_view_abs_fee(), r=self.format_view_rel_fee(terse), - d='WIP',c=g.coin) + d=g.dcoin,c=g.coin) if opt.verbose: out += self.format_view_verbose_footer() @@ -1158,6 +1162,9 @@ Selected non-{pnm} inputs: {{}}""".strip().format(pnm=g.proj_name,pnl=g.proj_nam self.locktime = int(metadata.pop()[3:]) self.coin = metadata.pop(0) if len(metadata) == 6 else 'BTC' + if ':' in self.coin: + self.coin,self.dcoin = self.coin.split(':') + if coin_sym_only: return if len(metadata) == 5: @@ -1310,7 +1317,7 @@ Selected non-{pnm} inputs: {{}}""".strip().format(pnm=g.proj_name,pnl=g.proj_nam self.send_amt = self.sum_outputs() msg('Total amount to spend: {}'.format( - ('Unknown','{} {}'.format(self.send_amt.hl(),g.coin))[bool(self.send_amt)] + ('Unknown','{} {}'.format(self.send_amt.hl(),g.dcoin))[bool(self.send_amt)] )) change_amt = self.get_inputs_from_user(tw)