From 71401c32f90bd6972cd2e8c8f824ea88351d40b1 Mon Sep 17 00:00:00 2001 From: onyx-and-iris Date: Sat, 21 Feb 2026 12:37:10 +0000 Subject: [PATCH] include the mapname in the status output patch bump --- src/q3rcon_tui/__about__.py | 2 +- src/q3rcon_tui/writable.py | 42 +++++++++++++++++++------------------ 2 files changed, 23 insertions(+), 21 deletions(-) diff --git a/src/q3rcon_tui/__about__.py b/src/q3rcon_tui/__about__.py index 6a7815f..80b4a85 100644 --- a/src/q3rcon_tui/__about__.py +++ b/src/q3rcon_tui/__about__.py @@ -1,4 +1,4 @@ # SPDX-FileCopyrightText: 2026-present onyx-and-iris # # SPDX-License-Identifier: MIT -__version__ = '0.5.1' +__version__ = '0.5.2' diff --git a/src/q3rcon_tui/writable.py b/src/q3rcon_tui/writable.py index 58e32c9..077fa4e 100644 --- a/src/q3rcon_tui/writable.py +++ b/src/q3rcon_tui/writable.py @@ -10,6 +10,7 @@ Renderable = Text | Table | str class Writable: RE_COLOR_CODES = re.compile(r'\^[0-9]') + RE_MAP_FROM_STATUS = re.compile(r'^map: (?Pmp_[a-z_]+)$') RE_PLAYER_FROM_STATUS = re.compile( r'^\s*(?P[0-9]+)\s+' r'(?P[0-9-]+)\s+' @@ -62,32 +63,33 @@ class Writable: table.add_column('GUID', justify='center') table.add_column('Name', justify='center') table.add_column('Last', justify='center') - table.add_column('IP', justify='center') - table.add_column('Port', justify='center') + table.add_column('IP:Port', justify='center') table.add_column('QPort', justify='center') table.add_column('Rate', justify='center') + mapname = '' for line in status_response.splitlines(): - match self.RE_PLAYER_FROM_STATUS.match(line): - case None: - continue - case m: - table.add_row( - m.group('slot'), - m.group('score'), - m.group('ping'), - m.group('guid'), - self.remove_color_codes(m.group('name')), - m.group('last'), - m.group('ip'), - m.group('port'), - m.group('qport'), - m.group('rate'), - ) + if m := self.RE_PLAYER_FROM_STATUS.match(line): + table.add_row( + m.group('slot'), + m.group('score'), + m.group('ping'), + m.group('guid'), + self.remove_color_codes(m.group('name')), + m.group('last'), + f'{m.group("ip")}:{m.group("port")}', + m.group('qport'), + m.group('rate'), + ) + elif m := self.RE_MAP_FROM_STATUS.match(line): + mapname = m.group('mapname') + out = Text(f'Map: {mapname}\n', style='bold #88c0d0') if len(table.rows) == 0: - return 'No players connected.' - return table + return out.append('No players connected', style='#c73d4b') + else: + table.title = out + return table def cvar_table(self, m: re.Match) -> Table: table = Table(show_header=True, header_style='bold #88c0d0')