]> git.armaanb.net Git - lightcards.git/commitdiff
Switch to curses
authorArmaan Bhojwani <me@armaanb.net>
Sat, 30 Jan 2021 21:42:05 +0000 (16:42 -0500)
committerArmaan Bhojwani <me@armaanb.net>
Sat, 30 Jan 2021 21:42:48 +0000 (16:42 -0500)
requirements.txt
src/display.py
src/lightcards.py

index e02925c0168fec9ff1c013a51955f91af102db10..2fc693c594a1f227eede8f149f3b4f56b1a73fd3 100644 (file)
@@ -1,4 +1,2 @@
 beautifulsoup4==4.9.3
-prompt_toolkit==0.2.5
 markdown==3.3.3
-tqdm==4.56.0
index 2517e3b761851004d1e9d8ac4c4c2061226e04ea..0ed78638772889399e0b7ab253965a6a13d263ff 100755 (executable)
@@ -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
index 6319d95904269f949a44d9469ccfef7cffcb2249..88ac6e9bb2fbcacc5ce67979ea2dffda6fe23c74 100755 (executable)
@@ -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()