3 Commits

Author SHA1 Message Date
131f0f2f58 chore(localization): update
All checks were successful
Check Translations / check-translations (push) Successful in 14s
Code and build check / Check code (push) Successful in 1m38s
Code and build check / Build with uv (push) Successful in 51s
Fetch Data / build (push) Successful in 1m2s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-07-01 00:16:17 +05:00
e1e3092870 feat(dialogs): rewrite Preview widget
All checks were successful
Code and build check / Check code (pull_request) Successful in 1m38s
Code and build check / Build with uv (pull_request) Successful in 50s
2025-07-01 00:13:08 +07:00
8902751d09 fix: border-radius COVER_LABEL_STYLE 2025-06-30 20:36:12 +07:00
9 changed files with 70 additions and 53 deletions

View File

@@ -3,7 +3,7 @@ import tempfile
from typing import cast, TYPE_CHECKING from typing import cast, TYPE_CHECKING
from PySide6.QtGui import QPixmap, QIcon from PySide6.QtGui import QPixmap, QIcon
from PySide6.QtWidgets import ( from PySide6.QtWidgets import (
QDialog, QLineEdit, QFormLayout, QHBoxLayout, QLabel, QVBoxLayout, QListWidget, QScrollArea, QWidget, QListWidgetItem QDialog, QLineEdit, QFormLayout, QHBoxLayout, QLabel, QVBoxLayout, QListWidget, QScrollArea, QWidget, QListWidgetItem, QSizePolicy
) )
from PySide6.QtCore import Qt, QObject, Signal, QMimeDatabase, QTimer from PySide6.QtCore import Qt, QObject, Signal, QMimeDatabase, QTimer
from icoextract import IconExtractor, IconExtractorError from icoextract import IconExtractor, IconExtractorError
@@ -424,6 +424,7 @@ class AddGameDialog(QDialog):
self.setWindowTitle(_("Edit Game") if edit_mode else _("Add Game")) self.setWindowTitle(_("Edit Game") if edit_mode else _("Add Game"))
self.setModal(True) self.setModal(True)
self.setFixedWidth(600) self.setFixedWidth(600)
self.setFixedHeight(600)
self.setStyleSheet(self.theme.MAIN_WINDOW_STYLE + self.theme.MESSAGE_BOX_STYLE) self.setStyleSheet(self.theme.MAIN_WINDOW_STYLE + self.theme.MESSAGE_BOX_STYLE)
layout = QFormLayout(self) layout = QFormLayout(self)
@@ -437,13 +438,13 @@ class AddGameDialog(QDialog):
if game_name: if game_name:
self.nameEdit.setText(game_name) self.nameEdit.setText(game_name)
name_label = QLabel(_("Game Name:")) name_label = QLabel(_("Game Name:"))
name_label.setStyleSheet(self.theme.PARAMS_TITLE_STYLE + " QLabel { color: #ffffff; font-size: 14px; font-weight: bold; }") name_label.setStyleSheet(self.theme.PARAMS_TITLE_STYLE)
layout.addRow(name_label, self.nameEdit) layout.addRow(name_label, self.nameEdit)
# Exe path # Exe path
exe_label = QLabel(_("Path to Executable:")) exe_label = QLabel(_("Path to Executable:"))
exe_label.setStyleSheet( exe_label.setStyleSheet(
self.theme.PARAMS_TITLE_STYLE + " QLabel { color: #ffffff; font-size: 14px; font-weight: bold; }") self.theme.PARAMS_TITLE_STYLE)
self.exeEdit = QLineEdit(self) self.exeEdit = QLineEdit(self)
self.exeEdit.setStyleSheet(self.theme.ADDGAME_INPUT_STYLE) self.exeEdit.setStyleSheet(self.theme.ADDGAME_INPUT_STYLE)
@@ -465,8 +466,7 @@ class AddGameDialog(QDialog):
# Cover path # Cover path
cover_label = QLabel(_("Custom Cover:")) cover_label = QLabel(_("Custom Cover:"))
cover_label.setStyleSheet( cover_label.setStyleSheet(self.theme.PARAMS_TITLE_STYLE)
self.theme.PARAMS_TITLE_STYLE + " QLabel { color: #ffffff; font-size: 14px; font-weight: bold; }")
self.coverEdit = QLineEdit(self) self.coverEdit = QLineEdit(self)
self.coverEdit.setStyleSheet(self.theme.ADDGAME_INPUT_STYLE) self.coverEdit.setStyleSheet(self.theme.ADDGAME_INPUT_STYLE)
@@ -486,15 +486,23 @@ class AddGameDialog(QDialog):
# Preview # Preview
self.coverPreview = QLabel(self) self.coverPreview = QLabel(self)
self.coverPreview.setStyleSheet(self.theme.CONTENT_STYLE + " QLabel { color: #ffffff; }") self.coverPreview.setAlignment(Qt.AlignmentFlag.AlignCenter)
self.coverPreview.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Preferred)
preview_widget = QWidget(self)
preview_widget.setStyleSheet(self.theme.PREVIEW_WIDGET_STYLE)
preview_layout = QVBoxLayout(preview_widget)
preview_layout.setContentsMargins(0, 0, 0, 0)
preview_layout.setSpacing(0)
preview_label = QLabel(_("Cover Preview:")) preview_label = QLabel(_("Cover Preview:"))
preview_label.setStyleSheet(self.theme.PARAMS_TITLE_STYLE + " QLabel { color: #ffffff; font-size: 14px; font-weight: bold; }") preview_label.setStyleSheet(self.theme.PARAMS_TITLE_STYLE)
layout.addRow(preview_label, self.coverPreview) preview_layout.addWidget(preview_label, alignment=Qt.AlignmentFlag.AlignLeft)
preview_layout.addWidget(self.coverPreview, stretch=1)
layout.addRow(preview_widget)
# Dialog buttons # Dialog buttons
self.button_layout = QHBoxLayout() self.button_layout = QHBoxLayout()
self.button_layout.setSpacing(10) self.button_layout.setSpacing(10)
self.select_button = AutoSizeButton(_("Select"), icon=self.theme_manager.get_icon("apply")) self.select_button = AutoSizeButton(_("Apply"), icon=self.theme_manager.get_icon("apply"))
self.cancel_button = AutoSizeButton(_("Cancel"), icon=self.theme_manager.get_icon("cancel")) self.cancel_button = AutoSizeButton(_("Cancel"), icon=self.theme_manager.get_icon("cancel"))
self.select_button.setStyleSheet(self.theme.ACTION_BUTTON_STYLE) self.select_button.setStyleSheet(self.theme.ACTION_BUTTON_STYLE)
self.cancel_button.setStyleSheet(self.theme.ACTION_BUTTON_STYLE) self.cancel_button.setStyleSheet(self.theme.ACTION_BUTTON_STYLE)

View File

@@ -9,7 +9,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2025-06-28 09:04+0500\n" "POT-Creation-Date: 2025-07-01 00:15+0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: de_DE\n" "Language: de_DE\n"
@@ -87,9 +87,6 @@ msgstr ""
msgid "Failed to open folder: {error}" msgid "Failed to open folder: {error}"
msgstr "" msgstr ""
msgid "Select Game Installation Folder"
msgstr ""
msgid "No folder selected" msgid "No folder selected"
msgstr "" msgstr ""
@@ -250,10 +247,10 @@ msgstr ""
msgid "Game Name:" msgid "Game Name:"
msgstr "" msgstr ""
msgid "Browse..." msgid "Path to Executable:"
msgstr "" msgstr ""
msgid "Path to Executable:" msgid "Browse..."
msgstr "" msgstr ""
msgid "Custom Cover:" msgid "Custom Cover:"
@@ -262,6 +259,9 @@ msgstr ""
msgid "Cover Preview:" msgid "Cover Preview:"
msgstr "" msgstr ""
msgid "Apply"
msgstr ""
msgid "Invalid image" msgid "Invalid image"
msgstr "" msgstr ""

View File

@@ -9,7 +9,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2025-06-28 09:04+0500\n" "POT-Creation-Date: 2025-07-01 00:15+0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: es_ES\n" "Language: es_ES\n"
@@ -87,9 +87,6 @@ msgstr ""
msgid "Failed to open folder: {error}" msgid "Failed to open folder: {error}"
msgstr "" msgstr ""
msgid "Select Game Installation Folder"
msgstr ""
msgid "No folder selected" msgid "No folder selected"
msgstr "" msgstr ""
@@ -250,10 +247,10 @@ msgstr ""
msgid "Game Name:" msgid "Game Name:"
msgstr "" msgstr ""
msgid "Browse..." msgid "Path to Executable:"
msgstr "" msgstr ""
msgid "Path to Executable:" msgid "Browse..."
msgstr "" msgstr ""
msgid "Custom Cover:" msgid "Custom Cover:"
@@ -262,6 +259,9 @@ msgstr ""
msgid "Cover Preview:" msgid "Cover Preview:"
msgstr "" msgstr ""
msgid "Apply"
msgstr ""
msgid "Invalid image" msgid "Invalid image"
msgstr "" msgstr ""

View File

@@ -9,7 +9,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PortProtonQt 0.1.1\n" "Project-Id-Version: PortProtonQt 0.1.1\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2025-06-28 09:04+0500\n" "POT-Creation-Date: 2025-07-01 00:15+0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -85,9 +85,6 @@ msgstr ""
msgid "Failed to open folder: {error}" msgid "Failed to open folder: {error}"
msgstr "" msgstr ""
msgid "Select Game Installation Folder"
msgstr ""
msgid "No folder selected" msgid "No folder selected"
msgstr "" msgstr ""
@@ -248,10 +245,10 @@ msgstr ""
msgid "Game Name:" msgid "Game Name:"
msgstr "" msgstr ""
msgid "Browse..." msgid "Path to Executable:"
msgstr "" msgstr ""
msgid "Path to Executable:" msgid "Browse..."
msgstr "" msgstr ""
msgid "Custom Cover:" msgid "Custom Cover:"
@@ -260,6 +257,9 @@ msgstr ""
msgid "Cover Preview:" msgid "Cover Preview:"
msgstr "" msgstr ""
msgid "Apply"
msgstr ""
msgid "Invalid image" msgid "Invalid image"
msgstr "" msgstr ""

View File

@@ -9,18 +9,17 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2025-06-28 09:04+0500\n" "POT-Creation-Date: 2025-07-01 00:15+0500\n"
"PO-Revision-Date: 2025-06-28 09:05+0500\n" "PO-Revision-Date: 2025-07-01 00:15+0500\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: ru_RU <LL@li.org>\n"
"Language: ru_RU\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 && "
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"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%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 "
"&& (n%100<10 || n%100>=20) ? 1 : 2);\n"
"Generated-By: Babel 2.17.0\n" "Generated-By: Babel 2.17.0\n"
"X-Generator: Poedit 3.6\n"
msgid "Error" msgid "Error"
msgstr "Ошибка" msgstr "Ошибка"
@@ -73,11 +72,11 @@ msgstr "Успешно"
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"'{game_name}' was added to Steam. Please restart Steam for changes to take " "'{game_name}' was added to Steam. Please restart Steam for changes to "
"effect." "take effect."
msgstr "" msgstr ""
"'{game_name}' был(а) добавлен(а) в Steam. Пожалуйста, перезапустите Steam, " "'{game_name}' был(а) добавлен(а) в Steam. Пожалуйста, перезапустите "
"чтобы изменения вступили в силу." "Steam, чтобы изменения вступили в силу."
#, python-brace-format #, python-brace-format
msgid "Executable not found for game: {game_name}" msgid "Executable not found for game: {game_name}"
@@ -91,9 +90,6 @@ msgstr "Открыта папка для '{game_name}'"
msgid "Failed to open folder: {error}" msgid "Failed to open folder: {error}"
msgstr "Не удалось открыть папку для игры: {error}" msgstr "Не удалось открыть папку для игры: {error}"
msgid "Select Game Installation Folder"
msgstr "Выберите папку установки игры"
msgid "No folder selected" msgid "No folder selected"
msgstr "Не выбрана ни одна папка" msgstr "Не выбрана ни одна папка"
@@ -184,11 +180,11 @@ msgstr "Подтвердите удаление"
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"Are you sure you want to delete '{game_name}'? This will remove the .desktop " "Are you sure you want to delete '{game_name}'? This will remove the "
"file and custom data." ".desktop file and custom data."
msgstr "" msgstr ""
"Вы уверены, что хотите удалить '{game_name}'? Это приведёт к удалению файла ." "Вы уверены, что хотите удалить '{game_name}'? Это приведёт к удалению "
"desktop и пользовательских данных." "файла .desktop и пользовательских данных."
#, python-brace-format #, python-brace-format
msgid "Failed to delete .desktop file: {error}" msgid "Failed to delete .desktop file: {error}"
@@ -230,11 +226,11 @@ msgstr "Не удалось добавить '{game_name}' в Steam: {error}"
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"'{game_name}' was removed from Steam. Please restart Steam for changes to take " "'{game_name}' was removed from Steam. Please restart Steam for changes to"
"effect." " take effect."
msgstr "" msgstr ""
"'{game_name}' был(а) удалён(а) из Steam. Пожалуйста, перезапустите Steam, чтобы " "'{game_name}' был(а) удалён(а) из Steam. Пожалуйста, перезапустите Steam,"
"изменения вступили в силу." " чтобы изменения вступили в силу."
#, python-brace-format #, python-brace-format
msgid "Failed to remove game '{game_name}' from Steam: {error}" msgid "Failed to remove game '{game_name}' from Steam: {error}"
@@ -258,18 +254,21 @@ msgstr "Добавить игру"
msgid "Game Name:" msgid "Game Name:"
msgstr "Имя игры:" msgstr "Имя игры:"
msgid "Browse..."
msgstr "Обзор..."
msgid "Path to Executable:" msgid "Path to Executable:"
msgstr "Путь к исполняемому файлу:" msgstr "Путь к исполняемому файлу:"
msgid "Browse..."
msgstr "Обзор..."
msgid "Custom Cover:" msgid "Custom Cover:"
msgstr "Обложка:" msgstr "Обложка:"
msgid "Cover Preview:" msgid "Cover Preview:"
msgstr "Предпросмотр обложки:" msgstr "Предпросмотр обложки:"
msgid "Apply"
msgstr "Применить"
msgid "Invalid image" msgid "Invalid image"
msgstr "Недопустимое изображение" msgstr "Недопустимое изображение"
@@ -477,7 +476,8 @@ msgstr "Подтвердите удаление"
msgid "Are you sure you want to reset all settings? This action cannot be undone." msgid "Are you sure you want to reset all settings? This action cannot be undone."
msgstr "" msgstr ""
"Вы уверены, что хотите сбросить все настройки? Это действие нельзя отменить." "Вы уверены, что хотите сбросить все настройки? Это действие нельзя "
"отменить."
msgid "Settings reset. Restarting..." msgid "Settings reset. Restarting..."
msgstr "Настройки сброшены. Перезапуск..." msgstr "Настройки сброшены. Перезапуск..."
@@ -622,3 +622,4 @@ msgstr "мин."
msgid "sec." msgid "sec."
msgstr "сек." msgstr "сек."

View File

@@ -410,6 +410,14 @@ CONTENT_STYLE = f"""
}} }}
""" """
PREVIEW_WIDGET_STYLE = f"""
QWidget {{
margin-top: 3px;
background-color: {color_c};
border-radius: {border_radius_a};
}}
"""
# СТИЛЬ ОСНОВНЫХ СТРАНИЦ # СТИЛЬ ОСНОВНЫХ СТРАНИЦ
# LIBRARY_WIDGET_STYLE # LIBRARY_WIDGET_STYLE
LIBRARY_WIDGET_STYLE= """ LIBRARY_WIDGET_STYLE= """
@@ -487,7 +495,7 @@ COVER_FRAME_STYLE = f"""
""" """
# СКРУГЛЕНИЕ LABEL ПОД ОБЛОЖКУ # СКРУГЛЕНИЕ LABEL ПОД ОБЛОЖКУ
COVER_LABEL_STYLE = "border-radius: 100px;" COVER_LABEL_STYLE = f"border-radius: {border_radius_b};"
# ВИДЖЕТ ДЕТАЛЕЙ (ТЕКСТ, ОПИСАНИЕ) # ВИДЖЕТ ДЕТАЛЕЙ (ТЕКСТ, ОПИСАНИЕ)
DETAILS_WIDGET_STYLE = f"background: rgba(20,20,20,0.40); border-radius: {border_radius_b}; padding: 10px;" DETAILS_WIDGET_STYLE = f"background: rgba(20,20,20,0.40); border-radius: {border_radius_b}; padding: 10px;"