CMD_SHORTCUTS['privmsg'] = 'window.privmsg'
CMD_SHORTCUTS['reconnect'] = 'window.reconnect'
-_PROMPT_UPDATE_TRIGGER_KEYS = {'nick_confirmed', 'nickname'}
-
class _ClientWindow(Window, ClientQueueMixin):
self._prefix = (' ' if nick_confirmed else '?') + nickname
self.tainted = True
+ @classmethod
+ def prefix_update_keys(cls) -> set:
+ 'Set of .update_prefix args, useful for _ClientWindowsManager.'
+ return set(list(signature(cls.update_prefix).parameters.keys())[1:])
+
def enter(self) -> str:
to_return = super().enter()
if (not to_return) or to_return[0:1] == '/':
self.windows += [self._new_window(stream)
for stream in (STREAM_SERVER, STREAM_RAW)]
+ def _if_privmsg_update_prefix(self, win: _ClientWindow) -> None:
+ if isinstance(win, _PrivmsgWindow):
+ win.prompt.update_prefix(
+ **{k: getattr(self, k)
+ for k in _PrivmsgPromptWidget.prefix_update_keys()})
+
def _new_window(self, stream: str) -> _ClientWindow:
win_class = (_PrivmsgWindow if stream[0:1] != STREAM_PREFIX_META
else _ClientWindow)
win = self._tui_new_window(win_class, stream=stream)
- if isinstance(win, _PrivmsgWindow):
- win.prompt.update_prefix(
- **{k: getattr(self, k) for k in _PROMPT_UPDATE_TRIGGER_KEYS})
+ self._if_privmsg_update_prefix(win)
self.windows += [win]
return win
'Apply settings in kwargs, follow represntation update triggres.'
for k, v in kwargs.items():
setattr(self, k, v)
- if _PROMPT_UPDATE_TRIGGER_KEYS & set(kwargs.keys()):
- for prompt in [w.prompt for w in self.windows
- if isinstance(w.prompt, _PrivmsgPromptWidget)]:
- prompt.update_prefix(**{k: getattr(self, k)
- for k in _PROMPT_UPDATE_TRIGGER_KEYS})
+ if _PrivmsgPromptWidget.prefix_update_keys() & set(kwargs.keys()):
+ for win in self.windows:
+ self._if_privmsg_update_prefix(win)
return True
return False