From: Armaan Bhojwani Date: Sat, 30 Jan 2021 21:42:05 +0000 (-0500) Subject: Switch to curses X-Git-Tag: v0.1.0~23 X-Git-Url: https://git.armaanb.net/?p=lightcards.git;a=commitdiff_plain;h=b91a312e8b2c25ce41ed899c52101c83bfbb0152 Switch to curses --- diff --git a/requirements.txt b/requirements.txt index e02925c..2fc693c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,2 @@ beautifulsoup4==4.9.3 -prompt_toolkit==0.2.5 markdown==3.3.3 -tqdm==4.56.0 diff --git a/src/display.py b/src/display.py index 2517e3b..0ed7863 100755 --- a/src/display.py +++ b/src/display.py @@ -1,56 +1,33 @@ -#!/usr/bin/env python -# Display flashcards +# Display card output and retreive input # Armaan Bhojwani 2021 -from prompt_toolkit import Application -from prompt_toolkit.layout.containers import VSplit, Window -from prompt_toolkit.layout.controls import FormattedTextControl -from prompt_toolkit.layout.layout import Layout -from prompt_toolkit.key_binding import KeyBindings - -from tqdm import tqdm - -def disp_card(): - root_container = VSplit([ - Window(content=FormattedTextControl(text='Hello world')), - ]) - - layout = Layout(root_container) - kb = KeyBindings() - - # Exit program - @kb.add('q') - @kb.add('c-q') - @kb.add('c-c') - @kb.add('c-z') - def exit_(event): - event.app.exit() - - # Go to next card - @kb.add('l') - @kb.add('right') - def next_(event): - event.app.exit() - - # Go to previous card - @kb.add('h') - @kb.add('left') - def back_(event): - event.app.exit() - - # Flip card - @kb.add('space') - @kb.add('down') - @kb.add('up') - @kb.add('k') - @kb.add('j') - def back_(event): - event.app.exit() - - # Help menu - @kb.add('?') - def help_(event): - event.app.exit() - - app = Application(key_bindings=kb, layout=layout, full_screen=True) - app.run() +import os + +def disp_card(stdscr, stack, idx, side): + stdscr.clear() + stdscr.addstr(str(stack[idx][side])) + +def get_key(stdscr, stack): + idx = 0 + side = 0 + while True: + key = stdscr.getkey() + + try: + if key == "q" or key == os.linesep: + exit(0) + if key == "l": + idx += 1 + disp_card(stdscr, stack, idx, 0) + if key == "h": + idx -= 1 + side = 0 + disp_card(stdscr, stack, idx, 0) + if key == "k": + if side == 0: + side = 1 + else: + side = 0 + disp_card(stdscr, stack, idx, side) + except Exception: + pass diff --git a/src/lightcards.py b/src/lightcards.py index 6319d95..88ac6e9 100755 --- a/src/lightcards.py +++ b/src/lightcards.py @@ -3,6 +3,8 @@ # Armaan Bhojwani 2021 import argparse +from curses import wrapper + import display import parse @@ -12,13 +14,17 @@ def parse_args(): parser.add_argument("inp", metavar="input file", type=str, nargs=1) return parser.parse_args() -def show(): - display.disp_card() + +def show(stack): + wrapper(display.get_key, stack) + def main(): args = parse_args() - print(parse.parse_html(parse.md2html(args.inp[0]))) + headers = parse.parse_html(parse.md2html(args.inp[0]))[0] + stack = parse.parse_html(parse.md2html(args.inp[0]))[1] + show(stack) + if __name__ == "__main__": - show() main()