chore(virtual_keyboard): move styles to style.py

Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
This commit is contained in:
2025-10-09 15:05:10 +05:00
committed by Boris Yumankulov
parent b1a804811e
commit 692e11b21d
3 changed files with 62 additions and 36 deletions

View File

@@ -210,8 +210,7 @@ class MainWindow(QMainWindow):
self.restore_state() self.restore_state()
self.keyboard = VirtualKeyboard(self) self.keyboard = VirtualKeyboard(self, self.theme)
mainLayout.addWidget(self.keyboard)
self.detail_animations = DetailPageAnimations(self, self.theme) self.detail_animations = DetailPageAnimations(self, self.theme)
QTimer.singleShot(0, self.loadGames) QTimer.singleShot(0, self.loadGames)

View File

@@ -217,6 +217,56 @@ CONTEXT_MENU_STYLE = f"""
}} }}
""" """
VIRTUAL_KEYBOARD_STYLE = """
VirtualKeyboard {
background-color: rgba(30, 30, 30, 200);
border-radius: 0px;
border: none;
}
QPushButton {
font-size: 14px;
border: 1px solid #555;
border-top-color: #666;
border-left-color: #666;
border-radius: 3px;
min-width: 30px;
min-height: 30px;
padding: 4px;
background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #505050, stop:1 #404040);
color: #e0e0e0;
}
QPushButton:hover {
background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #606060, stop:1 #505050);
border: 1px solid #666;
border-top-color: #777;
border-left-color: #777;
}
QPushButton:focus {
border: 2px solid #4a90e2;
background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #5a5a5a, stop:1 #454545);
}
QPushButton:pressed {
background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #3a3a3a, stop:1 #303030);
border: 1px solid #444;
border-bottom-color: #555;
border-right-color: #555;
padding-top: 5px;
padding-bottom: 3px;
padding-left: 5px;
padding-right: 3px;
}
QPushButton[checked="true"] {
background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #4a90e2, stop:1 #3a7ad2);
color: white;
border: 1px solid #2a6ac2;
border-top-color: #5aa0f2;
border-left-color: #5aa0f2;
}
QPushButton[checked="true"]:focus {
border: 2px solid #6aa3f5;
}
"""
# ГЛОБАЛЬНЫЙ СТИЛЬ ДЛЯ ОКНА (ФОН), ЛЭЙБЛОВ, КНОПОК # ГЛОБАЛЬНЫЙ СТИЛЬ ДЛЯ ОКНА (ФОН), ЛЭЙБЛОВ, КНОПОК
MAIN_WINDOW_STYLE = f""" MAIN_WINDOW_STYLE = f"""
QWidget {{ QWidget {{

View File

@@ -2,15 +2,20 @@ from typing import cast
from PySide6.QtWidgets import (QFrame, QVBoxLayout, QPushButton, QGridLayout, from PySide6.QtWidgets import (QFrame, QVBoxLayout, QPushButton, QGridLayout,
QSizePolicy, QWidget, QLineEdit) QSizePolicy, QWidget, QLineEdit)
from PySide6.QtCore import Qt, Signal, QProcess from PySide6.QtCore import Qt, Signal, QProcess
from portprotonqt.keyboard_layouts import keyboard_layouts # Импортируем раскладки from portprotonqt.keyboard_layouts import keyboard_layouts
from portprotonqt.theme_manager import ThemeManager
from portprotonqt.config_utils import read_theme_from_config
theme_manager = ThemeManager()
class VirtualKeyboard(QFrame): class VirtualKeyboard(QFrame):
keyPressed = Signal(str) keyPressed = Signal(str)
def __init__(self, parent: QWidget | None = None): def __init__(self, parent: QWidget | None = None, theme=None):
super().__init__(parent) super().__init__(parent)
self._parent: QWidget | None = parent self._parent: QWidget | None = parent
self.available_layouts: list[str] = self.get_layouts_setxkbmap() self.available_layouts: list[str] = self.get_layouts_setxkbmap()
self.theme = theme if theme else theme_manager.apply_theme(read_theme_from_config())
if not self.available_layouts: if not self.available_layouts:
self.available_layouts.append('en') self.available_layouts.append('en')
self.current_layout: str = self.available_layouts[0] self.current_layout: str = self.available_layouts[0]
@@ -32,33 +37,7 @@ class VirtualKeyboard(QFrame):
self.initUI() self.initUI()
self.hide() self.hide()
self.setStyleSheet(""" self.setStyleSheet(self.theme.VIRTUAL_KEYBOARD_STYLE)
VirtualKeyboard {
background-color: rgba(0, 0, 0, 200); /* Полупрозрачный серый */
border-radius: 5px;
border: 1px solid #ccc;
}
QPushButton {
font-size: 14px;
border: 1px solid #888;
border-radius: 3px;
min-width: 30px;
min-height: 30px;
padding: 0px;
}
QPushButton:pressed {
background-color: #d0d0d0;
}
QPushButton[checked="true"] {
background-color: #a0c4ff;
border: 1px solid #4a90e2;
}
QPushButton[checked="true"] {
background-color: #4a90e2;
color: white;
border: 2px solid #1a73e8;
}
""")
def highlight_cursor_position(self): def highlight_cursor_position(self):
"""Подсвечиваем текущую позицию курсора""" """Подсвечиваем текущую позицию курсора"""
@@ -74,20 +53,18 @@ class VirtualKeyboard(QFrame):
layout.setSpacing(0) layout.setSpacing(0)
self.keyboard_layout = QGridLayout() self.keyboard_layout = QGridLayout()
self.keyboard_layout.setSpacing(1) self.keyboard_layout.setSpacing(4)
self.keyboard_layout.setContentsMargins(0, 0, 0, 0) self.keyboard_layout.setContentsMargins(5, 5, 5, 5)
self.create_keyboard() self.create_keyboard()
keyboard_container = QWidget() keyboard_container = QWidget()
keyboard_container.setLayout(self.keyboard_layout) keyboard_container.setLayout(self.keyboard_layout)
# keyboard_container.setFixedSize(660, 220)
keyboard_container.setMinimumWidth(574) keyboard_container.setMinimumWidth(574)
keyboard_container.setMinimumHeight(220) keyboard_container.setMinimumHeight(220)
keyboard_container.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Fixed) keyboard_container.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Fixed)
layout.addWidget(keyboard_container, 0, Qt.AlignmentFlag.AlignHCenter) layout.addWidget(keyboard_container, 0, Qt.AlignmentFlag.AlignHCenter)
self.setLayout(layout) self.setLayout(layout)
# self.setMinimumHeight(240)
self.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding) self.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
def run_shell_command(self, cmd: str) -> str | None: def run_shell_command(self, cmd: str) -> str | None:
@@ -471,7 +448,7 @@ class VirtualKeyboard(QFrame):
"""Активирует текущую выделенную кнопку на клавиатуре""" """Активирует текущую выделенную кнопку на клавиатуре"""
focused = self.focusWidget() focused = self.focusWidget()
if isinstance(focused, QPushButton): if isinstance(focused, QPushButton):
focused.click() focused.animateClick()
def focusNextKey(self, direction: str): def focusNextKey(self, direction: str):
"""Перемещает фокус на следующую кнопку в указанном направлении""" """Перемещает фокус на следующую кнопку в указанном направлении"""