home · contact · privacy
More TUI code refactoring.
[plomrogue2] / plomrogue_client / tui.py
index ec04304b0b0358b1083b62b90038ab5096dab8a3..7cfc01139c35a8cbb75aa0039640fc353b98a109 100644 (file)
@@ -3,12 +3,13 @@ import curses
 
 
 
-class CursesScreen:
+class TUI:
 
-    def wrap_loop(self, loop):
-        curses.wrapper(self.start_loop, loop)
+    def __init__(self):
+        self._log = []
+        curses.wrapper(self.run_loop)
 
-    def safe_addstr(self, y, x, line, attr=0):
+    def addstr(self, y, x, line, attr=0):
         if y < self.size.y - 1 or x + len(line) < self.size.x:
             self.stdscr.addstr(y, x, line, attr)
         else:  # workaround to <https://stackoverflow.com/q/7063128>
@@ -25,11 +26,19 @@ class CursesScreen:
         self.size = self.size - YX(self.size.y % 4, 0)
         self.size = self.size - YX(0, self.size.x % 4)
 
-    def start_loop(self, stdscr, loop):
-        self.stdscr = stdscr
+    def init_loop(self):
         curses.curs_set(0)  # hide cursor
-        stdscr.timeout(10)
-        loop()
+        self.stdscr.timeout(10)
+        self.reset_size()
+
+    def run_loop(self, stdscr):
+        self.stdscr = stdscr
+        self.init_loop()
+        while True:
+            self.loop()
+
+    def log(self, msg):
+        self._log += [msg]