Make the 'Hidden' sidebar row itself hidden initially; convert the Show Hidden Games from a toggle to a command.

It shows the hidden sidebar row and selects it.
This commit is contained in:
Daniel Johnson 2024-02-17 05:30:30 -05:00 committed by Mathieu Comandon
parent 95e8c95cd9
commit e0c77de925
3 changed files with 20 additions and 23 deletions

View file

@ -197,9 +197,7 @@ class LutrisWindow(Gtk.ApplicationWindow,
accel="F9",
),
"show-hidden-games": Action(
self.hidden_state_change,
type="b",
default=self.show_hidden_games,
self.on_show_hidden_clicked,
enabled=lambda: self.is_show_hidden_sensitive,
accel="<Primary>h",
),
@ -275,11 +273,10 @@ class LutrisWindow(Gtk.ApplicationWindow,
"""True if the hidden checkbox will be effective; service views ignore it."""
return not self.filters.get("service")
def hidden_state_change(self, action, value):
def on_show_hidden_clicked(self, action, value):
"""Hides or shows the hidden games"""
action.set_state(value)
settings.write_setting("show_hidden_games", str(value).lower(), section="lutris")
self.update_store()
self.sidebar.hidden_row.show()
self.sidebar.selected_category = "category", ".hidden"
@property
def current_view_type(self):
@ -1029,9 +1026,6 @@ class LutrisWindow(Gtk.ApplicationWindow,
def is_game_displayed(self, game):
"""Return whether a game should be displayed on the view"""
if game.is_hidden and not self.show_hidden_games:
return False
row = self.sidebar.get_selected_row()
if row:

View file

@ -344,6 +344,7 @@ class LutrisSidebar(Gtk.ListBox):
self.category_rows = {}
# A dummy objects that allows inspecting why/when we have a show() call on the object.
self.running_row = DummyRow()
self.hidden_row = DummyRow()
self.missing_row = DummyRow()
self.row_headers = {
"library": SidebarHeader(_("Library"), header_index=0),
@ -416,14 +417,15 @@ class LutrisSidebar(Gtk.ListBox):
Gtk.Image.new_from_icon_name("favorite-symbolic", Gtk.IconSize.MENU)
)
)
self.add(
SidebarRow(
".hidden",
"category",
_("Hidden"),
Gtk.Image.new_from_icon_name("action-unavailable-symbolic", Gtk.IconSize.MENU)
)
self.hidden_row = SidebarRow(
".hidden",
"category",
_("Hidden"),
Gtk.Image.new_from_icon_name("action-unavailable-symbolic", Gtk.IconSize.MENU)
)
self.add(self.hidden_row)
self.missing_row = SidebarRow(
"missing",
"dynamic_category",
@ -441,6 +443,7 @@ class LutrisSidebar(Gtk.ListBox):
# I wanted this to be on top but it really messes with the headers when showing/hiding the row.
self.add(self.running_row)
self.show_all()
self.hidden_row.hide()
self.missing_row.hide()
self.running_row.hide()

View file

@ -514,9 +514,9 @@
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="receives-default">False</property>
<property name="action-name">win.show-hidden-games</property>
<property name="text" translatable="yes">Show _Hidden Games</property>
<accelerator key="h" signal="clicked" modifiers="GDK_CONTROL_MASK"/>
<property name="action-name">win.show-side-panel</property>
<property name="text" translatable="yes">Show Side _Panel</property>
<accelerator key="0xffffff" signal="clicked"/>
</object>
<packing>
<property name="expand">False</property>
@ -529,9 +529,9 @@
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="receives-default">False</property>
<property name="action-name">win.show-side-panel</property>
<property name="text" translatable="yes">Show Side _Panel</property>
<accelerator key="0xffffff" signal="clicked"/>
<property name="action-name">win.show-hidden-games</property>
<property name="text" translatable="yes">Show _Hidden Games</property>
<accelerator key="h" signal="clicked" modifiers="GDK_CONTROL_MASK"/>
</object>
<packing>
<property name="expand">False</property>