Compare commits
2 Commits
bddf9f850a
...
bbb87c0455
| Author | SHA1 | Date | |
|---|---|---|---|
|
bbb87c0455
|
|||
|
b32a71a125
|
@@ -2,7 +2,7 @@ import os
|
||||
import tempfile
|
||||
import re
|
||||
from typing import cast, TYPE_CHECKING
|
||||
from PySide6.QtGui import QPixmap, QIcon, QTextCursor
|
||||
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
|
||||
@@ -1694,6 +1694,7 @@ class ExeSettingsDialog(QDialog):
|
||||
self.value_widgets = {}
|
||||
self.original_values = {}
|
||||
self.available_keys = set()
|
||||
self.blocked_keys = set()
|
||||
self.branch_name = _("Unknown")
|
||||
|
||||
self.setWindowTitle(_("Exe Settings"))
|
||||
@@ -1830,15 +1831,21 @@ class ExeSettingsDialog(QDialog):
|
||||
"""Handle --list-db output and extract available keys."""
|
||||
process = cast(QProcess, self.sender())
|
||||
self.available_keys = set()
|
||||
self.blocked_keys = set()
|
||||
if exit_code == 0 and exit_status == QProcess.ExitStatus.NormalExit:
|
||||
output = bytes(process.readAllStandardOutput().data()).decode('utf-8', 'ignore')
|
||||
for line in output.splitlines():
|
||||
if "Branch in used:" in line:
|
||||
self.branch_name = line.split(":", 1)[1].strip()
|
||||
self.branch_label.setText(_("Detected branch: ") + self.branch_name)
|
||||
for token in line.split():
|
||||
if token.startswith("PW_"):
|
||||
self.available_keys.add(token.strip())
|
||||
continue
|
||||
stripped_line = line.strip()
|
||||
if stripped_line.startswith("PW_"):
|
||||
parts = stripped_line.split(maxsplit=1)
|
||||
key = parts[0]
|
||||
self.available_keys.add(key)
|
||||
if len(parts) > 1 and parts[1] == "blocked":
|
||||
self.blocked_keys.add(key)
|
||||
|
||||
# Показываем только пересечение
|
||||
self.available_keys &= set(self.toggle_settings.keys())
|
||||
@@ -1865,6 +1872,11 @@ class ExeSettingsDialog(QDialog):
|
||||
key, val = line.split('=', 1)
|
||||
self.current_settings[key.strip()] = val.strip()
|
||||
logger.debug(f"Loaded current settings: {self.current_settings}")
|
||||
|
||||
# Force blocked settings to '0'
|
||||
for key in self.blocked_keys:
|
||||
self.current_settings[key] = '0'
|
||||
|
||||
self.populate_table()
|
||||
|
||||
def populate_table(self):
|
||||
@@ -1886,21 +1898,29 @@ class ExeSettingsDialog(QDialog):
|
||||
|
||||
name_item = QTableWidgetItem(toggle)
|
||||
name_item.setFlags(Qt.ItemFlag.ItemIsSelectable | Qt.ItemFlag.ItemIsEnabled)
|
||||
self.settings_table.setItem(row, 0, name_item)
|
||||
|
||||
current_val = self.current_settings.get(toggle, '0')
|
||||
is_blocked = toggle in self.blocked_keys
|
||||
checkbox = QTableWidgetItem()
|
||||
checkbox.setFlags(checkbox.flags() | Qt.ItemFlag.ItemIsUserCheckable)
|
||||
checkbox.setCheckState(Qt.CheckState.Checked if current_val == '1' else Qt.CheckState.Unchecked)
|
||||
check_state = Qt.CheckState.Checked if current_val == '1' and not is_blocked else Qt.CheckState.Unchecked
|
||||
checkbox.setCheckState(check_state)
|
||||
checkbox.setTextAlignment(Qt.AlignmentFlag.AlignCenter)
|
||||
if is_blocked:
|
||||
checkbox.setFlags(checkbox.flags() & ~Qt.ItemFlag.ItemIsUserCheckable)
|
||||
checkbox.setBackground(QColor(240, 240, 240))
|
||||
name_item.setForeground(QColor(128, 128, 128))
|
||||
self.settings_table.setItem(row, 1, checkbox)
|
||||
|
||||
desc_item = QTableWidgetItem(description)
|
||||
desc_item.setFlags(Qt.ItemFlag.ItemIsSelectable | Qt.ItemFlag.ItemIsEnabled)
|
||||
desc_item.setToolTip(description)
|
||||
desc_item.setTextAlignment(Qt.AlignmentFlag.AlignLeft | Qt.AlignmentFlag.AlignVCenter)
|
||||
if is_blocked:
|
||||
desc_item.setForeground(QColor(128, 128, 128))
|
||||
self.settings_table.setItem(row, 2, desc_item)
|
||||
|
||||
self.settings_table.setItem(row, 0, name_item)
|
||||
self.value_widgets[(row, 1)] = checkbox
|
||||
self.original_values[toggle] = current_val
|
||||
|
||||
@@ -1913,6 +1933,8 @@ class ExeSettingsDialog(QDialog):
|
||||
"""Apply changes by collecting diffs and running --edit-db."""
|
||||
changes = []
|
||||
for key, orig_val in self.original_values.items():
|
||||
if key in self.blocked_keys:
|
||||
continue # Skip blocked keys
|
||||
row = -1
|
||||
for r in range(self.settings_table.rowCount()):
|
||||
item0 = self.settings_table.item(r, 0)
|
||||
|
||||
1
portprotonqt/themes/standart/images/icons/settings.svg
Normal file
1
portprotonqt/themes/standart/images/icons/settings.svg
Normal 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.0005 1c-0.38761 0-0.77522 0.0327-1.1588 0.0979-0.16351 0.0281-0.30273 0.13627-0.37209 0.28935l-0.39088 0.86264c-0.49378 0.16682-0.96454 0.39759-1.4007 0.68616 2.5e-4 0-0.90672-0.2272-0.90672-0.2272-0.161-0.0403-0.33098 3e-3 -0.45442 0.11569-0.57867 0.5285-1.0672 1.1514-1.4451 1.8432-0.0804 0.14721-0.0841 0.32549-0.01 0.47628l0.41938 0.84865c-0.17954 0.49666-0.29567 1.0147-0.346 1.5417l-0.73995 0.57946c-0.13121 0.10289-0.20407 0.26514-0.19431 0.4335 0.0453 0.78981 0.21961 1.5666 0.51558 2.2983 0.0631 0.15587 0.1978 0.27003 0.36005 0.30467l0.91397 0.19559c0.26993 0.45234 0.59572 0.86802 0.96931 1.2363l-0.0161 0.94973c-3e-3 0.16861 0.0766 0.32755 0.21183 0.42484 0.63551 0.45642 1.3414 0.80207 2.0884 1.0229 0.15926 0.0471 0.33077 0.0109 0.45872-0.0963l0.72016-0.60485c0.51582 0.0674 1.0384 0.0674 1.5544 0l0.72016 0.60485c0.12796 0.10722 0.29946 0.14343 0.45872 0.0963 0.74693-0.22083 1.4528-0.56648 2.0883-1.0229 0.13521-0.0973 0.21465-0.25623 0.21189-0.42484l-0.0161-0.94973c0.37359-0.36829 0.69939-0.78372 0.96932-1.2363l0.91396-0.19559c0.16226-0.0347 0.29695-0.1488 0.36005-0.30467 0.29597-0.73174 0.47026-1.5085 0.51558-2.2983 0.01-0.16836-0.0631-0.33061-0.1943-0.4335l-0.73996-0.57946c-0.0501-0.52671-0.16652-1.045-0.34606-1.5417l0.41944-0.84865c0.0746-0.15079 0.0709-0.32907-0.01-0.47628-0.37785-0.69176-0.86638-1.3147-1.445-1.8432-0.12345-0.11258-0.29343-0.15594-0.45443-0.11569l-0.90697 0.2272c-0.43594-0.28857-0.9067-0.51908-1.4005-0.68616l-0.39088-0.86264c-0.0694-0.15308-0.20858-0.26132-0.37209-0.28935-0.38361-0.0653-0.77121-0.0979-1.1588-0.0979zm0 4.1365a2.8152 2.8635 0 0 1 2.8152 2.8636 2.8152 2.8635 0 0 1-2.8152 2.8635 2.8152 2.8635 0 0 1-2.8152-2.8635 2.8152 2.8635 0 0 1 2.8152-2.8636z" fill="#fff" stroke-width=".25254"/></svg>
|
||||
|
After Width: | Height: | Size: 1.8 KiB |
Reference in New Issue
Block a user