class Help:
- def __init__(self, outer, mlines=20, mcols=52):
+ def __init__(self, outer, mlines=21, mcols=52):
"""Initialize help screen"""
self.outer = outer
(self.win, self.panel) = panel_create(mlines, mcols)
self.panel.hide()
text = [
- "Welcome to runner. Here are some keybindings",
- "to get you started:",
+ "Welcome to Lightcards. Here are the default",
+ "keybindings to get you started:",
"",
"h, left previous card",
"l, right next card",
"H, ? open this screen",
"m open the control menu",
"1, 2, 3 switch views",
+ "q quit",
"",
"More information can be found in the man page, or",
"by running `lightcards --help`.",
def disp(self):
"""Display help screen"""
(mlines, mcols) = self.outer.win.getmaxyx()
- self.win.mvwin(int(mlines / 2) - 10, int(mcols / 2) - 25)
+ self.win.mvwin(int(mlines / 2) - 11, int(mcols / 2) - 25)
self.panel.show()
while True:
class Display:
- def __init__(self, stack, headers, obj, view, input_file):
+ def __init__(self, stack, headers, obj, view, args, conf):
self.stack = stack
self.headers = headers
self.obj = obj
self.view = view
- self.input_file = input_file
+ self.input_file = args.inp[0]
+ self.config = conf
def run(self, stdscr):
"""Set important options that require stdscr before starting"""
else:
star_color = curses.color_pair(1)
- progress = (
- f"[{percent}% ("
- f"{str(self.obj.index).zfill(len(str(len(self.stack))))})]"
- )
-
# Compose bar text
bar_start = "["
bar_middle = self.current_card().printStar()
curses.color_pair(1),
)
+ progress = (
+ f"[{percent}% ("
+ f"{str(self.obj.index + 1).zfill(len(str(len(self.stack))))}"
+ f"/{str(len(self.stack))})] "
+ )
+
self.win.addstr(
height + 1,
- mcols - len(progress) - 1,
+ 0,
progress,
curses.color_pair(1),
)
self.obj.index
/ (len(self.stack) - 1)
* (mcols - len(progress))
- - 2
+ - 1
)
):
# TODO: Use the variying width unicode block characters to make a
# super accurate bar
- self.win.addch(height + 1, i, "»", curses.color_pair(1))
+ self.win.addch(
+ height + 1, i + len(progress), "»", curses.color_pair(1)
+ )
def wrap_width(self):
"""Calculate the width at which the body text should wrap"""
key = self.win.getkey()
if key == "q":
self.leave()
- elif key in ["h", "KEY_LEFT"]:
+ elif key in self.config["card_prev"]:
self.obj.back()
self.current_card().side = 0
self.disp_card()
- elif key in ["l", "KEY_RIGHT"]:
+ elif key in self.config["card_next"]:
if self.obj.index + 1 == len(self.stack):
self.menu_obj.disp()
else:
self.obj.forward(self.stack)
self.current_card().side = 0
self.disp_card()
- elif key in ["j", "k", "KEY_UP", "KEY_DOWN"] and self.view != 3:
+ elif key in self.config["card_flip"] and self.view != 3:
self.current_card().flip()
self.disp_card()
- elif key in ["i", "/"]:
+ elif key in self.config["card_star"]:
self.current_card().toggleStar()
self.disp_card()
- elif key in ["0", "^", "KEY_HOME"]:
+ elif key in self.config["card_first"]:
self.obj.index = 0
self.current_card().side = 0
self.disp_card()
- elif key in ["$", "KEY_END"]:
+ elif key in self.config["card_last"]:
self.obj.index = len(self.stack) - 1
self.current_card().side = 0
self.disp_card()
- elif key in ["H", "?"]:
+ elif key in self.config["help_disp"]:
self.help_obj.disp()
- elif key == "m":
+ elif key in self.config["menu_disp"]:
self.menu_obj.disp()
- elif key in ["1", "2", "3", "4"]:
- self.view = int(key)
+ elif key in self.config["view_one"]:
+ self.view = 1
+ elif key in self.config["view_two"]:
+ self.view = 2
+ elif key in self.config["view_three"]:
+ self.view = 3
def disp_sidebar(self):
"""Display a sidebar with the starred terms"""