diff options
-rwxr-xr-x | tf2sgu | 21 |
1 files changed, 21 insertions, 0 deletions
@@ -37,6 +37,10 @@ class SaveGame(namedtuple("SaveGame", "name date base")): logging.debug(f"Copying {src!r} -> {dst!r}") shutil.copy2(src, dst) + def is_autosave(self): + """Returns whether this save is an autosave.""" + return self.name.startswith("autosave_") + class UserException(Exception): """Exception that shouldbe displayed to the user.""" @@ -301,6 +305,9 @@ class TuiListView: self.scr.addnstr(row + 1, 1, str_item, width - 2, attr) self.scr.refresh() + def erase(self): + self.scr.erase() + def up(self): if self.selection == 0: return @@ -398,15 +405,26 @@ class Tui: "<Tab> to switch panel", "<Enter> to copy", "<r> to refresh", + "<h> to hide autosaves", "<q> to quit", ] self.views = [None, None] + self.hide_autosaves = False def reload(self): local_saves = self.profile.saves() remote_saves = read_saves(self.args.remote_dir) + if self.hide_autosaves: + local_saves = [s for s in local_saves if not s.is_autosave()] + remote_saves = [s for s in remote_saves if not s.is_autosave()] self.views[0].set_items(local_saves) self.views[1].set_items(remote_saves) + for view in self.views: + view.erase() + + def toggle_autosaves(self): + self.hide_autosaves = not self.hide_autosaves + self.reload() def init_layout(self): import curses @@ -471,6 +489,9 @@ class Tui: elif char in {ord("R"), ord("r")}: self.reload() + elif char in {ord("H"), ord("h")}: + self.toggle_autosaves() + elif char in {10, curses.KEY_ENTER}: try: item = self.views[active].selected_item() |