From 06e55db54d8114d10aaa1aff9735532db87cf11c Mon Sep 17 00:00:00 2001 From: Boris Yumankulov Date: Sun, 2 Nov 2025 16:05:22 +0500 Subject: [PATCH] feat(settings): update styles Signed-off-by: Boris Yumankulov --- portprotonqt/dialogs.py | 40 ++++++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/portprotonqt/dialogs.py b/portprotonqt/dialogs.py index 4a1f058..0e9ed14 100644 --- a/portprotonqt/dialogs.py +++ b/portprotonqt/dialogs.py @@ -5,7 +5,7 @@ from typing import cast, TYPE_CHECKING from PySide6.QtGui import QPixmap, QIcon, QTextCursor, QColor from PySide6.QtWidgets import ( QDialog, QFormLayout, QHBoxLayout, QLabel, QVBoxLayout, QListWidget, QScrollArea, QWidget, QListWidgetItem, QSizePolicy, QApplication, QProgressBar, QScroller, - QTabWidget, QTableWidget, QHeaderView, QMessageBox, QTableWidgetItem, QTextEdit, QAbstractItemView, QStackedWidget, QComboBox + QTabWidget, QTableWidget, QHeaderView, QMessageBox, QTableWidgetItem, QTextEdit, QAbstractItemView, QStackedWidget, QComboBox, QLineEdit ) from PySide6.QtCore import Qt, QObject, Signal, QMimeDatabase, QTimer, QThreadPool, QRunnable, Slot, QProcess, QProcessEnvironment from icoextract import IconExtractor, IconExtractorError @@ -1673,6 +1673,7 @@ class WinetricksDialog(QDialog): if self.input_manager: self.input_manager.disable_winetricks_mode() super().reject() + class ExeSettingsDialog(QDialog): def __init__(self, parent=None, theme=None, exe_path=None): super().__init__(parent) @@ -1699,7 +1700,6 @@ class ExeSettingsDialog(QDialog): self.locale_options = [] self.logical_core_options = [] self.amd_vulkan_drivers = [] - self.branch_name = _("Unknown") self.setWindowTitle(_("Exe Settings")) self.setModal(True) @@ -2136,12 +2136,12 @@ class ExeSettingsDialog(QDialog): self.original_display_values[setting['key']] = current_val elif setting['type'] == 'text': - text_edit = QTextEdit() + line_edit = QLineEdit() current_val = current.get(setting['key'], setting['default']) - text_edit.setPlainText(current_val) + line_edit.setText(current_val) - self.advanced_table.setCellWidget(row, 1, text_edit) - self.advanced_widgets[setting['key']] = text_edit + self.advanced_table.setCellWidget(row, 1, line_edit) + self.advanced_widgets[setting['key']] = line_edit self.original_display_values[setting['key']] = current_val # Description column @@ -2151,15 +2151,27 @@ class ExeSettingsDialog(QDialog): desc_item.setTextAlignment(Qt.AlignmentFlag.AlignLeft | Qt.AlignmentFlag.AlignVCenter) self.advanced_table.setItem(row, 2, desc_item) - self.advanced_table.resizeRowsToContents() - if self.advanced_table.rowCount() > 0: - self.advanced_table.setCurrentCell(0, 0) + # Make sure QLineEdit and QComboBox look consistent + self.advanced_table.setStyleSheet(""" + QComboBox, QLineEdit { + padding: 3px 6px; + min-height: 26px; + } + QComboBox::drop-down { + subcontrol-origin: padding; + subcontrol-position: top right; + width: 18px; + } + QTextEdit { + border-radius: 4px; + padding: 4px; + } + """) def apply_changes(self): """Apply changes by collecting diffs from both main and advanced tabs.""" changes = [] - # --- 1. Обычные (toggle) настройки --- for key, orig_val in self.original_values.items(): if key in self.blocked_keys: continue # Skip blocked keys @@ -2180,28 +2192,24 @@ class ExeSettingsDialog(QDialog): if new_val != orig_val: changes.append(f"{key}={new_val}") - # --- 2. Advanced настройки --- for key, widget in self.advanced_widgets.items(): orig_val = self.original_display_values.get(key, '') if isinstance(widget, QComboBox): new_val = widget.currentText() - # приведение disabled к 'disabled' if new_val.lower() == _('disabled').lower(): new_val = 'disabled' - elif isinstance(widget, QTextEdit): - new_val = widget.toPlainText().strip() + elif isinstance(widget, QLineEdit): + new_val = widget.text().strip() else: continue if new_val != orig_val: changes.append(f"{key}={new_val}") - # --- 3. Проверка на изменения --- if not changes: QMessageBox.information(self, _("Info"), _("No changes to apply.")) return - # --- 4. Запуск процесса сохранения --- process = QProcess(self) process.finished.connect(self.on_edit_db_finished) args = ["cli", "--edit-db", self.exe_path] + changes