window: Bind size to GSettings

This commit is contained in:
Jamie Gravendeel
2025-11-30 21:35:57 +01:00
parent 801c6583af
commit 39162e72a3
4 changed files with 21 additions and 4 deletions

View File

@@ -17,9 +17,10 @@ gi.require_versions({
from gi.repository import Gio, GLib from gi.repository import Gio, GLib
from .config import LOCALEDIR, PKGDATADIR from .config import APP_ID, LOCALEDIR, PKGDATADIR
DATA_DIR = Path(GLib.get_user_data_dir(), "cartridges") DATA_DIR = Path(GLib.get_user_data_dir(), "cartridges")
state_settings = Gio.Settings.new(f"{APP_ID}.State")
_RESOURCES = ("data", "icons", "ui") _RESOURCES = ("data", "icons", "ui")

View File

@@ -4,8 +4,6 @@ using Adw 1;
template $Window: Adw.ApplicationWindow { template $Window: Adw.ApplicationWindow {
title: _("Cartridges"); title: _("Cartridges");
default-width: 920;
default-height: 700;
ShortcutController { ShortcutController {
Shortcut { Shortcut {

View File

@@ -10,7 +10,7 @@ from typing import Any
from gi.repository import Adw, Gdk, Gio, GLib, GObject, Gtk from gi.repository import Adw, Gdk, Gio, GLib, GObject, Gtk
from cartridges import games from cartridges import games, state_settings
from cartridges.config import PREFIX, PROFILE from cartridges.config import PREFIX, PROFILE
from cartridges.games import Game from cartridges.games import Game
@@ -54,6 +54,13 @@ class Window(Adw.ApplicationWindow):
if PROFILE == "development": if PROFILE == "development":
self.add_css_class("devel") self.add_css_class("devel")
for key, name in {
"width": "default-width",
"height": "default-height",
"is-maximized": "maximized",
}.items():
state_settings.bind(key, self, name, Gio.SettingsBindFlags.DEFAULT)
# https://gitlab.gnome.org/GNOME/gtk/-/issues/7901 # https://gitlab.gnome.org/GNOME/gtk/-/issues/7901
self.search_entry.set_key_capture_widget(self) self.search_entry.set_key_capture_widget(self)
self.sorter.set_sort_func(self._sort_func) self.sorter.set_sort_func(self._sort_func)

View File

@@ -2,4 +2,15 @@
<schemalist gettext-domain="cartridges"> <schemalist gettext-domain="cartridges">
<schema id="@APP_ID@" path="@PREFIX@/"> <schema id="@APP_ID@" path="@PREFIX@/">
</schema> </schema>
<schema id="@APP_ID@.State" path="@PREFIX@/State/">
<key name="width" type="i">
<default>920</default>
</key>
<key name="height" type="i">
<default>700</default>
</key>
<key name="is-maximized" type="b">
<default>false</default>
</key>
</schema>
</schemalist> </schemalist>