From: Christian Heller Date: Fri, 13 Jun 2025 16:39:19 +0000 (+0200) Subject: Refactor keypress handlings. X-Git-Url: https://plomlompom.com/repos/%22https:/validator.w3.org/%7B%7Bdb.prefix%7D%7D/condition?a=commitdiff_plain;h=1bfb0ce79c5109a93d1894017dc4e101964bf17b;p=ircplom Refactor keypress handlings. --- diff --git a/ircplom/events.py b/ircplom/events.py index 93d20d6..364f551 100644 --- a/ircplom/events.py +++ b/ircplom/events.py @@ -13,15 +13,14 @@ class EventType(Enum): EXCEPTION = auto() INIT_CONNECT = auto() INIT_RECONNECT = auto() - KEYBINDING = auto() LOG = auto() LOG_CONN = auto() NICK_SET = auto() PING = auto() - PROMPT_ADD = auto() QUIT = auto() SEND = auto() SET_SCREEN = auto() + TUI_CMD = auto() class Event(NamedTuple): diff --git a/ircplom/tui.py b/ircplom/tui.py index f4b1b4b..4d3f01f 100644 --- a/ircplom/tui.py +++ b/ircplom/tui.py @@ -211,6 +211,10 @@ class _PromptWidget(_ScrollableWidget): self._history += [self._input_buffer[:]] self._reset_buffer('') + def cmd__append(self, to_append: str) -> None: + 'Append to prompt input buffer.' + self.append(to_append) + def cmd__backspace(self) -> None: 'Truncate current content by one character, if possible.' if self._cursor_x > 0: @@ -336,11 +340,13 @@ class _KeyboardLoop(Loop): to_paste += ' ' else: to_paste += '#' - self.broadcast(EventType.PROMPT_ADD, to_paste) + self.broadcast(EventType.TUI_CMD, + ('window.prompt.append', to_paste)) elif yielded in _KEYBINDINGS: - self.broadcast(EventType.KEYBINDING, _KEYBINDINGS[yielded]) + self.broadcast(EventType.TUI_CMD, _KEYBINDINGS[yielded]) elif len(yielded) == 1: - self.broadcast(EventType.PROMPT_ADD, yielded) + self.broadcast(EventType.TUI_CMD, + ('window.prompt.append', yielded)) else: self.broadcast(EventType.LOG, f'ALERT: unknown keyboard input: {yielded}') @@ -410,12 +416,10 @@ class _TuiLoop(Loop): conn_win.prompt.update_prompt(nick_confirmed=False) if conn_win == self.window: self.window.prompt.draw() - elif event.type_ == EventType.KEYBINDING: + elif event.type_ == EventType.TUI_CMD: cmd = self._cmd_name_to_cmd(event.payload[0]) assert cmd is not None cmd(*event.payload[1:]) - elif event.type_ == EventType.PROMPT_ADD: - self.window.prompt.append(event.payload) # elif event.type_ == EventType.DEBUG: # from traceback import format_exception # for line in '\n'.join(format_exception(event.payload)