home · contact · privacy
Add window index display to status (formerly: separator) line. master
authorChristian Heller <c.heller@plomlompom.de>
Sat, 7 Jun 2025 16:47:25 +0000 (18:47 +0200)
committerChristian Heller <c.heller@plomlompom.de>
Sat, 7 Jun 2025 16:47:25 +0000 (18:47 +0200)
ircplom.py

index 1ca94fd2959681ede992374bac7ac67e9581fb7f..a7d6366c2642fcff5363dfae0952ec331881a0ee 100755 (executable)
@@ -577,9 +577,11 @@ class LogWidget(ScrollableWidget):
 
 class Window(Widget):
     'Collects a log and a prompt meant for the same content stream.'
-    _y_separator: int
+    _idx: int
+    _y_status: int
 
-    def __init__(self, term: Terminal) -> None:
+    def __init__(self, idx: int, term: Terminal) -> None:
+        self._idx = idx
         self._term = term
         self.log = LogWidget(self._term.wrap, self._term.write_yx)
         self.prompt = PromptWidget(self._term.write_yx)
@@ -588,14 +590,16 @@ class Window(Widget):
 
     def set_geometry(self, _=None) -> None:
         assert _ is None
-        self._y_separator = self._term.size.y - 2
-        self.log.set_geometry(YX(self._y_separator, self._term.size.x))
+        self._y_status = self._term.size.y - 2
+        self.log.set_geometry(YX(self._y_status, self._term.size.x))
         self.prompt.set_geometry(YX(self._term.size.y - 1, self._term.size.x))
 
     def draw(self) -> None:
+        idx_box = f'[{self._idx}]'
+        status_line = idx_box + '=' * (self._term.size.x - len(idx_box))
         self._term.clear()
         self.log.draw()
-        self._term.write_yx(YX(self._y_separator, 0), '=' * self._term.size.x)
+        self._term.write_yx(YX(self._y_status, 0), status_line)
         self.prompt.draw()
 
 
@@ -604,9 +608,9 @@ class TuiLoop(Loop):
 
     def __init__(self, term: Terminal, *args, **kwargs) -> None:
         self._term = term
-        self._windows = [Window(self._term)]
-        self._conn_windows: list[Window] = []
+        self._windows = [Window(0, self._term)]
         self._window_idx = 0
+        self._conn_windows: list[Window] = []
         super().__init__(*args, **kwargs)
         self.put(Event('SET_SCREEN'))
 
@@ -634,7 +638,7 @@ class TuiLoop(Loop):
                 window.set_geometry()
             self.window.draw()
         elif event.type_ == 'CONNECTION_WINDOW':
-            conn_win = Window(self._term)
+            conn_win = Window(len(self._windows), self._term)
             self._windows += [conn_win]
             self._conn_windows += [conn_win]
         elif event.type_ == 'ALERT':