]> git.armaanb.net Git - lightcards.git/blobdiff - lightcards/display.py
Add more options to restart menu at end of deck
[lightcards.git] / lightcards / display.py
index d45b9a4626106c3c64db2e08a4105a205c80261b..d541a12ae5cd36b65663c962dd73b9b29fe509ad 100755 (executable)
@@ -27,7 +27,7 @@ def disp_bar(stdscr, stack, headers, obj):
                   "] [" +
                   percent +
                   "% (" +
-                  str(obj.getIdx() + 1) +
+                  str(obj.getIdx() + 1).zfill(len(str(len(stack)))) +
                   "/" +
                   str(len(stack)) +
                   ")]" +
@@ -50,6 +50,8 @@ def disp_menu(stdscr, stack, headers, idx):
                   "[s]: restart with starred only\n" +
                   "[u]: restart and unstar all\n" +
                   "[z]: restart and shuffle cards\n" +
+                  "[f]: restart and show the other side first\n" +
+                  "[t]: restart in reverse order\n" +
                   "[q]: quit")
     while True:
         key = stdscr.getkey()
@@ -58,11 +60,6 @@ def disp_menu(stdscr, stack, headers, idx):
         elif key == "r":
             idx.setIdx(0)
             get_key(stdscr, stack, headers, idx)
-        elif key == "u":
-            idx.setIdx(0)
-            for x in stack:
-                x.unStar()
-            get_key(stdscr, stack, headers, idx)
         elif key == "s":
             # Check if there are any starred cards before proceeding, and if
             # not, don't allow to proceed and show an error message
@@ -80,10 +77,25 @@ def disp_menu(stdscr, stack, headers, idx):
                 stdscr.addstr("ERR: Stack empty. Choose another option\n\n",
                               curses.color_pair(2))
                 disp_menu(stdscr, stack, headers, idx)
+        elif key == "u":
+            idx.setIdx(0)
+            for x in stack:
+                x.unStar()
+            get_key(stdscr, stack, headers, idx)
         elif key == "z":
             idx.setIdx(0)
             shuffle(stack)
             get_key(stdscr, stack, headers, idx)
+        elif key == "f":
+            idx.setIdx(0)
+            for x in stack:
+                x[0], x[1] = x[1], x[0]
+            headers[0], headers[1] = headers[1], headers[0]
+            get_key(stdscr, stack, headers, idx)
+        elif key == "t":
+            idx.setIdx(0)
+            stack.reverse()
+            get_key(stdscr, stack, headers, idx)
 
 
 def disp_card(stdscr, stack, headers, obj):
@@ -98,11 +110,12 @@ def disp_card(stdscr, stack, headers, obj):
     else:
         # If on the back of the card, show the content of the front side in the
         # header
+        num_done = str(obj.getIdx() + 1).zfill(len(str(len(stack))))
         if obj.getSide() == 0:
-            top = str(obj.getIdx() + 1) + " | " + headers[obj.getSide()]
+            top = num_done + " | " + headers[obj.getSide()]
         else:
-            top = str(obj.getIdx() + 1) + " | " + headers[obj.getSide()] \
-                + " | \"" + str(stack[obj.getIdx()][0]) + "\""
+            top = num_done + " | " + headers[obj.getSide()] + " | \"" + \
+                str(stack[obj.getIdx()][0]) + "\""
         header_width = mcols
         if mcols > 80:
             header_width = 80