Merge branch 'main' into egs
All checks were successful
Code and build check / Check code (pull_request) Successful in 1m29s
Code and build check / Build with uv (pull_request) Successful in 48s

This commit is contained in:
2025-06-13 12:54:09 +00:00
20 changed files with 172 additions and 49 deletions

View File

@ -98,7 +98,7 @@ class AddGameDialog(QDialog):
# Game name # Game name
self.nameEdit = QLineEdit(self) self.nameEdit = QLineEdit(self)
self.nameEdit.setStyleSheet(self.theme.SEARCH_EDIT_STYLE + " QLineEdit { color: #ffffff; font-size: 14px; }") self.nameEdit.setStyleSheet(self.theme.ADDGAME_INPUT_STYLE)
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:"))
@ -107,7 +107,7 @@ class AddGameDialog(QDialog):
# Exe path # Exe path
self.exeEdit = QLineEdit(self) self.exeEdit = QLineEdit(self)
self.exeEdit.setStyleSheet(self.theme.SEARCH_EDIT_STYLE + " QLineEdit { color: #ffffff; font-size: 14px; }") self.exeEdit.setStyleSheet(self.theme.ADDGAME_INPUT_STYLE)
if exe_path: if exe_path:
self.exeEdit.setText(exe_path) self.exeEdit.setText(exe_path)
exeBrowseButton = QPushButton(_("Browse..."), self) exeBrowseButton = QPushButton(_("Browse..."), self)
@ -123,7 +123,7 @@ class AddGameDialog(QDialog):
# Cover path # Cover path
self.coverEdit = QLineEdit(self) self.coverEdit = QLineEdit(self)
self.coverEdit.setStyleSheet(self.theme.SEARCH_EDIT_STYLE + " QLineEdit { color: #ffffff; font-size: 14px; }") self.coverEdit.setStyleSheet(self.theme.ADDGAME_INPUT_STYLE)
if cover_path: if cover_path:
self.coverEdit.setText(cover_path) self.coverEdit.setText(cover_path)
coverBrowseButton = QPushButton(_("Browse..."), self) coverBrowseButton = QPushButton(_("Browse..."), self)

View File

@ -322,10 +322,16 @@ class GameCard(QFrame):
@staticmethod @staticmethod
def getAntiCheatIconFilename(status: str) -> str: def getAntiCheatIconFilename(status: str) -> str:
status = status.lower() status = status.lower()
if status in ("supported", "running"): if status in ("supported"):
return "platinum-gold" return "ac_supported"
elif status in ("denied", "planned", "broken"): elif status in ("running"):
return "broken" return "ac_running"
elif status in ("planned"):
return "ac_planned"
elif status in ("denied"):
return "ac_denied"
elif status in ("broken"):
return "ac_broken"
return "" return ""
@staticmethod @staticmethod

View File

@ -1000,6 +1000,7 @@ class MainWindow(QMainWindow):
# 6. Automatic fullscreen on gamepad connection # 6. Automatic fullscreen on gamepad connection
self.autoFullscreenGamepadCheckBox = QCheckBox(_("Auto Fullscreen on Gamepad connected")) self.autoFullscreenGamepadCheckBox = QCheckBox(_("Auto Fullscreen on Gamepad connected"))
self.autoFullscreenGamepadCheckBox.setStyleSheet(self.theme.SETTINGS_CHECKBOX_STYLE)
self.autoFullscreenGamepadCheckBox.setFocusPolicy(Qt.FocusPolicy.StrongFocus) self.autoFullscreenGamepadCheckBox.setFocusPolicy(Qt.FocusPolicy.StrongFocus)
self.autoFullscreenGamepadCheckBox.setStyleSheet(self.theme.SETTINGS_CHECKBOX_STYLE) self.autoFullscreenGamepadCheckBox.setStyleSheet(self.theme.SETTINGS_CHECKBOX_STYLE)
self.autoFullscreenGamepadTitle = QLabel(_("Auto Fullscreen on Gamepad connected:")) self.autoFullscreenGamepadTitle = QLabel(_("Auto Fullscreen on Gamepad connected:"))

View File

@ -1,10 +1,11 @@
import subprocess import subprocess
from PySide6.QtWidgets import QDialog, QVBoxLayout, QPushButton, QMessageBox from PySide6.QtWidgets import QDialog, QVBoxLayout, QPushButton, QMessageBox, QApplication, QWidget
from PySide6.QtWidgets import QApplication
from PySide6.QtCore import Qt from PySide6.QtCore import Qt
from portprotonqt.logger import get_logger from portprotonqt.logger import get_logger
import os import os
from portprotonqt.localization import _ from portprotonqt.localization import _
from portprotonqt.custom_widgets import AutoSizeButton
from portprotonqt.theme_manager import ThemeManager
logger = get_logger(__name__) logger = get_logger(__name__)
@ -16,41 +17,61 @@ class SystemOverlay(QDialog):
self.setWindowTitle(_("System Overlay")) self.setWindowTitle(_("System Overlay"))
self.setModal(True) self.setModal(True)
self.setFixedSize(400, 300) self.setFixedSize(400, 300)
self.theme_manager = ThemeManager()
self.setStyleSheet(self.theme.OVERLAY_WINDOW_STYLE)
# Убираем рамку окна
self.setWindowFlags(Qt.WindowType.FramelessWindowHint | Qt.WindowType.Dialog)
layout = QVBoxLayout(self) layout = QVBoxLayout(self)
layout.setContentsMargins(20, 20, 20, 20) layout.setContentsMargins(20, 20, 20, 20)
layout.setSpacing(10) layout.setSpacing(10)
# Reboot button # Reboot button
reboot_button = QPushButton(_("Reboot")) reboot_button = AutoSizeButton(
_("Reboot"),
icon=self.theme_manager.get_icon("reboot")
)
reboot_button.setStyleSheet(self.theme.OVERLAY_BUTTON_STYLE) reboot_button.setStyleSheet(self.theme.OVERLAY_BUTTON_STYLE)
reboot_button.setFocusPolicy(Qt.FocusPolicy.StrongFocus) reboot_button.setFocusPolicy(Qt.FocusPolicy.StrongFocus)
reboot_button.clicked.connect(self.reboot) reboot_button.clicked.connect(self.reboot)
layout.addWidget(reboot_button) layout.addWidget(reboot_button)
# Shutdown button # Shutdown button
shutdown_button = QPushButton(_("Shutdown")) shutdown_button = AutoSizeButton(
_("Shutdown"),
icon=self.theme_manager.get_icon("shutdown")
)
shutdown_button.setStyleSheet(self.theme.OVERLAY_BUTTON_STYLE) shutdown_button.setStyleSheet(self.theme.OVERLAY_BUTTON_STYLE)
shutdown_button.setFocusPolicy(Qt.FocusPolicy.StrongFocus) shutdown_button.setFocusPolicy(Qt.FocusPolicy.StrongFocus)
shutdown_button.clicked.connect(self.shutdown) shutdown_button.clicked.connect(self.shutdown)
layout.addWidget(shutdown_button) layout.addWidget(shutdown_button)
# Suspend button # Suspend button
suspend_button = QPushButton(_("Suspend")) suspend_button = AutoSizeButton(
_("Suspend"),
icon=self.theme_manager.get_icon("suspend")
)
suspend_button.setStyleSheet(self.theme.OVERLAY_BUTTON_STYLE) suspend_button.setStyleSheet(self.theme.OVERLAY_BUTTON_STYLE)
suspend_button.setFocusPolicy(Qt.FocusPolicy.StrongFocus) suspend_button.setFocusPolicy(Qt.FocusPolicy.StrongFocus)
suspend_button.clicked.connect(self.suspend) suspend_button.clicked.connect(self.suspend)
layout.addWidget(suspend_button) layout.addWidget(suspend_button)
# Exit application button # Exit application button
exit_button = QPushButton(_("Exit Application")) exit_button = AutoSizeButton(
_("Exit Application"),
icon=self.theme_manager.get_icon("exit")
)
exit_button.setStyleSheet(self.theme.OVERLAY_BUTTON_STYLE) exit_button.setStyleSheet(self.theme.OVERLAY_BUTTON_STYLE)
exit_button.setFocusPolicy(Qt.FocusPolicy.StrongFocus) exit_button.setFocusPolicy(Qt.FocusPolicy.StrongFocus)
exit_button.clicked.connect(self.exit_application) exit_button.clicked.connect(self.exit_application)
layout.addWidget(exit_button) layout.addWidget(exit_button)
# Return to Desktop button # Return to Desktop button
desktop_button = QPushButton(_("Return to Desktop")) desktop_button = AutoSizeButton(
_("Return to Desktop"),
icon=self.theme_manager.get_icon("desktop")
)
desktop_button.setStyleSheet(self.theme.OVERLAY_BUTTON_STYLE) desktop_button.setStyleSheet(self.theme.OVERLAY_BUTTON_STYLE)
desktop_button.setFocusPolicy(Qt.FocusPolicy.StrongFocus) desktop_button.setFocusPolicy(Qt.FocusPolicy.StrongFocus)
desktop_button.clicked.connect(self.return_to_desktop) desktop_button.clicked.connect(self.return_to_desktop)
@ -62,14 +83,31 @@ class SystemOverlay(QDialog):
layout.addWidget(desktop_button) layout.addWidget(desktop_button)
# Cancel button # Cancel button
cancel_button = QPushButton(_("Cancel")) cancel_button = AutoSizeButton(
_("Cancel"),
icon=self.theme_manager.get_icon("cancel")
)
cancel_button.setStyleSheet(self.theme.OVERLAY_BUTTON_STYLE) cancel_button.setStyleSheet(self.theme.OVERLAY_BUTTON_STYLE)
cancel_button.setFocusPolicy(Qt.FocusPolicy.StrongFocus) cancel_button.setFocusPolicy(Qt.FocusPolicy.StrongFocus)
cancel_button.clicked.connect(self.reject) cancel_button.clicked.connect(self.reject)
layout.addWidget(cancel_button) layout.addWidget(cancel_button)
# Set focus to the first button def showEvent(self, event):
reboot_button.setFocus() """Override showEvent to center window and set focus."""
super().showEvent(event)
# Center window relative to parent or screen
parent = self.parent()
if isinstance(parent, QWidget) and parent.isVisible():
self.move(parent.geometry().center() - self.rect().center())
else:
screen_geometry = QApplication.primaryScreen().availableGeometry()
self.move(screen_geometry.center() - self.rect().center())
# Set focus on first button
button = self.findChild(QPushButton)
if button is not None:
button.setFocus()
def reboot(self): def reboot(self):
try: try:

View File

@ -0,0 +1 @@
<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path d="m8 1c-3.8581 0-7 3.1419-7 7s3.1419 7 7 7 7-3.1419 7-7-3.1419-7-7-7zm0 1.3988c3.1014 0 5.6012 2.4998 5.6012 5.6012s-2.4998 5.6012-5.6012 5.6012-5.6012-2.4998-5.6012-5.6012 2.4998-5.6012 5.6012-5.6012zm-2.1002 3.501a0.70007 0.70007 0 0 0-0.69938 0.69938 0.70007 0.70007 0 0 0 0.69938 0.70144h0.0062a0.70007 0.70007 0 0 0 0.70144-0.70144 0.70007 0.70007 0 0 0-0.70144-0.69938zm4.2004 0a0.70007 0.70007 0 0 0-0.69938 0.69938 0.70007 0.70007 0 0 0 0.69938 0.70144h0.0062a0.70007 0.70007 0 0 0 0.70144-0.70144 0.70007 0.70007 0 0 0-0.70144-0.69938zm-2.1002 2.9452c-0.81784 0-1.6354 0.31214-2.2499 0.93935a0.70007 0.70007 0 0 0 0.01026 0.99062 0.70007 0.70007 0 0 0 0.98857-0.01026c0.69244-0.70672 1.8098-0.70672 2.5022 0a0.70007 0.70007 0 0 0 0.98857 0.01026 0.70007 0.70007 0 0 0 0.01026-0.99062c-0.61461-0.62721-1.4321-0.93935-2.2499-0.93935z" stop-color="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.0501"/></svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -0,0 +1 @@
<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path d="m8.4694 1c-0.38007 0-0.76931 0.12326-1.0795 0.39899-0.24769 0.22016-0.42499 0.54342-0.48662 0.90798-0.11341-0.02303-0.22892-0.03356-0.34306-0.03356-0.38003 0-0.76934 0.12329-1.0795 0.39899s-0.51086 0.71412-0.51086 1.1914v3.2534c-0.58842-0.47053-1.4218-0.53407-2.0788-0.13983-0.73301 0.43947-0.98585 1.3992-0.56679 2.1441 1.1968 2.1273 1.8635 3.2982 2.1124 3.6804h-0.0019c0.04201 0.06466 0.08444 0.12946 0.12678 0.1939 0.78928 1.1985 2.1179 1.8996 3.5443 1.9595a0.63645 0.63645 0 0 0 0.04475 0.044746h1.2734c2.4527 0 4.4541-2.0014 4.4541-4.4541v-5.4087c0-0.47729-0.20066-0.9175-0.51085-1.1932-0.31015-0.27573-0.69944-0.39899-1.0795-0.39899-0.11425 0-0.22955 0.010492-0.34306 0.03356-0.0619-0.36382-0.23934-0.68631-0.48662-0.90611-0.3102-0.27573-0.69944-0.39899-1.0795-0.39899-0.11414 0-0.22964 0.010534-0.34306 0.03356-0.06162-0.36456-0.23893-0.68781-0.48662-0.90798-0.3102-0.27573-0.69944-0.39899-1.0795-0.39899zm0 1.2734c0.09723 0 0.18528 0.033977 0.23305 0.076442 0.04778 0.042465 0.08576 0.081413 0.08576 0.24051v5.4106a0.63639 0.63639 0 0 0 0.63577 0.63577 0.63639 0.63639 0 0 0 0.63577-0.63577v-4.1353a0.63639 0.63639 0 0 0 0-0.00186c0-0.1591 0.038-0.19805 0.08576-0.24051 0.04778-0.042465 0.13583-0.078306 0.23305-0.078306 0.09723 0 0.18528 0.035841 0.23305 0.078306 0.04778 0.042465 0.08576 0.081413 0.08576 0.24051v4.1372a0.63639 0.63639 0 0 0 0.63577 0.63577 0.63639 0.63639 0 0 0 0.63577-0.63577v-2.8619a0.63639 0.63639 0 0 0 0-0.00186c0-0.1591 0.03799-0.19805 0.08576-0.24051 0.04777-0.042465 0.13583-0.078306 0.23305-0.078306 0.09723 0 0.18528 0.035841 0.23305 0.078306s0.08576 0.081413 0.08576 0.24051v5.4087c0 1.7649-1.4177 3.1826-3.1826 3.1826h-1.141c-1.0712 1.81e-4 -2.0676-0.53724-2.6568-1.4319-0.04114-0.06262-0.08223-0.12548-0.12305-0.18831-0.14817-0.22748-0.8766-1.4876-2.0714-3.6114-0.08788-0.1562-0.03999-0.33666 0.11373-0.42882a0.63645 0.63645 0 0 0 0.0019 0c0.2198-0.13189 0.4917-0.097253 0.67306 0.083899l0.92662 0.92476 0.0093 0.00932a0.63639 0.63639 0 0 0 0.01492 0.011187 0.63623 0.63623 0 0 0 0.04847 0.042882 0.63623 0.63623 0 0 0 0.06898 0.046611 0.63623 0.63623 0 0 0 0.07458 0.037289 0.63623 0.63623 0 0 0 0.07831 0.026102 0.63623 0.63623 0 0 0 0.07831 0.01678 0.63639 0.63639 0 0 0 0.0037 0 0.63623 0.63623 0 0 0 0.08203 0.00559 0.63623 0.63623 0 0 0 0.08203-0.00559 0.63639 0.63639 0 0 0 0.36729-0.18085 0.63623 0.63623 0 0 0 0.05407-0.063391 0.63639 0.63639 0 0 0 0.04661-0.068984 0.63623 0.63623 0 0 0 0.08576-0.31695v-4.7729c0-0.15914 0.03796-0.19802 0.08576-0.24051 0.04781-0.042493 0.13579-0.078306 0.23305-0.078306s0.18525 0.035813 0.23305 0.078306c0.04781 0.042493 0.08576 0.081374 0.08576 0.24051v4.1372a0.63623 0.63623 0 0 0 0.63577 0.63577 0.63623 0.63623 0 0 0 0.63577-0.63577v-4.1353a0.63639 0.63639 0 0 0 0-0.00186v-1.2734c0-0.1591 0.038-0.19805 0.08576-0.24051 0.04778-0.042465 0.13583-0.076442 0.23305-0.076442z" stop-color="#000000" stroke-width="0"/></svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@ -0,0 +1 @@
<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path d="m4.499 1c-0.76498 0-1.3988 0.63379-1.3988 1.3988v1.4008c0 1.5752 0.61452 2.8449 1.5464 3.6733 0.22594 0.20084 0.46887 0.37639 0.724 0.5271-0.25512 0.15071-0.49805 0.32626-0.724 0.5271-0.93192 0.82837-1.5464 2.0982-1.5464 3.6733v1.4008c0 0.76498 0.63379 1.3988 1.3988 1.3988h7.002c0.76498 0 1.3988-0.63379 1.3988-1.3988v-1.4008c0-1.5752-0.61452-2.8449-1.5464-3.6733-0.22594-0.20084-0.46887-0.37639-0.724-0.5271 0.25513-0.15071 0.49805-0.32626 0.724-0.5271 0.93192-0.82837 1.5464-2.0982 1.5464-3.6733v-1.4008c0-0.76498-0.63379-1.3988-1.3988-1.3988zm0 1.3988h7.002v1.4008h-7.002zm0.23381 2.8016h6.5344c-0.18996 0.50569-0.4851 0.90658-0.845 1.2265-0.64324 0.57176-1.5277 0.87372-2.4222 0.87372s-1.779-0.30195-2.4222-0.87372c-0.3599-0.31991-0.65504-0.7208-0.845-1.2265zm3.2672 3.499c0.89453 0 1.779 0.30195 2.4222 0.87372 0.3599 0.31991 0.65504 0.7208 0.845 1.2265h-6.5344c0.18996-0.50569 0.4851-0.90658 0.845-1.2265 0.64324-0.57176 1.5277-0.87372 2.4222-0.87372zm-3.501 3.501h7.002v1.4008h-7.002z" stop-color="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.0501"/></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1 @@
<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path d="m9.3899 1a1.4351 1.4351 0 0 0-1.4349 1.4349 1.4351 1.4351 0 0 0 1.4349 1.4349 1.4351 1.4351 0 0 0 1.4349-1.4349 1.4351 1.4351 0 0 0-1.4349-1.4349zm-0.73373 3.5667a0.69575 0.69575 0 0 0-0.01427 0.00204 0.69568 0.69568 0 0 0-0.0591 0.00611 0.69575 0.69575 0 0 0-0.02446 0.00408 0.69568 0.69568 0 0 0-0.02038 0.00408l-3.4567 0.69093a0.69575 0.69575 0 0 0-0.56049 0.68278v2.0871a0.69568 0.69568 0 0 0 0.69704 0.69501 0.69568 0.69568 0 0 0 0.69501-0.69501v-1.5164l1.9322-0.38725-0.53196 3.1815a0.69575 0.69575 0 0 0 0.26904 0.67055l2.5049 1.8771v2.4356a0.69568 0.69568 0 0 0 0.69501 0.69501 0.69568 0.69568 0 0 0 0.69704-0.69501v-2.7821a0.69575 0.69575 0 0 0-0.27922-0.55641l-2.4437-1.8343 0.40355-2.4234 1.1312 1.1312a0.69575 0.69575 0 0 0 0.27107 0.16713l2.0871 0.69704a0.69568 0.69568 0 0 0 0.88048-0.44024 0.69568 0.69568 0 0 0-0.44024-0.88048l-1.9301-0.64405-1.9709-1.9709a0.69575 0.69575 0 0 0-0.05095-0.044839 0.69568 0.69568 0 0 0-0.0061-0.00408 0.69575 0.69575 0 0 0-0.04076-0.030572 0.69568 0.69568 0 0 0-0.05911-0.036687 0.69575 0.69575 0 0 0-0.04892-0.024458 0.69568 0.69568 0 0 0-0.0061-0.00204 0.69575 0.69575 0 0 0-0.06318-0.024458 0.69568 0.69568 0 0 0-0.10394-0.026496 0.69568 0.69568 0 0 0-0.0163-0.00204 0.69575 0.69575 0 0 0-0.13656-0.00611zm-1.5673 5.9127a0.69568 0.69568 0 0 0-0.58087 0.38317l-0.2833 0.56864-2.9573-0.59106a0.69568 0.69568 0 0 0-0.81933 0.54622 0.69568 0.69568 0 0 0 0.54622 0.8173l3.4771 0.69704a0.69575 0.69575 0 0 0 0.76023-0.37094l0.52176-1.0435a0.69568 0.69568 0 0 0-0.31184-0.93347 0.69568 0.69568 0 0 0-0.3526-0.07337z" stop-color="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.0435"/></svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -0,0 +1 @@
<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path d="m11.896 0.99999a0.77558 0.77558 0 0 0-0.04089 0.0023c-2.9888 0.16296-5.5645 2.0598-6.7001 4.803-1.6574 0.22304-3.1671 1.0967-4.0123 2.5628a0.7755 0.7755 0 0 0-0.03181 0.2431 0.7755 0.7755 0 0 0-0.06589 0.052255 0.7755 0.7755 0 0 0 0.04998 0.063615 0.7755 0.7755 0 0 0 0.33171 0.69977 0.7755 0.7755 0 0 0 0.18176-0.047712 0.7755 0.7755 0 0 0 0.11587 0.14768c0.30901 0.036723 0.60932 0.09847 0.8997 0.18403-1.1944 1.1741-1.8021 2.8615-1.579 4.5735a0.77558 0.77558 0 0 0 0.67023 0.67023c1.712 0.22304 3.3994-0.38463 4.5735-1.579 0.08557 0.29041 0.1473 0.59066 0.18403 0.8997a0.77558 0.77558 0 0 0 1.1587 0.58163c1.4661-0.84521 2.3398-2.3549 2.5628-4.0123 2.7432-1.1355 4.64-3.7113 4.803-6.7001a0.77558 0.77558 0 0 0 0.0023-0.0409c0-1.704-1.3995-3.1035-3.1035-3.1035zm0.02045 1.5608c0.84612 0.01261 1.5096 0.67611 1.5222 1.5222-0.14636 2.4969-1.7648 4.6608-4.1259 5.4914a0.77558 0.77558 0 0 0-0.51801 0.70658c-0.03211 0.97216-0.51756 1.7993-1.1746 2.481-0.10516-0.31723-0.23158-0.62236-0.37715-0.91561a0.7755 0.7755 0 0 0-0.36352-0.64751c-0.53452-0.83732-1.2415-1.5443-2.0789-2.0789a0.7755 0.7755 0 0 0-0.64751-0.36352c-0.29324-0.14557-0.59838-0.27199-0.91561-0.37715 0.68166-0.65705 1.5088-1.1425 2.481-1.1746a0.77558 0.77558 0 0 0 0.70658-0.51801c0.83059-2.3611 2.9944-3.9795 5.4914-4.1259zm-1.5699 1.5427c-0.36621 0-0.74435 0.11713-1.0497 0.38851-0.3053 0.27138-0.50211 0.7086-0.50211 1.161s0.19681 0.89187 0.50211 1.1633c0.3053 0.27138 0.68345 0.38851 1.0497 0.38851 0.36621 0 0.74208-0.11713 1.0474-0.38851 0.3053-0.27138 0.50211-0.71088 0.50211-1.1633s-0.19681-0.8896-0.50211-1.161c-0.3053-0.27138-0.68117-0.38851-1.0474-0.38851zm-6.1843 6.3388c0.54645 0.37575 1.0192 0.84854 1.395 1.395-0.66921 0.88979-1.7235 1.346-2.8377 1.4427 0.09666-1.1142 0.55292-2.1685 1.4427-2.8377z" stop-color="#000000" stroke-width="0"/></svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -0,0 +1 @@
<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path d="m8 15q-1.4525 0-2.73-0.55125t-2.2225-1.4962-1.4962-2.2225-0.55125-2.73 0.55125-2.73 1.4962-2.2225 2.2225-1.4962 2.73-0.55125 2.73 0.55125 2.2225 1.4962 1.4962 2.2225 0.55125 2.73-0.55125 2.73-1.4962 2.2225-2.2225 1.4962-2.73 0.55125zm0-1.4q0.945 0 1.82-0.30625t1.61-0.88375l-7.84-7.84q-0.5775 0.735-0.88375 1.61t-0.30625 1.82q0 2.345 1.6275 3.9725t3.9725 1.6275zm4.41-2.17q0.5775-0.735 0.88375-1.61t0.30625-1.82q0-2.345-1.6275-3.9725t-3.9725-1.6275q-0.945 0-1.82 0.30625t-1.61 0.88375z" fill="#fff" stroke-width=".0175"/></svg>

After

Width:  |  Height:  |  Size: 655 B

View File

@ -0,0 +1 @@
<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path d="m6.5845 11.474-3.2932-3.2932 0.82331-0.82331 2.4699 2.4699 5.3009-5.3009 0.8233 0.82331z" fill="#fff" stroke-width=".014444"/></svg>

After

Width:  |  Height:  |  Size: 260 B

View File

@ -0,0 +1 @@
<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path d="m1 15v-1.5556h14v1.5556zm1.9091-2.3333q-0.525 0-0.89886-0.45694-0.37386-0.45694-0.37386-1.0986v-8.5556q0-0.64167 0.37386-1.0986 0.37386-0.45694 0.89886-0.45694h10.182q0.525 0 0.89886 0.45694 0.37386 0.45694 0.37386 1.0986v8.5556q0 0.64167-0.37386 1.0986-0.37386 0.45694-0.89886 0.45694zm0-1.5556h10.182v-8.5556h-10.182zm0 0v-8.5556z" fill="#fff" stroke-width=".017588"/></svg>

After

Width:  |  Height:  |  Size: 504 B

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -0,0 +1 @@
<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path d="m8 1v1.5547h5.4453v10.891h-5.4453v1.5547h5.4453c0.42777-7e-6 0.79303-0.15241 1.0977-0.45703 0.30463-0.30462 0.45703-0.66988 0.45703-1.0977v-10.891c0-0.42777-0.1524-0.79303-0.45703-1.0977-0.30462-0.30463-0.66988-0.45703-1.0977-0.45703h-5.4453zm-3.1113 3.1113-3.8887 3.8887 3.8887 3.8887 1.0703-1.127-1.9844-1.9844h6.3594v-1.5547h-6.3594l1.9844-1.9844-1.0703-1.127z" fill="#fff"/></svg>

After

Width:  |  Height:  |  Size: 512 B

View File

@ -0,0 +1 @@
<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path d="m8 1c-3.86 0-7 3.1403-7 7s3.14 7 7 7 7-3.1403 7-7-3.14-7-7-7zm-4.0784 3.3478h1.7655c0.26874 0 0.48684 0.21779 0.48684 0.48684v2.9828c0 0.26904-0.21779 0.48684-0.48684 0.48684h-2.2523v-0.6087h1.9479c0.10074 0 0.18249-0.08175 0.18249-0.18249v-2.3742c0-0.10074-0.08175-0.18249-0.18249-0.18249h-1.1568c-0.10074 0-0.18249 0.08175-0.18249 0.18249v1.1568c0 0.10074 0.08175 0.18249 0.18249 0.18249h0.88273v0.6087h-1.1871c-0.26874 0-0.48684-0.2178-0.48684-0.48684v-1.7655c0-0.26904 0.21779-0.48684 0.48684-0.48684zm3.1957 0h1.7655c0.26843 0 0.48684 0.2184 0.48684 0.48684v1.7655c0 0.26844-0.2184 0.48684-0.48684 0.48684h-1.7655c-0.26843 0-0.48684-0.2184-0.48684-0.48684v-1.7655c0-0.26844 0.2184-0.48684 0.48684-0.48684zm3.1957 0h1.7655c0.26874 0 0.48684 0.21779 0.48684 0.48684v2.9828c0 0.26904-0.21779 0.48684-0.48684 0.48684h-2.2523v-0.6087h1.9479c0.10074 0 0.18249-0.08175 0.18249-0.18249v-2.3742c0-0.10074-0.08175-0.18249-0.18249-0.18249h-1.1568c-0.10074 0-0.18249 0.08175-0.18249 0.18249v1.1568c0 0.10074 0.08175 0.18249 0.18249 0.18249h0.88273v0.6087h-1.1871c-0.26874 0-0.48684-0.2178-0.48684-0.48684v-1.7655c0-0.26904 0.21779-0.48684 0.48684-0.48684zm-2.8913 0.6087c-0.10074 0-0.18249 0.08175-0.18249 0.18249v1.1568c0 0.10074 0.08175 0.18249 0.18249 0.18249h1.1568c0.10074 0 0.18249-0.08175 0.18249-0.18249v-1.1568c0-0.10074-0.08175-0.18249-0.18249-0.18249zm-3.5 3.9565h1.7958v0.6087h-1.4914c-0.10074 0-0.18249 0.08175-0.18249 0.18249v1.1568c0 0.10074 0.08175 0.18249 0.18249 0.18249h1.4914v0.6087h-1.7958c-0.26874 0-0.48684-0.21779-0.48684-0.48684v-1.7655c0-0.26874 0.21779-0.48684 0.48684-0.48684zm2.7391 0h1.7655c0.26844 0 0.48684 0.2184 0.48684 0.48684v1.7655c0 0.26844-0.2184 0.48684-0.48684 0.48684h-1.7655c-0.26844 0-0.48684-0.2184-0.48684-0.48684v-1.7655c0-0.26844 0.2184-0.48684 0.48684-0.48684zm3.1957 0h2.7088v2.7391h-0.6087v-2.1304h-0.50229c-0.10074 0-0.18249 0.08175-0.18249 0.18249v1.9479h-0.6087v-2.1304h-0.50229c-0.10074 0-0.18249 0.08175-0.18249 0.18249v1.9479h-0.6087v-2.2523c0-0.26874 0.21779-0.48684 0.48684-0.48684zm-2.8913 0.6087c-0.10074 0-0.18249 0.08175-0.18249 0.18249v1.1568c0 0.10074 0.08175 0.18249 0.18249 0.18249h1.1568c0.10074 0 0.18249-0.08175 0.18249-0.18249v-1.1568c0-0.10074-0.08175-0.18249-0.18249-0.18249z" fill="#fff" stroke-width=".30435"/></svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@ -0,0 +1 @@
<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path d="m8 15v-1.5556h5.4444v-10.889h-5.4444v-1.5556h5.4444q0.64167 0 1.0986 0.45694 0.45694 0.45694 0.45694 1.0986v10.889q0 0.64167-0.45694 1.0986t-1.0986 0.45694zm-1.5556-3.1111-1.0694-1.1278 1.9833-1.9833h-6.3583v-1.5556h6.3583l-1.9833-1.9833 1.0694-1.1278 3.8889 3.8889z" fill="#fff" stroke-width=".019444"/></svg>

After

Width:  |  Height:  |  Size: 438 B

View File

@ -0,0 +1 @@
<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path d="m8 15q-1.4583 0-2.7319-0.55417-1.2735-0.55417-2.2167-1.4972-0.94313-0.94306-1.4972-2.2167t-0.55417-2.7319q-7.699e-5 -1.4583 0.55417-2.7319 0.55424-1.2736 1.4972-2.2167 0.94298-0.94306 2.2167-1.4972 1.2737-0.55417 2.7319-0.55417 1.5944 0 3.0237 0.68056 1.4292 0.68056 2.4208 1.925v-1.8278h1.5556v4.6667h-4.6667v-1.5556h2.1389q-0.79722-1.0889-1.9639-1.7111-1.1667-0.62222-2.5083-0.62222-2.275 0-3.8596 1.5848-1.5846 1.5848-1.5848 3.8596-1.55e-4 2.2748 1.5848 3.8596 1.585 1.5848 3.8596 1.5848 2.0417 0 3.5681-1.3222t1.7985-3.3444h1.5944q-0.29167 2.6639-2.2848 4.443-1.9931 1.7791-4.6763 1.7792z" fill="#fff"/></svg>

After

Width:  |  Height:  |  Size: 741 B

View File

@ -0,0 +1 @@
<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path d="m8 15q-1.4525 0-2.73-0.55125t-2.2225-1.4962-1.4962-2.2225-0.55125-2.73q0-1.47 0.55125-2.7388t1.4962-2.2138l0.98 0.98q-0.77 0.77-1.1988 1.785t-0.42875 2.1875q0 2.345 1.6275 3.9725t3.9725 1.6275 3.9725-1.6275 1.6275-3.9725q0-1.1725-0.42875-2.1875t-1.1988-1.785l0.98-0.98q0.945 0.945 1.4962 2.2138t0.55125 2.7388q0 1.4525-0.55125 2.73t-1.4962 2.2225-2.2225 1.4962-2.73 0.55125zm-0.7-6.3v-7.7h1.4v7.7z" fill="#fff" stroke-width=".0175"/></svg>

After

Width:  |  Height:  |  Size: 567 B

View File

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -10,11 +10,7 @@ pixmapsScaledSize = 60, 60
CONTEXT_MENU_STYLE = """ CONTEXT_MENU_STYLE = """
QMenu { QMenu {
background: qlineargradient(x1:0, y1:0, x2:1, y2:0, background: #282a33;;
stop:0 rgba(40, 40, 40, 0.95),
stop:1 rgba(25, 25, 25, 0.95));
border: 1px solid rgba(255, 255, 255, 0.15);
border-radius: 12px;
color: #ffffff; color: #ffffff;
font-family: 'Play'; font-family: 'Play';
font-size: 16px; font-size: 16px;
@ -27,12 +23,12 @@ CONTEXT_MENU_STYLE = """
color: #ffffff; color: #ffffff;
} }
QMenu::item:selected { QMenu::item:selected {
background: #282a33; background: #409EFF;
color: #09bec8; color: #ffffff;
} }
QMenu::item:hover { QMenu::item:hover {
background: #282a33; background: #409EFF;
color: #09bec8; color: #ffffff;
} }
QMenu::item:focus { QMenu::item:focus {
background: #409EFF; background: #409EFF;
@ -67,7 +63,7 @@ TITLE_LABEL_STYLE = """
# СТИЛЬ ОБЛАСТИ НАВИГАЦИИ (КНОПКИ ВКЛАДОК) # СТИЛЬ ОБЛАСТИ НАВИГАЦИИ (КНОПКИ ВКЛАДОК)
NAV_WIDGET_STYLE = """ NAV_WIDGET_STYLE = """
QWidget { QWidget {
background: none; background: #282a33;
border: 0px solid; border: 0px solid;
} }
""" """
@ -82,19 +78,19 @@ NAV_BUTTON_STYLE = """
font-family: 'Play'; font-family: 'Play';
font-size: 16px; font-size: 16px;
text-transform: uppercase; text-transform: uppercase;
border: none; border: #409EFF;
border-radius: 15px; border-radius: 15px;
} }
NavLabel[checked = true] { NavLabel[checked = true] {
background: rgba(0,122,255,0); background: rgba(0,122,255,0);
color: #09bec8; color: #409EFF;
font-weight: normal; font-weight: normal;
text-decoration: underline; text-decoration: underline;
border-radius: 15px; border-radius: 15px;
} }
NavLabel:hover { NavLabel:hover {
background: none; background: none;
color: #09bec8; color: #409EFF;
} }
""" """
@ -120,7 +116,7 @@ SEARCH_EDIT_STYLE = """
color: #ffffff; color: #ffffff;
} }
QLineEdit:focus { QLineEdit:focus {
border: 1px solid #09bec8; border: 1px solid #409EFF;
} }
""" """
@ -228,7 +224,7 @@ INSTALLED_TAB_TITLE_STYLE = "font-family: 'Play'; font-size: 24px; color: #fffff
ACTION_BUTTON_STYLE = """ ACTION_BUTTON_STYLE = """
QPushButton { QPushButton {
background: #3f424d; background: #3f424d;
border: 1px solid rgba(255, 255, 255, 0.20); border: 2px solid rgba(255, 255, 255, 0.01);
border-radius: 10px; border-radius: 10px;
color: #ffffff; color: #ffffff;
font-size: 16px; font-size: 16px;
@ -236,36 +232,40 @@ ACTION_BUTTON_STYLE = """
padding: 8px 16px; padding: 8px 16px;
} }
QPushButton:hover { QPushButton:hover {
background: #282a33; background: #409EFF;
border: 2px solid #409EFF;
} }
QPushButton:pressed { QPushButton:pressed {
background: #282a33; background: #282a33;
} }
QPushButton:focus { QPushButton:focus {
border: 2px solid #409EFF; border: 2px solid #409EFF;
background-color: #404554; background-color: #409EFF;
} }
""" """
# СТИЛЬ КНОПОК ОВЕРЛЕЯ # СТИЛЬ ОВЕРЛЕЯ
OVERLAY_WINDOW_STYLE = "background: #282a33;"
OVERLAY_BUTTON_STYLE = """ OVERLAY_BUTTON_STYLE = """
QPushButton { QPushButton {
background: #3f424d; background: #3f424d;
border: 1px solid rgba(255, 255, 255, 0.20); border: 2px solid rgba(255, 255, 255, 0.01);
border-radius: 10px; border-radius: 10px;
color: #ffffff; color: #ffffff;
font-size: 16px; font-size: 16px;
font-family: 'Play'; font-family: 'Play';
padding: 8px 16px;
} }
QPushButton:hover { QPushButton:hover {
background: #282a33; background: #409EFF;
border: 2px solid #409EFF;
} }
QPushButton:pressed { QPushButton:pressed {
background: #282a33; background: #282a33;
} }
QPushButton:focus { QPushButton:focus {
border: 2px solid #409EFF; border: 2px solid #409EFF;
background-color: #404554; background-color: #409EFF;
} }
""" """
@ -331,10 +331,10 @@ ADDGAME_BACK_BUTTON_STYLE = """
padding: 8px 16px; padding: 8px 16px;
} }
QPushButton:hover { QPushButton:hover {
background: #09bec8; background: #409EFF;
} }
QPushButton:pressed { QPushButton:pressed {
background: #09bec8; background: #409EFF;
} }
""" """
@ -388,10 +388,10 @@ PLAY_BUTTON_STYLE = """
min-height: 40px; min-height: 40px;
} }
QPushButton:hover { QPushButton:hover {
background: #09bec8; background: #409EFF;
} }
QPushButton:pressed { QPushButton:pressed {
background: #09bec8; background: #409EFF;
} }
""" """
@ -416,6 +416,40 @@ DIALOG_BROWSE_BUTTON_STYLE = """
} }
""" """
ADDGAME_INPUT_STYLE = """
QLineEdit {
background: #3f424d;
border: 2px solid rgba(255, 255, 255, 0.01);
border-radius: 10px;
height: 34px;
padding-left: 12px;
color: #ffffff;
font-family: 'Play';
font-size: 16px;
}
QLineEdit:hover {
background: #3f424d;
border: 2px solid #409EFF;
}
QLineEdit:focus {
border: 2px solid #409EFF;
background-color: #404554;
}
QMenu {
border: 1px solid rgba(255, 255, 255, 0.2);
padding: 5px 10px;
background: #32343d;
}
QMenu::item {
padding: 0px 10px;
border: 10px solid transparent; /* reserve space for selection border */
}
QMenu::item:selected {
background: #3f424d;
border-radius: 10px;
}
"""
# СТИЛЬ КАРТОЧКИ ИГРЫ (GAMECARD) # СТИЛЬ КАРТОЧКИ ИГРЫ (GAMECARD)
GAME_CARD_WINDOW_STYLE = """ GAME_CARD_WINDOW_STYLE = """
QFrame { QFrame {
@ -553,7 +587,7 @@ PARAMS_TITLE_STYLE = "color: #ffffff; font-family: 'Play'; font-size: 16px; padd
PROXY_INPUT_STYLE = """ PROXY_INPUT_STYLE = """
QLineEdit { QLineEdit {
background: #282a33; background: #282a33;
border: 0px solid rgba(255, 255, 255, 0.2); border: 2px solid rgba(255, 255, 255, 0.01);
border-radius: 10px; border-radius: 10px;
height: 34px; height: 34px;
padding-left: 12px; padding-left: 12px;
@ -561,8 +595,13 @@ PROXY_INPUT_STYLE = """
font-family: 'Play'; font-family: 'Play';
font-size: 16px; font-size: 16px;
} }
QLineEdit:hover {
background: #3f424d;
border: 2px solid #409EFF;
}
QLineEdit:focus { QLineEdit:focus {
border: 1px solid rgba(255, 255, 255, 0.2); border: 2px solid #409EFF;
background-color: #404554;
} }
QMenu { QMenu {
border: 1px solid rgba(255, 255, 255, 0.2); border: 1px solid rgba(255, 255, 255, 0.2);
@ -582,7 +621,7 @@ PROXY_INPUT_STYLE = """
SETTINGS_COMBO_STYLE = f""" SETTINGS_COMBO_STYLE = f"""
QComboBox {{ QComboBox {{
background: #3f424d; background: #3f424d;
border: 0px solid rgba(255, 255, 255, 0.2); border: 2px solid rgba(255, 255, 255, 0.01);
border-radius: 10px; border-radius: 10px;
height: 34px; height: 34px;
padding-left: 12px; padding-left: 12px;
@ -594,19 +633,20 @@ SETTINGS_COMBO_STYLE = f"""
}} }}
QComboBox:on {{ QComboBox:on {{
background: #373a43; background: #373a43;
border: 1px solid rgba(255, 255, 255, 0.2); border: 1px solid #409EFF;
border-top-left-radius: 10px; border-top-left-radius: 10px;
border-top-right-radius: 10px; border-top-right-radius: 10px;
border-bottom-left-radius: 0px; border-bottom-left-radius: 0px;
border-bottom-right-radius: 0px; border-bottom-right-radius: 0px;
}} }}
QComboBox:hover {{ QComboBox:hover {{
border: 1px solid rgba(255, 255, 255, 0.2); border: 2px solid #409EFF;
background: #409EFF;
}} }}
/* Состояние фокуса */ /* Состояние фокуса */
QComboBox:focus {{ QComboBox:focus {{
border: 2px solid #409EFF; border: 2px solid #409EFF;
background-color: #404554; background-color: #409EFF;
}} }}
QComboBox::drop-down {{ QComboBox::drop-down {{
subcontrol-origin: padding; subcontrol-origin: padding;
@ -631,7 +671,7 @@ SETTINGS_COMBO_STYLE = f"""
/* Список при открытом комбобоксе */ /* Список при открытом комбобоксе */
QComboBox QAbstractItemView {{ QComboBox QAbstractItemView {{
outline: none; outline: none;
border: 1px solid rgba(255, 255, 255, 0.2); border: 1px solid #409EFF;
border-top-style: none; border-top-style: none;
}} }}
QListView {{ QListView {{
@ -655,6 +695,30 @@ SETTINGS_COMBO_STYLE = f"""
}} }}
""" """
SETTINGS_CHECKBOX_STYLE = f"""
QCheckBox {{
height: 34px;
}}
QCheckBox::indicator {{
width: 24px;
height: 24px;
border: 2px solid rgba(255, 255, 255, 0.01);
border-radius: 10px;
background: #282a33;
}}
QCheckBox::indicator:hover {{
background: #3f424d;
border: 2px solid #409EFF;
}}
QCheckBox::indicator:focus {{
border: 2px solid #409EFF;
}}
QCheckBox::indicator:checked {{
image: url({theme_manager.get_icon("check", current_theme_name, as_path=True)});
border: 2px solid #409EFF;
}}
"""
# ФУНКЦИЯ ДЛЯ ДИНАМИЧЕСКОГО ГРАДИЕНТА (ДЕТАЛИ ИГР) # ФУНКЦИЯ ДЛЯ ДИНАМИЧЕСКОГО ГРАДИЕНТА (ДЕТАЛИ ИГР)
# Функции из этой темы срабатывает всегда вне зависимости от выбранной темы, функции из других тем работают только в этих темах # Функции из этой темы срабатывает всегда вне зависимости от выбранной темы, функции из других тем работают только в этих темах