Add override launch executable in game settings
This commit is contained in:
parent
fed1e53ab5
commit
1d4fd38d89
|
@ -93,6 +93,8 @@ class GamesTab(QStackedWidget, Ui_GamesTab):
|
|||
self.head_bar.view.toggled.connect(self.toggle_view)
|
||||
|
||||
f = self.settings.value("filter", 0, int)
|
||||
if f >= len(self.head_bar.available_filters):
|
||||
f = 0
|
||||
self.active_filter = self.head_bar.available_filters[f]
|
||||
self.filter_games(self.active_filter)
|
||||
|
||||
|
|
|
@ -14,6 +14,8 @@ from rare.ui.components.tabs.games.game_info.game_settings import Ui_GameSetting
|
|||
from rare.utils.extra_widgets import PathEdit
|
||||
from rare.utils.utils import WineResolver, get_raw_save_path
|
||||
|
||||
logger = getLogger("GameSettings")
|
||||
|
||||
|
||||
def find_proton_wrappers():
|
||||
possible_proton_wrappers = []
|
||||
|
@ -33,13 +35,10 @@ def find_proton_wrappers():
|
|||
wrapper = '"' + proton + '" run'
|
||||
possible_proton_wrappers.append(wrapper)
|
||||
if not possible_proton_wrappers:
|
||||
print("Unable to find any Proton version")
|
||||
logger.warning("Unable to find any Proton version")
|
||||
return possible_proton_wrappers
|
||||
|
||||
|
||||
logger = getLogger("GameSettings")
|
||||
|
||||
|
||||
class GameSettings(QWidget, Ui_GameSettings):
|
||||
game: Game
|
||||
igame: InstalledGame
|
||||
|
@ -74,16 +73,15 @@ class GameSettings(QWidget, Ui_GameSettings):
|
|||
self.cloud_sync.stateChanged.connect(
|
||||
lambda: self.settings.setValue(f"{self.game.app_name}/auto_sync_cloud", self.cloud_sync.isChecked())
|
||||
)
|
||||
self.launch_params.textChanged.connect(lambda: self.launch_params_button.setEnabled(True))
|
||||
self.launch_params_button.clicked.connect(
|
||||
lambda: self.save_line_edit("start_params", self.launch_params.text())
|
||||
self.launch_params.textChanged.connect(
|
||||
lambda x: self.save_line_edit("start_params", x)
|
||||
)
|
||||
self.launch_params_button.setEnabled(False)
|
||||
self.wrapper.textChanged.connect(lambda: self.wrapper_button.setEnabled(True))
|
||||
self.wrapper_button.clicked.connect(
|
||||
lambda: self.save_line_edit("wrapper", self.wrapper.text())
|
||||
self.wrapper.textChanged.connect(
|
||||
lambda x: self.save_line_edit("wrapper", x)
|
||||
)
|
||||
self.override_exe_edit.textChanged.connect(
|
||||
lambda x: self.save_line_edit("override_exe", x)
|
||||
)
|
||||
self.wrapper_button.setEnabled(False)
|
||||
|
||||
if platform.system() != "Windows":
|
||||
self.possible_proton_wrappers = find_proton_wrappers()
|
||||
|
@ -171,7 +169,6 @@ class GameSettings(QWidget, Ui_GameSettings):
|
|||
if not self.core.lgd.config[self.game.app_name]:
|
||||
self.core.lgd.config.remove_section(self.game.app_name)
|
||||
self.core.lgd.save_config()
|
||||
self.sender().setEnabled(False)
|
||||
|
||||
if option == "wine_prefix":
|
||||
if self.game.supports_cloud_saves:
|
||||
|
@ -215,12 +212,11 @@ class GameSettings(QWidget, Ui_GameSettings):
|
|||
# lk: TODO: This has to be fixed properly.
|
||||
# lk: It happens because of the widget update. Mask it for now behind disabling the save button
|
||||
self.wrapper.setText(self.core.lgd.config.get(f"{self.game.app_name}", "wrapper", fallback=""))
|
||||
self.wrapper_button.setDisabled(True)
|
||||
self.wrapper_widget.setEnabled(True)
|
||||
self.wrapper.setEnabled(True)
|
||||
self.linux_settings.wine_groupbox.setEnabled(True)
|
||||
else:
|
||||
self.proton_prefix.setEnabled(True)
|
||||
self.wrapper_widget.setEnabled(False)
|
||||
self.wrapper.setEnabled(False)
|
||||
self.linux_settings.wine_groupbox.setEnabled(False)
|
||||
wrapper = self.possible_proton_wrappers[i - 1]
|
||||
if self.game.app_name not in self.core.lgd.config.sections():
|
||||
|
@ -298,11 +294,11 @@ class GameSettings(QWidget, Ui_GameSettings):
|
|||
fallback=self.tr(
|
||||
"Please select path for proton prefix"))
|
||||
self.proton_prefix.setText(proton_prefix)
|
||||
self.wrapper_widget.setEnabled(False)
|
||||
self.wrapper.setEnabled(False)
|
||||
else:
|
||||
self.proton_wrapper.setCurrentIndex(0)
|
||||
self.proton_prefix.setEnabled(False)
|
||||
self.wrapper_widget.setEnabled(True)
|
||||
self.wrapper.setEnabled(True)
|
||||
|
||||
if not self.game.supports_cloud_saves:
|
||||
self.cloud_gb.setEnabled(False)
|
||||
|
@ -317,6 +313,7 @@ class GameSettings(QWidget, Ui_GameSettings):
|
|||
self.cloud_save_path_edit.setText("")
|
||||
|
||||
self.launch_params.setText(self.core.lgd.config.get(self.game.app_name, "start_params", fallback=""))
|
||||
self.override_exe_edit.setText(self.core.lgd.config.get(self.game.app_name, "override_exe", fallback=""))
|
||||
self.change = True
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
# run again. Do not edit this file unless you know what you are doing.
|
||||
|
||||
|
||||
from PyQt5 import QtCore, QtGui, QtWidgets
|
||||
from PyQt5 import QtCore, QtWidgets
|
||||
|
||||
|
||||
class Ui_GameSettings(object):
|
||||
|
@ -19,13 +19,19 @@ class Ui_GameSettings(object):
|
|||
self.game_settings_layout.setObjectName("game_settings_layout")
|
||||
self.game_title = QtWidgets.QLabel(GameSettings)
|
||||
self.game_title.setText("error")
|
||||
self.game_title.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByMouse)
|
||||
self.game_title.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse | QtCore.Qt.TextSelectableByMouse)
|
||||
self.game_title.setObjectName("game_title")
|
||||
self.game_settings_layout.addWidget(self.game_title, 0, QtCore.Qt.AlignTop)
|
||||
self.launch_settings_groupbox = QtWidgets.QGroupBox(GameSettings)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.launch_settings_groupbox.sizePolicy().hasHeightForWidth())
|
||||
self.launch_settings_groupbox.setSizePolicy(sizePolicy)
|
||||
self.launch_settings_groupbox.setObjectName("launch_settings_groupbox")
|
||||
self.launch_settings_layout = QtWidgets.QFormLayout(self.launch_settings_groupbox)
|
||||
self.launch_settings_layout.setLabelAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
|
||||
self.launch_settings_layout.setLabelAlignment(
|
||||
QtCore.Qt.AlignRight | QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter)
|
||||
self.launch_settings_layout.setObjectName("launch_settings_layout")
|
||||
self.skip_update_label = QtWidgets.QLabel(self.launch_settings_groupbox)
|
||||
self.skip_update_label.setObjectName("skip_update_label")
|
||||
|
@ -58,40 +64,29 @@ class Ui_GameSettings(object):
|
|||
self.launch_params_label = QtWidgets.QLabel(self.launch_settings_groupbox)
|
||||
self.launch_params_label.setObjectName("launch_params_label")
|
||||
self.launch_settings_layout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.launch_params_label)
|
||||
self.launch_params_widget = QtWidgets.QWidget(self.launch_settings_groupbox)
|
||||
self.launch_params_widget.setObjectName("launch_params_widget")
|
||||
self.launch_params_layout = QtWidgets.QHBoxLayout(self.launch_params_widget)
|
||||
self.launch_params_layout.setContentsMargins(0, 0, 0, 0)
|
||||
self.launch_params_layout.setObjectName("launch_params_layout")
|
||||
self.launch_params = QtWidgets.QLineEdit(self.launch_params_widget)
|
||||
self.launch_params = QtWidgets.QLineEdit(self.launch_settings_groupbox)
|
||||
self.launch_params.setMinimumSize(QtCore.QSize(400, 0))
|
||||
self.launch_params.setObjectName("launch_params")
|
||||
self.launch_params_layout.addWidget(self.launch_params)
|
||||
self.launch_params_button = QtWidgets.QPushButton(self.launch_params_widget)
|
||||
self.launch_params_button.setObjectName("launch_params_button")
|
||||
self.launch_params_layout.addWidget(self.launch_params_button)
|
||||
self.launch_settings_layout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.launch_params_widget)
|
||||
self.launch_settings_layout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.launch_params)
|
||||
self.wrapper_label = QtWidgets.QLabel(self.launch_settings_groupbox)
|
||||
self.wrapper_label.setObjectName("wrapper_label")
|
||||
self.launch_settings_layout.setWidget(3, QtWidgets.QFormLayout.LabelRole, self.wrapper_label)
|
||||
self.wrapper_widget = QtWidgets.QWidget(self.launch_settings_groupbox)
|
||||
self.wrapper_widget.setObjectName("wrapper_widget")
|
||||
self.wrapper_layout = QtWidgets.QHBoxLayout(self.wrapper_widget)
|
||||
self.wrapper_layout.setContentsMargins(0, 0, 0, 0)
|
||||
self.wrapper_layout.setObjectName("wrapper_layout")
|
||||
self.wrapper = QtWidgets.QLineEdit(self.wrapper_widget)
|
||||
self.wrapper = QtWidgets.QLineEdit(self.launch_settings_groupbox)
|
||||
self.wrapper.setMinimumSize(QtCore.QSize(400, 0))
|
||||
self.wrapper.setObjectName("wrapper")
|
||||
self.wrapper_layout.addWidget(self.wrapper)
|
||||
self.wrapper_button = QtWidgets.QPushButton(self.wrapper_widget)
|
||||
self.wrapper_button.setObjectName("wrapper_button")
|
||||
self.wrapper_layout.addWidget(self.wrapper_button)
|
||||
self.launch_settings_layout.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.wrapper_widget)
|
||||
self.launch_settings_layout.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.wrapper)
|
||||
self.override_exe_label = QtWidgets.QLabel(self.launch_settings_groupbox)
|
||||
self.override_exe_label.setObjectName("override_exe_label")
|
||||
self.launch_settings_layout.setWidget(4, QtWidgets.QFormLayout.LabelRole, self.override_exe_label)
|
||||
self.override_exe_edit = QtWidgets.QLineEdit(self.launch_settings_groupbox)
|
||||
self.override_exe_edit.setObjectName("override_exe_edit")
|
||||
self.launch_settings_layout.setWidget(4, QtWidgets.QFormLayout.FieldRole, self.override_exe_edit)
|
||||
self.game_settings_layout.addWidget(self.launch_settings_groupbox)
|
||||
self.cloud_gb = QtWidgets.QGroupBox(GameSettings)
|
||||
self.cloud_gb.setObjectName("cloud_gb")
|
||||
self.cloud_saves_layout = QtWidgets.QFormLayout(self.cloud_gb)
|
||||
self.cloud_saves_layout.setLabelAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
|
||||
self.cloud_saves_layout.setLabelAlignment(
|
||||
QtCore.Qt.AlignRight | QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter)
|
||||
self.cloud_saves_layout.setObjectName("cloud_saves_layout")
|
||||
self.cloud_sync_label = QtWidgets.QLabel(self.cloud_gb)
|
||||
self.cloud_sync_label.setObjectName("cloud_sync_label")
|
||||
|
@ -108,7 +103,7 @@ class Ui_GameSettings(object):
|
|||
self.linux_settings_scroll.setWidgetResizable(True)
|
||||
self.linux_settings_scroll.setObjectName("linux_settings_scroll")
|
||||
self.linux_settings_contents = QtWidgets.QWidget()
|
||||
self.linux_settings_contents.setGeometry(QtCore.QRect(0, 0, 747, 343))
|
||||
self.linux_settings_contents.setGeometry(QtCore.QRect(0, 0, 741, 328))
|
||||
self.linux_settings_contents.setObjectName("linux_settings_contents")
|
||||
self.linux_settings_contents_layout = QtWidgets.QVBoxLayout(self.linux_settings_contents)
|
||||
self.linux_settings_contents_layout.setContentsMargins(0, 0, 9, 0)
|
||||
|
@ -157,10 +152,10 @@ class Ui_GameSettings(object):
|
|||
self.offline.setItemText(2, _translate("GameSettings", "No"))
|
||||
self.launch_params_label.setText(_translate("GameSettings", "Launch parameters"))
|
||||
self.launch_params.setPlaceholderText(_translate("GameSettings", "parameters"))
|
||||
self.launch_params_button.setText(_translate("GameSettings", "Save"))
|
||||
self.wrapper_label.setText(_translate("GameSettings", "Wrapper"))
|
||||
self.wrapper.setPlaceholderText(_translate("GameSettings", "e.g. optirun"))
|
||||
self.wrapper_button.setText(_translate("GameSettings", "Save"))
|
||||
self.override_exe_label.setText(_translate("GameSettings", "Override Exe"))
|
||||
self.override_exe_edit.setPlaceholderText(_translate("GameSettings", "Relative path to launch executable"))
|
||||
self.cloud_gb.setTitle(_translate("GameSettings", "Cloud Saves"))
|
||||
self.cloud_sync_label.setText(_translate("GameSettings", "Sync with cloud"))
|
||||
self.proton_groupbox.setTitle(_translate("GameSettings", "Proton Settings"))
|
||||
|
|
|
@ -26,16 +26,22 @@
|
|||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="launch_settings_groupbox">
|
||||
<property name="title">
|
||||
<string>Launch Settings</string>
|
||||
</property>
|
||||
<layout class="QFormLayout" name="launch_settings_layout">
|
||||
<property name="labelAlignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="skip_update_label">
|
||||
<property name="text">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>Launch Settings</string>
|
||||
</property>
|
||||
<layout class="QFormLayout" name="launch_settings_layout">
|
||||
<property name="labelAlignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="skip_update_label">
|
||||
<property name="text">
|
||||
<string>Skip update check</string>
|
||||
</property>
|
||||
</widget>
|
||||
|
@ -104,90 +110,54 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QWidget" name="launch_params_widget" native="true">
|
||||
<layout class="QHBoxLayout" name="launch_params_layout">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="launch_params">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>400</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="placeholderText">
|
||||
<string>parameters</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="launch_params_button">
|
||||
<property name="text">
|
||||
<string>Save</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QLineEdit" name="launch_params">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>400</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="placeholderText">
|
||||
<string>parameters</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="wrapper_label">
|
||||
<property name="text">
|
||||
<string>Wrapper</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QLineEdit" name="wrapper">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>400</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="placeholderText">
|
||||
<string>e.g. optirun</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="QLabel" name="override_exe_label">
|
||||
<property name="text">
|
||||
<string>Override Exe</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="1">
|
||||
<widget class="QLineEdit" name="override_exe_edit">
|
||||
<property name="placeholderText">
|
||||
<string>Relative path to launch executable</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="wrapper_label">
|
||||
<property name="text">
|
||||
<string>Wrapper</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QWidget" name="wrapper_widget" native="true">
|
||||
<layout class="QHBoxLayout" name="wrapper_layout">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="wrapper">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>400</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="placeholderText">
|
||||
<string>e.g. optirun</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="wrapper_button">
|
||||
<property name="text">
|
||||
<string>Save</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
|
@ -232,12 +202,12 @@
|
|||
</property>
|
||||
<widget class="QWidget" name="linux_settings_contents">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>747</width>
|
||||
<height>343</height>
|
||||
</rect>
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>741</width>
|
||||
<height>328</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="linux_settings_contents_layout">
|
||||
<property name="leftMargin">
|
||||
|
|
Loading…
Reference in a new issue