From: Christian Heller Date: Fri, 13 Jun 2025 16:26:01 +0000 (+0200) Subject: Simplify translation from events into TUI logging. X-Git-Url: https://plomlompom.com/repos/%22https:/validator.w3.org/templates?a=commitdiff_plain;h=4c0ccd9b0e6a004c7449a68c084c262293e3c39a;p=ircplom Simplify translation from events into TUI logging. --- diff --git a/ircplom/events.py b/ircplom/events.py index ae0f33c..93d20d6 100644 --- a/ircplom/events.py +++ b/ircplom/events.py @@ -7,8 +7,6 @@ from typing import Any, Iterator, Literal, NamedTuple, Optional, Self class EventType(Enum): 'Differentiate Events for different treatment.' - ALERT = auto() - CONN_ALERT = auto() CONNECTED = auto() CONN_WINDOW = auto() DISCONNECTED = auto() @@ -16,11 +14,12 @@ class EventType(Enum): INIT_CONNECT = auto() INIT_RECONNECT = auto() KEYBINDING = auto() + LOG = auto() + LOG_CONN = auto() NICK_SET = auto() PING = auto() PROMPT_ADD = auto() QUIT = auto() - RECV = auto() SEND = auto() SET_SCREEN = auto() diff --git a/ircplom/irc_conn.py b/ircplom/irc_conn.py index eb3c575..0473c64 100644 --- a/ircplom/irc_conn.py +++ b/ircplom/irc_conn.py @@ -51,13 +51,13 @@ class IrcConnection: def connect(self) -> None: self._socket = socket() - self._broadcast(EventType.CONN_ALERT, + self._broadcast(EventType.LOG_CONN, f'Connecting to {self._hostname} …') self._socket.settimeout(_TIMEOUT_CONNECT) try: self._socket.connect((self._hostname, _PORT)) except (TimeoutError, socket_gaierror) as e: - self._broadcast(EventType.CONN_ALERT, str(e)) + self._broadcast(EventType.LOG_CONN, f'ALERT: {e}') return self._socket.settimeout(TIMEOUT_LOOP) self._assumed_open = True @@ -115,8 +115,8 @@ class IrcConnection: def _write_line(self, line: str) -> None: 'Send line-separator-delimited message over socket.' if not (self._socket and self._assumed_open): - self._broadcast(EventType.CONN_ALERT, - 'cannot send, assuming connection closed') + self._broadcast(EventType.LOG_CONN, + 'ALERT: cannot send, assuming connection closed') return self._socket.sendall(line.encode('utf-8') + _IRCSPEC_LINE_SEPARATOR) @@ -124,9 +124,9 @@ class IrcConnection: 'Process connection-directed Event into further steps.' if event.type_ == EventType.INIT_RECONNECT: if self._assumed_open: - self._broadcast(EventType.CONN_ALERT, - 'Reconnect called, but still seem connected, ' - 'so nothing to do.') + self._broadcast(EventType.LOG_CONN, + 'ALERT: Reconnect called, but still seem ' + 'connected, so nothing to do.') else: self._start_connecting() elif event.type_ == EventType.CONNECTED: @@ -250,20 +250,25 @@ class _ConnectionLoop(Loop): self.broadcast(type_, (self._conn_idx, *args)) def _send(self, verb: str, parameters: tuple[str, ...]) -> None: - self._broadcast_conn(EventType.SEND, IrcMessage(verb, parameters)) + msg = IrcMessage(verb, parameters) + self._broadcast_conn(EventType.LOG_CONN, f'->: {msg.raw}') + self._broadcast_conn(EventType.SEND, msg) def process_main(self, event: Event) -> bool: if not super().process_main(event): return False if event.type_ == EventType.CONNECTED: login = event.payload[1] + # self._send('CAP', ('LS', '302')) self._send('USER', (login.user, '0', '*', login.real)) self._send('NICK', (login.nick,)) + # self._send('CAP', ('LIST',)) + # self._send('CAP', ('END',)) return True def process_bonus(self, yielded: str) -> None: msg = IrcMessage.from_raw(yielded) - self._broadcast_conn(EventType.RECV, msg) + self._broadcast_conn(EventType.LOG_CONN, f'<-: {msg}') if msg.verb == 'PING': self._send('PONG', (msg.parameters[0],)) elif msg.verb == 'ERROR'\ diff --git a/ircplom/tui.py b/ircplom/tui.py index b7fcbd3..f4b1b4b 100644 --- a/ircplom/tui.py +++ b/ircplom/tui.py @@ -342,8 +342,8 @@ class _KeyboardLoop(Loop): elif len(yielded) == 1: self.broadcast(EventType.PROMPT_ADD, yielded) else: - self.broadcast(EventType.ALERT, - f'unknown keyboard input: {yielded}') + self.broadcast(EventType.LOG, + f'ALERT: unknown keyboard input: {yielded}') class _TuiLoop(Loop): @@ -391,18 +391,12 @@ class _TuiLoop(Loop): self._windows += [conn_win] self._conn_windows += [conn_win] self._switch_window(conn_win.idx) - elif event.type_ == EventType.ALERT: - self.window.log.append(f'ALERT {event.payload}') + elif event.type_ == EventType.LOG: + self.window.log.append(event.payload) self.window.log.draw() - elif event.type_ in {EventType.RECV, EventType.SEND, - EventType.CONN_ALERT}: + elif event.type_ == EventType.LOG_CONN: conn_win = self._conn_windows[event.payload[0]] - if event.type_ == EventType.CONN_ALERT: - msg = f'ALERT {event.payload[1]}' - else: - msg = (('<-' if event.type_ == EventType.RECV else '->') - + event.payload[1].raw) - conn_win.log.append(msg) + conn_win.log.append(event.payload[1]) if conn_win == self.window: self.window.log.draw() elif event.type_ == EventType.NICK_SET: @@ -478,7 +472,7 @@ class _TuiLoop(Loop): else: alert = 'not prefixed by /' if alert: - self.broadcast(EventType.ALERT, f'invalid prompt command: {alert}') + self.broadcast(EventType.LOG, f'invalid prompt command: {alert}') def cmd__quit(self) -> None: 'Send QUIT to all threads.'