game-details: Use games.PROPERTIES

This commit is contained in:
Jamie Gravendeel
2025-12-02 20:51:12 +01:00
committed by Laura Kramolis
parent 578682376c
commit 08c5cf1b9c

View File

@@ -10,12 +10,16 @@ from urllib.parse import quote
from gi.repository import Adw, Gdk, Gio, GObject, Gtk from gi.repository import Adw, Gdk, Gio, GObject, Gtk
from cartridges import games
from cartridges.config import PREFIX from cartridges.config import PREFIX
from cartridges.games import Game from cartridges.games import Game
from .cover import Cover # noqa: F401 from .cover import Cover # noqa: F401
_EDITABLE_PROPERTIES = "name", "developer", "executable" _EDITABLE_PROPERTIES = {prop.name for prop in games.PROPERTIES if prop.editable}
_REQUIRED_PROPERTIES = {
prop.name for prop in games.PROPERTIES if prop.editable and prop.required
}
@Gtk.Template.from_resource(f"{PREFIX}/game-details.ui") @Gtk.Template.from_resource(f"{PREFIX}/game-details.ui")
@@ -60,7 +64,9 @@ class GameDetails(Adw.NavigationPage):
def edit(self): def edit(self):
"""Enter edit mode.""" """Enter edit mode."""
for prop in _EDITABLE_PROPERTIES: for prop in _EDITABLE_PROPERTIES:
getattr(self, f"{prop}_entry").props.text = getattr(self.game, prop) entry = getattr(self, f"{prop}_entry")
value = getattr(self.game, prop)
entry.props.text = value
self.stack.props.visible_child_name = "edit" self.stack.props.visible_child_name = "edit"
self.name_entry.grab_focus() self.name_entry.grab_focus()
@@ -71,9 +77,16 @@ class GameDetails(Adw.NavigationPage):
return return
for prop in _EDITABLE_PROPERTIES: for prop in _EDITABLE_PROPERTIES:
text = getattr(self, f"{prop}_entry").props.text entry = getattr(self, f"{prop}_entry")
if text != getattr(self.game, prop) and (text or prop == "developer"): value = entry.props.text
setattr(self.game, prop, text) previous_value = getattr(self.game, prop)
if not value and prop in _REQUIRED_PROPERTIES:
entry.props.text = previous_value
continue
if value != previous_value:
setattr(self.game, prop, value)
if prop == "name": if prop == "name":
self.emit("sort-changed") self.emit("sort-changed")