home · contact · privacy
Re-structure keybindings and TuiLoop._cmd_scroll* APIs.
authorChristian Heller <c.heller@plomlompom.de>
Sun, 1 Jun 2025 14:00:32 +0000 (16:00 +0200)
committerChristian Heller <c.heller@plomlompom.de>
Sun, 1 Jun 2025 14:00:32 +0000 (16:00 +0200)
ircplom.py

index f52fbe037f71f9e0a15c030f13b76b63bbba2a78..cc75822689933377e5eb32d7f586af1352e533d6 100755 (executable)
@@ -23,10 +23,10 @@ TIMEOUT_LOOP = 0.1
 INPUT_PROMPT = ':'
 
 KEYBINDINGS = {
-    'KEY_BACKSPACE': 'prompt_backspace',
-    'KEY_ENTER': 'prompt_enter',
-    'KEY_PGUP': 'scroll_up',
-    'KEY_PGDOWN': 'scroll_down',
+    'KEY_BACKSPACE': ('prompt_backspace',),
+    'KEY_ENTER': ('prompt_enter',),
+    'KEY_PGUP': ('scroll', 'up'),
+    'KEY_PGDOWN': ('scroll', 'down'),
 }
 
 IRCSPEC_LINE_SEPARATOR = b'\r\n'
@@ -457,7 +457,7 @@ class TuiLoop(Loop):
                 self._logs[1].append(f'-> {event.payload.raw}')
             self._draw_log()
         elif event.type_ == 'KEYBINDING':
-            getattr(self, f'_cmd__{event.payload}')()
+            getattr(self, f'_cmd__{event.payload[0]}')(*event.payload[1:])
         elif event.type_ == 'INPUT_CHAR':
             self._prompt += event.payload
             self._draw_prompt()
@@ -514,12 +514,8 @@ class TuiLoop(Loop):
         self._prompt = ''
         self._draw_prompt()
 
-    def _cmd__scroll_up(self) -> None:
-        self._log.scroll()
-        self._draw_log()
-
-    def _cmd__scroll_down(self) -> None:
-        self._log.scroll(up=False)
+    def _cmd__scroll(self, direction: str) -> None:
+        self._log.scroll(up=direction == 'up')
         self._draw_log()
 
     def _cmd__disconnect(self, quit_msg: str = 'ircplom says bye') -> None: