Moved schemas to shared module (#94)
This commit is contained in:
@@ -26,6 +26,7 @@ from time import time
|
||||
|
||||
from gi.repository import Adw, Gio, Gtk
|
||||
|
||||
from . import shared
|
||||
from .game_cover import GameCover
|
||||
|
||||
|
||||
@@ -78,7 +79,7 @@ class Game(Gtk.Box):
|
||||
self.cover_button.connect("clicked", self.main_button_clicked, False)
|
||||
self.play_button.connect("clicked", self.main_button_clicked, True)
|
||||
|
||||
self.win.schema.connect("changed", self.schema_changed)
|
||||
shared.schema.connect("changed", self.schema_changed)
|
||||
|
||||
def update(self):
|
||||
if self.get_parent():
|
||||
@@ -253,7 +254,7 @@ class Game(Gtk.Box):
|
||||
self.play_revealer.set_reveal_child(not state)
|
||||
|
||||
def main_button_clicked(self, _widget, button):
|
||||
if self.win.schema.get_boolean("cover-launches-game") ^ button:
|
||||
if shared.schema.get_boolean("cover-launches-game") ^ button:
|
||||
self.launch()
|
||||
else:
|
||||
self.win.show_details_view(self)
|
||||
@@ -261,7 +262,7 @@ class Game(Gtk.Box):
|
||||
def set_play_icon(self):
|
||||
self.play_button.set_icon_name(
|
||||
"help-about-symbolic"
|
||||
if self.win.schema.get_boolean("cover-launches-game")
|
||||
if shared.schema.get_boolean("cover-launches-game")
|
||||
else "media-playback-start-symbolic"
|
||||
)
|
||||
|
||||
|
||||
@@ -22,13 +22,14 @@ from time import time
|
||||
|
||||
import yaml
|
||||
|
||||
from . import shared
|
||||
from .check_install import check_install
|
||||
|
||||
|
||||
def bottles_installed(win, path=None):
|
||||
location_key = "bottles-location"
|
||||
bottles_dir = (
|
||||
path if path else Path(win.schema.get_string(location_key)).expanduser()
|
||||
path if path else Path(shared.schema.get_string(location_key)).expanduser()
|
||||
)
|
||||
check = "library.yml"
|
||||
|
||||
@@ -42,7 +43,7 @@ def bottles_installed(win, path=None):
|
||||
)
|
||||
)
|
||||
|
||||
bottles_dir = check_install(check, locations, (win.schema, location_key))
|
||||
bottles_dir = check_install(check, locations, (shared.schema, location_key))
|
||||
|
||||
return bottles_dir
|
||||
|
||||
|
||||
@@ -23,13 +23,14 @@ from hashlib import sha256
|
||||
from pathlib import Path
|
||||
from time import time
|
||||
|
||||
from . import shared
|
||||
from .check_install import check_install
|
||||
|
||||
|
||||
def heroic_installed(win, path=None):
|
||||
location_key = "heroic-location"
|
||||
heroic_dir = (
|
||||
path if path else Path(win.schema.get_string(location_key)).expanduser()
|
||||
path if path else Path(shared.schema.get_string(location_key)).expanduser()
|
||||
)
|
||||
check = "config.json"
|
||||
|
||||
@@ -46,7 +47,7 @@ def heroic_installed(win, path=None):
|
||||
if os.name == "nt" and not path:
|
||||
locations += (Path(os.getenv("appdata")) / "heroic",)
|
||||
|
||||
heroic_dir = check_install(check, locations, (win.schema, location_key))
|
||||
heroic_dir = check_install(check, locations, (shared.schema, location_key))
|
||||
|
||||
return heroic_dir
|
||||
|
||||
@@ -60,7 +61,7 @@ def heroic_importer(win):
|
||||
importer = win.importer
|
||||
|
||||
# Import Epic games
|
||||
if not win.schema.get_boolean("heroic-import-epic"):
|
||||
if not shared.schema.get_boolean("heroic-import-epic"):
|
||||
pass
|
||||
elif (heroic_dir / "store_cache" / "legendary_library.json").exists():
|
||||
library = json.load(
|
||||
@@ -113,7 +114,7 @@ def heroic_importer(win):
|
||||
pass
|
||||
|
||||
# Import GOG games
|
||||
if not win.schema.get_boolean("heroic-import-gog"):
|
||||
if not shared.schema.get_boolean("heroic-import-gog"):
|
||||
pass
|
||||
elif (heroic_dir / "gog_store" / "installed.json").exists() and (
|
||||
heroic_dir / "store_cache" / "gog_library.json"
|
||||
@@ -163,7 +164,7 @@ def heroic_importer(win):
|
||||
importer.save_game(values, image_path if image_path.exists() else None)
|
||||
|
||||
# Import sideloaded games
|
||||
if not win.schema.get_boolean("heroic-import-sideload"):
|
||||
if not shared.schema.get_boolean("heroic-import-sideload"):
|
||||
pass
|
||||
elif (heroic_dir / "sideload_apps" / "library.json").exists():
|
||||
library = json.load((heroic_dir / "sideload_apps" / "library.json").open())
|
||||
|
||||
@@ -26,6 +26,7 @@ from time import time
|
||||
import requests
|
||||
from gi.repository import GdkPixbuf, Gio
|
||||
|
||||
from . import shared
|
||||
from .check_install import check_install
|
||||
from .save_cover import resize_cover
|
||||
|
||||
@@ -120,7 +121,9 @@ def get_games_async(win, rows, importer):
|
||||
|
||||
def itch_installed(win, path=None):
|
||||
location_key = "itch-location"
|
||||
itch_dir = path if path else Path(win.schema.get_string(location_key)).expanduser()
|
||||
itch_dir = (
|
||||
path if path else Path(shared.schema.get_string(location_key)).expanduser()
|
||||
)
|
||||
check = Path("db") / "butler.db"
|
||||
|
||||
if not (itch_dir / check).is_file():
|
||||
@@ -136,7 +139,7 @@ def itch_installed(win, path=None):
|
||||
if os.name == "nt" and not path:
|
||||
locations += (Path(os.getenv("appdata")) / "itch",)
|
||||
|
||||
itch_dir = check_install(check, locations, (win.schema, location_key))
|
||||
itch_dir = check_install(check, locations, (shared.schema, location_key))
|
||||
|
||||
return itch_dir
|
||||
|
||||
|
||||
@@ -22,13 +22,14 @@ from shutil import copyfile
|
||||
from sqlite3 import connect
|
||||
from time import time
|
||||
|
||||
from . import shared
|
||||
from .check_install import check_install
|
||||
|
||||
|
||||
def lutris_installed(win, path=None):
|
||||
location_key = "lutris-location"
|
||||
lutris_dir = (
|
||||
path if path else Path(win.schema.get_string(location_key)).expanduser()
|
||||
path if path else Path(shared.schema.get_string(location_key)).expanduser()
|
||||
)
|
||||
check = "pga.db"
|
||||
|
||||
@@ -42,14 +43,14 @@ def lutris_installed(win, path=None):
|
||||
)
|
||||
)
|
||||
|
||||
lutris_dir = check_install(check, locations, (win.schema, location_key))
|
||||
lutris_dir = check_install(check, locations, (shared.schema, location_key))
|
||||
|
||||
return lutris_dir
|
||||
|
||||
|
||||
def lutris_cache_exists(win, path=None):
|
||||
cache_key = "lutris-cache-location"
|
||||
cache_dir = path if path else Path(win.schema.get_string(cache_key)).expanduser()
|
||||
cache_dir = path if path else Path(shared.schema.get_string(cache_key)).expanduser()
|
||||
cache_check = "coverart"
|
||||
|
||||
if not (cache_dir / cache_check).exists():
|
||||
@@ -62,7 +63,9 @@ def lutris_cache_exists(win, path=None):
|
||||
)
|
||||
)
|
||||
|
||||
cache_dir = check_install(cache_check, cache_locations, (win.schema, cache_key))
|
||||
cache_dir = check_install(
|
||||
cache_check, cache_locations, (shared.schema, cache_key)
|
||||
)
|
||||
|
||||
return cache_dir
|
||||
|
||||
@@ -105,7 +108,7 @@ def lutris_importer(win):
|
||||
# No need to unlink temp files as they disappear when the connection is closed
|
||||
database_tmp_path.unlink(missing_ok=True)
|
||||
|
||||
if not win.schema.get_boolean("lutris-import-steam"):
|
||||
if not shared.schema.get_boolean("lutris-import-steam"):
|
||||
rows = [row for row in rows if not row[3] == "steam"]
|
||||
|
||||
current_time = int(time())
|
||||
|
||||
@@ -25,6 +25,7 @@ from time import time
|
||||
import requests
|
||||
from gi.repository import Gio
|
||||
|
||||
from . import shared
|
||||
from .check_install import check_install
|
||||
|
||||
|
||||
@@ -124,7 +125,7 @@ def get_games_async(win, appmanifests, steam_dir, importer):
|
||||
|
||||
def steam_installed(win, path=None):
|
||||
location_key = "steam-location"
|
||||
steam_dir = Path(win.schema.get_string(location_key)).expanduser()
|
||||
steam_dir = Path(shared.schema.get_string(location_key)).expanduser()
|
||||
check = "steamapps"
|
||||
|
||||
if not (steam_dir / check).is_file():
|
||||
@@ -143,7 +144,9 @@ def steam_installed(win, path=None):
|
||||
if os.name == "nt":
|
||||
locations += (Path(os.getenv("programfiles(x86)")) / "Steam",)
|
||||
|
||||
steam_dir = check_install(check, locations, (win.schema, location_key), subdirs)
|
||||
steam_dir = check_install(
|
||||
check, locations, (shared.schema, location_key), subdirs
|
||||
)
|
||||
|
||||
return steam_dir
|
||||
|
||||
|
||||
10
src/main.py
10
src/main.py
@@ -27,6 +27,7 @@ gi.require_version("Adw", "1")
|
||||
# pylint: disable=wrong-import-position
|
||||
from gi.repository import Adw, Gio, GLib, Gtk
|
||||
|
||||
from . import shared
|
||||
from .bottles_importer import bottles_importer
|
||||
from .details_window import DetailsWindow
|
||||
from .heroic_importer import heroic_importer
|
||||
@@ -53,14 +54,13 @@ class CartridgesApplication(Adw.Application):
|
||||
self.win = CartridgesWindow(application=self)
|
||||
|
||||
# Save window geometry
|
||||
state_settings = Gio.Settings(schema_id="hu.kramo.Cartridges.State")
|
||||
state_settings.bind(
|
||||
shared.state_schema.bind(
|
||||
"width", self.win, "default-width", Gio.SettingsBindFlags.DEFAULT
|
||||
)
|
||||
state_settings.bind(
|
||||
shared.state_schema.bind(
|
||||
"height", self.win, "default-height", Gio.SettingsBindFlags.DEFAULT
|
||||
)
|
||||
state_settings.bind(
|
||||
shared.state_schema.bind(
|
||||
"is-maximized", self.win, "maximized", Gio.SettingsBindFlags.DEFAULT
|
||||
)
|
||||
|
||||
@@ -98,7 +98,7 @@ class CartridgesApplication(Adw.Application):
|
||||
)
|
||||
sort_action.connect("activate", self.win.on_sort_action)
|
||||
self.win.add_action(sort_action)
|
||||
self.win.on_sort_action(sort_action, state_settings.get_value("sort-mode"))
|
||||
self.win.on_sort_action(sort_action, shared.state_schema.get_value("sort-mode"))
|
||||
|
||||
self.win.present()
|
||||
|
||||
|
||||
@@ -24,6 +24,7 @@ cartridges_sources = [
|
||||
'details_window.py',
|
||||
'game.py',
|
||||
'game_cover.py',
|
||||
'shared.py',
|
||||
'importers/steam_importer.py',
|
||||
'importers/lutris_importer.py',
|
||||
'importers/heroic_importer.py',
|
||||
|
||||
@@ -24,6 +24,7 @@ from pathlib import Path
|
||||
from gi.repository import Adw, Gio, GLib, Gtk
|
||||
|
||||
# pylint: disable=unused-import
|
||||
from . import shared
|
||||
from .bottles_importer import bottles_installed
|
||||
from .create_dialog import create_dialog
|
||||
from .heroic_importer import heroic_installed
|
||||
@@ -89,7 +90,6 @@ class PreferencesWindow(Adw.PreferencesWindow):
|
||||
|
||||
def __init__(self, win, **kwargs):
|
||||
super().__init__(**kwargs)
|
||||
self.schema = win.schema
|
||||
self.win = win
|
||||
self.file_chooser = Gtk.FileDialog()
|
||||
self.set_transient_for(win)
|
||||
@@ -156,9 +156,9 @@ class PreferencesWindow(Adw.PreferencesWindow):
|
||||
|
||||
# SteamGridDB
|
||||
def sgdb_key_changed(*_args):
|
||||
self.schema.set_string("sgdb-key", self.sgdb_key_entry_row.get_text())
|
||||
shared.schema.set_string("sgdb-key", self.sgdb_key_entry_row.get_text())
|
||||
|
||||
self.sgdb_key_entry_row.set_text(self.schema.get_string("sgdb-key"))
|
||||
self.sgdb_key_entry_row.set_text(shared.schema.get_string("sgdb-key"))
|
||||
self.sgdb_key_entry_row.connect("changed", sgdb_key_changed)
|
||||
|
||||
self.sgdb_key_group.set_description(
|
||||
@@ -171,7 +171,7 @@ class PreferencesWindow(Adw.PreferencesWindow):
|
||||
|
||||
def set_sgdb_sensitive(widget):
|
||||
if not widget.get_text():
|
||||
self.win.schema.set_boolean("sgdb", False)
|
||||
shared.schema.set_boolean("sgdb", False)
|
||||
|
||||
self.sgdb_switch_row.set_sensitive(widget.get_text())
|
||||
|
||||
@@ -218,7 +218,7 @@ class PreferencesWindow(Adw.PreferencesWindow):
|
||||
|
||||
def bind_switches(self, settings):
|
||||
for setting in settings:
|
||||
self.schema.bind(
|
||||
shared.schema.bind(
|
||||
setting,
|
||||
self.get_switch(setting),
|
||||
"active",
|
||||
@@ -259,7 +259,9 @@ class PreferencesWindow(Adw.PreferencesWindow):
|
||||
re.sub(
|
||||
"/run/user/\\d*/doc/......../",
|
||||
"",
|
||||
str(Path(win.schema.get_string(f"{source_id}-location")).expanduser()),
|
||||
str(
|
||||
Path(shared.schema.get_string(f"{source_id}-location")).expanduser()
|
||||
),
|
||||
)
|
||||
)
|
||||
|
||||
@@ -292,7 +294,7 @@ class PreferencesWindow(Adw.PreferencesWindow):
|
||||
|
||||
self.set_subtitle(win, source_id)
|
||||
|
||||
win.schema.bind(
|
||||
shared.schema.bind(
|
||||
source_id,
|
||||
getattr(win, f"{source_id}_expander_row"),
|
||||
"enable-expansion",
|
||||
|
||||
4
src/shared.py
Normal file
4
src/shared.py
Normal file
@@ -0,0 +1,4 @@
|
||||
from gi.repository import Gio
|
||||
|
||||
schema = Gio.Settings.new("hu.kramo.Cartridges")
|
||||
state_schema = Gio.Settings.new("hu.kramo.Cartridges.State")
|
||||
@@ -24,6 +24,8 @@ from shutil import copyfile
|
||||
from gi.repository import Gio
|
||||
from PIL import Image, ImageSequence
|
||||
|
||||
from . import shared
|
||||
|
||||
|
||||
def resize_cover(win, cover_path=None, pixbuf=None):
|
||||
if not cover_path and not pixbuf:
|
||||
@@ -56,7 +58,7 @@ def resize_cover(win, cover_path=None, pixbuf=None):
|
||||
image.resize(win.image_size).save(
|
||||
tmp_path,
|
||||
compression="tiff_adobe_deflate"
|
||||
if win.schema.get_boolean("high-quality-images")
|
||||
if shared.schema.get_boolean("high-quality-images")
|
||||
else "webp",
|
||||
)
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ from pathlib import Path
|
||||
import requests
|
||||
from gi.repository import Gio
|
||||
|
||||
from . import shared
|
||||
from .create_dialog import create_dialog
|
||||
from .save_cover import save_cover, resize_cover
|
||||
|
||||
@@ -31,9 +32,9 @@ class SGDBSave:
|
||||
|
||||
if (
|
||||
not (
|
||||
self.win.schema.get_boolean("sgdb")
|
||||
shared.schema.get_boolean("sgdb")
|
||||
and (
|
||||
(self.win.schema.get_boolean("sgdb-prefer"))
|
||||
(shared.schema.get_boolean("sgdb-prefer"))
|
||||
or not (
|
||||
(self.win.covers_dir / f"{game.game_id}.gif").is_file()
|
||||
or (self.win.covers_dir / f"{game.game_id}.tiff").is_file()
|
||||
@@ -46,7 +47,7 @@ class SGDBSave:
|
||||
return
|
||||
|
||||
url = "https://www.steamgriddb.com/api/v2/"
|
||||
headers = {"Authorization": f'Bearer {self.win.schema.get_string("sgdb-key")}'}
|
||||
headers = {"Authorization": f'Bearer {shared.schema.get_string("sgdb-key")}'}
|
||||
|
||||
try:
|
||||
search_result = requests.get(
|
||||
@@ -68,7 +69,7 @@ class SGDBSave:
|
||||
response = None
|
||||
|
||||
try:
|
||||
if self.win.schema.get_boolean("sgdb-animated"):
|
||||
if shared.schema.get_boolean("sgdb-animated"):
|
||||
try:
|
||||
grid = requests.get(
|
||||
f'{url}grids/game/{search_result.json()["data"][0]["id"]}?dimensions=600x900&types=animated',
|
||||
|
||||
Reference in New Issue
Block a user