From b9185b09edd2677f3a63cef4fd4be3e79671dc5c Mon Sep 17 00:00:00 2001 From: Armaan Bhojwani Date: Fri, 12 Feb 2021 17:44:05 -0500 Subject: [PATCH] Move edit file keybinding into control menu Additionally, remove eliminate runner.reparse() --- lightcards/display.py | 28 +++++++++++++++++----------- lightcards/runner.py | 16 +++++----------- man/lightcards.1 | 3 --- man/lightcards.1.md | 3 --- 4 files changed, 22 insertions(+), 28 deletions(-) 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): diff --git a/lightcards/runner.py b/lightcards/runner.py index 7c73077..69d5cbe 100644 --- a/lightcards/runner.py +++ b/lightcards/runner.py @@ -55,7 +55,7 @@ def parse_args(): return parser.parse_args() -def show(args, stack, headers): +def show(args, stack, headers, input_file): """ Get objects from cache, manipulate deck according to passed arguments, and send it to the display functions @@ -79,20 +79,13 @@ def show(args, stack, headers): stack.reverse() # Send to display - win = Display(stack, headers, idx, args.view) + win = Display(stack, headers, idx, args.view, input_file) try: curses.wrapper(win.run) except curses.error as e: raise CursesError() from e -def reparse(): - """Parse arguments and input file again""" - args = parse_args() - os.system(f"$EDITOR {args.inp[0]}"), - return parse.parse_html(parse.md2html(args.inp[0])) - - def get_orig(): """Return original header and stack""" return (headers, stack) @@ -102,8 +95,9 @@ def main(args=sys.argv): sys.tracebacklimit = 0 args = parse_args() global headers, stack - (headers, stack) = parse.parse_html(parse.md2html(args.inp[0])) - show(args, stack, headers) + input_file = args.inp[0] + (headers, stack) = parse.parse_html(parse.md2html(input_file)) + show(args, stack, headers, input_file) if __name__ == "__main__": diff --git a/man/lightcards.1 b/man/lightcards.1 index 37b3866..74596ba 100644 --- a/man/lightcards.1 +++ b/man/lightcards.1 @@ -60,9 +60,6 @@ Go to end of deck \f[B]H\f[R], \f[B]?\f[R] Open help screen .TP -\f[B]e\f[R] -Open input file in $EDITOR -.TP \f[B]m\f[R] Open control menu .TP diff --git a/man/lightcards.1.md b/man/lightcards.1.md index 78865eb..615b857 100644 --- a/man/lightcards.1.md +++ b/man/lightcards.1.md @@ -61,9 +61,6 @@ lightcards \[options\] \[input file\] **H**, **?** : Open help screen -**e** -: Open input file in $EDITOR - **m** : Open control menu -- 2.39.2