Browse Source

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

MMGen 6 years ago
parent
commit
80ed8d1d4c
3 changed files with 26 additions and 16 deletions
  1. 2 1
      mmgen/globalvars.py
  2. 9 7
      mmgen/tw.py
  3. 15 8
      mmgen/tx.py

+ 2 - 1
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
 	# Constant vars - some of these might be overriden in opts.py, but they don't change thereafter
 
 
 	coin                 = 'BTC'
 	coin                 = 'BTC'
+	dcoin                = None # the display coin unit
 	token                = ''
 	token                = ''
 	debug                = False
 	debug                = False
 	debug_opts           = False
 	debug_opts           = False
@@ -114,7 +115,7 @@ class g(object):
 	common_opts = (
 	common_opts = (
 		'color','no_license','rpc_host','rpc_port','testnet','rpc_user','rpc_password',
 		'color','no_license','rpc_host','rpc_port','testnet','rpc_user','rpc_password',
 		'daemon_data_dir','force_256_color','regtest','coin','bob','alice',
 		'daemon_data_dir','force_256_color','regtest','coin','bob','alice',
-		'accept_defaults'
+		'accept_defaults','token'
 	)
 	)
 	required_opts = (
 	required_opts = (
 		'quiet','verbose','debug','outdir','echo_passphrase','passwd_file','stdout',
 		'quiet','verbose','debug','outdir','echo_passphrase','passwd_file','stdout',

+ 9 - 7
mmgen/tw.py

@@ -79,6 +79,8 @@ watch-only wallet using '{}-addrimport' and then re-run this program.
 		self.do_sort()
 		self.do_sort()
 		self.total        = self.get_total_coin()
 		self.total        = self.get_total_coin()
 
 
+		g.dcoin = g.dcoin or g.coin
+
 	def get_total_coin(self):
 	def get_total_coin(self):
 		return sum(i.amt for i in self.unspent)
 		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):
 					if self.sort_key == k and getattr(a,k) == getattr(b,k):
 						b.skip = (k,'addr')[k=='twmmid']
 						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 g.chain != 'mainnet': out += ['Chain: '+green(g.chain.upper())]
 		if self.show_txid:
 		if self.show_txid:
 			fs = u' {n:%s} {t:%s} {v:2} {a} {A} {c:<}' % (col1_w,tx_w)
 			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',
 							t='TXid'.ljust(tx_w - 5) + ' Vout',
 							v='',
 							v='',
 							a='Address'.ljust(addr_w),
 							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])]
 							c=('Confs','Age(d)')[self.show_days])]
 
 
 		for n,i in enumerate(unsp):
 		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',
 							t='Tx ID,Vout',
 							a='Address'.ljust(addr_w),
 							a='Address'.ljust(addr_w),
 							m='MMGen ID'.ljust(mmid_w+1),
 							m='MMGen ID'.ljust(mmid_w+1),
-							A='Amount({})'.format(g.coin),
+							A='Amount({})'.format(g.dcoin),
 							c='Confs',
 							c='Confs',
 							g='Age(d)',
 							g='Age(d)',
 							l='Label')]
 							l='Label')]
@@ -257,13 +259,13 @@ watch-only wallet using '{}-addrimport' and then re-run this program.
 				make_timestr(),
 				make_timestr(),
 				' '.join(self.sort_info(include_group=False)),
 				' '.join(self.sort_info(include_group=False)),
 				'\n'.join(out),
 				'\n'.join(out),
-				g.coin,
+				g.dcoin,
 				self.total.hl(color=color))
 				self.total.hl(color=color))
 		return self.fmt_print
 		return self.fmt_print
 
 
 	def display_total(self):
 	def display_total(self):
 		fs = '\nTotal unspent: {} {} ({} outputs)'
 		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):
 	def get_idx_and_label_from_user(self):
 		msg('')
 		msg('')
@@ -290,7 +292,7 @@ watch-only wallet using '{}-addrimport' and then re-run this program.
 
 
 	def view_and_sort(self,tx):
 	def view_and_sort(self,tx):
 		fs = 'Total to spend, excluding fees: {} {}\n\n'
 		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()
 		prompt = txos + self.prompt.strip()
 		self.display()
 		self.display()
 		msg(prompt)
 		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 == 'm': self.show_mmid = not self.show_mmid
 			elif reply == 'p':
 			elif reply == 'p':
 				msg('')
 				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())
 										','.join(self.sort_info(include_group=False)).lower())
 				write_data_to_file(of,self.format_for_printing(),'{} listing'.format(self.desc))
 				write_data_to_file(of,self.format_for_printing(),'{} listing'.format(self.desc))
 				m = yellow("Data written to '{}'".format(of))
 				m = yellow("Data written to '{}'".format(of))

+ 15 - 8
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.blockcount  = 0
 		self.chain       = None
 		self.chain       = None
 		self.coin        = None
 		self.coin        = None
+		self.dcoin       = None
 		self.caller      = caller
 		self.caller      = caller
 		self.locktime    = None
 		self.locktime    = None
 
 
+		g.dcoin = g.dcoin or g.coin
+
 		if filename:
 		if filename:
 			self.parse_tx_file(filename,coin_sym_only=coin_sym_only,silent_open=silent_open)
 			self.parse_tx_file(filename,coin_sym_only=coin_sym_only,silent_open=silent_open)
 			if coin_sym_only: return
 			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()
 		self.outputs.check_coin_mismatch()
 		def amt_to_str(d):
 		def amt_to_str(d):
 			return dict([(k,str(d[k]) if k == 'amt' else d[k]) for k in 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 = [
 		lines = [
 			'{}{} {} {} {} {}{}'.format(
 			'{}{} {} {} {} {}{}'.format(
-				(g.coin+' ','')[g.coin=='BTC'],
+				(coin_id+' ' if coin_id else ''),
 				self.chain.upper() if self.chain else 'Unknown',
 				self.chain.upper() if self.chain else 'Unknown',
 				self.txid,
 				self.txid,
 				self.send_amt,
 				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()]
 		tn = ('','.testnet')[g.proto.is_testnet()]
 		self.fn = u'{}{}[{!s}{}{}]{x}{}.{}'.format(
 		self.fn = u'{}{}[{!s}{}{}]{x}{}.{}'.format(
 			self.txid,
 			self.txid,
-			('-'+g.coin,'')[g.coin=='BTC'],
+			('-'+g.dcoin,'')[g.coin=='BTC'],
 			self.send_amt,
 			self.send_amt,
 			('',',{}'.format(self.fee_abs2rel(self.get_fee_from_tx())))[self.is_rbf()],
 			('',',{}'.format(self.fee_abs2rel(self.get_fee_from_tx())))[self.is_rbf()],
 			('',',tl={}'.format(tl))[bool(tl)],
 			('',',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:
 				if terse:
 					out += '{:3} {} {} {} {}\n'.format(n+1,
 					out += '{:3} {} {} {} {}\n'.format(n+1,
 						e.addr.fmt(color=True,width=addr_w),
 						e.addr.fmt(color=True,width=addr_w),
-						mmid_fmt,e.amt.hl(),g.coin)
+						mmid_fmt,e.amt.hl(),g.dcoin)
 				else:
 				else:
 					icommon = [
 					icommon = [
 						((n+1,'')[ip],'address:',e.addr.fmt(color=True,width=addr_w) + ' '+mmid_fmt),
 						((n+1,'')[ip],'address:',e.addr.fmt(color=True,width=addr_w) + ' '+mmid_fmt),
 						('','comment:',e.label.hl() if e.label else ''),
 						('','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 + [
 					items = [(n+1, 'tx,vout:','{},{}'.format(e.txid,e.vout))] + icommon + [
 						('','confirmations:','{} (around {} days)'.format(confs,days) if blockcount else '')
 						('','confirmations:','{} (around {} days)'.format(confs,days) if blockcount else '')
 					] if ip else icommon + [
 					] 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(
 		out = (self.txview_hdr_fs,self.txview_hdr_fs_short)[bool(terse)].format(
 			i=self.txid.hl(),
 			i=self.txid.hl(),
 			a=self.send_amt.hl(),
 			a=self.send_amt.hl(),
-			c=g.coin,
+			c=g.dcoin,
 			t=self.timestamp,
 			t=self.timestamp,
 			r=(red('False'),green('True'))[self.is_rbf()],
 			r=(red('False'),green('True'))[self.is_rbf()],
 			s=self.marked_signed(color=True),
 			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':
 		if self.chain != 'mainnet':
 			out += green('Chain: {}\n'.format(self.chain.upper()))
 			out += green('Chain: {}\n'.format(self.chain.upper()))
 		if self.coin_txid:
 		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)]
 		enl = ('\n','')[bool(terse)]
 		out += enl
 		out += enl
 		if self.label:
 		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(),
 			o=self.sum_outputs().hl(),
 			a=self.format_view_abs_fee(),
 			a=self.format_view_abs_fee(),
 			r=self.format_view_rel_fee(terse),
 			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()
 		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.locktime = int(metadata.pop()[3:])
 
 
 			self.coin = metadata.pop(0) if len(metadata) == 6 else 'BTC'
 			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 coin_sym_only: return
 
 
 			if len(metadata) == 5:
 			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()
 		self.send_amt = self.sum_outputs()
 
 
 		msg('Total amount to spend: {}'.format(
 		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)
 		change_amt = self.get_inputs_from_user(tw)