# Create bar component
bar_start = "["
bar_middle = self.stack[self.obj.getIdx()].printStar()
- bar_end= "] [" + percent + "% (" + \
+ bar_end = "] [" + percent + "% (" + \
str(self.obj.getIdx() + 1).zfill(len(str(len(self.stack)))) + \
"/" + str(len(self.stack)) + ")] [" + \
self.headers[self.obj.getSide()] + " (" + \
self.win.insstr(bar_end, curses.color_pair(1))
def menu_print(self, string, err=False):
+ (mlines, mcols) = self.win.getmaxyx()
self.win.clear()
if err:
- self.win.addstr(string + "\n\n", curses.color_pair(2))
+ color = curses.color_pair(2)
else:
- self.win.addstr(string + "\n\n", curses.color_pair(1))
- self.disp_menu()
-
- def disp_menu(self):
- """
- Display a menu once the end of the deck has been reached, offering
- multiple options on how to continue.
- """
+ color = curses.color_pair(1)
+ self.disp_menu(keygrab=False)
+ self.win.addstr("\n\n" + string, color)
+ self.menu_grab()
- self.win.addstr("Choose one of the following options:\n\n" +
- "[y]: reset stack to original state\n" +
- "[z]: shuffle stack\n" +
- "[f]: flip all cards in stack\n" +
- "[t]: reverse stack order\n" +
- "[u]: unstar all\n" +
- "[s]: update stack to include starred only\n\n" +
- "[r]: restart\n" +
- "[q]: quit")
- self.obj.setIdx(0)
+ def menu_grab(self):
while True:
key = self.win.getkey()
if key == "q":
- sys.exit(0)
+ if len(self.stack) == self.obj.getIdx():
+ sys.exit(0)
+ elif len(self.stack) < self.obj.getIdx():
+ self.obj.setIdx(0)
+ self.get_key()
elif key == "y":
self.stack = lightcards.get_orig()[1]
self.menu_print("Stack reset!")
elif key == "u":
[x.unStar() for x in self.stack]
self.menu_print("All unstarred!")
+ elif key == "d":
+ [x.star() for x in self.stack]
+ self.menu_print("All starred!")
elif key == "t":
self.stack.reverse()
self.menu_print(
"self.stack reversed!")
elif key == "z":
shuffle(self.stack)
- self.menu_print("self.stack shuffled!")
+ self.menu_print("Stack shuffled!")
elif key == "f":
for x in self.stack:
x[0], x[1] = x[1], x[0]
self.obj.setIdx(len(self.stack) - 1)
self.get_key()
elif key == "r":
+ self.obj.setIdx(0)
self.get_key()
+ def disp_menu(self, keygrab=True):
+ """
+ Display a menu once the end of the deck has been reached, offering
+ multiple options on how to continue.
+ """
+
+ self.win.addstr("LIGHTCARDS MENU", curses.color_pair(1) +
+ curses.A_BOLD)
+ self.win.hline(1, 0, curses.ACS_HLINE, 15)
+ self.win.addstr(2, 0, "[y]: reset stack to original state\n" +
+ "[z]: shuffle stack\n" +
+ "[f]: flip all cards in stack\n" +
+ "[t]: reverse stack order\n" +
+ "[u]: unstar all\n" +
+ "[d]: star all\n" +
+ "[s]: update stack to include starred only\n\n" +
+ "[r]: restart\n" +
+ "[q]: back")
+
+ if keygrab:
+ self.menu_grab()
+
def wrap_width(self):
(mlines, mcols) = self.win.getmaxyx()
wrap_width = mcols
self.win.hline(1, 0, curses.ACS_HLINE, 15)
self.win.addstr(2, 0, textwrap.fill(
"Welcome to lightcards. Here are some keybindings to get you " +
- "started", width=self.wrap_width()) +
+ "started:", width=self.wrap_width()) +
"\n\nh, left previous card\n" +
"l, right next card\n" +
"j, k, up, down flip card\n" +
"0, ^, home go to the start of the deck\n" +
"$, end go to the end of the deck\n" +
"H, ? open this screen\n" +
- "e open the input file in $EDITOR\n\n" +
+ "e open the input file in $EDITOR\n" +
+ "m open the control menu\n\n" +
textwrap.fill(
"More information can be found in the man page, " +
"or by running `lightcards --help`.",
self.disp_card()
elif key in ["H", "?"]:
self.disp_help()
+ elif key == "m":
+ self.win.clear()
+ self.disp_menu()
elif key == "e":
(self.headers, self.stack) = lightcards.reparse()
self.get_key()