21 Commits

Author SHA1 Message Date
f105af01ef fix: resolve Pyright type errors in SystemOverlay class
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-06-13 17:43:49 +05:00
e9ecb466b2 combobox styles for hover & focus 2025-06-13 18:09:06 +07:00
2ce41697ef changed context_menu_style 2025-06-13 17:50:36 +07:00
997e66afa6 system_overlay now borderless thanks to @Vector_null 2025-06-13 17:36:27 +07:00
bad91fed4e dialogs.py add input styles 2025-06-13 11:44:20 +07:00
a1bdff73fe getAntiCheatIconFilename expand the list of status 2025-06-13 11:21:57 +07:00
0c7cb0092b change getAntiCheatIconFilename 2025-06-13 11:11:32 +07:00
120f2a5590 change color of icons for areweanticheat 2025-06-13 11:04:17 +07:00
fbe8d87b3d system_overlay change from QPushButton to AutoSizeButton 2025-06-13 10:56:39 +07:00
568120fb0e add icons for system_overlay 2025-06-13 10:55:01 +07:00
bff5e456cf change ACTION_BUTTON_STYLE style 2025-06-13 09:30:43 +07:00
de3b95d06c merge upstream 2025-06-12 09:52:06 +00:00
db95120b87 change addgame, play, find_games hover color 2025-06-12 16:50:45 +07:00
337db17467 add areweanticheat status icons 2025-06-12 16:41:43 +07:00
09066521e8 add epic games & gog icons 2025-06-12 16:25:39 +07:00
186ee048f7 add background color to NAV_WIDGET_STYLE 2025-06-12 15:58:03 +07:00
79e2ad1997 change nav buttons focus color 2025-06-12 15:50:24 +07:00
a4a3271df9 fix hardlink to checkbox icon 2025-06-12 15:44:56 +07:00
213709e88b add login icon 2025-06-12 15:37:45 +07:00
9f86eae5ef fix focus styles for buttons, text fields & checkbox 2025-06-12 15:13:46 +07:00
748f9c886b add checkboxes styles 2025-06-12 14:33:37 +07: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

@@ -988,6 +988,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;
}}
"""
# ФУНКЦИЯ ДЛЯ ДИНАМИЧЕСКОГО ГРАДИЕНТА (ДЕТАЛИ ИГР) # ФУНКЦИЯ ДЛЯ ДИНАМИЧЕСКОГО ГРАДИЕНТА (ДЕТАЛИ ИГР)
# Функции из этой темы срабатывает всегда вне зависимости от выбранной темы, функции из других тем работают только в этих темах # Функции из этой темы срабатывает всегда вне зависимости от выбранной темы, функции из других тем работают только в этих темах