1
0
Fork 0
mirror of synced 2024-06-26 10:11:19 +12:00

Add override launch executable in game settings

This commit is contained in:
Dummerle 2021-12-19 23:43:43 +01:00
parent fed1e53ab5
commit 1d4fd38d89
No known key found for this signature in database
GPG key ID: AB68CC59CA39F2F1
4 changed files with 110 additions and 146 deletions

View file

@ -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)

View file

@ -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

View file

@ -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"))

View file

@ -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">