1
0
Fork 0
mirror of synced 2024-06-17 01:54:46 +12:00

Add settings wrapper

This commit is contained in:
Dummerle 2021-03-26 18:04:29 +01:00
parent 4019769c35
commit 75263e2a0c
2 changed files with 36 additions and 6 deletions

View file

@ -1,6 +1,6 @@
import os
from PyQt5.QtWidgets import QWidget, QLabel, QVBoxLayout, QComboBox, QFileDialog, QPushButton, QMessageBox
from PyQt5.QtWidgets import QWidget, QLabel, QVBoxLayout, QComboBox, QFileDialog, QPushButton, QMessageBox, QLineEdit
from Rare.Components.Tabs.Settings.Linux import LinuxSettings
from Rare.Components.Tabs.Settings.SettingsWidget import SettingsWidget
@ -35,6 +35,12 @@ class GameSettings(QWidget):
self.layout.addWidget(self.offline_widget)
self.wrapper = QLineEdit("")
self.wrapper_save_button = QPushButton(self.tr("Save"))
self.wrapper_save_button.clicked.connect(self.update_wrapper)
self.wrapper_widget = SettingsWidget(self.tr("Wrapper (e.g. optirun)"), self.wrapper, self.wrapper_save_button)
self.layout.addWidget(self.wrapper_widget)
if os.name != "nt":
self.linux_settings = LinuxAppSettings(core)
self.layout.addWidget(self.linux_settings)
@ -47,7 +53,8 @@ class GameSettings(QWidget):
"proton") + '" run'
self.possible_proton_wrappers.append(wrapper)
except FileNotFoundError as e:
print("Unable to find Proton:", e)
print("Unable to find any Proton version")
self.select_proton = QComboBox()
self.select_proton.addItems(["Don't use Proton"] + self.possible_proton_wrappers)
self.select_proton.currentIndexChanged.connect(self.change_proton)
@ -65,6 +72,19 @@ class GameSettings(QWidget):
self.layout.addStretch(1)
self.setLayout(self.layout)
def update_wrapper(self):
wrapper = self.wrapper.text()
if wrapper != "":
if not self.game.app_name in self.core.lgd.config.sections():
self.core.lgd.config[self.game.app_name] = {}
self.core.lgd.config.set(self.game.app_name, "wrapper", wrapper)
else:
if self.game.app_name in self.core.lgd.config.sections() and self.core.lgd.config.get(f"{self.game.app_name}", "wrapper", fallback="") != "":
self.core.lgd.config.remove_option(self.game.app_name, "wrapper")
if self.core.lgd.config[self.game.app_name] == {}:
self.core.lgd.config.remove_section(self.game.app_name)
self.core.lgd.save_config()
def update_offline(self, i):
if self.change:
# remove section
@ -104,6 +124,7 @@ class GameSettings(QWidget):
# Dont use Proton
if i == 0:
self.proton_prefix_widget.setVisible(False)
self.wrapper_widget.setVisible(True)
if f"{self.game.app_name}" in self.core.lgd.config.sections():
if self.core.lgd.config.get(f"{self.game.app_name}", "wrapper", fallback="") != "":
self.core.lgd.config.remove_option(self.game.app_name, "wrapper")
@ -119,6 +140,7 @@ class GameSettings(QWidget):
self.core.lgd.config.remove_section(self.game.app_name + ".env")
else:
self.proton_prefix_widget.setVisible(True)
self.wrapper_widget.setVisible(False)
wrapper = self.possible_proton_wrappers[i - 1]
if not self.game.app_name in self.core.lgd.config.sections():
self.core.lgd.config[self.game.app_name] = {}
@ -180,6 +202,10 @@ class GameSettings(QWidget):
else:
self.skip_update.setCurrentIndex(0)
wrapper = self.core.lgd.config.get(self.game.app_name, "wrapper", fallback="")
self.wrapper.setText(wrapper)
self.title.setText(f"<h2>{self.game.app_title}</h2>")
if os.name != "nt":
self.linux_settings.update_game(app_name)
@ -192,10 +218,11 @@ class GameSettings(QWidget):
fallback=self.tr(
"Please select path for proton prefix"))
self.proton_prefix.text_edit.setText(proton_prefix)
self.wrapper_widget.setVisible(False)
else:
self.select_proton.setCurrentIndex(0)
self.proton_prefix_widget.setVisible(False)
self.wrapper_widget.setVisible(True)
self.change = True

View file

@ -1,13 +1,16 @@
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QPushButton
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QPushButton, QGroupBox
class SettingsWidget(QWidget):
class SettingsWidget(QGroupBox):
def __init__(self, text: str, widget: QWidget, accept_button: QPushButton = None):
super(SettingsWidget, self).__init__()
self.setObjectName("settings_widget")
self.setStyleSheet("""QGroupBox{border: 1px solid gray;
border-radius: 3px;
margin-top: 1ex;}""")
self.layout = QVBoxLayout()
self.info_text = QLabel("")
self.layout.addWidget(QLabel(text))
self.setTitle(text)
self.layout.addWidget(widget)
if accept_button:
self.layout.addWidget(accept_button)