home · contact · privacy
With buffer_idx rotate not only through logs, but also prompts.
authorChristian Heller <c.heller@plomlompom.de>
Mon, 2 Jun 2025 13:22:57 +0000 (15:22 +0200)
committerChristian Heller <c.heller@plomlompom.de>
Mon, 2 Jun 2025 13:22:57 +0000 (15:22 +0200)
ircplom.py

index 5d67e43aca44363d352d2203eeeb2a5f37b99bad..b8cec6b1c78e5ba7a443cd90c77d99c61c5e9a5e 100755 (executable)
@@ -503,9 +503,9 @@ class TuiLoop(Loop):
 
     def __init__(self, term: Terminal, *args, **kwargs) -> None:
         self._term = term
-        self._prompt = TuiPrompt(self._term)
         self._logs = [LogBuffer(self._term) for i in range(2)]
-        self._log_selected = 0
+        self._prompts = [TuiPrompt(self._term) for i in range(2)]
+        self._buffer_idx = 0
         self._calc_and_draw_all()
         self._term.flush()
         super().__init__(*args, **kwargs)
@@ -539,12 +539,17 @@ class TuiLoop(Loop):
 
     @property
     def _log(self) -> LogBuffer:
-        return self._logs[self._log_selected]
+        return self._logs[self._buffer_idx]
+
+    @property
+    def _prompt(self) -> TuiPrompt:
+        return self._prompts[self._buffer_idx]
 
     def _calc_and_draw_all(self) -> None:
         self._term.clear()
         self._term.calc_geometry()
-        self._prompt.start_y = self._term.size.y - 1
+        for prompt in self._prompts:
+            prompt.start_y = self._term.size.y - 1
         self._y_separator = self._term.size.y - 2
         for log in self._logs:
             log.apply_geometry(limit_y=self._y_separator)
@@ -606,7 +611,7 @@ class TuiLoop(Loop):
         buffer_idx = int(buffer_idx_str)
         if buffer_idx < 0 or buffer_idx > len(self._logs):
             return f'unavailable buffer idx: {buffer_idx}'
-        self._log_selected = buffer_idx
+        self._buffer_idx = buffer_idx
         self._log.draw()
         return None