def leave(self):
"""Pickle stack before quitting"""
- if self.obj.getIdx() == len(self.stack):
+ if self.obj.getIdx() + 1 == len(self.stack):
self.obj.setIdx(0)
progress.dump(self.stack, lightcards.get_orig())
).zfill(2)
# Print yellow if starred
- if self.stack[self.obj.getIdx()].getStar():
+ if self.current_card().getStar():
star_color = curses.color_pair(3)
else:
star_color = curses.color_pair(1)
# Create bar component
bar_start = "["
- bar_middle = self.stack[self.obj.getIdx()].printStar()
+ bar_middle = self.current_card().printStar()
bar_end = (
f"] [{len(self.ntotal())}/{str(len(self.stack))} starred] "
+ f"[{percent}% ("
+ str(self.obj.getIdx() + 1).zfill(len(str(len(self.stack))))
+ f"/{str(len(self.stack))})] ["
- + f"{self.headers[self.stack[self.obj.getIdx()].getSide()]} ("
- + f"{str(self.stack[self.obj.getIdx()].getSide()) + str(1)})] "
+ + f"{self.headers[self.current_card().getSide()]} ("
+ + f"{str(self.current_card().getSide()) + str(1)})] "
)
# Put it all togethor
self.menu_panel.hide()
self.panel_up()
if key in ["q", "m"]:
- if len(self.stack) == self.obj.getIdx():
+ if len(self.stack) == self.obj.getIdx() + 1:
self.leave()
- elif len(self.stack) < self.obj.getIdx():
+ elif len(self.stack) < self.obj.getIdx() + 1:
self.obj.setIdx(0)
self.get_key()
elif key == "y":
side.
"""
(mlines, mcols) = self.win.getmaxyx()
- if self.obj.getIdx() == len(self.stack):
- self.disp_menu()
- else:
- self.main_panel.bottom()
- self.main_win.clear()
- # If on the back of the card, show the content of the front side in
- # the header
- num_done = str(self.obj.getIdx() + 1).zfill(
- len(str(len(self.stack)))
+ self.main_panel.bottom()
+ self.main_win.clear()
+ # If on the back of the card, show the content of the front side in
+ # the header
+ num_done = str(self.obj.getIdx() + 1).zfill(len(str(len(self.stack))))
+ if self.current_card().getSide() == 0:
+ top = (
+ num_done + " | " + self.headers[self.current_card().getSide()]
)
- if self.stack[self.obj.getIdx()].getSide() == 0:
- top = (
- num_done
- + " | "
- + self.headers[self.stack[self.obj.getIdx()].getSide()]
- )
- else:
- top = (
- num_done
- + " | "
- + self.headers[self.stack[self.obj.getIdx()].getSide()]
- + ' | "'
- + str(self.stack[self.obj.getIdx()][0])
- + '"'
- )
- header_width = mcols
- if mcols > 80:
- header_width = 80
-
- self.main_win.addstr(
- 0,
- 0,
- textwrap.shorten(top, width=header_width, placeholder="…"),
- curses.A_BOLD,
+ else:
+ top = (
+ num_done
+ + " | "
+ + self.headers[self.current_card().getSide()]
+ + ' | "'
+ + str(self.current_card().getFront())
+ + '"'
)
+ header_width = mcols
+ if mcols > 80:
+ header_width = 80
- # Add horizontal line
- lin_width = header_width
- if len(top) < header_width:
- lin_width = len(top)
- self.main_win.hline(1, 0, curses.ACS_HLINE, lin_width)
-
- # Show current side
- self.main_win.addstr(
- 2,
- 0,
- textwrap.fill(
- self.stack[self.obj.getIdx()][
- self.stack[self.obj.getIdx()].getSide()
- ],
- width=self.wrap_width(),
- ),
- )
+ self.main_win.addstr(
+ 0,
+ 0,
+ textwrap.shorten(top, width=header_width, placeholder="…"),
+ curses.A_BOLD,
+ )
+
+ # Add horizontal line
+ lin_width = header_width
+ if len(top) < header_width:
+ lin_width = len(top)
+ self.main_win.hline(1, 0, curses.ACS_HLINE, lin_width)
+
+ # Show current side
+ self.main_win.addstr(
+ 2,
+ 0,
+ textwrap.fill(
+ self.current_card().get(),
+ width=self.wrap_width(),
+ ),
+ )
self.panel_up()
self.disp_bar()
self.disp_sidebar()
self.help_panel.hide()
self.get_key()
+ def current_card(self):
+ return self.stack[self.obj.getIdx()]
+
def get_key(self):
"""
Display a card and wait for the input.
self.leave()
elif key in ["h", "KEY_LEFT"]:
self.obj.back()
- self.stack[self.obj.getIdx()].setSide(0)
+ self.current_card().setSide(0)
self.disp_card()
elif key in ["l", "KEY_RIGHT"]:
- self.obj.forward(self.stack)
- self.stack[self.obj.getIdx()].setSide(0)
- self.disp_card()
+ if self.obj.getIdx() + 1 == len(self.stack):
+ self.disp_menu()
+ else:
+ self.obj.forward(self.stack)
+ self.current_card().setSide(0)
+ self.disp_card()
elif key in ["j", "k", "KEY_UP", "KEY_DOWN"]:
- self.stack[self.obj.getIdx()].flip()
+ self.current_card().flip()
self.disp_card()
elif key in ["i", "/"]:
- self.stack[self.obj.getIdx()].toggleStar()
+ self.current_card().toggleStar()
self.disp_card()
elif key in ["0", "^", "KEY_HOME"]:
self.obj.setIdx(0)
- self.stack[self.obj.getIdx()].setSide(0)
+ self.current_card().setSide(0)
self.disp_card()
elif key in ["$", "KEY_END"]:
self.obj.setIdx(len(self.stack) - 1)
- self.stack[self.obj.getIdx()].setSide(0)
+ self.current_card().setSide(0)
self.disp_card()
elif key in ["H", "?"]:
self.disp_help()
elif mlines - 5 == len(self.ntotal()):
newntotal = self.ntotal()[: mlines - 3]
- for card in newntotal:
- for i in enumerate(newntotal):
- term = i[1][0]
- if len(i[1][0]) > 18:
- term = i[1][0][:18] + "…"
- self.win.addstr(2 + i[0], left, term)
+ for _ in newntotal:
+ for i, card in enumerate(newntotal):
+ term = card.getFront()
+ if len(term) > 18:
+ term = term + "…"
+ self.win.addstr(2 + i, left, term)
if not newntotal == self.ntotal():
self.win.addstr(
mlines - 3,