ui/curses: implement game view widget focusing

This commit is contained in:
rr-
2019-01-04 00:22:29 +01:00
parent 4230c57e73
commit 9db61f7191
11 changed files with 204 additions and 67 deletions
@@ -3,12 +3,15 @@ import typing as T
from pqcli.mechanic import EquipmentType, Player
from pqcli.ui.curses.widgets import DataTable, WindowWrapper
from .focusable import Focusable
class EquipmentWindow(WindowWrapper):
class EquipmentWindow(Focusable, WindowWrapper):
def __init__(
self, player: Player, parent: T.Any, h: int, w: int, y: int, x: int
) -> None:
super().__init__(parent, h, w, y, x)
self._on_focus_change += self._render
self._data_table = DataTable(
self._win, h - 2, w - 2, 1, 1, align_right=False
@@ -44,9 +47,11 @@ class EquipmentWindow(WindowWrapper):
if not self._win:
return
self._win.box()
text = " Equipment "
x = max(0, (self.getmaxyx()[1] - len(text)) // 2)
self._win.addnstr(0, x, text, min(len(text), self.getmaxyx()[1]))
with self._focus_standout(self._win):
self._win.box()
text = " Equipment "
x = max(0, (self.getmaxyx()[1] - len(text)) // 2)
self._win.addnstr(0, x, text, min(len(text), self.getmaxyx()[1]))
self._win.refresh()
self._data_table.render()