self.obj = obj
def run(self, stdscr):
- """Set important options before beginning"""
+ """Set important options that require stdscr before starting"""
self.win = stdscr
(mlines, mcols) = self.win.getmaxyx()
curses.curs_set(0) # Hide cursor
self.get_key()
def panel_create(self, x, y):
- """Create popup menus"""
+ """Create popup panels to a certain scale"""
win = curses.newwin(x, y)
panel = curses.panel.new_panel(win)
win.erase()
return (win, panel)
def panel_up(self):
+ """Update panel and window contents"""
curses.panel.update_panels()
self.win.refresh()
sys.exit(0)
def ntotal(self):
- """Get toal number of starred cards"""
+ """Get total number of starred cards"""
return [card for card in self.stack if card.getStar()]
def disp_bar(self):
self.menu_grab()
def menu_grab(self):
- """Grab keypresses for the menu screen"""
+ """Grab keypresses on the menu screen"""
while True:
key = self.win.getkey()
if key in ["r", "q", "m"]:
self.get_key()
def menu_init(self, quit=True):
+ """Initialize the menu with content"""
(self.menu_win, self.menu_panel) = self.panel_create(17, 44)
self.menu_panel.top()
self.menu_panel.hide()
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.
+ Display a menu offering multiple options on how to manipulate the deck
+ and to continue
"""
(mlines, mcols) = self.win.getmaxyx()
self.menu_win.mvwin(int(mlines / 2) - 9, int(mcols / 2) - 22)
self.menu_grab()
def wrap_width(self):
- """Calculate the width at which the body should wrap"""
+ """Calculate the width at which the body text should wrap"""
(_, mcols) = self.win.getmaxyx()
wrap_width = mcols - 20
if wrap_width > 80:
def disp_card(self):
"""
- Display the contents of the card
+ Display the contents of the card.
Shows a header, a horizontal line, and the contents of the current
side.
"""
self.win.hline(mlines - 2, 0, 0, mcols)
def help_init(self):
- """Display help screen"""
+ """Initialize help screen"""
(self.help_win, self.help_panel) = self.panel_create(20, 52)
self.help_panel.top()
self.help_panel.hide()
self.help_win.box()
def disp_help(self):
+ """Display help screen"""
(mlines, mcols) = self.win.getmaxyx()
self.help_win.mvwin(int(mlines / 2) - 10, int(mcols / 2) - 26)
self.panel_up()
self.get_key()
def current_card(self):
+ """Get current card object"""
return self.stack[self.obj.getIdx()]
def get_key(self):
Display a card and wait for the input.
Used as a general way of getting back into the card flow from a menu
"""
-
self.disp_card()
while True:
key = self.win.getkey()
def name_gen(stra):
+ """Generate hash of stack for name of pickle file"""
hasher = hashlib.md5()
hasher.update(str(stra).encode("utf-8"))
return hasher.hexdigest()
def make_dirs(dired):
+ """mkdir -p equivalent"""
if not os.path.exists(dired):
os.makedirs(dired)
def dump(obj, stra):
+ """Write pickle file"""
make_dirs(dired)
pickle.dump(obj, open(f"{dired}/{name_gen(stra)}.p", "wb"))
def dive(stra):
+ """Get pickle file"""
file = f"{dired}/{name_gen(stra)}.p"
make_dirs(dired)
if os.path.exists(file):
def purge(stra):
+ """Delete pickle file"""
file = f"{dired}/{name_gen(stra)}/"
if os.path.exists(file):
shutil.rmtree(file)