tx.py: add g.dcoin global var for token unit display

This commit is contained in:
The MMGen Project 2018-06-08 11:29:01 +00:00
commit 80ed8d1d4c
Signed by: mmgen
GPG key ID: 3F8B1861E32B7DA2
3 changed files with 26 additions and 16 deletions

View file

@ -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',

View file

@ -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))

View file

@ -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)