Add settings wrapper
This commit is contained in:
parent
4019769c35
commit
75263e2a0c
|
@ -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
|
||||
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue