forked from Boria138/PortProtonQt
styles for get_wine module
This commit is contained in:
@@ -7,11 +7,16 @@ from PySide6.QtWidgets import (QDialog, QVBoxLayout, QWidget, QCheckBox,
|
||||
from PySide6.QtCore import Qt
|
||||
from portprotonqt.localization import _
|
||||
from portprotonqt.version_utils import version_sort_key
|
||||
from portprotonqt.config_utils import read_theme_from_config
|
||||
from portprotonqt.theme_manager import ThemeManager
|
||||
|
||||
theme_manager = ThemeManager()
|
||||
|
||||
|
||||
class WineDeleteManager(QDialog):
|
||||
def __init__(self, parent=None, portproton_location=None, selected_wine=None):
|
||||
def __init__(self, parent=None, portproton_location=None, selected_wine=None, theme=None):
|
||||
super().__init__(parent)
|
||||
self.theme = theme if theme else theme_manager.apply_theme(read_theme_from_config())
|
||||
self.selected_wines = set() # Use set to store selected wine names
|
||||
self.portproton_location = portproton_location
|
||||
self.selected_wine = selected_wine # The wine that should be pre-selected
|
||||
@@ -20,7 +25,8 @@ class WineDeleteManager(QDialog):
|
||||
|
||||
def initUI(self):
|
||||
self.setWindowTitle(_('Delete Wine'))
|
||||
self.resize(800, 600)
|
||||
self.resize(1100, 720)
|
||||
self.setStyleSheet(self.theme.MAIN_WINDOW_STYLE + self.theme.MESSAGE_BOX_STYLE)
|
||||
|
||||
layout = QVBoxLayout(self)
|
||||
layout.setContentsMargins(5, 5, 5, 5)
|
||||
@@ -28,6 +34,7 @@ class WineDeleteManager(QDialog):
|
||||
|
||||
# Wine list widget - основной растягивающийся элемент
|
||||
self.list_widget = QListWidget()
|
||||
self.list_widget.setStyleSheet(self.theme.GETWINE_WINDOW_STYLE)
|
||||
self.list_widget.setSelectionMode(QListWidget.SelectionMode.NoSelection) # Disable default selection to use checkboxes
|
||||
layout.addWidget(self.list_widget, 1)
|
||||
|
||||
@@ -44,6 +51,7 @@ class WineDeleteManager(QDialog):
|
||||
self.selection_text.setMaximumHeight(80)
|
||||
self.selection_text.setReadOnly(True)
|
||||
self.selection_text.setTextInteractionFlags(Qt.TextInteractionFlag.NoTextInteraction)
|
||||
self.selection_text.setStyleSheet(self.theme.GETWINE_WINDOW_STYLE)
|
||||
self.selection_text.setPlainText(_("No WINE selected"))
|
||||
selection_layout.addWidget(self.selection_text)
|
||||
|
||||
@@ -82,8 +90,9 @@ class WineDeleteManager(QDialog):
|
||||
"""Add a wine to the list with checkbox"""
|
||||
# Create a widget with checkbox and wine name
|
||||
item_widget = QWidget()
|
||||
item_widget.setStyleSheet(self.theme.GETWINE_WINDOW_STYLE)
|
||||
item_layout = QHBoxLayout(item_widget)
|
||||
item_layout.setContentsMargins(5, 2, 5, 2)
|
||||
item_layout.setContentsMargins(5, 5, 5, 5)
|
||||
item_layout.setSpacing(5)
|
||||
|
||||
checkbox = QCheckBox(wine_name)
|
||||
|
||||
@@ -12,12 +12,14 @@ from PySide6.QtWidgets import (QDialog, QTabWidget, QTableWidget,
|
||||
QFrame, QSizePolicy, QAbstractItemView)
|
||||
from PySide6.QtCore import Qt, QThread, Signal, QMutex, QWaitCondition, QTimer
|
||||
import urllib.parse
|
||||
from portprotonqt.config_utils import read_proxy_config, get_portproton_start_command
|
||||
from portprotonqt.config_utils import read_proxy_config, get_portproton_start_command, read_theme_from_config
|
||||
from portprotonqt.logger import get_logger
|
||||
from portprotonqt.theme_manager import ThemeManager
|
||||
from portprotonqt.localization import _
|
||||
from portprotonqt.version_utils import version_sort_key
|
||||
|
||||
logger = get_logger(__name__)
|
||||
theme_manager = ThemeManager()
|
||||
|
||||
|
||||
def get_cpu_level():
|
||||
@@ -328,8 +330,9 @@ class ExtractionThread(QThread):
|
||||
|
||||
|
||||
class ProtonManager(QDialog):
|
||||
def __init__(self, parent=None, portproton_location=None):
|
||||
def __init__(self, parent=None, portproton_location=None, theme=None):
|
||||
super().__init__(parent)
|
||||
self.theme = theme if theme else theme_manager.apply_theme(read_theme_from_config())
|
||||
self.selected_assets = {} # {unique_id: asset_data}
|
||||
self.current_extraction_thread = None
|
||||
self.current_download_thread = None # Still keep this for compatibility with Downloader's thread
|
||||
@@ -342,7 +345,8 @@ class ProtonManager(QDialog):
|
||||
|
||||
def initUI(self):
|
||||
self.setWindowTitle(_('Get other Wine'))
|
||||
self.resize(800, 600)
|
||||
self.resize(1100, 720)
|
||||
self.setStyleSheet(self.theme.MAIN_WINDOW_STYLE + self.theme.MESSAGE_BOX_STYLE)
|
||||
|
||||
layout = QVBoxLayout(self)
|
||||
layout.setContentsMargins(5, 5, 5, 5)
|
||||
@@ -350,6 +354,7 @@ class ProtonManager(QDialog):
|
||||
|
||||
# Tab widget - основной растягивающийся элемент
|
||||
self.tab_widget = QTabWidget()
|
||||
self.tab_widget.setStyleSheet(self.theme.GETWINE_WINDOW_STYLE)
|
||||
self.tab_widget.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
|
||||
layout.addWidget(self.tab_widget, 1)
|
||||
|
||||
@@ -367,6 +372,7 @@ class ProtonManager(QDialog):
|
||||
self.selection_text.setMaximumHeight(80)
|
||||
self.selection_text.setReadOnly(True)
|
||||
self.selection_text.setTextInteractionFlags(Qt.TextInteractionFlag.NoTextInteraction)
|
||||
self.selection_text.setStyleSheet(self.theme.GETWINE_WINDOW_STYLE)
|
||||
self.selection_text.setPlainText(_("No assets selected"))
|
||||
selection_layout.addWidget(self.selection_text)
|
||||
|
||||
@@ -519,14 +525,17 @@ class ProtonManager(QDialog):
|
||||
tab.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
|
||||
|
||||
layout = QVBoxLayout(tab)
|
||||
layout.setContentsMargins(2, 2, 2, 2)
|
||||
layout.setSpacing(2)
|
||||
layout.setContentsMargins(5, 5, 5, 5)
|
||||
layout.setSpacing(5)
|
||||
|
||||
table = QTableWidget()
|
||||
table.setAlternatingRowColors(True)
|
||||
table.verticalHeader().setVisible(False)
|
||||
table.setColumnCount(2) # Только Checkbox и Имя
|
||||
table.setHorizontalHeaderLabels(['', _('Asset Name')])
|
||||
table.setEditTriggers(QAbstractItemView.EditTrigger.NoEditTriggers)
|
||||
table.verticalHeader().setDefaultSectionSize(36)
|
||||
table.setStyleSheet(self.theme.GETWINE_WINDOW_STYLE)
|
||||
|
||||
header = table.horizontalHeader()
|
||||
header.setSectionResizeMode(0, QHeaderView.ResizeMode.ResizeToContents)
|
||||
@@ -843,6 +852,7 @@ class ProtonManager(QDialog):
|
||||
download_info = download_info[:77] + "..."
|
||||
self.download_progress.setValue(0)
|
||||
self.download_frame.setVisible(True)
|
||||
self.download_frame.setStyleSheet(self.theme.GETWINE_WINDOW_STYLE)
|
||||
self.download_btn.setEnabled(False)
|
||||
self.clear_btn.setEnabled(False)
|
||||
|
||||
@@ -860,6 +870,7 @@ class ProtonManager(QDialog):
|
||||
download_info = download_info[:77] + "..."
|
||||
self.download_progress.setValue(0)
|
||||
self.download_frame.setVisible(True)
|
||||
self.download_frame.setStyleSheet(self.theme.GETWINE_WINDOW_STYLE)
|
||||
self.download_btn.setEnabled(False)
|
||||
self.clear_btn.setEnabled(False)
|
||||
|
||||
|
||||
@@ -5,4 +5,5 @@ from portprotonqt.themes.standart.styles.game_card import *
|
||||
from portprotonqt.themes.standart.styles.detail_page import *
|
||||
from portprotonqt.themes.standart.styles.settings import *
|
||||
from portprotonqt.themes.standart.styles.winetricks import *
|
||||
from portprotonqt.themes.standart.styles.get_wine import *
|
||||
from portprotonqt.themes.standart.styles.theme_utils import *
|
||||
|
||||
@@ -344,11 +344,8 @@ PROXY_INPUT_STYLE = f"""
|
||||
# СТИЛИ ДЛЯ QMessageBox (ОКНА СООБЩЕНИЙ)
|
||||
MESSAGE_BOX_STYLE = f"""
|
||||
QMessageBox {{
|
||||
background: qlineargradient(x1:0, y1:0, x2:1, y2:0,
|
||||
stop:0 rgba(40, 40, 40, 0.95),
|
||||
stop:1 rgba(25, 25, 25, 0.95));
|
||||
border: {border_b} rgba(255, 255, 255, 0.15);
|
||||
border-radius: 12px;
|
||||
background: {color_b};
|
||||
border: {border_a};
|
||||
}}
|
||||
QMessageBox QLabel {{
|
||||
color: {color_f};
|
||||
@@ -356,8 +353,8 @@ MESSAGE_BOX_STYLE = f"""
|
||||
font-size: {font_size_a};
|
||||
}}
|
||||
QMessageBox QPushButton {{
|
||||
background: rgba(30, 30, 30, 0.6);
|
||||
border: {border_b} rgba(255, 255, 255, 0.2);
|
||||
background: {color_c};
|
||||
border: {border_a} {color_h};
|
||||
border-radius: {border_radius_a};
|
||||
color: {color_f};
|
||||
font-family: '{font_family}';
|
||||
@@ -365,12 +362,12 @@ MESSAGE_BOX_STYLE = f"""
|
||||
min-width: 80px;
|
||||
}}
|
||||
QMessageBox QPushButton:hover {{
|
||||
background: #09bec8;
|
||||
border-color: rgba(255, 255, 255, 0.3);
|
||||
background: {color_a};
|
||||
border-color: border: {border_b} {color_a};
|
||||
}}
|
||||
QMessageBox QPushButton:focus {{
|
||||
border: {border_c} {color_a};
|
||||
background: {color_e};
|
||||
background: {color_a};
|
||||
}}
|
||||
"""
|
||||
|
||||
|
||||
142
portprotonqt/themes/standart/styles/get_wine.py
Normal file
142
portprotonqt/themes/standart/styles/get_wine.py
Normal file
@@ -0,0 +1,142 @@
|
||||
from .constants import *
|
||||
|
||||
GETWINE_WINDOW_STYLE = f"""
|
||||
/* TabWidget */
|
||||
QTabWidget::pane {{
|
||||
border-top: 1px solid {color_c};
|
||||
background: {color_h};
|
||||
}}
|
||||
QTabBar::tab {{
|
||||
background: {color_c};
|
||||
color: {color_f};
|
||||
padding: 8px 16px;
|
||||
border-top-left-radius: {border_radius_a};
|
||||
border-top-right-radius: {border_radius_a};
|
||||
margin-right: 2px;
|
||||
}}
|
||||
QTabBar::tab:selected {{
|
||||
background: {color_a};
|
||||
color: {color_f};
|
||||
}}
|
||||
QTabBar::tab:hover {{
|
||||
background: {color_a};
|
||||
}}
|
||||
/* Table */
|
||||
QHeaderView::section {{
|
||||
background: {color_d};
|
||||
color: {color_f};
|
||||
border: {border_a};
|
||||
font-weight: bold;
|
||||
}}
|
||||
QTableWidget {{
|
||||
background: {color_h};
|
||||
gridline-color: {color_h};
|
||||
color: {color_f};
|
||||
alternate-background-color: {color_d};
|
||||
border: {border_a};
|
||||
border-radius: {border_radius_a};
|
||||
font-family: '{font_family}';
|
||||
font-size: {font_size_a};
|
||||
}}
|
||||
QTableWidget::item:!enabled {{
|
||||
color: #7a7a7a;
|
||||
}}
|
||||
QTableWidget::item:focus {{
|
||||
background: {color_a};
|
||||
}}
|
||||
/* CheckBox */
|
||||
QCheckBox {{
|
||||
height: 34px;
|
||||
color: {color_f};
|
||||
font-family: '{font_family}';
|
||||
font-size: {font_size_a};
|
||||
}}
|
||||
QCheckBox::indicator {{
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
border: {border_c} {color_g};
|
||||
border-radius: {border_radius_a};
|
||||
background: {color_c};
|
||||
}}
|
||||
QCheckBox::indicator:hover {{
|
||||
background: {color_c};
|
||||
border: {border_c} {color_a};
|
||||
}}
|
||||
QCheckBox::indicator:focus {{
|
||||
border: {border_c} {color_a};
|
||||
}}
|
||||
QCheckBox::indicator:checked {{
|
||||
image: url({theme_manager.get_icon("check", current_theme_name, as_path=True)});
|
||||
border: {border_c} {color_a};
|
||||
}}
|
||||
/* ScrollBar */
|
||||
QScrollBar:vertical {{
|
||||
width: 10px;
|
||||
border: {border_a};
|
||||
border-radius: 5px;
|
||||
background: rgba(20, 20, 20, 0.30);
|
||||
}}
|
||||
QScrollBar::handle:vertical {{
|
||||
background: #bebebe;
|
||||
border: {border_a};
|
||||
border-radius: 5px;
|
||||
}}
|
||||
QScrollBar::add-line:vertical {{
|
||||
border: {border_a};
|
||||
background: none;
|
||||
}}
|
||||
QScrollBar::sub-line:vertical {{
|
||||
border: {border_a};
|
||||
background: none;
|
||||
}}
|
||||
QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical {{
|
||||
border: {border_a};
|
||||
width: 3px;
|
||||
height: 3px;
|
||||
background: none;
|
||||
}}
|
||||
QScrollBar:horizontal {{
|
||||
height: 10px;
|
||||
border: {border_a};
|
||||
border-radius: 5px;
|
||||
background: rgba(20, 20, 20, 0.30);
|
||||
}}
|
||||
QScrollBar::handle:horizontal {{
|
||||
background: #bebebe;
|
||||
border: {border_a};
|
||||
border-radius: 5px;
|
||||
}}
|
||||
QScrollBar::add-line:horizontal {{
|
||||
border: {border_a};
|
||||
background: none;
|
||||
}}
|
||||
QScrollBar::sub-line:horizontal {{
|
||||
border: {border_a};
|
||||
background: none;
|
||||
}}
|
||||
QScrollBar::up-arrow:horizontal, QScrollBar::down-arrow:horizontal {{
|
||||
border: {border_a};
|
||||
width: 3px;
|
||||
height: 3px;
|
||||
background: none;
|
||||
}}
|
||||
/* LogArea */
|
||||
QTextEdit {{
|
||||
background: {color_c};
|
||||
border: {border_a};
|
||||
border-radius: {border_radius_a};
|
||||
color: {color_f};
|
||||
font-family: '{font_family}';
|
||||
font-size: {font_size_a};
|
||||
padding: 5px;
|
||||
}}
|
||||
|
||||
QProgressBar {{
|
||||
color: {color_f};
|
||||
background-color: {color_c};
|
||||
text-align: center;
|
||||
}}
|
||||
QProgressBar::chunk {{
|
||||
background-color: {color_a};
|
||||
}}
|
||||
"""
|
||||
Reference in New Issue
Block a user