home · contact · privacy
Minor refactoring for better readability. master
authorChristian Heller <c.heller@plomlompom.de>
Sun, 10 Aug 2025 21:25:25 +0000 (23:25 +0200)
committerChristian Heller <c.heller@plomlompom.de>
Sun, 10 Aug 2025 21:25:25 +0000 (23:25 +0200)
ircplom/client_tui.py

index fc6db735d6ef553bf59c23e924d82e5586460563..1df12ced1b46aeb4f43b40fd9f2de1ac709be66d 100644 (file)
@@ -1,7 +1,7 @@
 'TUI adaptions to Client.'
 # built-ins
 from getpass import getuser
-from dataclasses import asdict as dc_asdict
+from dataclasses import dataclass, asdict as dc_asdict
 from inspect import signature
 from typing import Callable, Optional, Sequence
 # ourselves
@@ -97,16 +97,15 @@ class _PrivmsgWindow(_ClientWindow):
         self.cmd__privmsg(target=self.nickname, msg=msg)
 
 
+@dataclass
 class _ClientWindowsManager:
-    nick_confirmed: bool = False
-    nickname: str = '?'
+    _tui_log: Callable
+    _tui_new_window: Callable
 
-    def __init__(self, client_id: str, new_window: Callable, tui_log: Callable
-                 ) -> None:
-        self._tui_log = lambda msg, **kw: tui_log(msg=msg,
-                                                  client_id=client_id, **kw)
+    def __post_init__(self, *_, **__) -> None:
+        self.nick_confirmed = False
+        self.nickname = '?'
         self.windows: list[_ClientWindow] = []
-        self._tui_new_window = new_window
         for scope in (LogScope.SERVER, LogScope.RAW):
             self._new_win(scope)
 
@@ -193,8 +192,9 @@ class ClientTui(BaseTui):
         'Forward todo to appropriate _ClientWindowsManager.'
         if client_id not in self._client_mngrs:
             self._client_mngrs[client_id] = _ClientWindowsManager(
-                client_id=client_id, tui_log=self._log,
-                new_window=lambda win_cls, **kw: self._new_window(
+                _tui_log=lambda msg, **kw: self._log(
+                    msg, client_id=client_id, **kw),
+                _tui_new_window=lambda win_cls, **kw: self._new_window(
                     win_cls, _q_out=self._q_out, client_id=client_id, **kw))
         if getattr(self._client_mngrs[client_id], todo)(**kwargs) is not False:
             self.redraw_affected()