'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
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)
'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()