1
0
Fork 0
mirror of synced 2024-06-02 02:34:40 +12:00

Settings improvements

This commit is contained in:
Dummerle 2021-04-08 11:09:17 +02:00
parent afb74d4bad
commit c0881261a0
4 changed files with 41 additions and 74 deletions

View file

@ -25,13 +25,13 @@ class GameSettings(QWidget):
self.offline = QComboBox()
self.offline.addItems(["unset", "true", "false"])
self.offline_widget = SettingsWidget(self.tr("Launch Game offline"), self.offline)
self.offline.currentIndexChanged.connect(self.update_offline)
self.offline.currentIndexChanged.connect(lambda x: self.update_combobox(x, "offline"))
self.skip_update = QComboBox()
self.skip_update.addItems(["unset", "true", "false"])
self.skip_update_widget = SettingsWidget(self.tr("Skip update check before launching"), self.skip_update)
self.layout.addWidget(self.skip_update_widget)
self.skip_update.currentIndexChanged.connect(self.update_skip_update)
self.skip_update.currentIndexChanged.connect(lambda x: self.update_combobox(x, "skip_update_check"))
self.layout.addWidget(self.offline_widget)
@ -86,38 +86,21 @@ class GameSettings(QWidget):
self.core.lgd.config.remove_section(self.game.app_name)
self.core.lgd.save_config()
def update_offline(self, i):
def update_combobox(self, i, option):
if self.change:
# remove section
if i == 0:
if self.game.app_name in self.core.lgd.config.sections():
if self.core.lgd.config.get(f"{self.game.app_name}", "offline", fallback="") != "":
self.core.lgd.config.remove_option(self.game.app_name, "offline")
if self.core.lgd.config.get(f"{self.game.app_name}", option, fallback="") != "":
self.core.lgd.config.remove_option(self.game.app_name, option)
if self.core.lgd.config[self.game.app_name] == {}:
self.core.lgd.config.remove_section(self.game.app_name)
elif i == 1:
self.core.lgd.config[self.game.app_name] = {}
self.core.lgd.config.set(self.game.app_name, "offline", "true")
self.core.lgd.config.set(self.game.app_name, option, "true")
elif i == 2:
self.core.lgd.config[self.game.app_name] = {}
self.core.lgd.config.set(self.game.app_name, "offline", "false")
self.core.lgd.save_config()
def update_skip_update(self, i):
if self.change:
# remove section
if i == 0:
if self.game.app_name in self.core.lgd.config.sections():
if self.core.lgd.config.get(f"{self.game.app_name}", "skip_update_check", fallback="") != "":
self.core.lgd.config.remove_option(self.game.app_name, "skip_update_check")
if self.core.lgd.config[self.game.app_name] == {}:
self.core.lgd.config.remove_section(self.game.app_name)
elif i == 1:
self.core.lgd.config[self.game.app_name] = {}
self.core.lgd.config.set(self.game.app_name, "skip_update_check", "true")
elif i == 2:
self.core.lgd.config[self.game.app_name] = {}
self.core.lgd.config.set(self.game.app_name, "skip_update_check", "false")
self.core.lgd.config.set(self.game.app_name, option, "false")
self.core.lgd.save_config()
def change_proton(self, i):
@ -157,7 +140,7 @@ class GameSettings(QWidget):
self.linux_settings.select_wine_exec.setText("")
self.linux_settings.save_wineexec()
self.linux_settings.select_path.text_edit.setText("")
self.linux_settings.save_wineprefix()
self.linux_settings.save_setting()
self.core.lgd.save_config()

View file

@ -14,13 +14,13 @@ class DxvkWidget(QGroupBox):
super(DxvkWidget, self).__init__()
self.core = core
self.dxvk_settings = {
"fps": (False, "Fps"),
"gpuload": (False, self.tr("GPU usage")),
"memory": (False, self.tr("Used Memory")),
"devinfo": (False, self.tr("Device info")),
"version": (False, self.tr("DXVK version")),
"api": (False, self.tr("D3D Level of application")),
"frametime": (False, self.tr("Frame time graph"))
"fps": [False, "Fps"],
"gpuload": [False, self.tr("GPU usage")],
"memory": [False, self.tr("Used Memory")],
"devinfo": [False, self.tr("Device info")],
"version": [False, self.tr("DXVK version")],
"api": [False, self.tr("D3D Level of application")],
"frametime": [False, self.tr("Frame time graph")]
}
self.name = "default"
self.layout = QVBoxLayout()
@ -34,9 +34,7 @@ class DxvkWidget(QGroupBox):
self.more_settings.setDisabled(not dxvk_hud == "")
if dxvk_hud:
for s in dxvk_hud.split(","):
y = list(self.dxvk_settings[s])
y[0] = True
self.dxvk_settings[s] = tuple(y)
self.dxvk_settings[s][0] = True
self.more_settings.setPopupMode(QToolButton.InstantPopup)
self.more_settings.setMenu(QMenu())
@ -63,9 +61,7 @@ class DxvkWidget(QGroupBox):
if dxvk_hud:
self.more_settings.setDisabled(False)
for s in dxvk_hud.split(","):
y = list(self.dxvk_settings[s])
y[0] = True
self.dxvk_settings[s] = tuple(y)
self.dxvk_settings[s][0] = True
else:
self.show_dxvk.setChecked(False)
self.more_settings.setDisabled(True)
@ -79,9 +75,7 @@ class DxvkWidget(QGroupBox):
for i in self.more_settings_widget.settings:
if i in ["fps", "gpuload"]:
lst = list(self.more_settings_widget.settings[i])
lst[0] = True
self.more_settings_widget.settings[i] = tuple(lst)
self.more_settings_widget.settings[i][0] = True
self.core.lgd.config[f"{self.name}.env"]["DXVK_HUD"] = "fps,gpuload"
for w in self.more_settings_widget.widgets:
@ -101,6 +95,7 @@ class DxvkWidget(QGroupBox):
class DxvkMoreSettingsWidget(QWidget):
show_dxvk = pyqtSignal(bool)
def __init__(self, settings: dict, core: LegendaryCore):
super(DxvkMoreSettingsWidget, self).__init__()
self.layout = QVBoxLayout()
@ -116,11 +111,9 @@ class DxvkMoreSettingsWidget(QWidget):
self.setLayout(self.layout)
def change(self, signal: tuple):
def change(self, signal: list):
tag, checked = signal
y = list(self.settings[tag])
y[0] = checked
self.settings[tag] = tuple(y)
self.settings[tag][0] = checked
sett = []
logger.debug(self.settings)
@ -128,7 +121,7 @@ class DxvkMoreSettingsWidget(QWidget):
check, _ = self.settings[i]
if check:
sett.append(i)
if len(sett) != 0:
if len(sett) > 0:
self.core.lgd.config.set(f"{self.name}.env", "DXVK_HUD", ",".join(sett))
else:

View file

@ -1,7 +1,9 @@
from logging import getLogger
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QIntValidator
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QFileDialog, QPushButton, QLineEdit, QGroupBox, QMessageBox
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QFileDialog, QPushButton, QLineEdit, QGroupBox, QMessageBox, \
QScrollArea
from rare.components.tabs.settings.settings_widget import SettingsWidget
from rare.utils.extra_widgets import PathEdit
@ -10,15 +12,16 @@ from custom_legendary.core import LegendaryCore
logger = getLogger("LegendarySettings")
class LegendarySettings(QGroupBox):
class LegendarySettings(QScrollArea):
def __init__(self, core: LegendaryCore):
super(LegendarySettings, self).__init__()
self.setTitle(self.tr("Legendary settings"))
self.widget = QGroupBox(self.tr("Legendary settings"))
self.setWidgetResizable(True)
self.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
self.layout = QVBoxLayout()
self.core = core
#self.title = QLabel("<h2>" + self.tr("Legendary settings") + "</h2>")
#self.layout.addWidget(self.title)
self.setObjectName("group")
self.widget.setObjectName("group")
# Default installation directory
self.select_path = PathEdit(core.get_default_install_dir(), type_of_file=QFileDialog.DirectoryOnly,
infotext="Default")
@ -53,7 +56,8 @@ class LegendarySettings(QGroupBox):
self.layout.addWidget(self.cleanup_widget)
self.layout.addStretch(1)
self.setLayout(self.layout)
self.widget.setLayout(self.layout)
self.setWidget(self.widget)
def save_path(self):
self.core.lgd.config["Legendary"]["install_dir"] = self.select_path.text()

View file

@ -24,7 +24,7 @@ class LinuxSettings(QGroupBox):
infotext="Default")
self.select_path.text_edit.textChanged.connect(lambda t: self.save_path_button.setDisabled(False))
self.save_path_button = QPushButton("Save")
self.save_path_button.clicked.connect(self.save_wineprefix)
self.save_path_button.clicked.connect(lambda: self.save_setting(self.select_path, "wine_prefix"))
self.install_dir_widget = SettingsWidget(self.tr("Default Wine Prefix"), self.select_path,
self.save_path_button)
self.layout.addWidget(self.install_dir_widget)
@ -32,7 +32,7 @@ class LinuxSettings(QGroupBox):
# Wine executable
self.select_wine_exec = QLineEdit(self.core.lgd.config.get(self.name, "wine_executable", fallback=""))
self.save_wine_exec = QPushButton("Save")
self.save_wine_exec.clicked.connect(self.save_wineexec)
self.save_wine_exec.clicked.connect(lambda: self.save_setting(self.select_wine_exec, "wine_executable"))
self.install_dir_widget = SettingsWidget(self.tr("Default Wine executable"), self.select_wine_exec,
self.save_wine_exec)
self.layout.addWidget(self.install_dir_widget)
@ -44,28 +44,15 @@ class LinuxSettings(QGroupBox):
self.layout.addStretch(1)
self.setLayout(self.layout)
def save_wineprefix(self):
def save_setting(self, widget: QLineEdit, setting_name: str):
if not self.name in self.core.lgd.config.sections():
self.core.lgd.config[self.name] = dict()
self.core.lgd.config[self.name]["wine_prefix"] = self.select_path.text()
if self.select_path.text() == "":
self.core.lgd.config[self.name].pop("wine_prefix")
logger.info("Remove wine_prefix section")
else:
logger.info("Set config of wine_prefix to " + self.select_path.text())
if self.core.lgd.config[self.name] == {}:
self.core.lgd.config.remove_section(self.name)
self.core.lgd.save_config()
self.core.lgd.config.add_section(self.name)
def save_wineexec(self):
if not self.name in self.core.lgd.config.sections():
self.core.lgd.config[self.name] = dict()
self.core.lgd.config[self.name]["wine_executable"] = self.select_wine_exec.text()
if self.select_wine_exec.text() == "":
self.core.lgd.config[self.name].pop("wine_executable")
logger.info("Remove wine executable section")
self.core.lgd.config.set(self.name, setting_name, widget.text())
if widget.text() == "":
self.core.lgd.config.remove_option(self.name, setting_name)
else:
logger.info("Set config of wine executable to " + self.select_wine_exec.text())
logger.info("Set config of wine_prefix to " + widget.text())
if self.core.lgd.config[self.name] == {}:
self.core.lgd.config.remove_section(self.name)
self.core.lgd.save_config()