X-Git-Url: https://git.armaanb.net/?a=blobdiff_plain;f=lightcards%2Fdisplay.py;h=db97fdfddd4e6f5c2a36aac352905b90f1f3d021;hb=b9185b09edd2677f3a63cef4fd4be3e79671dc5c;hp=0e1c01c7c35a0886cb3722d3e153d879177ab517;hpb=7ab4e5b02bfe00a70bc60e18dc5076f74ad0b5aa;p=lightcards.git diff --git a/lightcards/display.py b/lightcards/display.py index 0e1c01c..db97fdf 100644 --- a/lightcards/display.py +++ b/lightcards/display.py @@ -3,12 +3,13 @@ import curses import curses.panel +import os from random import shuffle import sys import textwrap import time -from . import runner, progress +from . import runner, progress, parse def panel_create(x, y): @@ -27,7 +28,7 @@ class CursesError(BaseException): class Help: - def __init__(self, outer, mlines=21, mcols=52): + def __init__(self, outer, mlines=20, mcols=52): """Initialize help screen""" self.outer = outer (self.win, self.panel) = panel_create(mlines, mcols) @@ -45,7 +46,6 @@ class Help: "0, ^, home go to the start of the deck", "$, end go to the end of the deck", "H, ? open this screen", - "e open the input file in $EDITOR", "m open the control menu", "1, 2, 3 switch views", "", @@ -84,7 +84,7 @@ class Help: class Menu: - def __init__(self, outer, mlines=16, mcols=44): + def __init__(self, outer, mlines=17, mcols=44): """Initialize the menu with content""" self.outer = outer (self.win, self.panel) = panel_create(mlines, mcols) @@ -106,6 +106,7 @@ class Menu: "[u]: unstar all", "[d]: star all", "[s]: update stack to include starred only", + "[e]: open the input file in $EDITOR", "", "[r]: restart", "[m]: close menu", @@ -123,7 +124,7 @@ class Menu: else: color = curses.color_pair(1) - self.win.addstr(14, 1, string, color) + self.win.addstr(15, 1, string, color) self.menu_grab() def menu_grab(self): @@ -153,6 +154,13 @@ class Menu: elif key == "z": shuffle(self.outer.stack) self.menu_print("Stack shuffled!") + elif key == "e": + curses.endwin() + os.system(f"$EDITOR {self.outer.input_file}"), + (self.outer.headers, self.outer.stack) = parse.parse_html( + parse.md2html(self.outer.input_file) + ) + self.outer.get_key() 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 @@ -189,11 +197,12 @@ class Menu: class Display: - def __init__(self, stack, headers, obj, view): + def __init__(self, stack, headers, obj, view, input_file): self.stack = stack self.headers = headers self.obj = obj self.view = view + self.input_file = input_file def run(self, stdscr): """Set important options that require stdscr before starting""" @@ -308,7 +317,7 @@ class Display: self.win.clear() num_done = str(self.obj.index + 1).zfill(len(str(len(self.stack)))) - if self.view in [1, 2]: + if self.view in [1, 2, 4]: """ Display the contents of the card. Shows a header, a horizontal line, and the contents of the current @@ -431,10 +440,7 @@ class Display: self.help_obj.disp() elif key == "m": self.menu_obj.disp() - elif key == "e": - (self.headers, self.stack) = runner.reparse() - self.get_key() - elif key in ["1", "2", "3"]: + elif key in ["1", "2", "3", "4"]: self.view = int(key) def disp_sidebar(self):