Compare commits
8 Commits
v2.9.2
...
Blakyrin/m
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
76cb913be7 | ||
|
|
0a50072e2c | ||
|
|
e5287c9d3f | ||
|
|
22a755c2e4 | ||
|
|
239420148a | ||
|
|
35acb56a62 | ||
|
|
adacdefdb9 | ||
|
|
7367e40cb3 |
2
.github/workflows/publish-release.yml
vendored
2
.github/workflows/publish-release.yml
vendored
@@ -38,7 +38,7 @@ 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.6
|
uses: softprops/action-gh-release@v2.0.8
|
||||||
with:
|
with:
|
||||||
files: |
|
files: |
|
||||||
Windows Installer/Cartridges Windows.exe
|
Windows Installer/Cartridges Windows.exe
|
||||||
|
|||||||
@@ -17,6 +17,8 @@
|
|||||||
#
|
#
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
# pyright: reportAssignmentType=none
|
||||||
|
|
||||||
import shlex
|
import shlex
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from sys import platform
|
from sys import platform
|
||||||
@@ -40,26 +42,26 @@ from cartridges.utils.save_cover import convert_cover, save_cover
|
|||||||
class DetailsDialog(Adw.Dialog):
|
class DetailsDialog(Adw.Dialog):
|
||||||
__gtype_name__ = "DetailsDialog"
|
__gtype_name__ = "DetailsDialog"
|
||||||
|
|
||||||
cover_overlay = Gtk.Template.Child()
|
cover_overlay: Gtk.Overlay = Gtk.Template.Child()
|
||||||
cover = Gtk.Template.Child()
|
cover: Gtk.Picture = Gtk.Template.Child()
|
||||||
cover_button_edit = Gtk.Template.Child()
|
cover_button_edit: Gtk.Button = Gtk.Template.Child()
|
||||||
cover_button_delete_revealer = Gtk.Template.Child()
|
cover_button_delete_revealer: Gtk.Revealer = Gtk.Template.Child()
|
||||||
cover_button_delete = Gtk.Template.Child()
|
cover_button_delete: Gtk.Button = Gtk.Template.Child()
|
||||||
spinner = Gtk.Template.Child()
|
spinner: Gtk.Spinner = Gtk.Template.Child()
|
||||||
|
|
||||||
name = Gtk.Template.Child()
|
name: Adw.EntryRow = Gtk.Template.Child()
|
||||||
developer = Gtk.Template.Child()
|
developer: Adw.EntryRow = Gtk.Template.Child()
|
||||||
executable = Gtk.Template.Child()
|
executable: Adw.EntryRow = Gtk.Template.Child()
|
||||||
|
|
||||||
exec_info_label = Gtk.Template.Child()
|
exec_info_label: Gtk.Label = Gtk.Template.Child()
|
||||||
exec_info_popover = Gtk.Template.Child()
|
exec_info_popover: Gtk.Popover = Gtk.Template.Child()
|
||||||
file_chooser_button = Gtk.Template.Child()
|
file_chooser_button: Gtk.Button = Gtk.Template.Child()
|
||||||
|
|
||||||
apply_button = Gtk.Template.Child()
|
apply_button: Gtk.Button = Gtk.Template.Child()
|
||||||
|
|
||||||
cover_changed: bool = False
|
cover_changed: bool = False
|
||||||
|
|
||||||
is_open = False
|
is_open: bool = False
|
||||||
|
|
||||||
def __init__(self, game: Optional[Game] = None, **kwargs: Any):
|
def __init__(self, game: Optional[Game] = None, **kwargs: Any):
|
||||||
super().__init__(**kwargs)
|
super().__init__(**kwargs)
|
||||||
@@ -68,7 +70,7 @@ class DetailsDialog(Adw.Dialog):
|
|||||||
self.__class__.is_open = True
|
self.__class__.is_open = True
|
||||||
self.connect("closed", lambda *_: self.set_is_open(False))
|
self.connect("closed", lambda *_: self.set_is_open(False))
|
||||||
|
|
||||||
self.game: Game = game
|
self.game: Optional[Game] = game
|
||||||
self.game_cover: GameCover = GameCover({self.cover})
|
self.game_cover: GameCover = GameCover({self.cover})
|
||||||
|
|
||||||
if self.game:
|
if self.game:
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ from cartridges.importer.bottles_source import BottlesSource
|
|||||||
from cartridges.importer.desktop_source import DesktopSource
|
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.importer import Importer
|
from cartridges.importer.importer import Importer # yo dawg
|
||||||
from cartridges.importer.itch_source import ItchSource
|
from cartridges.importer.itch_source import ItchSource
|
||||||
from cartridges.importer.legendary_source import LegendarySource
|
from cartridges.importer.legendary_source import LegendarySource
|
||||||
from cartridges.importer.lutris_source import LutrisSource
|
from cartridges.importer.lutris_source import LutrisSource
|
||||||
@@ -399,7 +399,11 @@ 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]}",
|
||||||
tuple(s.replace("<primary>", "<meta>") for s in action[1]),
|
(
|
||||||
|
tuple(s.replace("<primary>", "<meta>") for s in action[1])
|
||||||
|
if sys.platform == "darwin"
|
||||||
|
else action[1]
|
||||||
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
scope.add_action(simple_action)
|
scope.add_action(simple_action)
|
||||||
|
|||||||
@@ -17,6 +17,8 @@
|
|||||||
#
|
#
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
# pyright: reportAssignmentType=none
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
import re
|
import re
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
@@ -48,74 +50,74 @@ from cartridges.utils.create_dialog import create_dialog
|
|||||||
class CartridgesPreferences(Adw.PreferencesDialog):
|
class CartridgesPreferences(Adw.PreferencesDialog):
|
||||||
__gtype_name__ = "CartridgesPreferences"
|
__gtype_name__ = "CartridgesPreferences"
|
||||||
|
|
||||||
general_page = Gtk.Template.Child()
|
general_page: Adw.PreferencesPage = Gtk.Template.Child()
|
||||||
import_page = Gtk.Template.Child()
|
import_page: Adw.PreferencesPage = Gtk.Template.Child()
|
||||||
sgdb_page = Gtk.Template.Child()
|
sgdb_page: Adw.PreferencesPage = Gtk.Template.Child()
|
||||||
|
|
||||||
sources_group = Gtk.Template.Child()
|
sources_group: Adw.PreferencesGroup = Gtk.Template.Child()
|
||||||
|
|
||||||
exit_after_launch_switch = Gtk.Template.Child()
|
exit_after_launch_switch: Adw.SwitchRow = Gtk.Template.Child()
|
||||||
cover_launches_game_switch = Gtk.Template.Child()
|
cover_launches_game_switch: Adw.SwitchRow = Gtk.Template.Child()
|
||||||
high_quality_images_switch = Gtk.Template.Child()
|
high_quality_images_switch: Adw.SwitchRow = Gtk.Template.Child()
|
||||||
|
|
||||||
remove_missing_switch = Gtk.Template.Child()
|
remove_missing_switch: Adw.SwitchRow = Gtk.Template.Child()
|
||||||
|
|
||||||
steam_expander_row = Gtk.Template.Child()
|
steam_expander_row: Adw.ExpanderRow = Gtk.Template.Child()
|
||||||
steam_data_action_row = Gtk.Template.Child()
|
steam_data_action_row: Adw.ActionRow = Gtk.Template.Child()
|
||||||
steam_data_file_chooser_button = Gtk.Template.Child()
|
steam_data_file_chooser_button: Gtk.Button = Gtk.Template.Child()
|
||||||
|
|
||||||
lutris_expander_row = Gtk.Template.Child()
|
lutris_expander_row: Adw.ExpanderRowClass = Gtk.Template.Child()
|
||||||
lutris_data_action_row = Gtk.Template.Child()
|
lutris_data_action_row: Adw.ActionRow = Gtk.Template.Child()
|
||||||
lutris_data_file_chooser_button = Gtk.Template.Child()
|
lutris_data_file_chooser_button: Gtk.Button = Gtk.Template.Child()
|
||||||
lutris_import_steam_switch = Gtk.Template.Child()
|
lutris_import_steam_switch: Adw.SwitchRow = Gtk.Template.Child()
|
||||||
lutris_import_flatpak_switch = Gtk.Template.Child()
|
lutris_import_flatpak_switch: Adw.SwitchRow = Gtk.Template.Child()
|
||||||
|
|
||||||
heroic_expander_row = Gtk.Template.Child()
|
heroic_expander_row: Adw.ExpanderRow = Gtk.Template.Child()
|
||||||
heroic_config_action_row = Gtk.Template.Child()
|
heroic_config_action_row: Adw.ActionRow = Gtk.Template.Child()
|
||||||
heroic_config_file_chooser_button = Gtk.Template.Child()
|
heroic_config_file_chooser_button: Gtk.Button = Gtk.Template.Child()
|
||||||
heroic_import_epic_switch = Gtk.Template.Child()
|
heroic_import_epic_switch: Adw.SwitchRow = Gtk.Template.Child()
|
||||||
heroic_import_gog_switch = Gtk.Template.Child()
|
heroic_import_gog_switch: Adw.SwitchRow = Gtk.Template.Child()
|
||||||
heroic_import_amazon_switch = Gtk.Template.Child()
|
heroic_import_amazon_switch: Adw.SwitchRow = Gtk.Template.Child()
|
||||||
heroic_import_sideload_switch = Gtk.Template.Child()
|
heroic_import_sideload_switch: Adw.SwitchRow = Gtk.Template.Child()
|
||||||
|
|
||||||
bottles_expander_row = Gtk.Template.Child()
|
bottles_expander_row: Adw.ExpanderRow = Gtk.Template.Child()
|
||||||
bottles_data_action_row = Gtk.Template.Child()
|
bottles_data_action_row: Adw.ActionRow = Gtk.Template.Child()
|
||||||
bottles_data_file_chooser_button = Gtk.Template.Child()
|
bottles_data_file_chooser_button: Gtk.Button = Gtk.Template.Child()
|
||||||
|
|
||||||
itch_expander_row = Gtk.Template.Child()
|
itch_expander_row: Adw.ExpanderRow = Gtk.Template.Child()
|
||||||
itch_config_action_row = Gtk.Template.Child()
|
itch_config_action_row: Adw.ActionRow = Gtk.Template.Child()
|
||||||
itch_config_file_chooser_button = Gtk.Template.Child()
|
itch_config_file_chooser_button: Gtk.Button = Gtk.Template.Child()
|
||||||
|
|
||||||
legendary_expander_row = Gtk.Template.Child()
|
legendary_expander_row: Adw.ExpanderRow = Gtk.Template.Child()
|
||||||
legendary_config_action_row = Gtk.Template.Child()
|
legendary_config_action_row: Adw.ActionRow = Gtk.Template.Child()
|
||||||
legendary_config_file_chooser_button = Gtk.Template.Child()
|
legendary_config_file_chooser_button: Gtk.Button = Gtk.Template.Child()
|
||||||
|
|
||||||
retroarch_expander_row = Gtk.Template.Child()
|
retroarch_expander_row: Adw.ExpanderRow = Gtk.Template.Child()
|
||||||
retroarch_config_action_row = Gtk.Template.Child()
|
retroarch_config_action_row: Adw.ActionRow = Gtk.Template.Child()
|
||||||
retroarch_config_file_chooser_button = Gtk.Template.Child()
|
retroarch_config_file_chooser_button: Gtk.Button = Gtk.Template.Child()
|
||||||
|
|
||||||
flatpak_expander_row = Gtk.Template.Child()
|
flatpak_expander_row: Adw.ExpanderRow = Gtk.Template.Child()
|
||||||
flatpak_system_data_action_row = Gtk.Template.Child()
|
flatpak_system_data_action_row: Adw.ActionRow = Gtk.Template.Child()
|
||||||
flatpak_system_data_file_chooser_button = Gtk.Template.Child()
|
flatpak_system_data_file_chooser_button: Gtk.Button = Gtk.Template.Child()
|
||||||
flatpak_user_data_action_row = Gtk.Template.Child()
|
flatpak_user_data_action_row: Adw.ActionRow = Gtk.Template.Child()
|
||||||
flatpak_user_data_file_chooser_button = Gtk.Template.Child()
|
flatpak_user_data_file_chooser_button: Gtk.Button = Gtk.Template.Child()
|
||||||
flatpak_import_launchers_switch = Gtk.Template.Child()
|
flatpak_import_launchers_switch: Adw.SwitchRow = Gtk.Template.Child()
|
||||||
|
|
||||||
desktop_switch = Gtk.Template.Child()
|
desktop_switch: Adw.SwitchRow = Gtk.Template.Child()
|
||||||
|
|
||||||
sgdb_key_group = Gtk.Template.Child()
|
sgdb_key_group: Adw.PreferencesGroup = Gtk.Template.Child()
|
||||||
sgdb_key_entry_row = Gtk.Template.Child()
|
sgdb_key_entry_row: Adw.EntryRow = Gtk.Template.Child()
|
||||||
sgdb_switch = Gtk.Template.Child()
|
sgdb_switch: Adw.SwitchRow = Gtk.Template.Child()
|
||||||
sgdb_prefer_switch = Gtk.Template.Child()
|
sgdb_prefer_switch: Adw.SwitchRow = Gtk.Template.Child()
|
||||||
sgdb_animated_switch = Gtk.Template.Child()
|
sgdb_animated_switch: Adw.SwitchRow = Gtk.Template.Child()
|
||||||
sgdb_fetch_button = Gtk.Template.Child()
|
sgdb_fetch_button: Gtk.Button = Gtk.Template.Child()
|
||||||
sgdb_stack = Gtk.Template.Child()
|
sgdb_stack: Gtk.Stack = Gtk.Template.Child()
|
||||||
sgdb_spinner = Gtk.Template.Child()
|
sgdb_spinner: Gtk.Spinner = Gtk.Template.Child()
|
||||||
|
|
||||||
danger_zone_group = Gtk.Template.Child()
|
danger_zone_group: Adw.PreferencesGroup = Gtk.Template.Child()
|
||||||
remove_all_games_list_box = Gtk.Template.Child()
|
remove_all_games_list_box: Gtk.ListBox = Gtk.Template.Child()
|
||||||
reset_list_box = Gtk.Template.Child()
|
reset_list_box: Gtk.ListBox = Gtk.Template.Child()
|
||||||
reset_group = Gtk.Template.Child()
|
reset_group: Adw.PreferencesGroup = Gtk.Template.Child()
|
||||||
|
|
||||||
removed_games: set[Game] = set()
|
removed_games: set[Game] = set()
|
||||||
warning_menu_buttons: dict = {}
|
warning_menu_buttons: dict = {}
|
||||||
@@ -280,7 +282,7 @@ class CartridgesPreferences(Adw.PreferencesDialog):
|
|||||||
) -> None:
|
) -> None:
|
||||||
self.file_chooser.select_folder(shared.win, None, callback, callback_data)
|
self.file_chooser.select_folder(shared.win, None, callback, callback_data)
|
||||||
|
|
||||||
def undo_remove_all(self, *_args: Any) -> None:
|
def undo_remove_all(self, *_args: Any) -> bool:
|
||||||
shared.win.get_application().state = shared.AppState.UNDO_REMOVE_ALL_GAMES
|
shared.win.get_application().state = shared.AppState.UNDO_REMOVE_ALL_GAMES
|
||||||
for game in self.removed_games:
|
for game in self.removed_games:
|
||||||
game.removed = False
|
game.removed = False
|
||||||
@@ -292,6 +294,8 @@ class CartridgesPreferences(Adw.PreferencesDialog):
|
|||||||
shared.win.get_application().state = shared.AppState.DEFAULT
|
shared.win.get_application().state = shared.AppState.DEFAULT
|
||||||
shared.win.create_source_rows()
|
shared.win.create_source_rows()
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
def remove_all_games(self, *_args: Any) -> None:
|
def remove_all_games(self, *_args: Any) -> None:
|
||||||
shared.win.get_application().state = shared.AppState.REMOVE_ALL_GAMES
|
shared.win.get_application().state = shared.AppState.REMOVE_ALL_GAMES
|
||||||
shared.win.row_selected(None, shared.win.all_games_row_box.get_parent())
|
shared.win.row_selected(None, shared.win.all_games_row_box.get_parent())
|
||||||
|
|||||||
78
cartridges/shared.pyi
Normal file
78
cartridges/shared.pyi
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
# shared.pyi
|
||||||
|
#
|
||||||
|
# Copyright 2024 kramo
|
||||||
|
#
|
||||||
|
# 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
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
from pathlib import Path
|
||||||
|
from typing import Optional
|
||||||
|
|
||||||
|
from gi.repository import Gio
|
||||||
|
|
||||||
|
from cartridges.importer.importer import Importer
|
||||||
|
from cartridges.store.store import Store
|
||||||
|
from cartridges.window import CartridgesWindow
|
||||||
|
|
||||||
|
|
||||||
|
class AppState:
|
||||||
|
DEFAULT: int
|
||||||
|
LOAD_FROM_DISK: int
|
||||||
|
IMPORT: int
|
||||||
|
REMOVE_ALL_GAMES: int
|
||||||
|
UNDO_REMOVE_ALL_GAMES: int
|
||||||
|
|
||||||
|
|
||||||
|
APP_ID: str
|
||||||
|
VERSION: str
|
||||||
|
PREFIX: str
|
||||||
|
PROFILE: str
|
||||||
|
TIFF_COMPRESSION: str
|
||||||
|
SPEC_VERSION: float
|
||||||
|
|
||||||
|
schema: Gio.Settings
|
||||||
|
state_schema: Gio.Settings
|
||||||
|
|
||||||
|
home: Path
|
||||||
|
|
||||||
|
data_dir: Path
|
||||||
|
host_data_dir: Path
|
||||||
|
|
||||||
|
config_dir: Path
|
||||||
|
host_config_dir: Path
|
||||||
|
|
||||||
|
cache_dir: Path
|
||||||
|
host_cache_dir: Path
|
||||||
|
|
||||||
|
flatpak_dir: Path
|
||||||
|
|
||||||
|
games_dir: Path
|
||||||
|
covers_dir: Path
|
||||||
|
|
||||||
|
appdata_dir: Path
|
||||||
|
local_appdata_dir: Path
|
||||||
|
programfiles32_dir: Path
|
||||||
|
|
||||||
|
app_support_dir: Path
|
||||||
|
|
||||||
|
|
||||||
|
scale_factor: int
|
||||||
|
image_size: int
|
||||||
|
|
||||||
|
win: Optional[CartridgesWindow]
|
||||||
|
importer: Optional[Importer]
|
||||||
|
import_time: Optional[int]
|
||||||
|
store = Optional[Store]
|
||||||
|
log_files: list[Path]
|
||||||
@@ -33,7 +33,7 @@ def create_dialog(
|
|||||||
dialog.add_response("dismiss", _("Dismiss"))
|
dialog.add_response("dismiss", _("Dismiss"))
|
||||||
|
|
||||||
if extra_option:
|
if extra_option:
|
||||||
dialog.add_response(extra_option, _(extra_label))
|
dialog.add_response(extra_option, extra_label or "")
|
||||||
|
|
||||||
dialog.choose(win)
|
dialog.choose(win)
|
||||||
return dialog
|
return dialog
|
||||||
|
|||||||
@@ -17,8 +17,10 @@
|
|||||||
#
|
#
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
from typing import Any, Optional
|
# pyright: reportAssignmentType=none
|
||||||
|
|
||||||
from sys import platform
|
from sys import platform
|
||||||
|
from typing import Any, Optional
|
||||||
|
|
||||||
from gi.repository import Adw, Gio, GLib, Gtk, Pango
|
from gi.repository import Adw, Gio, GLib, Gtk, Pango
|
||||||
|
|
||||||
@@ -32,52 +34,52 @@ from cartridges.utils.relative_date import relative_date
|
|||||||
class CartridgesWindow(Adw.ApplicationWindow):
|
class CartridgesWindow(Adw.ApplicationWindow):
|
||||||
__gtype_name__ = "CartridgesWindow"
|
__gtype_name__ = "CartridgesWindow"
|
||||||
|
|
||||||
overlay_split_view = Gtk.Template.Child()
|
overlay_split_view: Adw.OverlaySplitView = Gtk.Template.Child()
|
||||||
navigation_view = Gtk.Template.Child()
|
navigation_view: Adw.NavigationView = Gtk.Template.Child()
|
||||||
sidebar_navigation_page = Gtk.Template.Child()
|
sidebar_navigation_page: Adw.NavigationPage = Gtk.Template.Child()
|
||||||
sidebar = Gtk.Template.Child()
|
sidebar: Gtk.ListBox = Gtk.Template.Child()
|
||||||
all_games_row_box = Gtk.Template.Child()
|
all_games_row_box: Gtk.Box = Gtk.Template.Child()
|
||||||
all_games_no_label = Gtk.Template.Child()
|
all_games_no_label: Gtk.Label = Gtk.Template.Child()
|
||||||
added_row_box = Gtk.Template.Child()
|
added_row_box: Gtk.Box = Gtk.Template.Child()
|
||||||
added_games_no_label = Gtk.Template.Child()
|
added_games_no_label: Gtk.Label = Gtk.Template.Child()
|
||||||
toast_overlay = Gtk.Template.Child()
|
toast_overlay: Adw.ToastOverlay = Gtk.Template.Child()
|
||||||
primary_menu_button = Gtk.Template.Child()
|
primary_menu_button: Gtk.MenuButton = Gtk.Template.Child()
|
||||||
show_sidebar_button = Gtk.Template.Child()
|
show_sidebar_button: Gtk.Button = Gtk.Template.Child()
|
||||||
details_view = Gtk.Template.Child()
|
details_view: Gtk.Overlay = Gtk.Template.Child()
|
||||||
library_page = Gtk.Template.Child()
|
library_page: Adw.NavigationPage = Gtk.Template.Child()
|
||||||
library_view = Gtk.Template.Child()
|
library_view: Adw.ToolbarView = Gtk.Template.Child()
|
||||||
library = Gtk.Template.Child()
|
library: Gtk.FlowBox = Gtk.Template.Child()
|
||||||
scrolledwindow = Gtk.Template.Child()
|
scrolledwindow: Gtk.ScrolledWindow = Gtk.Template.Child()
|
||||||
library_overlay = Gtk.Template.Child()
|
library_overlay: Gtk.Overlay = Gtk.Template.Child()
|
||||||
notice_empty = Gtk.Template.Child()
|
notice_empty: Adw.StatusPage = Gtk.Template.Child()
|
||||||
notice_no_results = Gtk.Template.Child()
|
notice_no_results: Adw.StatusPage = Gtk.Template.Child()
|
||||||
search_bar = Gtk.Template.Child()
|
search_bar: Gtk.SearchBar = Gtk.Template.Child()
|
||||||
search_entry = Gtk.Template.Child()
|
search_entry: Gtk.SearchEntry = Gtk.Template.Child()
|
||||||
search_button = Gtk.Template.Child()
|
search_button: Gtk.ToggleButton = Gtk.Template.Child()
|
||||||
|
|
||||||
details_page = Gtk.Template.Child()
|
details_page: Adw.NavigationPage = Gtk.Template.Child()
|
||||||
details_view_toolbar_view = Gtk.Template.Child()
|
details_view_toolbar_view: Adw.ToolbarView = Gtk.Template.Child()
|
||||||
details_view_cover = Gtk.Template.Child()
|
details_view_cover: Gtk.Picture = Gtk.Template.Child()
|
||||||
details_view_spinner = Gtk.Template.Child()
|
details_view_spinner: Gtk.Spinner = Gtk.Template.Child()
|
||||||
details_view_title = Gtk.Template.Child()
|
details_view_title: Gtk.Label = Gtk.Template.Child()
|
||||||
details_view_blurred_cover = Gtk.Template.Child()
|
details_view_blurred_cover: Gtk.Picture = Gtk.Template.Child()
|
||||||
details_view_play_button = Gtk.Template.Child()
|
details_view_play_button: Gtk.Button = Gtk.Template.Child()
|
||||||
details_view_developer = Gtk.Template.Child()
|
details_view_developer: Gtk.Label = Gtk.Template.Child()
|
||||||
details_view_added = Gtk.Template.Child()
|
details_view_added: Gtk.ShortcutLabel = Gtk.Template.Child()
|
||||||
details_view_last_played = Gtk.Template.Child()
|
details_view_last_played: Gtk.Label = Gtk.Template.Child()
|
||||||
details_view_hide_button = Gtk.Template.Child()
|
details_view_hide_button: Gtk.Button = Gtk.Template.Child()
|
||||||
|
|
||||||
hidden_library_page = Gtk.Template.Child()
|
hidden_library_page: Adw.NavigationPage = Gtk.Template.Child()
|
||||||
hidden_primary_menu_button = Gtk.Template.Child()
|
hidden_primary_menu_button: Gtk.MenuButton = Gtk.Template.Child()
|
||||||
hidden_library = Gtk.Template.Child()
|
hidden_library: Gtk.FlowBox = Gtk.Template.Child()
|
||||||
hidden_library_view = Gtk.Template.Child()
|
hidden_library_view: Adw.ToolbarView = Gtk.Template.Child()
|
||||||
hidden_scrolledwindow = Gtk.Template.Child()
|
hidden_scrolledwindow: Gtk.ScrolledWindow = Gtk.Template.Child()
|
||||||
hidden_library_overlay = Gtk.Template.Child()
|
hidden_library_overlay: Gtk.Overlay = Gtk.Template.Child()
|
||||||
hidden_notice_empty = Gtk.Template.Child()
|
hidden_notice_empty: Adw.StatusPage = Gtk.Template.Child()
|
||||||
hidden_notice_no_results = Gtk.Template.Child()
|
hidden_notice_no_results: Adw.StatusPage = Gtk.Template.Child()
|
||||||
hidden_search_bar = Gtk.Template.Child()
|
hidden_search_bar: Gtk.SearchBar = Gtk.Template.Child()
|
||||||
hidden_search_entry = Gtk.Template.Child()
|
hidden_search_entry: Gtk.SearchEntry = Gtk.Template.Child()
|
||||||
hidden_search_button = Gtk.Template.Child()
|
hidden_search_button: Gtk.ToggleButton = Gtk.Template.Child()
|
||||||
|
|
||||||
game_covers: dict = {}
|
game_covers: dict = {}
|
||||||
toasts: dict = {}
|
toasts: dict = {}
|
||||||
|
|||||||
@@ -54,11 +54,10 @@
|
|||||||
</screenshots>
|
</screenshots>
|
||||||
<content_rating type="oars-1.1" />
|
<content_rating type="oars-1.1" />
|
||||||
<releases>
|
<releases>
|
||||||
<release version="2.9.2" date="2024-07-11">
|
<release version="2.9.3" date="2024-07-18">
|
||||||
<description translate="no">
|
<description translate="no">
|
||||||
<ul>
|
<ul>
|
||||||
<li>Cartridges now utilizes the menu bar on macOS</li>
|
<li>Fixed incorrect modifiers being used for keyboard shortcuts</li>
|
||||||
<li>Various bug fixes</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</description>
|
</description>
|
||||||
</release>
|
</release>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
project(
|
project(
|
||||||
'cartridges',
|
'cartridges',
|
||||||
version: '2.9.2',
|
version: '2.9.3',
|
||||||
meson_version: '>= 0.59.0',
|
meson_version: '>= 0.59.0',
|
||||||
default_options: [
|
default_options: [
|
||||||
'warning_level=2',
|
'warning_level=2',
|
||||||
|
|||||||
58
po/fa.po
58
po/fa.po
@@ -3,13 +3,14 @@
|
|||||||
# This file is distributed under the same license as the Cartridges package.
|
# This file is distributed under the same license as the Cartridges package.
|
||||||
# سید حسین موسوی فرد <shmf1385@protonmail.com>, 2023.
|
# سید حسین موسوی فرد <shmf1385@protonmail.com>, 2023.
|
||||||
# Danial Behzadi <dani.behzi@ubuntu.com>, 2023.
|
# Danial Behzadi <dani.behzi@ubuntu.com>, 2023.
|
||||||
|
# آوید <avds+git@disroot.org>, 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-07-14 20:09+0000\n"
|
||||||
"Last-Translator: Danial Behzadi <dani.behzi@ubuntu.com>\n"
|
"Last-Translator: آوید <avds+git@disroot.org>\n"
|
||||||
"Language-Team: Persian <https://hosted.weblate.org/projects/cartridges/"
|
"Language-Team: Persian <https://hosted.weblate.org/projects/cartridges/"
|
||||||
"cartridges/fa/>\n"
|
"cartridges/fa/>\n"
|
||||||
"Language: fa\n"
|
"Language: fa\n"
|
||||||
@@ -17,7 +18,7 @@ msgstr ""
|
|||||||
"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=2; plural=n > 1;\n"
|
"Plural-Forms: nplurals=2; plural=n > 1;\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
|
||||||
@@ -74,7 +75,7 @@ msgstr "لغو"
|
|||||||
|
|
||||||
#: data/gtk/details-dialog.blp:46
|
#: data/gtk/details-dialog.blp:46
|
||||||
msgid "New Cover"
|
msgid "New Cover"
|
||||||
msgstr "طرج جلد جدید"
|
msgstr "طرح جلد جدید"
|
||||||
|
|
||||||
#: data/gtk/details-dialog.blp:65
|
#: data/gtk/details-dialog.blp:65
|
||||||
msgid "Delete Cover"
|
msgid "Delete Cover"
|
||||||
@@ -98,7 +99,7 @@ msgstr "گزینش پرونده"
|
|||||||
|
|
||||||
#: data/gtk/details-dialog.blp:120
|
#: data/gtk/details-dialog.blp:120
|
||||||
msgid "More Info"
|
msgid "More Info"
|
||||||
msgstr "اطّلاعات بیشتر"
|
msgstr "اطلاعات بیشتر"
|
||||||
|
|
||||||
#: data/gtk/game.blp:102 data/gtk/game.blp:110 data/gtk/window.blp:443
|
#: data/gtk/game.blp:102 data/gtk/game.blp:110 data/gtk/window.blp:443
|
||||||
msgid "Edit"
|
msgid "Edit"
|
||||||
@@ -127,7 +128,7 @@ msgstr "جستوجو"
|
|||||||
|
|
||||||
#: data/gtk/help-overlay.blp:24 data/gtk/window.blp:543
|
#: data/gtk/help-overlay.blp:24 data/gtk/window.blp:543
|
||||||
msgid "Keyboard Shortcuts"
|
msgid "Keyboard Shortcuts"
|
||||||
msgstr "میانبرهیا صفحهکلید"
|
msgstr "میانبرهای صفحهکلید"
|
||||||
|
|
||||||
#: data/gtk/help-overlay.blp:29 cartridges/game.py:103
|
#: data/gtk/help-overlay.blp:29 cartridges/game.py:103
|
||||||
#: cartridges/preferences.py:134 cartridges/importer/importer.py:394
|
#: cartridges/preferences.py:134 cartridges/importer/importer.py:394
|
||||||
@@ -182,7 +183,7 @@ msgstr "طرح جلد بازی را اجرا میکند"
|
|||||||
|
|
||||||
#: data/gtk/preferences.blp:21
|
#: data/gtk/preferences.blp:21
|
||||||
msgid "Swaps the behavior of the cover image and the play button"
|
msgid "Swaps the behavior of the cover image and the play button"
|
||||||
msgstr "تعویض رفتار تصویر جلد و دکمهٔ بازی کردن"
|
msgstr "تغییر رفتار تصویر جلد و دکمهٔ بازی کردن"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:26 cartridges/details_dialog.py:82
|
#: data/gtk/preferences.blp:26 cartridges/details_dialog.py:82
|
||||||
msgid "Images"
|
msgid "Images"
|
||||||
@@ -194,7 +195,7 @@ msgstr "عکسهای با کیفیت بالا"
|
|||||||
|
|
||||||
#: data/gtk/preferences.blp:30
|
#: data/gtk/preferences.blp:30
|
||||||
msgid "Save game covers losslessly at the cost of storage"
|
msgid "Save game covers losslessly at the cost of storage"
|
||||||
msgstr "ذخیرهٔ طرح جلدهای بدون اتلاف به فیمت ذخیرهسازی"
|
msgstr "ذخیرهٔ طرح جلدهای بدون اتلاف به قیمت ذخیرهسازی"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:35
|
#: data/gtk/preferences.blp:35
|
||||||
msgid "Danger Zone"
|
msgid "Danger Zone"
|
||||||
@@ -206,7 +207,7 @@ msgstr "حذف کردن همهٔ بازیها"
|
|||||||
|
|
||||||
#: data/gtk/preferences.blp:120
|
#: data/gtk/preferences.blp:120
|
||||||
msgid "Remove Uninstalled Games"
|
msgid "Remove Uninstalled Games"
|
||||||
msgstr "برداشن بازیهای نصب نشده"
|
msgstr "برداشتن بازیهای نصبنشده"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:125
|
#: data/gtk/preferences.blp:125
|
||||||
msgid "Sources"
|
msgid "Sources"
|
||||||
@@ -254,7 +255,7 @@ msgstr "درونریزی بازیهای آمازون"
|
|||||||
|
|
||||||
#: data/gtk/preferences.blp:228
|
#: data/gtk/preferences.blp:228
|
||||||
msgid "Import Sideloaded Games"
|
msgid "Import Sideloaded Games"
|
||||||
msgstr "درونریزی بازیهای نصب شده"
|
msgstr "درونریزی بازیهای نصبشده"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:233 cartridges/importer/bottles_source.py:86
|
#: data/gtk/preferences.blp:233 cartridges/importer/bottles_source.py:86
|
||||||
msgid "Bottles"
|
msgid "Bottles"
|
||||||
@@ -278,15 +279,13 @@ msgstr "فلتپک"
|
|||||||
|
|
||||||
#. 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 "تنظیم مکان"
|
msgstr "مکان سامانه"
|
||||||
|
|
||||||
#. 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 "تنظیم مکان"
|
msgstr "مکان کاربر"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:386
|
#: data/gtk/preferences.blp:386
|
||||||
msgid "Import Game Launchers"
|
msgid "Import Game Launchers"
|
||||||
@@ -322,20 +321,19 @@ msgstr "ترجیح به تصویرهای رسمی"
|
|||||||
|
|
||||||
#: data/gtk/preferences.blp:427
|
#: data/gtk/preferences.blp:427
|
||||||
msgid "Prefer Animated Images"
|
msgid "Prefer Animated Images"
|
||||||
msgstr "ترچیح تصویرهای پویا"
|
msgstr "ترجیح تصویرهای پویا"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:433
|
#: data/gtk/preferences.blp:433
|
||||||
#, fuzzy
|
|
||||||
msgid "Update Covers"
|
msgid "Update Covers"
|
||||||
msgstr "حذف طرح جلد"
|
msgstr "بهروزرسانی طرح جلد"
|
||||||
|
|
||||||
#: 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 "دریافت طرح جلد بازیهای کنونی کتابخانهتان"
|
||||||
|
|
||||||
#: data/gtk/preferences.blp:439
|
#: data/gtk/preferences.blp:439
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr ""
|
msgstr "بهروزرسانی"
|
||||||
|
|
||||||
#: 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"
|
||||||
@@ -359,7 +357,7 @@ msgstr "بدون بازی نهفته"
|
|||||||
|
|
||||||
#: data/gtk/window.blp:41
|
#: data/gtk/window.blp:41
|
||||||
msgid "Games you hide will appear here"
|
msgid "Games you hide will appear here"
|
||||||
msgstr "بازیهایی که پنهان میکنید، اینجا ظاهر خواهند شد"
|
msgstr "بازیهایی که پنهان میکنید، اینجا نمایان خواهند شد"
|
||||||
|
|
||||||
#: data/gtk/window.blp:76 data/gtk/window.blp:111 cartridges/main.py:228
|
#: data/gtk/window.blp:76 data/gtk/window.blp:111 cartridges/main.py:228
|
||||||
msgid "All Games"
|
msgid "All Games"
|
||||||
@@ -407,7 +405,7 @@ msgstr "قدیمیترین"
|
|||||||
|
|
||||||
#: data/gtk/window.blp:528
|
#: data/gtk/window.blp:528
|
||||||
msgid "Last Played"
|
msgid "Last Played"
|
||||||
msgstr "آخرین بازی شده"
|
msgstr "آخرین بازیشده"
|
||||||
|
|
||||||
#: data/gtk/window.blp:535
|
#: data/gtk/window.blp:535
|
||||||
msgid "Show Hidden"
|
msgid "Show Hidden"
|
||||||
@@ -419,15 +417,15 @@ msgstr "دربارهٔ کارتریجها"
|
|||||||
|
|
||||||
#: 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
|
||||||
@@ -451,7 +449,7 @@ msgstr "هرگز"
|
|||||||
#. The variable is the date when the game was last played
|
#. The variable is the date when the game was last played
|
||||||
#: cartridges/window.py:380
|
#: cartridges/window.py:380
|
||||||
msgid "Last played: {}"
|
msgid "Last played: {}"
|
||||||
msgstr "آخرین بازی شده: {}"
|
msgstr "آخرین بازیشده: {}"
|
||||||
|
|
||||||
#: cartridges/details_dialog.py:73
|
#: cartridges/details_dialog.py:73
|
||||||
msgid "Apply"
|
msgid "Apply"
|
||||||
@@ -505,7 +503,7 @@ msgstr ""
|
|||||||
"\n"
|
"\n"
|
||||||
"<tt>\"{}\"</tt>\n"
|
"<tt>\"{}\"</tt>\n"
|
||||||
"\n"
|
"\n"
|
||||||
"برای گشودن پروندهٔ {}با برنامهٔ پیشگزیده:\n"
|
"برای گشودن پروندهٔ {} با برنامهٔ پیشگزیده:\n"
|
||||||
"\n"
|
"\n"
|
||||||
"<tt>{} \"{}\"</tt>\n"
|
"<tt>{} \"{}\"</tt>\n"
|
||||||
"\n"
|
"\n"
|
||||||
@@ -530,7 +528,7 @@ msgstr "نتوانست ترجیحات را اعمال کند"
|
|||||||
#. The variable is the title of the game
|
#. The variable is the title of the game
|
||||||
#: cartridges/game.py:139
|
#: cartridges/game.py:139
|
||||||
msgid "{} hidden"
|
msgid "{} hidden"
|
||||||
msgstr "{}نهفته"
|
msgstr "{} نهفته"
|
||||||
|
|
||||||
#: cartridges/game.py:139
|
#: cartridges/game.py:139
|
||||||
msgid "{} unhidden"
|
msgid "{} unhidden"
|
||||||
@@ -555,11 +553,11 @@ msgstr ""
|
|||||||
|
|
||||||
#: cartridges/preferences.py:196
|
#: cartridges/preferences.py:196
|
||||||
msgid "Downloading covers…"
|
msgid "Downloading covers…"
|
||||||
msgstr ""
|
msgstr "در حال دریافت طرحهای جلد…"
|
||||||
|
|
||||||
#: cartridges/preferences.py:215
|
#: cartridges/preferences.py:215
|
||||||
msgid "Covers updated"
|
msgid "Covers updated"
|
||||||
msgstr ""
|
msgstr "طرحهای جلد بهروزرسانی شد"
|
||||||
|
|
||||||
#: cartridges/preferences.py:360
|
#: cartridges/preferences.py:360
|
||||||
msgid "Installation Not Found"
|
msgid "Installation Not Found"
|
||||||
@@ -599,7 +597,7 @@ msgstr "هیچ بازی جدیدی پیدا نشد"
|
|||||||
|
|
||||||
#: cartridges/importer/importer.py:379
|
#: cartridges/importer/importer.py:379
|
||||||
msgid "1 game imported"
|
msgid "1 game imported"
|
||||||
msgstr "۱ بازی درونریخته شد"
|
msgstr "یک بازی درونریخته شد"
|
||||||
|
|
||||||
#. The variable is the number of games
|
#. The variable is the number of games
|
||||||
#: cartridges/importer/importer.py:383
|
#: cartridges/importer/importer.py:383
|
||||||
|
|||||||
4
pyrightconfig.json
Normal file
4
pyrightconfig.json
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"reportRedeclaration": "none",
|
||||||
|
"reportMissingModuleSource": "none"
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user