From 68e663e048c2d8a5b789fc923d475243dfc7b927 Mon Sep 17 00:00:00 2001 From: kramo Date: Sat, 29 Nov 2025 22:57:09 +0100 Subject: [PATCH] window: Add option to show hidden games --- cartridges/ui/window.blp | 11 ++++++++++- cartridges/ui/window.py | 30 ++++++++++++++++-------------- 2 files changed, 26 insertions(+), 15 deletions(-) diff --git a/cartridges/ui/window.blp b/cartridges/ui/window.blp index 8b42d86..7059bf5 100644 --- a/cartridges/ui/window.blp +++ b/cartridges/ui/window.blp @@ -12,6 +12,11 @@ template $Window: Adw.ApplicationWindow { action: "action(win.search)"; } + Shortcut { + trigger: "h"; + action: "action(win.show-hidden)"; + } + Shortcut { trigger: "w"; action: "action(window.close)"; @@ -84,6 +89,10 @@ template $Window: Adw.ApplicationWindow { target: "last_played"; } } + + section { + item (_("Show Hidden Games"), "win.show-hidden") + } }; } } @@ -112,7 +121,7 @@ template $Window: Adw.ApplicationWindow { BoolFilter { expression: expr item as <$Game>.hidden; - invert: true; + invert: bind template.show-hidden inverted; } BoolFilter { diff --git a/cartridges/ui/window.py b/cartridges/ui/window.py index 29a4763..f7872f2 100644 --- a/cartridges/ui/window.py +++ b/cartridges/ui/window.py @@ -31,6 +31,7 @@ class Window(Adw.ApplicationWindow): sorter: Gtk.CustomSorter = Gtk.Template.Child() search_text = GObject.Property(type=str) + show_hidden = GObject.Property(type=bool, default=False) _sort_prop = "name" _invert_sort = False @@ -50,11 +51,26 @@ class Window(Adw.ApplicationWindow): self.search_entry.set_key_capture_widget(self) self.sorter.set_sort_func(self._sort_func) + self.add_action(Gio.PropertyAction.new("show-hidden", self, "show-hidden")) self.add_action_entries(( ("search", lambda *_: self.search_entry.grab_focus()), ("sort", self._sort, "s", "'a-z'"), )) + @Gtk.Template.Callback() + def _search_started(self, entry: Gtk.SearchEntry) -> None: + entry.grab_focus() + + @Gtk.Template.Callback() + def _search_changed(self, entry: Gtk.SearchEntry) -> None: + self.search_text = entry.props.text + entry.grab_focus() + + @Gtk.Template.Callback() + def _stop_search(self, entry: Gtk.SearchEntry) -> None: + entry.props.text = "" + self.grid.grab_focus() + def _sort(self, action: Gio.SimpleAction, parameter: GLib.Variant, *_args) -> None: action.change_state(parameter) prop, invert = SORT_MODES[parameter.get_string()] @@ -78,17 +94,3 @@ class Window(Adw.ApplicationWindow): def _sortable(*strings: str) -> Generator[str]: for string in strings: yield string.lower().removeprefix("the ") - - @Gtk.Template.Callback() - def _search_started(self, entry: Gtk.SearchEntry) -> None: - entry.grab_focus() - - @Gtk.Template.Callback() - def _search_changed(self, entry: Gtk.SearchEntry) -> None: - self.search_text = entry.props.text - entry.grab_focus() - - @Gtk.Template.Callback() - def _stop_search(self, entry: Gtk.SearchEntry) -> None: - entry.props.text = "" - self.grid.grab_focus()