- 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 menu_init(self, quit=True):
- (self.menu_win, self.menu_panel) = self.panel_create(17, 44)
- self.menu_panel.top()
- self.menu_panel.hide()
- # TODO: fix this
- quit_text = "[q]: back"
- if quit:
- quit_text = "[q]: quit"
-
- self.menu_win.addstr(
- 1, 1, "LIGHTCARDS MENU", curses.color_pair(1) + curses.A_BOLD
- )
- self.menu_win.hline(2, 1, curses.ACS_HLINE, 15)
- text = [
- "[y]: reset stack to original state",
- "[a]: alphabetize stack",
- "[z]: shuffle stack",
- "[f]: flip all cards in stack",
- "[t]: reverse stack order",
- "[u]: unstar all",
- "[d]: star all",
- "[s]: update stack to include starred only",
- ]
+ elif key in self.outer.config["menu_restart"]:
+ self.outer.obj.index = 0
+ self.outer.get_key()
+
+ def disp(self):
+ """
+ Display a menu offering multiple options on how to manipulate the deck
+ and to continue
+ """
+ self.clear_msg()
+
+ (mlines, mcols) = self.outer.win.getmaxyx()
+ self.win.mvwin(int(mlines / 2) - 8, int(mcols / 2) - 22)
+ self.panel.show()
+
+ self.menu_grab()
+
+
+class Display:
+ def __init__(self, stack, headers, obj, view, args, conf):
+ self.stack = stack
+ self.headers = headers
+ self.obj = obj
+ self.view = view
+ self.input_file = args.inp[0]
+ self.config = conf
+
+ def run(self, stdscr):
+ """Set important options that require stdscr before starting"""
+ self.win = stdscr
+ curses.curs_set(0) # Hide cursor
+ curses.use_default_colors() # Allow transparency
+ curses.init_pair(1, self.config["highlight_color"], -1)
+ curses.init_pair(2, self.config["error_color"], -1)
+ curses.init_pair(3, self.config["starred_color"], -1)
+
+ 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()
+
+ 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.refresh()
+ (mlines, mcols) = self.win.getmaxyx()
+ time.sleep(0.1)
+ else:
+ self.disp_card()
+
+ def dump(self):
+ if self.config["cache"]:
+ progress.dump(self.stack, runner.get_orig()[1])
+
+ def leave(self):
+ """Pickle stack and confirm before quitting"""
+ self.quit_obj.disp()
+ if self.obj.index + 1 == len(self.stack):
+ self.obj.index = 0