Add settings wrapper
This commit is contained in:
parent
4019769c35
commit
75263e2a0c
|
@ -1,6 +1,6 @@
|
||||||
import os
|
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.Linux import LinuxSettings
|
||||||
from Rare.Components.Tabs.Settings.SettingsWidget import SettingsWidget
|
from Rare.Components.Tabs.Settings.SettingsWidget import SettingsWidget
|
||||||
|
@ -35,6 +35,12 @@ class GameSettings(QWidget):
|
||||||
|
|
||||||
self.layout.addWidget(self.offline_widget)
|
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":
|
if os.name != "nt":
|
||||||
self.linux_settings = LinuxAppSettings(core)
|
self.linux_settings = LinuxAppSettings(core)
|
||||||
self.layout.addWidget(self.linux_settings)
|
self.layout.addWidget(self.linux_settings)
|
||||||
|
@ -47,7 +53,8 @@ class GameSettings(QWidget):
|
||||||
"proton") + '" run'
|
"proton") + '" run'
|
||||||
self.possible_proton_wrappers.append(wrapper)
|
self.possible_proton_wrappers.append(wrapper)
|
||||||
except FileNotFoundError as e:
|
except FileNotFoundError as e:
|
||||||
print("Unable to find Proton:", e)
|
print("Unable to find any Proton version")
|
||||||
|
|
||||||
self.select_proton = QComboBox()
|
self.select_proton = QComboBox()
|
||||||
self.select_proton.addItems(["Don't use Proton"] + self.possible_proton_wrappers)
|
self.select_proton.addItems(["Don't use Proton"] + self.possible_proton_wrappers)
|
||||||
self.select_proton.currentIndexChanged.connect(self.change_proton)
|
self.select_proton.currentIndexChanged.connect(self.change_proton)
|
||||||
|
@ -65,6 +72,19 @@ class GameSettings(QWidget):
|
||||||
self.layout.addStretch(1)
|
self.layout.addStretch(1)
|
||||||
self.setLayout(self.layout)
|
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):
|
def update_offline(self, i):
|
||||||
if self.change:
|
if self.change:
|
||||||
# remove section
|
# remove section
|
||||||
|
@ -104,6 +124,7 @@ class GameSettings(QWidget):
|
||||||
# Dont use Proton
|
# Dont use Proton
|
||||||
if i == 0:
|
if i == 0:
|
||||||
self.proton_prefix_widget.setVisible(False)
|
self.proton_prefix_widget.setVisible(False)
|
||||||
|
self.wrapper_widget.setVisible(True)
|
||||||
if f"{self.game.app_name}" in self.core.lgd.config.sections():
|
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="") != "":
|
if self.core.lgd.config.get(f"{self.game.app_name}", "wrapper", fallback="") != "":
|
||||||
self.core.lgd.config.remove_option(self.game.app_name, "wrapper")
|
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")
|
self.core.lgd.config.remove_section(self.game.app_name + ".env")
|
||||||
else:
|
else:
|
||||||
self.proton_prefix_widget.setVisible(True)
|
self.proton_prefix_widget.setVisible(True)
|
||||||
|
self.wrapper_widget.setVisible(False)
|
||||||
wrapper = self.possible_proton_wrappers[i - 1]
|
wrapper = self.possible_proton_wrappers[i - 1]
|
||||||
if not self.game.app_name in self.core.lgd.config.sections():
|
if not self.game.app_name in self.core.lgd.config.sections():
|
||||||
self.core.lgd.config[self.game.app_name] = {}
|
self.core.lgd.config[self.game.app_name] = {}
|
||||||
|
@ -180,6 +202,10 @@ class GameSettings(QWidget):
|
||||||
else:
|
else:
|
||||||
self.skip_update.setCurrentIndex(0)
|
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>")
|
self.title.setText(f"<h2>{self.game.app_title}</h2>")
|
||||||
if os.name != "nt":
|
if os.name != "nt":
|
||||||
self.linux_settings.update_game(app_name)
|
self.linux_settings.update_game(app_name)
|
||||||
|
@ -192,10 +218,11 @@ class GameSettings(QWidget):
|
||||||
fallback=self.tr(
|
fallback=self.tr(
|
||||||
"Please select path for proton prefix"))
|
"Please select path for proton prefix"))
|
||||||
self.proton_prefix.text_edit.setText(proton_prefix)
|
self.proton_prefix.text_edit.setText(proton_prefix)
|
||||||
|
self.wrapper_widget.setVisible(False)
|
||||||
else:
|
else:
|
||||||
self.select_proton.setCurrentIndex(0)
|
self.select_proton.setCurrentIndex(0)
|
||||||
self.proton_prefix_widget.setVisible(False)
|
self.proton_prefix_widget.setVisible(False)
|
||||||
|
self.wrapper_widget.setVisible(True)
|
||||||
self.change = 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):
|
def __init__(self, text: str, widget: QWidget, accept_button: QPushButton = None):
|
||||||
super(SettingsWidget, self).__init__()
|
super(SettingsWidget, self).__init__()
|
||||||
self.setObjectName("settings_widget")
|
self.setObjectName("settings_widget")
|
||||||
|
self.setStyleSheet("""QGroupBox{border: 1px solid gray;
|
||||||
|
border-radius: 3px;
|
||||||
|
margin-top: 1ex;}""")
|
||||||
self.layout = QVBoxLayout()
|
self.layout = QVBoxLayout()
|
||||||
self.info_text = QLabel("")
|
self.info_text = QLabel("")
|
||||||
self.layout.addWidget(QLabel(text))
|
self.setTitle(text)
|
||||||
self.layout.addWidget(widget)
|
self.layout.addWidget(widget)
|
||||||
if accept_button:
|
if accept_button:
|
||||||
self.layout.addWidget(accept_button)
|
self.layout.addWidget(accept_button)
|
||||||
|
|
Loading…
Reference in a new issue