chore: update program name to PortProtonQt

Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
This commit is contained in:
2025-06-09 09:56:25 +05:00
parent 6fa145ee13
commit 61680ed97f
21 changed files with 45 additions and 46 deletions

View File

@ -60,7 +60,7 @@
- [X] Исправить частичное применение тем на лету
- [X] Исправить наложение подписей скриншотов при первом перелистывании в полноэкранном режиме
- [ ] Добавить поддержку GOG (?)
- [ ] Определиться с названием (PortProtonQt или PortProtonQT или вообще третий вариант)
- [X] Определиться с названием (PortProtonQt или PortProtonQT или вообще третий вариант)
- [ ] Добавить данные с HowLongToBeat на страницу с деталями игры (?)
- [ ] Добавить виброотдачу на геймпаде при запуске игры (?)

View File

@ -106,7 +106,7 @@ def compile_locales() -> None:
def extract_strings() -> None:
input_dir = (Path(__file__).parent.parent / "portprotonqt").resolve()
CommandLineInterface().run([
"pybabel", "extract", "--project=PortProtonQT",
"pybabel", "extract", "--project=PortProtonQt",
f"--version={_get_version()}",
"--strip-comment-tag",
"--no-location",
@ -231,7 +231,7 @@ def main(args) -> int:
return 0
if __name__ == "__main__":
parser = argparse.ArgumentParser(prog="l10n", description="Localization utility for PortProtonQT.")
parser = argparse.ArgumentParser(prog="l10n", description="Localization utility for PortProtonQt.")
parser.add_argument("--create-new", nargs='+', type=str, default=False, help="Create .po for new locales")
parser.add_argument("--update-all", action='store_true', help="Extract/update locales and update README coverage")
parser.add_argument("--spellcheck", action='store_true', help="Run spellcheck on POT and PO files")

View File

@ -7,7 +7,7 @@ def parse_args():
"""
Парсит аргументы командной строки.
"""
parser = argparse.ArgumentParser(description="PortProtonQT CLI")
parser = argparse.ArgumentParser(description="PortProtonQt CLI")
parser.add_argument(
"--fullscreen",
action="store_true",

View File

@ -10,7 +10,7 @@ _portproton_location = None
# Пути к конфигурационным файлам
CONFIG_FILE = os.path.join(
os.getenv("XDG_CONFIG_HOME", os.path.join(os.path.expanduser("~"), ".config")),
"PortProtonQT.conf"
"PortProtonQt.conf"
)
PORTPROTON_CONFIG_FILE = os.path.join(
@ -21,7 +21,7 @@ PORTPROTON_CONFIG_FILE = os.path.join(
# Пути к папкам с темами
xdg_data_home = os.getenv("XDG_DATA_HOME", os.path.join(os.path.expanduser("~"), ".local", "share"))
THEMES_DIRS = [
os.path.join(xdg_data_home, "PortProtonQT", "themes"),
os.path.join(xdg_data_home, "PortProtonQt", "themes"),
os.path.join(os.path.dirname(os.path.abspath(__file__)), "themes")
]
@ -472,14 +472,14 @@ def reset_config():
def clear_cache():
"""
Очищает кэш PortProtonQT, удаляя папку кэша.
Очищает кэш PortProtonQt, удаляя папку кэша.
"""
xdg_cache_home = os.getenv("XDG_CACHE_HOME", os.path.join(os.path.expanduser("~"), ".cache"))
cache_dir = os.path.join(xdg_cache_home, "PortProtonQT")
cache_dir = os.path.join(xdg_cache_home, "PortProtonQt")
if os.path.exists(cache_dir):
try:
shutil.rmtree(cache_dir)
logger.info("Кэш PortProtonQT удалён: %s", cache_dir)
logger.info("Кэш PortProtonQt удалён: %s", cache_dir)
except Exception as e:
logger.error("Ошибка при удалении кэша: %s", e)

View File

@ -12,7 +12,7 @@ from portprotonqt.steam_api import is_game_in_steam, add_to_steam, remove_from_s
from portprotonqt.dialogs import AddGameDialog
class ContextMenuManager:
"""Manages context menu actions for game management in PortProtonQT."""
"""Manages context menu actions for game management in PortProtonQt."""
def __init__(self, parent, portproton_location, theme, load_games_callback, update_game_grid_callback):
"""
@ -258,7 +258,7 @@ class ContextMenuManager:
"XDG_DATA_HOME",
os.path.join(os.path.expanduser("~"), ".local", "share")
)
custom_folder = os.path.join(xdg_data_home, "PortProtonQT", "custom_data", exe_name)
custom_folder = os.path.join(xdg_data_home, "PortProtonQt", "custom_data", exe_name)
if os.path.exists(custom_folder):
try:
shutil.rmtree(custom_folder)
@ -417,7 +417,7 @@ class ContextMenuManager:
"XDG_DATA_HOME",
os.path.join(os.path.expanduser("~"), ".local", "share")
)
custom_folder = os.path.join(xdg_data_home, "PortProtonQT", "custom_data", exe_name)
custom_folder = os.path.join(xdg_data_home, "PortProtonQt", "custom_data", exe_name)
os.makedirs(custom_folder, exist_ok=True)
ext = os.path.splitext(new_cover_path)[1].lower()

View File

@ -303,7 +303,7 @@ class Downloader(QObject):
local_path = os.path.join(
os.getenv("XDG_CACHE_HOME", os.path.join(os.path.expanduser("~"), ".cache")),
"PortProtonQT", "legendary_cache", "legendary"
"PortProtonQt", "legendary_cache", "legendary"
)
logger.info(f"Downloading legendary binary version {version} from {binary_url} to {local_path}")

View File

@ -22,7 +22,7 @@ def get_cache_dir() -> Path:
"XDG_CACHE_HOME",
os.path.join(os.path.expanduser("~"), ".cache")
)
cache_dir = Path(xdg_cache_home) / "PortProtonQT"
cache_dir = Path(xdg_cache_home) / "PortProtonQt"
cache_dir.mkdir(parents=True, exist_ok=True)
return cache_dir
@ -36,7 +36,7 @@ def get_egs_game_description_async(
Asynchronously fetches the game description from the Epic Games Store API.
Prioritizes GraphQL API with namespace for slug and description.
Falls back to legacy API if GraphQL provides a slug but no description.
Caches results in ~/.cache/PortProtonQT/egs_app_{app_name}.json.
Caches results in ~/.cache/PortProtonQt/egs_app_{app_name}.json.
Handles DNS resolution failures gracefully.
"""
cache_dir = get_cache_dir()
@ -423,7 +423,7 @@ def _continue_loading_egs_games(legendary_path: str, callback: Callable[[list[tu
except Exception as e:
logger.warning("Error processing metadata for %s: %s", app_name, str(e))
image_folder = os.path.join(os.getenv("XDG_CACHE_HOME", os.path.join(os.path.expanduser("~"), ".cache")), "PortProtonQT", "images")
image_folder = os.path.join(os.getenv("XDG_CACHE_HOME", os.path.join(os.path.expanduser("~"), ".cache")), "PortProtonQt", "images")
local_path = os.path.join(image_folder, f"{app_name}.jpg") if cover_url else ""
def on_description_fetched(api_description: str):

View File

@ -35,10 +35,9 @@ def load_pixmap_async(cover: str, width: int, height: int, callback: Callable[[Q
y = (scaled.height() - height) // 2
cropped = scaled.copy(x, y, width, height)
callback(cropped)
# Removed: pixmap = None (unnecessary, causes type error)
xdg_cache_home = os.getenv("XDG_CACHE_HOME", os.path.join(os.path.expanduser("~"), ".cache"))
image_folder = os.path.join(xdg_cache_home, "PortProtonQT", "images")
image_folder = os.path.join(xdg_cache_home, "PortProtonQt", "images")
os.makedirs(image_folder, exist_ok=True)
if cover and cover.startswith("https://steamcdn-a.akamaihd.net/steam/apps/"):

View File

@ -1,6 +1,6 @@
# German (Germany) translations for PortProtonQT.
# German (Germany) translations for PortProtonQt.
# Copyright (C) 2025 boria138
# This file is distributed under the same license as the PortProtonQT
# This file is distributed under the same license as the PortProtonQt
# project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
#
@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2025-06-08 22:55+0500\n"
"POT-Creation-Date: 2025-06-09 09:53+0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: de_DE\n"

View File

@ -1,6 +1,6 @@
# Spanish (Spain) translations for PortProtonQT.
# Spanish (Spain) translations for PortProtonQt.
# Copyright (C) 2025 boria138
# This file is distributed under the same license as the PortProtonQT
# This file is distributed under the same license as the PortProtonQt
# project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
#
@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2025-06-08 22:55+0500\n"
"POT-Creation-Date: 2025-06-09 09:53+0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: es_ES\n"

View File

@ -1,15 +1,15 @@
# Translations template for PortProtonQT.
# Translations template for PortProtonQt.
# Copyright (C) 2025 boria138
# This file is distributed under the same license as the PortProtonQT
# This file is distributed under the same license as the PortProtonQt
# project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PortProtonQT 0.1.1\n"
"Project-Id-Version: PortProtonQt 0.1.1\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2025-06-08 22:55+0500\n"
"POT-Creation-Date: 2025-06-09 09:53+0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -1,6 +1,6 @@
# Russian (Russia) translations for PortProtonQT.
# Russian (Russia) translations for PortProtonQt.
# Copyright (C) 2025 boria138
# This file is distributed under the same license as the PortProtonQT
# This file is distributed under the same license as the PortProtonQt
# project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
#
@ -9,9 +9,9 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2025-06-08 22:55+0500\n"
"PO-Revision-Date: 2025-06-08 22:55+0500\n"
"Last-Translator: \n"
"POT-Creation-Date: 2025-06-09 09:53+0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: ru_RU\n"
"Language-Team: ru_RU <LL@li.org>\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "

View File

@ -44,7 +44,7 @@ from datetime import datetime
logger = get_logger(__name__)
class MainWindow(QMainWindow):
"""Main window of PortProtonQT."""
"""Main window of PortProtonQt."""
settings_saved = Signal()
games_loaded = Signal(list)
update_progress = Signal(int) # Signal to update progress bar
@ -73,10 +73,10 @@ class MainWindow(QMainWindow):
self.settingsDebounceTimer.timeout.connect(self.applySettingsDelayed)
read_time_config()
# Set LEGENDARY_CONFIG_PATH to ~/.cache/PortProtonQT/legendary
# Set LEGENDARY_CONFIG_PATH to ~/.cache/PortProtonQt/legendary_cache
self.legendary_config_path = os.path.join(
os.getenv("XDG_CACHE_HOME", os.path.join(os.path.expanduser("~"), ".cache")),
"PortProtonQT", "legendary_cache"
"PortProtonQt", "legendary_cache"
)
os.makedirs(self.legendary_config_path, exist_ok=True)
os.environ["LEGENDARY_CONFIG_PATH"] = self.legendary_config_path
@ -98,7 +98,7 @@ class MainWindow(QMainWindow):
if not self.theme:
self.theme = default_styles
self.card_width = read_card_size()
self.setWindowTitle("PortProtonQT")
self.setWindowTitle("PortProtonQt")
self.setMinimumSize(800, 600)
self.games = []
@ -384,7 +384,7 @@ class MainWindow(QMainWindow):
builtin_custom_folder = os.path.join(repo_root, "portprotonqt", "custom_data")
xdg_data_home = os.getenv("XDG_DATA_HOME",
os.path.join(os.path.expanduser("~"), ".local", "share"))
user_custom_folder = os.path.join(xdg_data_home, "PortProtonQT", "custom_data")
user_custom_folder = os.path.join(xdg_data_home, "PortProtonQt", "custom_data")
os.makedirs(user_custom_folder, exist_ok=True)
builtin_cover = ""
@ -780,7 +780,7 @@ class MainWindow(QMainWindow):
os.path.join(os.path.expanduser("~"), ".local", "share"))
custom_folder = os.path.join(
xdg_data_home,
"PortProtonQT",
"PortProtonQt",
"custom_data",
exe_name
)
@ -1228,7 +1228,7 @@ class MainWindow(QMainWindow):
self.statusBar().showMessage(_("Theme '{0}' applied successfully").format(selected_theme), 3000)
xdg_data_home = os.getenv("XDG_DATA_HOME",
os.path.join(os.path.expanduser("~"), ".local", "share"))
state_file = os.path.join(xdg_data_home, "PortProtonQT", "state.txt")
state_file = os.path.join(xdg_data_home, "PortProtonQt", "state.txt")
os.makedirs(os.path.dirname(state_file), exist_ok=True)
with open(state_file, "w", encoding="utf-8") as f:
f.write("theme_tab\n")
@ -1251,7 +1251,7 @@ class MainWindow(QMainWindow):
def restore_state(self):
"""Восстанавливает состояние приложения после перезапуска."""
xdg_cache_home = os.getenv("XDG_CACHE_HOME", os.path.join(os.path.expanduser("~"), ".cache"))
state_file = os.path.join(xdg_cache_home, "PortProtonQT", "state.txt")
state_file = os.path.join(xdg_cache_home, "PortProtonQt", "state.txt")
if os.path.exists(state_file):
with open(state_file, encoding="utf-8") as f:
state = f.read().strip()

View File

@ -49,7 +49,7 @@ def decode_text(text: str) -> str:
def get_cache_dir():
"""Возвращает путь к каталогу кэша, создаёт его при необходимости."""
xdg_cache_home = os.getenv("XDG_CACHE_HOME", os.path.join(os.path.expanduser("~"), ".cache"))
cache_dir = os.path.join(xdg_cache_home, "PortProtonQT")
cache_dir = os.path.join(xdg_cache_home, "PortProtonQt")
os.makedirs(cache_dir, exist_ok=True)
return cache_dir

View File

@ -11,7 +11,7 @@ logger = get_logger(__name__)
# Папка, где располагаются все дополнительные темы
xdg_data_home = os.getenv("XDG_DATA_HOME", os.path.join(os.path.expanduser("~"), ".local", "share"))
THEMES_DIRS = [
os.path.join(xdg_data_home, "PortProtonQT", "themes"),
os.path.join(xdg_data_home, "PortProtonQt", "themes"),
os.path.join(os.path.dirname(os.path.abspath(__file__)), "themes")
]

View File

@ -1,5 +1,5 @@
[Metainfo]
author = BlackSnaker
author_link =
description = Стандартная тема PortProtonQT (светлый вариант)
description = Стандартная тема PortProtonQt (светлый вариант)
name = Light

View File

@ -1,5 +1,5 @@
[Metainfo]
author = Dervart
author_link =
description = Стандартная тема PortProtonQT (тёмный вариант)
description = Стандартная тема PortProtonQt (тёмный вариант)
name = Clean Dark

View File

@ -10,7 +10,7 @@ logger = get_logger(__name__)
def get_cache_file_path():
"""Возвращает путь к файлу кеша portproton_last_launch."""
cache_home = os.getenv("XDG_CACHE_HOME", os.path.join(os.path.expanduser("~"), ".cache"))
return os.path.join(cache_home, "PortProtonQT", "last_launch")
return os.path.join(cache_home, "PortProtonQt", "last_launch")
def save_last_launch(exe_name, launch_time):
"""