]> git.armaanb.net Git - lightcards.git/commitdiff
Add quit confirmation
authorArmaan Bhojwani <me@armaanb.net>
Sat, 13 Feb 2021 02:59:43 +0000 (21:59 -0500)
committerArmaan Bhojwani <me@armaanb.net>
Sat, 13 Feb 2021 02:59:43 +0000 (21:59 -0500)
lightcards/display.py

index 0b755698f9fc50cd291dca9b55af0053c5fbda60..0b7fbd59af5db2fd02835f8b9f89de4f72ed4ed0 100644 (file)
@@ -27,6 +27,39 @@ class CursesError(BaseException):
         sys.exit(3)
 
 
+class Quit:
+    def __init__(self, outer, mlines=5, mcols=20):
+        self.outer = outer
+        (self.win, self.panel) = panel_create(mlines, mcols)
+        self.panel.top()
+        self.panel.hide()
+
+        self.win.addstr(
+            1,
+            2,
+            "QUIT LIGHTCARDS?",
+            curses.color_pair(1) + curses.A_BOLD,
+        )
+        self.win.hline(2, 1, curses.ACS_HLINE, mcols)
+        self.win.addstr(3, 1, "Quit? [y/n]")
+
+        self.win.box()
+
+    def disp(self):
+        """Display quit confirmation screen"""
+        (mlines, mcols) = self.outer.win.getmaxyx()
+        self.win.mvwin(int(mlines / 2) - 3, int(mcols / 2) - 10)
+        self.panel.show()
+
+        while True:
+            key = self.win.getkey()
+            if key == "y":
+                break
+            elif key == "n":
+                self.panel.hide()
+                self.outer.get_key()
+
+
 class Help:
     def __init__(self, outer, mlines=20, mcols=52):
         """Initialize help screen"""
@@ -216,6 +249,7 @@ class Display:
         self.main_panel = curses.panel.new_panel(self.win)
         self.menu_obj = Menu(self)
         self.help_obj = Help(self)
+        self.quit_obj = Quit(self)
 
         self.get_key()
 
@@ -238,7 +272,8 @@ class Display:
             self.disp_card()
 
     def leave(self):
-        """Pickle stack before quitting"""
+        """Pickle stack and confirm before quitting"""
+        self.quit_obj.disp()
         if self.obj.index + 1 == len(self.stack):
             self.obj.index = 0