Make Heroic and itch sources available on macOS

This commit is contained in:
kramo
2024-07-10 15:12:27 +02:00
parent 6c2ab8099b
commit 823641d909
4 changed files with 12 additions and 5 deletions

View File

@@ -17,9 +17,9 @@
# #
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import os
import shlex import shlex
from pathlib import Path from pathlib import Path
from sys import platform
from time import time from time import time
from typing import Any, Optional from typing import Any, Optional
@@ -106,7 +106,7 @@ class DetailsDialog(Adw.Dialog):
# As in software # As in software
exe_name = _("program") exe_name = _("program")
if os.name == "nt": if platform == "win32":
exe_name += ".exe" exe_name += ".exe"
# Translate this string as you would translate "path to {}" # Translate this string as you would translate "path to {}"
exe_path = _("C:\\path\\to\\{}").format(exe_name) exe_path = _("C:\\path\\to\\{}").format(exe_name)
@@ -118,7 +118,7 @@ class DetailsDialog(Adw.Dialog):
exe_path = _("/path/to/{}").format(exe_name) exe_path = _("/path/to/{}").format(exe_name)
# Translate this string as you would translate "path to {}" # Translate this string as you would translate "path to {}"
file_path = _("/path/to/{}").format(file_name) file_path = _("/path/to/{}").format(file_name)
command = "xdg-open" command = "open" if platform == "darwin" else "xdg-open"
# pylint: disable=line-too-long # pylint: disable=line-too-long
exec_info_text = _( exec_info_text = _(

View File

@@ -355,7 +355,7 @@ class HeroicSource(URLExecutableSource):
name = _("Heroic") name = _("Heroic")
iterable_class = HeroicSourceIterable iterable_class = HeroicSourceIterable
url_format = "heroic://launch/{runner}/{app_name}" url_format = "heroic://launch/{runner}/{app_name}"
available_on = {"linux", "win32"} available_on = {"linux", "win32", "darwin"}
locations: HeroicLocations locations: HeroicLocations
@@ -377,6 +377,7 @@ class HeroicSource(URLExecutableSource):
/ "config" / "config"
/ "heroic", / "heroic",
shared.appdata_dir / "heroic", shared.appdata_dir / "heroic",
shared.app_support_dir / "heroic",
), ),
paths={ paths={
"config.json": LocationSubPath("config.json"), "config.json": LocationSubPath("config.json"),

View File

@@ -81,7 +81,7 @@ class ItchSource(URLExecutableSource):
name = _("itch") name = _("itch")
iterable_class = ItchSourceIterable iterable_class = ItchSourceIterable
url_format = "itch://caves/{cave_id}/launch" url_format = "itch://caves/{cave_id}/launch"
available_on = {"linux", "win32"} available_on = {"linux", "win32", "darwin"}
locations: ItchLocations locations: ItchLocations
@@ -95,6 +95,7 @@ class ItchSource(URLExecutableSource):
shared.config_dir / "itch", shared.config_dir / "itch",
shared.host_config_dir / "itch", shared.host_config_dir / "itch",
shared.appdata_dir / "itch", shared.appdata_dir / "itch",
shared.app_support_dir / "itch",
), ),
paths={ paths={
"butler.db": LocationSubPath("db/butler.db"), "butler.db": LocationSubPath("db/butler.db"),

View File

@@ -30,6 +30,7 @@ from cartridges import shared
from cartridges.errors.friendly_error import FriendlyError from cartridges.errors.friendly_error import FriendlyError
from cartridges.game import Game from cartridges.game import Game
from cartridges.importer.bottles_source import BottlesSource from cartridges.importer.bottles_source import BottlesSource
from cartridges.importer.desktop_source import DesktopSource
from cartridges.importer.flatpak_source import FlatpakSource from cartridges.importer.flatpak_source import FlatpakSource
from cartridges.importer.heroic_source import HeroicSource from cartridges.importer.heroic_source import HeroicSource
from cartridges.importer.itch_source import ItchSource from cartridges.importer.itch_source import ItchSource
@@ -169,6 +170,10 @@ class CartridgesPreferences(Adw.PreferencesDialog):
else: else:
self.init_source_row(source) self.init_source_row(source)
# Special case for the desktop source
if not DesktopSource().is_available:
self.desktop_switch.set_visible(False)
# SteamGridDB # SteamGridDB
def sgdb_key_changed(*_args: Any) -> None: def sgdb_key_changed(*_args: Any) -> None:
shared.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())