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)
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()
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'))
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':