-#!/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
# Armaan Bhojwani 2021
import argparse
+from curses import wrapper
+
import display
import parse
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()