]> git.armaanb.net Git - lightcards.git/blobdiff - lightcards/display.py
Remove main_win
[lightcards.git] / lightcards / display.py
index 06e8148833254b30e58a810b86f04bd5547e8bed..5dc354ed02cc46fea170ce846dbdde2f57568a22 100644 (file)
@@ -6,6 +6,7 @@ import curses.panel
 from random import shuffle
 import sys
 import textwrap
+import time
 
 from . import runner, progress
 
@@ -177,9 +178,6 @@ class Menu:
                     self.menu_print("Stars only!")
                 else:
                     self.menu_print("ERR: None are starred!", err=True)
-            elif key in ["h", "KEY_LEFT"]:
-                self.outer.obj.index = len(self.outer.stack) - 1
-                self.outer.get_key()
             elif key == "r":
                 self.outer.obj.index = 0
                 self.outer.get_key()
@@ -213,12 +211,31 @@ class Display:
         curses.init_pair(2, curses.COLOR_RED, -1)
         curses.init_pair(3, curses.COLOR_YELLOW, -1)
 
-        (self.main_win, self.main_panel) = panel_create(mlines, mcols)
+        self.main_panel = curses.panel.new_panel(self.win)
         self.menu_obj = Menu(self)
         self.help_obj = Help(self)
 
         self.get_key()
 
+    def check_size(self):
+        (mlines, mcols) = self.win.getmaxyx()
+
+        while mlines < 24 or mcols < 60:
+            self.win.clear()
+            self.win.addstr(
+                0,
+                0,
+                textwrap.fill(
+                    "Terminal too small! Min size 60x24", width=mcols
+                ),
+            )
+            self.win.redrawwin()
+            self.win.refresh()
+            (mlines, mcols) = self.win.getmaxyx()
+            time.sleep(0.1)
+        else:
+            self.disp_card()
+
     def update_panels(self):
         """Update panel and window contents"""
         curses.panel.update_panels()
@@ -296,7 +313,7 @@ class Display:
         """
         (mlines, mcols) = self.win.getmaxyx()
         self.main_panel.bottom()
-        self.main_win.clear()
+        self.win.clear()
         # If on the back of the card, show the content of the front side in
         # the header
         num_done = str(self.obj.index + 1).zfill(len(str(len(self.stack))))
@@ -315,7 +332,7 @@ class Display:
         if mcols > 80:
             header_width = 80
 
-        self.main_win.addstr(
+        self.win.addstr(
             0,
             0,
             textwrap.shorten(top, width=header_width, placeholder="…"),
@@ -323,10 +340,10 @@ class Display:
         )
 
         # Add horizontal line
-        self.main_win.hline(1, 0, curses.ACS_HLINE, mcols)
+        self.win.hline(1, 0, curses.ACS_HLINE, mcols)
 
         # Show current side
-        self.main_win.addstr(
+        self.win.addstr(
             2,
             0,
             textwrap.fill(
@@ -347,8 +364,8 @@ class Display:
         Display a card and wait for the input.
         Used as a general way of getting back into the card flow from a menu
         """
-        self.disp_card()
         while True:
+            self.check_size()
             key = self.win.getkey()
             if key == "q":
                 self.leave()
@@ -390,6 +407,9 @@ class Display:
         (mlines, mcols) = self.win.getmaxyx()
         left = mcols - 19
 
+        for i in range(20):
+            self.win.addch(0, mcols - 20 + i, " ")
+
         self.win.addstr(
             0,
             mcols - 16,