]> git.armaanb.net Git - lightcards.git/blob - lightcards/display.py
Add ability to star cards
[lightcards.git] / lightcards / display.py
1 # Display card output and retreive input
2 # Armaan Bhojwani 2021
3
4 import curses
5 import os
6
7 from .deck import Status
8
9
10 def disp_card(stdscr, stack, headers, obj):
11     stdscr.clear()
12     side_title = headers[obj.getSide()]
13     stdscr.addstr(side_title + "\n")
14     for i in range(len(side_title)):
15         stdscr.addstr("=")
16     stdscr.addstr("\n" + str(stack[obj.getIdx()][obj.getSide()]))
17
18     (mlines, mcols) = stdscr.getmaxyx()
19     mlines -= 1
20     mcols -= 5
21
22     try:
23         stdscr.insch(mlines, mcols, str(obj.getIdx() + 1))
24         stdscr.insch(mlines, mcols+1, '-')
25         if obj.getSide() == 0:
26             stdscr.insch(mlines, mcols+2, '1')
27         else:
28             stdscr.insch(mlines, mcols+2, '2')
29         stdscr.insch(mlines, mcols+3, '/')
30         stdscr.insch(mlines, mcols+4, str(len(stack)))
31         stdscr.insstr(mlines, 1, stack[obj.getIdx()].getStar())
32     except Exception:
33         pass
34
35
36 def get_key(stdscr, stack, headers):
37     idx = Status()
38     curses.curs_set(0)
39     disp_card(stdscr, stack, headers, idx)
40
41     while True:
42         key = stdscr.getkey()
43         try:
44             if key == "q" or key == os.linesep:
45                 exit(0)
46             elif key in ["l", "KEY_LEFT"]:
47                 idx.forward(stack)
48                 idx.setSide(0)
49                 disp_card(stdscr, stack, headers, idx)
50             elif key in ["h", "KEY_RIGHT"]:
51                 idx.back()
52                 idx.setSide(0)
53                 disp_card(stdscr, stack, headers,  idx)
54             elif key in ["j", "k", "KEY_UP", "KEY_DOWN"]:
55                 idx.flip()
56                 disp_card(stdscr, stack, headers, idx)
57             elif key in ["i", "/"]:
58                 stack[idx.getIdx()].toggleStar()
59                 disp_card(stdscr, stack, headers, idx)
60         except Exception:
61             pass