Compare commits
17 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
eac6d63010 | ||
|
|
beda52b575 | ||
|
|
13cefac34d | ||
|
|
d79686b9a1 | ||
|
|
eff60d5990 | ||
|
|
823641d909 | ||
|
|
6c2ab8099b | ||
|
|
d8137871c5 | ||
|
|
f396a4679c | ||
|
|
c1226197f8 | ||
|
|
8504689426 | ||
|
|
aafc64023c | ||
|
|
eab96edfc7 | ||
|
|
72f15ba7fd | ||
|
|
63a797ce33 | ||
|
|
8640e37252 | ||
|
|
57db530af5 |
57
.github/workflows/ci.yml
vendored
57
.github/workflows/ci.yml
vendored
@@ -14,14 +14,14 @@ jobs:
|
|||||||
image: bilelmoussaoui/flatpak-github-actions:gnome-46
|
image: bilelmoussaoui/flatpak-github-actions:gnome-46
|
||||||
options: --privileged
|
options: --privileged
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Flatpak Builder
|
- name: Flatpak Builder
|
||||||
uses: flatpak/flatpak-github-actions/flatpak-builder@v6.3
|
uses: flatpak/flatpak-github-actions/flatpak-builder@v6.3
|
||||||
with:
|
with:
|
||||||
bundle: page.kramo.Cartridges.Devel.flatpak
|
bundle: page.kramo.Cartridges.Devel.flatpak
|
||||||
manifest-path: flatpak/page.kramo.Cartridges.Devel.json
|
manifest-path: build-aux/flatpak/page.kramo.Cartridges.Devel.json
|
||||||
|
|
||||||
windows:
|
windows:
|
||||||
name: Windows
|
name: Windows
|
||||||
@@ -51,10 +51,49 @@ jobs:
|
|||||||
timeout 2 cartridges; [ "$?" -eq "124" ]
|
timeout 2 cartridges; [ "$?" -eq "124" ]
|
||||||
|
|
||||||
- name: Inno Setup
|
- name: Inno Setup
|
||||||
run: iscc ".\_build\windows\Cartridges.iss"
|
run: iscc ".\_build\build-aux\windows\Cartridges.iss"
|
||||||
|
|
||||||
- name: Upload Artifact
|
- name: Upload Artifact
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: Windows Installer
|
name: Windows Installer
|
||||||
path: _build/windows/Output/Cartridges Setup.exe
|
path: _build/build-aux/windows/Output/Cartridges Windows.exe
|
||||||
|
|
||||||
|
macos:
|
||||||
|
name: macOS
|
||||||
|
runs-on: macos-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Set up Homebrew
|
||||||
|
id: set-up-homebrew
|
||||||
|
uses: Homebrew/actions/setup-homebrew@master
|
||||||
|
|
||||||
|
- name: Install Dependencies
|
||||||
|
run: |
|
||||||
|
brew install meson pygobject3 libadwaita adwaita-icon-theme desktop-file-utils pyinstaller pillow
|
||||||
|
pip3 install --break-system-packages requests PyYAML
|
||||||
|
|
||||||
|
- name: Meson Build
|
||||||
|
run: |
|
||||||
|
meson setup _build
|
||||||
|
ninja install -C _build
|
||||||
|
|
||||||
|
- name: PyInstaller
|
||||||
|
env:
|
||||||
|
PYTHONPATH: /opt/homebrew/opt/homebrew/lib/python3.12/site-packages
|
||||||
|
run: |
|
||||||
|
cd build-aux/macos
|
||||||
|
pyinstaller ./cartridges.spec
|
||||||
|
|
||||||
|
- name: Zip
|
||||||
|
run: |
|
||||||
|
cd build-aux/macos/dist
|
||||||
|
zip -yr Cartridges\ macOS.zip Cartridges.app
|
||||||
|
|
||||||
|
- name: Upload Artifact
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
path: build-aux/macos/dist/Cartridges macOS.zip
|
||||||
|
name: macOS Application
|
||||||
|
|||||||
11
.github/workflows/publish-release.yml
vendored
11
.github/workflows/publish-release.yml
vendored
@@ -1,8 +1,7 @@
|
|||||||
name: Publish Release
|
name: Publish Release
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
tags:
|
tags: "*"
|
||||||
"*"
|
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
group: release-${{ github.sha }}
|
group: release-${{ github.sha }}
|
||||||
@@ -16,7 +15,7 @@ jobs:
|
|||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Download workflow artifact
|
- name: Download workflow artifact
|
||||||
uses: dawidd6/action-download-artifact@v3.1.4
|
uses: dawidd6/action-download-artifact@v6
|
||||||
with:
|
with:
|
||||||
workflow: ci.yml
|
workflow: ci.yml
|
||||||
commit: ${{ github.sha }}
|
commit: ${{ github.sha }}
|
||||||
@@ -39,9 +38,11 @@ jobs:
|
|||||||
run: echo tag_name=${GITHUB_REF#refs/tags/} >> $GITHUB_OUTPUT
|
run: echo tag_name=${GITHUB_REF#refs/tags/} >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
- name: Publish release
|
- name: Publish release
|
||||||
uses: softprops/action-gh-release@v2.0.5
|
uses: softprops/action-gh-release@v2.0.6
|
||||||
with:
|
with:
|
||||||
files: Windows Installer/Cartridges Setup.exe
|
files: |
|
||||||
|
Windows Installer/Cartridges Windows.exe
|
||||||
|
macOS Application/Cartridges macOS.zip
|
||||||
fail_on_unmatched_files: true
|
fail_on_unmatched_files: true
|
||||||
tag_name: ${{ steps.get_tag_name.outputs.tag_name }}
|
tag_name: ${{ steps.get_tag_name.outputs.tag_name }}
|
||||||
body_path: release_notes
|
body_path: release_notes
|
||||||
|
|||||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1,4 +1,7 @@
|
|||||||
/subprojects/blueprint-compiler
|
/subprojects/blueprint-compiler
|
||||||
|
/build-aux/macos/build
|
||||||
|
/build-aux/macos/dist
|
||||||
/.flatpak
|
/.flatpak
|
||||||
/.flatpak-builder
|
/.flatpak-builder
|
||||||
/.vscode
|
/.vscode
|
||||||
|
.DS_Store
|
||||||
|
|||||||
@@ -33,6 +33,11 @@ The project can be translated on [Weblate](https://hosted.weblate.org/engage/car
|
|||||||
2. From the MSYS2 shell, install the required dependencies listed [here](https://github.com/kra-mo/cartridges/blob/main/.github/workflows/ci.yml).
|
2. From the MSYS2 shell, install the required dependencies listed [here](https://github.com/kra-mo/cartridges/blob/main/.github/workflows/ci.yml).
|
||||||
3. Build it via Meson.
|
3. Build it via Meson.
|
||||||
|
|
||||||
|
## For macOS
|
||||||
|
1. Install [Homebrew](https://brew.sh/).
|
||||||
|
2. Using `brew` and `pip3`, install the required dependencies listed [here](https://github.com/kra-mo/cartridges/blob/main/.github/workflows/ci.yml).
|
||||||
|
3. Build it via Meson.
|
||||||
|
|
||||||
## Meson
|
## Meson
|
||||||
```bash
|
```bash
|
||||||
git clone https://github.com/kra-mo/cartridges.git
|
git clone https://github.com/kra-mo/cartridges.git
|
||||||
|
|||||||
11
README.md
11
README.md
@@ -65,11 +65,9 @@ Thank you for your generosity! 💜
|
|||||||
|
|
||||||
## Linux
|
## Linux
|
||||||
|
|
||||||
### Flathub
|
|
||||||
|
|
||||||
The app is available on Flathub.
|
The app is available on Flathub.
|
||||||
|
|
||||||
<a href=https://flathub.org/apps/page.kramo.Cartridges><img width='240' alt='Download on Flathub' src='https://dl.flathub.org/assets/badges/flathub-badge-en.png'/></a>
|
<a href=https://flathub.org/apps/page.kramo.Cartridges><img alt='Download on Flathub' src='https://flathub.org/api/badge?svg&locale=en'/></a>
|
||||||
|
|
||||||
## Windows
|
## Windows
|
||||||
|
|
||||||
@@ -84,6 +82,13 @@ Note: Windows might present you with a warning when trying to install the app. T
|
|||||||
|
|
||||||
Install the latest release with the command: `winget install cartridges`.
|
Install the latest release with the command: `winget install cartridges`.
|
||||||
|
|
||||||
|
## macOS
|
||||||
|
|
||||||
|
1. Download the latest release from [Releases](https://github.com/kra-mo/cartridges/releases).
|
||||||
|
2. Move the app into your Applications folder.
|
||||||
|
|
||||||
|
Note: macOS might tell you that the application could not be checked for malicious software or something similar. In this case, open System Settings > Privacy & Security, scroll down, find the warning about Cartridges and click "Open Anyway". More information can be found [here](https://support.apple.com/en-us/102445).
|
||||||
|
|
||||||
## Building manually
|
## Building manually
|
||||||
|
|
||||||
See [Building](https://github.com/kra-mo/cartridges/blob/main/CONTRIBUTING.md#building).
|
See [Building](https://github.com/kra-mo/cartridges/blob/main/CONTRIBUTING.md#building).
|
||||||
|
|||||||
@@ -130,7 +130,7 @@
|
|||||||
"sources" : [
|
"sources" : [
|
||||||
{
|
{
|
||||||
"type" : "dir",
|
"type" : "dir",
|
||||||
"path" : ".."
|
"path" : "../.."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
59
build-aux/macos/cartridges.spec
Normal file
59
build-aux/macos/cartridges.spec
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
# -*- mode: python ; coding: utf-8 -*-
|
||||||
|
|
||||||
|
|
||||||
|
a = Analysis(
|
||||||
|
["../../_build/cartridges/cartridges"],
|
||||||
|
pathex=[],
|
||||||
|
binaries=[],
|
||||||
|
datas=[("../../_build/data/cartridges.gresource", "Resources")],
|
||||||
|
hiddenimports=[],
|
||||||
|
hookspath=[],
|
||||||
|
hooksconfig={
|
||||||
|
"gi": {
|
||||||
|
"module-versions": {
|
||||||
|
"Gtk": "4.0",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
runtime_hooks=[],
|
||||||
|
excludes=[],
|
||||||
|
noarchive=False,
|
||||||
|
optimize=0,
|
||||||
|
)
|
||||||
|
pyz = PYZ(a.pure)
|
||||||
|
|
||||||
|
exe = EXE(
|
||||||
|
pyz,
|
||||||
|
a.scripts,
|
||||||
|
[],
|
||||||
|
exclude_binaries=True,
|
||||||
|
name="Cartridges",
|
||||||
|
debug=False,
|
||||||
|
bootloader_ignore_signals=False,
|
||||||
|
strip=False,
|
||||||
|
upx=True,
|
||||||
|
console=False,
|
||||||
|
disable_windowed_traceback=False,
|
||||||
|
argv_emulation=False,
|
||||||
|
target_arch=None,
|
||||||
|
codesign_identity=None,
|
||||||
|
entitlements_file=None,
|
||||||
|
)
|
||||||
|
coll = COLLECT(
|
||||||
|
exe,
|
||||||
|
a.binaries,
|
||||||
|
a.datas,
|
||||||
|
strip=False,
|
||||||
|
upx=True,
|
||||||
|
upx_exclude=[],
|
||||||
|
name="Cartridges",
|
||||||
|
)
|
||||||
|
app = BUNDLE(
|
||||||
|
coll,
|
||||||
|
name="Cartridges.app",
|
||||||
|
icon="./icon.icns",
|
||||||
|
bundle_identifier="page.kramo.Cartridges",
|
||||||
|
info_plist={
|
||||||
|
"LSApplicationCategoryType": "public.app-category.games",
|
||||||
|
},
|
||||||
|
)
|
||||||
BIN
build-aux/macos/icon.icns
Normal file
BIN
build-aux/macos/icon.icns
Normal file
Binary file not shown.
@@ -15,10 +15,10 @@ AppSupportURL=https://github.com/kra-mo/cartridges/issues
|
|||||||
AppUpdatesURL={#MyAppURL}
|
AppUpdatesURL={#MyAppURL}
|
||||||
DefaultDirName={autopf64}\{#MyAppName}
|
DefaultDirName={autopf64}\{#MyAppName}
|
||||||
DisableProgramGroupPage=yes
|
DisableProgramGroupPage=yes
|
||||||
LicenseFile=..\..\LICENSE
|
LicenseFile=..\..\..\LICENSE
|
||||||
PrivilegesRequiredOverridesAllowed=dialog
|
PrivilegesRequiredOverridesAllowed=dialog
|
||||||
OutputBaseFilename=Cartridges Setup
|
OutputBaseFilename=Cartridges Windows
|
||||||
SetupIconFile=..\..\windows\icon.ico
|
SetupIconFile=..\..\..\build-aux\windows\icon.ico
|
||||||
Compression=lzma
|
Compression=lzma
|
||||||
SolidCompression=yes
|
SolidCompression=yes
|
||||||
WizardStyle=modern
|
WizardStyle=modern
|
||||||
@@ -49,7 +49,7 @@ Source: "D:\a\_temp\msys64\ucrt64\share\icons\*"; DestDir: "{app}\share\icons";
|
|||||||
Source: "D:\a\_temp\msys64\ucrt64\share\glib-2.0\*"; DestDir: "{app}\share\glib-2.0"; Flags: recursesubdirs ignoreversion
|
Source: "D:\a\_temp\msys64\ucrt64\share\glib-2.0\*"; DestDir: "{app}\share\glib-2.0"; Flags: recursesubdirs ignoreversion
|
||||||
Source: "D:\a\_temp\msys64\ucrt64\share\gtk-4.0\*"; DestDir: "{app}\share\gtk-4.0"; Flags: recursesubdirs ignoreversion
|
Source: "D:\a\_temp\msys64\ucrt64\share\gtk-4.0\*"; DestDir: "{app}\share\gtk-4.0"; Flags: recursesubdirs ignoreversion
|
||||||
|
|
||||||
Source: "..\..\windows\icon.ico"; DestDir: "{app}"; Flags: recursesubdirs ignoreversion
|
Source: "..\..\..\build-aux\windows\icon.ico"; DestDir: "{app}"; Flags: recursesubdirs ignoreversion
|
||||||
|
|
||||||
[Icons]
|
[Icons]
|
||||||
Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\bin\{#MyAppExeName}"; Parameters: """{app}\bin\cartridges"""; IconFilename: "{app}\icon.ico"
|
Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\bin\{#MyAppExeName}"; Parameters: """{app}\bin\cartridges"""; IconFilename: "{app}\icon.ico"
|
||||||
|
Before Width: | Height: | Size: 169 KiB After Width: | Height: | Size: 169 KiB |
@@ -3,5 +3,5 @@ configure_file(
|
|||||||
output: 'Cartridges.iss',
|
output: 'Cartridges.iss',
|
||||||
configuration: conf,
|
configuration: conf,
|
||||||
install: true,
|
install: true,
|
||||||
install_dir: '.'
|
install_dir: '.',
|
||||||
)
|
)
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
# cartridges.in
|
# cartridges.in
|
||||||
#
|
#
|
||||||
# Copyright 2022-2023 kramo
|
# Copyright 2022-2024 kramo
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
@@ -24,6 +24,8 @@ import locale
|
|||||||
import os
|
import os
|
||||||
import signal
|
import signal
|
||||||
import sys
|
import sys
|
||||||
|
from pathlib import Path
|
||||||
|
from platform import system
|
||||||
|
|
||||||
VERSION = "@VERSION@"
|
VERSION = "@VERSION@"
|
||||||
|
|
||||||
@@ -36,7 +38,7 @@ else:
|
|||||||
sys.path.insert(1, PKGDATADIR)
|
sys.path.insert(1, PKGDATADIR)
|
||||||
signal.signal(signal.SIGINT, signal.SIG_DFL)
|
signal.signal(signal.SIGINT, signal.SIG_DFL)
|
||||||
|
|
||||||
if os.name != "nt":
|
if system() == "Linux":
|
||||||
locale.bindtextdomain("cartridges", LOCALEDIR)
|
locale.bindtextdomain("cartridges", LOCALEDIR)
|
||||||
locale.textdomain("cartridges")
|
locale.textdomain("cartridges")
|
||||||
gettext.install("cartridges", LOCALEDIR)
|
gettext.install("cartridges", LOCALEDIR)
|
||||||
@@ -44,9 +46,15 @@ else:
|
|||||||
gettext.install("cartridges")
|
gettext.install("cartridges")
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
from gi.repository import Gio
|
from gi.repository import Gio, GLib
|
||||||
|
|
||||||
resource = Gio.Resource.load(os.path.join(PKGDATADIR, "cartridges.gresource"))
|
try:
|
||||||
|
# For a macOS application bundle
|
||||||
|
resource = Gio.Resource.load(
|
||||||
|
str(Path(__file__).parent / "Resources" / "cartridges.gresource")
|
||||||
|
)
|
||||||
|
except GLib.GError:
|
||||||
|
resource = Gio.Resource.load(os.path.join(PKGDATADIR, "cartridges.gresource"))
|
||||||
resource._register() # pylint: disable=protected-access
|
resource._register() # pylint: disable=protected-access
|
||||||
|
|
||||||
from cartridges import main
|
from cartridges import main
|
||||||
|
|||||||
@@ -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 = _(
|
||||||
|
|||||||
@@ -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"),
|
||||||
|
|||||||
@@ -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"),
|
||||||
|
|||||||
@@ -125,6 +125,8 @@ class URLExecutableSource(ExecutableFormatSource):
|
|||||||
return "start " + self.url_format
|
return "start " + self.url_format
|
||||||
case "linux":
|
case "linux":
|
||||||
return "xdg-open " + self.url_format
|
return "xdg-open " + self.url_format
|
||||||
|
case "darwin":
|
||||||
|
return "open " + self.url_format
|
||||||
case other:
|
case other:
|
||||||
raise NotImplementedError(
|
raise NotImplementedError(
|
||||||
f"No URL handler command available for {other}"
|
f"No URL handler command available for {other}"
|
||||||
|
|||||||
@@ -112,7 +112,7 @@ class SteamLocations(NamedTuple):
|
|||||||
class SteamSource(URLExecutableSource):
|
class SteamSource(URLExecutableSource):
|
||||||
source_id = "steam"
|
source_id = "steam"
|
||||||
name = _("Steam")
|
name = _("Steam")
|
||||||
available_on = {"linux", "win32"}
|
available_on = {"linux", "win32", "darwin"}
|
||||||
iterable_class = SteamSourceIterable
|
iterable_class = SteamSourceIterable
|
||||||
url_format = "steam://rungameid/{game_id}"
|
url_format = "steam://rungameid/{game_id}"
|
||||||
|
|
||||||
@@ -128,6 +128,7 @@ class SteamSource(URLExecutableSource):
|
|||||||
shared.data_dir / "Steam",
|
shared.data_dir / "Steam",
|
||||||
shared.flatpak_dir / "com.valvesoftware.Steam" / "data" / "Steam",
|
shared.flatpak_dir / "com.valvesoftware.Steam" / "data" / "Steam",
|
||||||
shared.programfiles32_dir / "Steam",
|
shared.programfiles32_dir / "Steam",
|
||||||
|
shared.app_support_dir / "Steam",
|
||||||
),
|
),
|
||||||
paths={
|
paths={
|
||||||
"libraryfolders.vdf": LocationSubPath(
|
"libraryfolders.vdf": LocationSubPath(
|
||||||
|
|||||||
@@ -87,10 +87,17 @@ class CartridgesApplication(Adw.Application):
|
|||||||
|
|
||||||
self.add_main_option_entries((search, launch))
|
self.add_main_option_entries((search, launch))
|
||||||
|
|
||||||
|
if sys.platform == "darwin" and (settings := Gtk.Settings.get_default()):
|
||||||
|
settings.props.gtk_decoration_layout = "close,minimize,maximize:"
|
||||||
|
|
||||||
def do_activate(self) -> None: # pylint: disable=arguments-differ
|
def do_activate(self) -> None: # pylint: disable=arguments-differ
|
||||||
"""Called on app creation"""
|
"""Called on app creation"""
|
||||||
|
|
||||||
setup_logging()
|
try:
|
||||||
|
setup_logging()
|
||||||
|
except ValueError:
|
||||||
|
pass
|
||||||
|
|
||||||
log_system_info()
|
log_system_info()
|
||||||
|
|
||||||
# Set fallback icon-name
|
# Set fallback icon-name
|
||||||
@@ -375,7 +382,7 @@ class CartridgesApplication(Adw.Application):
|
|||||||
if action[1:2]:
|
if action[1:2]:
|
||||||
self.set_accels_for_action(
|
self.set_accels_for_action(
|
||||||
f"app.{action[0]}" if scope == self else f"win.{action[0]}",
|
f"app.{action[0]}" if scope == self else f"win.{action[0]}",
|
||||||
action[1],
|
tuple(s.replace("<primary>", "<meta>") for s in action[1]),
|
||||||
)
|
)
|
||||||
|
|
||||||
scope.add_action(simple_action)
|
scope.add_action(simple_action)
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
moduledir = join_paths(python_dir, 'cartridges')
|
moduledir = python_dir / 'cartridges'
|
||||||
|
|
||||||
configure_file(
|
configure_file(
|
||||||
input: 'cartridges.in',
|
input: 'cartridges.in',
|
||||||
output: 'cartridges',
|
output: 'cartridges',
|
||||||
configuration: conf,
|
configuration: conf,
|
||||||
install: true,
|
install: true,
|
||||||
install_dir: get_option('bindir')
|
install_dir: get_option('bindir'),
|
||||||
)
|
)
|
||||||
|
|
||||||
install_subdir('importer', install_dir: moduledir)
|
install_subdir('importer', install_dir: moduledir)
|
||||||
@@ -21,11 +21,7 @@ install_data(
|
|||||||
'details_dialog.py',
|
'details_dialog.py',
|
||||||
'game.py',
|
'game.py',
|
||||||
'game_cover.py',
|
'game_cover.py',
|
||||||
configure_file(
|
configure_file(input: 'shared.py.in', output: 'shared.py', configuration: conf),
|
||||||
input: 'shared.py.in',
|
|
||||||
output: 'shared.py',
|
|
||||||
configuration: conf
|
|
||||||
)
|
|
||||||
],
|
],
|
||||||
install_dir: moduledir
|
install_dir: moduledir,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -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())
|
||||||
|
|||||||
@@ -64,6 +64,8 @@ local_appdata_dir = Path(
|
|||||||
)
|
)
|
||||||
programfiles32_dir = Path(getenv("programfiles(x86)") or r"C:\Program Files (x86)")
|
programfiles32_dir = Path(getenv("programfiles(x86)") or r"C:\Program Files (x86)")
|
||||||
|
|
||||||
|
app_support_dir = home / "Library" / "Application Support"
|
||||||
|
|
||||||
try:
|
try:
|
||||||
scale_factor = max(
|
scale_factor = max(
|
||||||
monitor.get_scale_factor()
|
monitor.get_scale_factor()
|
||||||
@@ -79,4 +81,4 @@ win = None
|
|||||||
importer = None
|
importer = None
|
||||||
import_time = None
|
import_time = None
|
||||||
store = None
|
store = None
|
||||||
log_files = None
|
log_files = []
|
||||||
|
|||||||
@@ -18,8 +18,9 @@
|
|||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
from typing import Any, Optional
|
from typing import Any, Optional
|
||||||
|
from sys import platform
|
||||||
|
|
||||||
from gi.repository import Adw, Gio, GLib, Gtk
|
from gi.repository import Adw, Gio, GLib, Gtk, Pango
|
||||||
|
|
||||||
from cartridges import shared
|
from cartridges import shared
|
||||||
from cartridges.game import Game
|
from cartridges.game import Game
|
||||||
@@ -33,6 +34,7 @@ class CartridgesWindow(Adw.ApplicationWindow):
|
|||||||
|
|
||||||
overlay_split_view = Gtk.Template.Child()
|
overlay_split_view = Gtk.Template.Child()
|
||||||
navigation_view = Gtk.Template.Child()
|
navigation_view = Gtk.Template.Child()
|
||||||
|
sidebar_navigation_page = Gtk.Template.Child()
|
||||||
sidebar = Gtk.Template.Child()
|
sidebar = Gtk.Template.Child()
|
||||||
all_games_row_box = Gtk.Template.Child()
|
all_games_row_box = Gtk.Template.Child()
|
||||||
all_games_no_label = Gtk.Template.Child()
|
all_games_no_label = Gtk.Template.Child()
|
||||||
@@ -152,6 +154,8 @@ class CartridgesWindow(Adw.ApplicationWindow):
|
|||||||
Gtk.Label(
|
Gtk.Label(
|
||||||
label=self.get_application().get_source_name(source_id),
|
label=self.get_application().get_source_name(source_id),
|
||||||
halign=Gtk.Align.START,
|
halign=Gtk.Align.START,
|
||||||
|
wrap=True,
|
||||||
|
wrap_mode=Pango.WrapMode.CHAR,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -213,6 +217,9 @@ class CartridgesWindow(Adw.ApplicationWindow):
|
|||||||
def __init__(self, **kwargs: Any) -> None:
|
def __init__(self, **kwargs: Any) -> None:
|
||||||
super().__init__(**kwargs)
|
super().__init__(**kwargs)
|
||||||
|
|
||||||
|
if platform == "darwin":
|
||||||
|
self.sidebar_navigation_page.set_title("")
|
||||||
|
|
||||||
self.details_view.set_measure_overlay(self.details_view_toolbar_view, True)
|
self.details_view.set_measure_overlay(self.details_view_toolbar_view, True)
|
||||||
self.details_view.set_clip_overlay(self.details_view_toolbar_view, False)
|
self.details_view.set_clip_overlay(self.details_view_toolbar_view, False)
|
||||||
|
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ template $CartridgesWindow: Adw.ApplicationWindow {
|
|||||||
sidebar-width-fraction: .2;
|
sidebar-width-fraction: .2;
|
||||||
|
|
||||||
[sidebar]
|
[sidebar]
|
||||||
Adw.NavigationPage {
|
Adw.NavigationPage sidebar_navigation_page {
|
||||||
title: _("Cartridges");
|
title: _("Cartridges");
|
||||||
|
|
||||||
Adw.ToolbarView {
|
Adw.ToolbarView {
|
||||||
@@ -94,6 +94,8 @@ template $CartridgesWindow: Adw.ApplicationWindow {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ScrolledWindow {
|
ScrolledWindow {
|
||||||
|
hscrollbar-policy: never;
|
||||||
|
|
||||||
ListBox sidebar {
|
ListBox sidebar {
|
||||||
Box all_games_row_box {
|
Box all_games_row_box {
|
||||||
margin-top: 12;
|
margin-top: 12;
|
||||||
@@ -109,6 +111,8 @@ template $CartridgesWindow: Adw.ApplicationWindow {
|
|||||||
Label {
|
Label {
|
||||||
halign: start;
|
halign: start;
|
||||||
label: _("All Games");
|
label: _("All Games");
|
||||||
|
wrap: true;
|
||||||
|
wrap-mode: char;
|
||||||
}
|
}
|
||||||
|
|
||||||
Label all_games_no_label {
|
Label all_games_no_label {
|
||||||
@@ -135,6 +139,8 @@ template $CartridgesWindow: Adw.ApplicationWindow {
|
|||||||
halign: start;
|
halign: start;
|
||||||
label: _("Added");
|
label: _("Added");
|
||||||
margin-end: 6;
|
margin-end: 6;
|
||||||
|
wrap: true;
|
||||||
|
wrap-mode: char;
|
||||||
}
|
}
|
||||||
|
|
||||||
Label added_games_no_label {
|
Label added_games_no_label {
|
||||||
@@ -175,15 +181,11 @@ template $CartridgesWindow: Adw.ApplicationWindow {
|
|||||||
[top]
|
[top]
|
||||||
Adw.HeaderBar header_bar {
|
Adw.HeaderBar header_bar {
|
||||||
[start]
|
[start]
|
||||||
Revealer {
|
Button show_sidebar_button {
|
||||||
transition-type: slide_right;
|
icon-name: "sidebar-show-symbolic";
|
||||||
reveal-child: bind overlay_split_view.show-sidebar inverted;
|
action-name: "win.show_sidebar";
|
||||||
|
tooltip-text: _("Toggle Sidebar");
|
||||||
Button show_sidebar_button {
|
visible: bind overlay_split_view.show-sidebar inverted;
|
||||||
icon-name: "sidebar-show-symbolic";
|
|
||||||
action-name: "win.show_sidebar";
|
|
||||||
tooltip-text: _("Toggle Sidebar");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[start]
|
[start]
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
scalable_dir = join_paths('hicolor', 'scalable', 'apps')
|
scalable_dir = join_paths('hicolor', 'scalable', 'apps')
|
||||||
install_data(
|
install_data(
|
||||||
join_paths(scalable_dir, ('@0@.svg').format(app_id)),
|
join_paths(scalable_dir, ('@0@.svg').format(app_id)),
|
||||||
install_dir: join_paths(get_option('datadir'), 'icons', scalable_dir)
|
install_dir: join_paths(get_option('datadir'), 'icons', scalable_dir),
|
||||||
)
|
)
|
||||||
|
|
||||||
symbolic_dir = join_paths('hicolor', 'symbolic', 'apps')
|
symbolic_dir = join_paths('hicolor', 'symbolic', 'apps')
|
||||||
install_data(
|
install_data(
|
||||||
join_paths(symbolic_dir, ('@0@-symbolic.svg').format(app_id)),
|
join_paths(symbolic_dir, ('@0@-symbolic.svg').format(app_id)),
|
||||||
install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir)
|
install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir),
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,20 +1,28 @@
|
|||||||
blueprints = custom_target('blueprints',
|
blueprints = custom_target(
|
||||||
|
'blueprints',
|
||||||
input: files(
|
input: files(
|
||||||
'gtk/help-overlay.blp',
|
'gtk/details-dialog.blp',
|
||||||
'gtk/window.blp',
|
|
||||||
'gtk/game.blp',
|
'gtk/game.blp',
|
||||||
|
'gtk/help-overlay.blp',
|
||||||
'gtk/preferences.blp',
|
'gtk/preferences.blp',
|
||||||
'gtk/details-dialog.blp'
|
'gtk/window.blp',
|
||||||
),
|
),
|
||||||
output: '.',
|
output: '.',
|
||||||
command: [find_program('blueprint-compiler'), 'batch-compile', '@OUTPUT@', '@CURRENT_SOURCE_DIR@', '@INPUT@'],
|
command: [
|
||||||
|
find_program('blueprint-compiler'),
|
||||||
|
'batch-compile',
|
||||||
|
'@OUTPUT@',
|
||||||
|
'@CURRENT_SOURCE_DIR@',
|
||||||
|
'@INPUT@',
|
||||||
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
gnome.compile_resources('cartridges',
|
gnome.compile_resources(
|
||||||
|
'cartridges',
|
||||||
configure_file(
|
configure_file(
|
||||||
input: 'cartridges.gresource.xml.in',
|
input: 'cartridges.gresource.xml.in',
|
||||||
output: 'cartridges.gresource.xml',
|
output: 'cartridges.gresource.xml',
|
||||||
configuration: conf
|
configuration: conf,
|
||||||
),
|
),
|
||||||
gresource_bundle: true,
|
gresource_bundle: true,
|
||||||
install: true,
|
install: true,
|
||||||
@@ -22,27 +30,26 @@ gnome.compile_resources('cartridges',
|
|||||||
dependencies: blueprints,
|
dependencies: blueprints,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
if host_machine.system() == 'windows'
|
if host_machine.system() == 'windows'
|
||||||
desktop_file = configure_file(
|
desktop_file = configure_file(
|
||||||
input: 'page.kramo.Cartridges.desktop.in',
|
input: 'page.kramo.Cartridges.desktop.in',
|
||||||
output: app_id + '.desktop.in',
|
output: app_id + '.desktop.in',
|
||||||
configuration: conf,
|
configuration: conf,
|
||||||
install: true,
|
install: true,
|
||||||
install_dir: join_paths(get_option('datadir'), 'applications')
|
install_dir: join_paths(get_option('datadir'), 'applications'),
|
||||||
)
|
)
|
||||||
else
|
else
|
||||||
desktop_file = i18n.merge_file(
|
desktop_file = i18n.merge_file(
|
||||||
input: configure_file(
|
input: configure_file(
|
||||||
input: 'page.kramo.Cartridges.desktop.in',
|
input: 'page.kramo.Cartridges.desktop.in',
|
||||||
output: app_id + '.desktop.in',
|
output: app_id + '.desktop.in',
|
||||||
configuration: conf
|
configuration: conf,
|
||||||
),
|
),
|
||||||
output: app_id + '.desktop',
|
output: app_id + '.desktop',
|
||||||
type: 'desktop',
|
type: 'desktop',
|
||||||
po_dir: '../po',
|
po_dir: '../po',
|
||||||
install: true,
|
install: true,
|
||||||
install_dir: join_paths(get_option('datadir'), 'applications')
|
install_dir: join_paths(get_option('datadir'), 'applications'),
|
||||||
)
|
)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -59,29 +66,30 @@ if host_machine.system() == 'windows'
|
|||||||
output: app_id + '.metainfo.xml',
|
output: app_id + '.metainfo.xml',
|
||||||
configuration: conf,
|
configuration: conf,
|
||||||
install: true,
|
install: true,
|
||||||
install_dir: join_paths(get_option('datadir'), 'metainfo')
|
install_dir: join_paths(get_option('datadir'), 'metainfo'),
|
||||||
)
|
)
|
||||||
else
|
else
|
||||||
appstream_file = i18n.merge_file(
|
appstream_file = i18n.merge_file(
|
||||||
input: configure_file(
|
input: configure_file(
|
||||||
input: 'page.kramo.Cartridges.metainfo.xml.in',
|
input: 'page.kramo.Cartridges.metainfo.xml.in',
|
||||||
output: app_id + '.metainfo.xml.in',
|
output: app_id + '.metainfo.xml.in',
|
||||||
configuration: conf
|
configuration: conf,
|
||||||
),
|
),
|
||||||
output: app_id + '.metainfo.xml',
|
output: app_id + '.metainfo.xml',
|
||||||
po_dir: '../po',
|
po_dir: '../po',
|
||||||
install: true,
|
install: true,
|
||||||
install_dir: join_paths(get_option('datadir'), 'metainfo')
|
install_dir: join_paths(get_option('datadir'), 'metainfo'),
|
||||||
)
|
)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if host_machine.system() != 'windows'
|
if host_machine.system() != 'windows'
|
||||||
appstreamcli = find_program('appstreamcli', required: false)
|
appstreamcli = find_program('appstreamcli', required: false)
|
||||||
if appstreamcli.found()
|
if appstreamcli.found()
|
||||||
test('Validate appstream file',
|
test(
|
||||||
|
'Validate appstream file',
|
||||||
appstreamcli,
|
appstreamcli,
|
||||||
args: ['validate', '--no-net', '--explain', appstream_file],
|
args: ['validate', '--no-net', '--explain', appstream_file],
|
||||||
workdir: meson.current_build_dir()
|
workdir: meson.current_build_dir(),
|
||||||
)
|
)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
@@ -90,16 +98,18 @@ install_data(
|
|||||||
configure_file(
|
configure_file(
|
||||||
input: 'page.kramo.Cartridges.gschema.xml.in',
|
input: 'page.kramo.Cartridges.gschema.xml.in',
|
||||||
output: app_id + '.gschema.xml',
|
output: app_id + '.gschema.xml',
|
||||||
configuration: conf
|
configuration: conf,
|
||||||
),
|
),
|
||||||
install_dir: join_paths(get_option('datadir'), 'glib-2.0/schemas')
|
install_dir: join_paths(get_option('datadir'), 'glib-2.0/schemas'),
|
||||||
)
|
)
|
||||||
|
|
||||||
compile_schemas = find_program('glib-compile-schemas', required: false)
|
compile_schemas = find_program('glib-compile-schemas', required: false)
|
||||||
if compile_schemas.found()
|
if compile_schemas.found()
|
||||||
test('Validate schema file',
|
test(
|
||||||
compile_schemas,
|
'Validate schema file',
|
||||||
args: ['--strict', '--dry-run', meson.current_source_dir()])
|
compile_schemas,
|
||||||
|
args: ['--strict', '--dry-run', meson.current_source_dir()],
|
||||||
|
)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
subdir('icons')
|
subdir('icons')
|
||||||
|
|||||||
@@ -54,6 +54,14 @@
|
|||||||
</screenshots>
|
</screenshots>
|
||||||
<content_rating type="oars-1.1" />
|
<content_rating type="oars-1.1" />
|
||||||
<releases>
|
<releases>
|
||||||
|
<release version="2.9" date="2024-07-10">
|
||||||
|
<description translate="no">
|
||||||
|
<ul>
|
||||||
|
<li>Cartridges is now available on macOS! You can download it from GitHub.</li>
|
||||||
|
<li>Updated translations</li>
|
||||||
|
</ul>
|
||||||
|
</description>
|
||||||
|
</release>
|
||||||
<release version="2.8.5" date="2024-05-25">
|
<release version="2.8.5" date="2024-05-25">
|
||||||
<description translate="no">
|
<description translate="no">
|
||||||
<ul>
|
<ul>
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ Stored as a Unix time stamp.
|
|||||||
|
|
||||||
The executable to run when launching a game.
|
The executable to run when launching a game.
|
||||||
|
|
||||||
If the source has a URL handler, using that is preferred. In that case, the value should be `"xdg-open url://example/url"` for Linux and `"start url://example/url"` for Windows.
|
If the source has a URL handler, using that is preferred. In that case, the value should be `"xdg-open url://example/url"` for Linux, `"start url://example/url"` for Windows and `"open url://example/url"` for macOS.
|
||||||
|
|
||||||
Stored as either a string (preferred) or an argument vector to be passed to the shell through [subprocess.Popen](https://docs.python.org/3/library/subprocess.html#popen-constructor).
|
Stored as either a string (preferred) or an argument vector to be passed to the shell through [subprocess.Popen](https://docs.python.org/3/library/subprocess.html#popen-constructor).
|
||||||
|
|
||||||
|
|||||||
20
meson.build
20
meson.build
@@ -1,7 +1,11 @@
|
|||||||
project('cartridges',
|
project(
|
||||||
version: '2.8.5',
|
'cartridges',
|
||||||
meson_version: '>= 0.59.0',
|
version: '2.9',
|
||||||
default_options: [ 'warning_level=2', 'werror=false', ],
|
meson_version: '>= 0.59.0',
|
||||||
|
default_options: [
|
||||||
|
'warning_level=2',
|
||||||
|
'werror=false',
|
||||||
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
# Translations are broken on Windows for multiple reasons
|
# Translations are broken on Windows for multiple reasons
|
||||||
@@ -23,7 +27,7 @@ profile = get_option('profile')
|
|||||||
if profile == 'development'
|
if profile == 'development'
|
||||||
app_id = 'page.kramo.Cartridges.Devel'
|
app_id = 'page.kramo.Cartridges.Devel'
|
||||||
prefix = '/page/kramo/Cartridges/Devel'
|
prefix = '/page/kramo/Cartridges/Devel'
|
||||||
elif profile == 'release'
|
elif profile == 'release'
|
||||||
app_id = 'page.kramo.Cartridges'
|
app_id = 'page.kramo.Cartridges'
|
||||||
prefix = '/page/kramo/Cartridges'
|
prefix = '/page/kramo/Cartridges'
|
||||||
endif
|
endif
|
||||||
@@ -44,14 +48,14 @@ subdir('data')
|
|||||||
subdir('cartridges')
|
subdir('cartridges')
|
||||||
|
|
||||||
if host_machine.system() == 'windows'
|
if host_machine.system() == 'windows'
|
||||||
subdir('windows')
|
subdir('build-aux/windows')
|
||||||
else
|
else
|
||||||
subdir('search-provider')
|
subdir('search-provider')
|
||||||
subdir('po')
|
subdir('po')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
gnome.post_install(
|
gnome.post_install(
|
||||||
glib_compile_schemas: true,
|
glib_compile_schemas: true,
|
||||||
gtk_update_icon_cache: true,
|
gtk_update_icon_cache: true,
|
||||||
update_desktop_database: true,
|
update_desktop_database: true,
|
||||||
)
|
)
|
||||||
|
|||||||
31
po/cs.po
31
po/cs.po
@@ -1,13 +1,13 @@
|
|||||||
# SOME DESCRIPTIVE TITLE.
|
# SOME DESCRIPTIVE TITLE.
|
||||||
# Copyright (C) YEAR kramo
|
# Copyright (C) YEAR kramo
|
||||||
# This file is distributed under the same license as the Cartridges package.
|
# This file is distributed under the same license as the Cartridges package.
|
||||||
# foo expert <deferred_water346@simplelogin.com>, 2023.
|
# foo expert <deferred_water346@simplelogin.com>, 2023, 2024.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Cartridges\n"
|
"Project-Id-Version: Cartridges\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2024-04-14 12:48+0200\n"
|
"POT-Creation-Date: 2024-04-14 12:48+0200\n"
|
||||||
"PO-Revision-Date: 2023-09-24 16:04+0000\n"
|
"PO-Revision-Date: 2024-06-28 07:09+0000\n"
|
||||||
"Last-Translator: foo expert <deferred_water346@simplelogin.com>\n"
|
"Last-Translator: foo expert <deferred_water346@simplelogin.com>\n"
|
||||||
"Language-Team: Czech <https://hosted.weblate.org/projects/cartridges/"
|
"Language-Team: Czech <https://hosted.weblate.org/projects/cartridges/"
|
||||||
"cartridges/cs/>\n"
|
"cartridges/cs/>\n"
|
||||||
@@ -15,8 +15,8 @@ msgstr ""
|
|||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
"Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2);\n"
|
||||||
"X-Generator: Weblate 5.1-dev\n"
|
"X-Generator: Weblate 5.7-dev\n"
|
||||||
|
|
||||||
#: data/page.kramo.Cartridges.desktop.in:3
|
#: data/page.kramo.Cartridges.desktop.in:3
|
||||||
#: data/page.kramo.Cartridges.metainfo.xml.in:9
|
#: data/page.kramo.Cartridges.metainfo.xml.in:9
|
||||||
@@ -276,15 +276,13 @@ msgstr "Flatpak"
|
|||||||
|
|
||||||
#. The location of the system-wide data directory
|
#. The location of the system-wide data directory
|
||||||
#: data/gtk/preferences.blp:351
|
#: data/gtk/preferences.blp:351
|
||||||
#, fuzzy
|
|
||||||
msgid "System Location"
|
msgid "System Location"
|
||||||
msgstr "Nastavit umístění"
|
msgstr "Systémové umístění"
|
||||||
|
|
||||||
#. The location of the user-specific data directory
|
#. The location of the user-specific data directory
|
||||||
#: data/gtk/preferences.blp:369
|
#: data/gtk/preferences.blp:369
|
||||||
#, fuzzy
|
|
||||||
msgid "User Location"
|
msgid "User Location"
|
||||||
msgstr "Nastavit umístění"
|
msgstr "Uživatelské umístění"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:386
|
#: data/gtk/preferences.blp:386
|
||||||
msgid "Import Game Launchers"
|
msgid "Import Game Launchers"
|
||||||
@@ -323,17 +321,16 @@ msgid "Prefer Animated Images"
|
|||||||
msgstr "Upřednostnit animované obrázky"
|
msgstr "Upřednostnit animované obrázky"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:433
|
#: data/gtk/preferences.blp:433
|
||||||
#, fuzzy
|
|
||||||
msgid "Update Covers"
|
msgid "Update Covers"
|
||||||
msgstr "Odstranit obal"
|
msgstr "Aktualizovat obálky"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:434
|
#: data/gtk/preferences.blp:434
|
||||||
msgid "Fetch covers for games already in your library"
|
msgid "Fetch covers for games already in your library"
|
||||||
msgstr ""
|
msgstr "Najít obálky pro hry ve vaší knihovně"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:439
|
#: data/gtk/preferences.blp:439
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr ""
|
msgstr "Aktualizovat"
|
||||||
|
|
||||||
#: data/gtk/window.blp:6 data/gtk/window.blp:14
|
#: data/gtk/window.blp:6 data/gtk/window.blp:14
|
||||||
msgid "No Games Found"
|
msgid "No Games Found"
|
||||||
@@ -417,15 +414,15 @@ msgstr "O Kazetách"
|
|||||||
|
|
||||||
#: data/gtk/window.blp:561
|
#: data/gtk/window.blp:561
|
||||||
msgid "IGDB"
|
msgid "IGDB"
|
||||||
msgstr ""
|
msgstr "IGDB"
|
||||||
|
|
||||||
#: data/gtk/window.blp:563
|
#: data/gtk/window.blp:563
|
||||||
msgid "ProtonDB"
|
msgid "ProtonDB"
|
||||||
msgstr ""
|
msgstr "ProtonDB"
|
||||||
|
|
||||||
#: data/gtk/window.blp:565
|
#: data/gtk/window.blp:565
|
||||||
msgid "HowLongToBeat"
|
msgid "HowLongToBeat"
|
||||||
msgstr ""
|
msgstr "HowLongToBeat"
|
||||||
|
|
||||||
#. The variable is the title of the game
|
#. The variable is the title of the game
|
||||||
#: cartridges/main.py:205 cartridges/game.py:125
|
#: cartridges/main.py:205 cartridges/game.py:125
|
||||||
@@ -553,11 +550,11 @@ msgstr ""
|
|||||||
|
|
||||||
#: cartridges/preferences.py:196
|
#: cartridges/preferences.py:196
|
||||||
msgid "Downloading covers…"
|
msgid "Downloading covers…"
|
||||||
msgstr ""
|
msgstr "Stahování obálek…"
|
||||||
|
|
||||||
#: cartridges/preferences.py:215
|
#: cartridges/preferences.py:215
|
||||||
msgid "Covers updated"
|
msgid "Covers updated"
|
||||||
msgstr ""
|
msgstr "Obálky aktualizovány"
|
||||||
|
|
||||||
#: cartridges/preferences.py:360
|
#: cartridges/preferences.py:360
|
||||||
msgid "Installation Not Found"
|
msgid "Installation Not Found"
|
||||||
|
|||||||
@@ -7,19 +7,19 @@ configure_file(
|
|||||||
input: 'cartridges-search-provider.in',
|
input: 'cartridges-search-provider.in',
|
||||||
output: 'cartridges-search-provider',
|
output: 'cartridges-search-provider',
|
||||||
configuration: conf,
|
configuration: conf,
|
||||||
install_dir: libexecdir
|
install_dir: libexecdir,
|
||||||
)
|
)
|
||||||
|
|
||||||
configure_file(
|
configure_file(
|
||||||
input: 'page.kramo.Cartridges.SearchProvider.service.in',
|
input: 'page.kramo.Cartridges.SearchProvider.service.in',
|
||||||
output: app_id + '.SearchProvider.service',
|
output: app_id + '.SearchProvider.service',
|
||||||
configuration: conf,
|
configuration: conf,
|
||||||
install_dir: service_dir
|
install_dir: service_dir,
|
||||||
)
|
)
|
||||||
|
|
||||||
configure_file(
|
configure_file(
|
||||||
input: 'page.kramo.Cartridges.SearchProvider.ini',
|
input: 'page.kramo.Cartridges.SearchProvider.ini',
|
||||||
output: app_id + '.SearchProvider.ini',
|
output: app_id + '.SearchProvider.ini',
|
||||||
configuration: conf,
|
configuration: conf,
|
||||||
install_dir: serarch_provider_dir
|
install_dir: serarch_provider_dir,
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user