- self.win.addstr(bar_middle, star_color)
- self.win.insstr(bar_end, curses.color_pair(1))
-
- def menu_print(self, string, err=False):
- self.win.clear()
- if err:
- color = curses.color_pair(2)
- else:
- color = curses.color_pair(1)
- self.disp_menu(keygrab=False)
- self.win.addstr("\n\n" + string, color)
- self.menu_grab()
-
- def menu_grab(self):
- while True:
- key = self.win.getkey()
- if key == "q":
- if len(self.stack) == self.obj.getIdx():
- self.leave()
- 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("Stack shuffled!")
- elif key == "f":
- for x in self.stack:
- x[0], x[1] = x[1], x[0]
- (self.headers[0], self.headers[1]) = (self.headers[1],
- self.headers[0])
- self.menu_print("Cards flipped!")
- 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
- cont = False
- for x in self.stack:
- if x.getStar():
- cont = True
- break
-
- if cont:
- self.stack = [x for x in self.stack if x.getStar()]
- self.menu_print("Stars only!")
- else:
- self.menu_print("ERR: None are starred!", err=True)
- elif key in ["h", "KEY_LEFT"]:
- 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, quit=False):
- """
- Display a menu once the end of the deck has been reached, offering
- multiple options on how to continue.
- """
-
- quit_text = "[q]: back"
- if quit:
- quit_text = "[q]: quit"
-
- 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" +
- quit_text)
-
- if keygrab:
- self.menu_grab()