From b73a9ced48365b7b35c456b8eaca86fadc1c71bd Mon Sep 17 00:00:00 2001 From: The MMGen Project Date: Fri, 26 Apr 2024 12:53:44 +0000 Subject: [PATCH] xmrwallet txlist: display fix --- mmgen/xmrwallet.py | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/mmgen/xmrwallet.py b/mmgen/xmrwallet.py index cd9a2a70..fbefc357 100755 --- a/mmgen/xmrwallet.py +++ b/mmgen/xmrwallet.py @@ -249,6 +249,7 @@ class MoneroMMGenTX: 'fee', 'blob' } oneline_fs = '{a:7} {b:8} {c:19} {d:13} {e:9} {f:6} {x:2} {g:6} {h:17} {j}' + oneline_fixed_cols_w = 96 # width of all columns except the last (coin address) chksum_nchars = 6 xmrwallet_tx_data = namedtuple('xmrwallet_tx_data',[ 'op', @@ -278,7 +279,7 @@ class MoneroMMGenTX: def src_wallet_idx(self): return int(self.data.source.split(':')[0]) - def get_info_oneline(self,indent='',cols=None): + def get_info_oneline(self, indent='', addr_w=None): d = self.data return self.oneline_fs.format( a = yellow(d.network), @@ -289,11 +290,11 @@ class MoneroMMGenTX: f = red('{}:{}'.format(d.source.wallet,d.source.account).ljust(6)), g = red('{}:{}'.format(d.dest.wallet,d.dest.account).ljust(6)) if d.dest else cyan('ext '), h = d.amount.fmt( color=True, iwidth=4, prec=12 ), - j = d.dest_address.fmt(width=cols-95,color=True) if cols else d.dest_address.hl(), + j = d.dest_address.fmt(width=addr_w, color=True) if addr_w else d.dest_address.hl(), x = '->' ) - def get_info(self,indent='',cols=None): + def get_info(self, indent='', addr_w=None): d = self.data pmt_id = d.dest_address.parsed.payment_id fs = '\n'.join(list_gen( @@ -329,7 +330,8 @@ class MoneroMMGenTX: m = d.amount.hl(), F = (Int(d.priority).hl() + f' [{tx_priorities[d.priority]}]') if d.priority else None, n = d.fee.hl(), - o = d.dest_address.hl(), + o = d.dest_address.hl() if self.cfg.full_address + else d.dest_address.fmt(width=addr_width, color=True), P = pink(pmt_id.hex()) if pmt_id else None, s = make_timestr(d.submit_time) if d.submit_time else None, S = pink(f" [cold signed{', submitted' if d.complete else ''}]") if d.signed_txset else '', @@ -2179,10 +2181,9 @@ class MoneroWalletOps: hdr = '' col_hdr = '' footer = '' - cols = None do_umount = False - async def main(self,cols=None): + async def main(self, cols=None): self.mount_removable_device() @@ -2201,10 +2202,12 @@ class MoneroWalletOps: if self.cfg.autosign: self.asi.do_umount() + addr_w = None if self.cfg.full_address or cols is None else cols - self.fixed_cols_w + self.cfg._util.stdout_or_pager( (self.hdr if len(files) > 1 else '') + self.col_hdr - + '\n'.join(getattr(tx,self.view_method)(cols=cols) for tx in txs) + + '\n'.join(getattr(tx, self.view_method)(addr_w=addr_w) for tx in txs) + self.footer ) @@ -2212,6 +2215,8 @@ class MoneroWalletOps: view_method = 'get_info_oneline' add_nl = True footer = '\n' + fixed_cols_w = MoneroMMGenTX.Base.oneline_fixed_cols_w + min_addr_w = 10 @property def hdr(self): @@ -2238,7 +2243,7 @@ class MoneroWalletOps: else: from .term import get_terminal_size cols = self.cfg.columns or get_terminal_size().width - if cols < 106: - die(1, 'A terminal at least 106 columns wide is required to display this output' - + ' (or use --columns or --pager)' ) + if cols < self.fixed_cols_w + self.min_addr_w: + die(1, f'A terminal at least {self.fixed_cols_w + self.min_addr_w} columns wide is required ' + 'to display this output (or use --columns or --pager)' ) await super().main(cols=cols)