1
0
Fork 0
mirror of synced 2024-09-30 09:17:37 +13: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) self.head_bar.view.toggled.connect(self.toggle_view)
f = self.settings.value("filter", 0, int) 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.active_filter = self.head_bar.available_filters[f]
self.filter_games(self.active_filter) 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.extra_widgets import PathEdit
from rare.utils.utils import WineResolver, get_raw_save_path from rare.utils.utils import WineResolver, get_raw_save_path
logger = getLogger("GameSettings")
def find_proton_wrappers(): def find_proton_wrappers():
possible_proton_wrappers = [] possible_proton_wrappers = []
@ -33,13 +35,10 @@ def find_proton_wrappers():
wrapper = '"' + proton + '" run' wrapper = '"' + proton + '" run'
possible_proton_wrappers.append(wrapper) possible_proton_wrappers.append(wrapper)
if not possible_proton_wrappers: if not possible_proton_wrappers:
print("Unable to find any Proton version") logger.warning("Unable to find any Proton version")
return possible_proton_wrappers return possible_proton_wrappers
logger = getLogger("GameSettings")
class GameSettings(QWidget, Ui_GameSettings): class GameSettings(QWidget, Ui_GameSettings):
game: Game game: Game
igame: InstalledGame igame: InstalledGame
@ -74,16 +73,15 @@ class GameSettings(QWidget, Ui_GameSettings):
self.cloud_sync.stateChanged.connect( self.cloud_sync.stateChanged.connect(
lambda: self.settings.setValue(f"{self.game.app_name}/auto_sync_cloud", self.cloud_sync.isChecked()) 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.textChanged.connect(
self.launch_params_button.clicked.connect( lambda x: self.save_line_edit("start_params", x)
lambda: self.save_line_edit("start_params", self.launch_params.text())
) )
self.launch_params_button.setEnabled(False) self.wrapper.textChanged.connect(
self.wrapper.textChanged.connect(lambda: self.wrapper_button.setEnabled(True)) lambda x: self.save_line_edit("wrapper", x)
self.wrapper_button.clicked.connect( )
lambda: self.save_line_edit("wrapper", self.wrapper.text()) self.override_exe_edit.textChanged.connect(
lambda x: self.save_line_edit("override_exe", x)
) )
self.wrapper_button.setEnabled(False)
if platform.system() != "Windows": if platform.system() != "Windows":
self.possible_proton_wrappers = find_proton_wrappers() 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]: if not self.core.lgd.config[self.game.app_name]:
self.core.lgd.config.remove_section(self.game.app_name) self.core.lgd.config.remove_section(self.game.app_name)
self.core.lgd.save_config() self.core.lgd.save_config()
self.sender().setEnabled(False)
if option == "wine_prefix": if option == "wine_prefix":
if self.game.supports_cloud_saves: if self.game.supports_cloud_saves:
@ -215,12 +212,11 @@ class GameSettings(QWidget, Ui_GameSettings):
# lk: TODO: This has to be fixed properly. # 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 # 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.setText(self.core.lgd.config.get(f"{self.game.app_name}", "wrapper", fallback=""))
self.wrapper_button.setDisabled(True) self.wrapper.setEnabled(True)
self.wrapper_widget.setEnabled(True)
self.linux_settings.wine_groupbox.setEnabled(True) self.linux_settings.wine_groupbox.setEnabled(True)
else: else:
self.proton_prefix.setEnabled(True) self.proton_prefix.setEnabled(True)
self.wrapper_widget.setEnabled(False) self.wrapper.setEnabled(False)
self.linux_settings.wine_groupbox.setEnabled(False) self.linux_settings.wine_groupbox.setEnabled(False)
wrapper = self.possible_proton_wrappers[i - 1] wrapper = self.possible_proton_wrappers[i - 1]
if self.game.app_name not in self.core.lgd.config.sections(): if self.game.app_name not in self.core.lgd.config.sections():
@ -298,11 +294,11 @@ class GameSettings(QWidget, Ui_GameSettings):
fallback=self.tr( fallback=self.tr(
"Please select path for proton prefix")) "Please select path for proton prefix"))
self.proton_prefix.setText(proton_prefix) self.proton_prefix.setText(proton_prefix)
self.wrapper_widget.setEnabled(False) self.wrapper.setEnabled(False)
else: else:
self.proton_wrapper.setCurrentIndex(0) self.proton_wrapper.setCurrentIndex(0)
self.proton_prefix.setEnabled(False) self.proton_prefix.setEnabled(False)
self.wrapper_widget.setEnabled(True) self.wrapper.setEnabled(True)
if not self.game.supports_cloud_saves: if not self.game.supports_cloud_saves:
self.cloud_gb.setEnabled(False) self.cloud_gb.setEnabled(False)
@ -317,6 +313,7 @@ class GameSettings(QWidget, Ui_GameSettings):
self.cloud_save_path_edit.setText("") self.cloud_save_path_edit.setText("")
self.launch_params.setText(self.core.lgd.config.get(self.game.app_name, "start_params", fallback="")) 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 self.change = True

View file

@ -8,7 +8,7 @@
# run again. Do not edit this file unless you know what you are doing. # 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): class Ui_GameSettings(object):
@ -23,9 +23,15 @@ class Ui_GameSettings(object):
self.game_title.setObjectName("game_title") self.game_title.setObjectName("game_title")
self.game_settings_layout.addWidget(self.game_title, 0, QtCore.Qt.AlignTop) self.game_settings_layout.addWidget(self.game_title, 0, QtCore.Qt.AlignTop)
self.launch_settings_groupbox = QtWidgets.QGroupBox(GameSettings) 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_groupbox.setObjectName("launch_settings_groupbox")
self.launch_settings_layout = QtWidgets.QFormLayout(self.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.launch_settings_layout.setObjectName("launch_settings_layout")
self.skip_update_label = QtWidgets.QLabel(self.launch_settings_groupbox) self.skip_update_label = QtWidgets.QLabel(self.launch_settings_groupbox)
self.skip_update_label.setObjectName("skip_update_label") 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 = QtWidgets.QLabel(self.launch_settings_groupbox)
self.launch_params_label.setObjectName("launch_params_label") self.launch_params_label.setObjectName("launch_params_label")
self.launch_settings_layout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.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 = QtWidgets.QLineEdit(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.setMinimumSize(QtCore.QSize(400, 0)) self.launch_params.setMinimumSize(QtCore.QSize(400, 0))
self.launch_params.setObjectName("launch_params") self.launch_params.setObjectName("launch_params")
self.launch_params_layout.addWidget(self.launch_params) self.launch_settings_layout.setWidget(2, QtWidgets.QFormLayout.FieldRole, 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.wrapper_label = QtWidgets.QLabel(self.launch_settings_groupbox) self.wrapper_label = QtWidgets.QLabel(self.launch_settings_groupbox)
self.wrapper_label.setObjectName("wrapper_label") self.wrapper_label.setObjectName("wrapper_label")
self.launch_settings_layout.setWidget(3, QtWidgets.QFormLayout.LabelRole, self.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 = QtWidgets.QLineEdit(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.setMinimumSize(QtCore.QSize(400, 0)) self.wrapper.setMinimumSize(QtCore.QSize(400, 0))
self.wrapper.setObjectName("wrapper") self.wrapper.setObjectName("wrapper")
self.wrapper_layout.addWidget(self.wrapper) self.launch_settings_layout.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.wrapper)
self.wrapper_button = QtWidgets.QPushButton(self.wrapper_widget) self.override_exe_label = QtWidgets.QLabel(self.launch_settings_groupbox)
self.wrapper_button.setObjectName("wrapper_button") self.override_exe_label.setObjectName("override_exe_label")
self.wrapper_layout.addWidget(self.wrapper_button) self.launch_settings_layout.setWidget(4, QtWidgets.QFormLayout.LabelRole, self.override_exe_label)
self.launch_settings_layout.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.wrapper_widget) 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.game_settings_layout.addWidget(self.launch_settings_groupbox)
self.cloud_gb = QtWidgets.QGroupBox(GameSettings) self.cloud_gb = QtWidgets.QGroupBox(GameSettings)
self.cloud_gb.setObjectName("cloud_gb") self.cloud_gb.setObjectName("cloud_gb")
self.cloud_saves_layout = QtWidgets.QFormLayout(self.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_saves_layout.setObjectName("cloud_saves_layout")
self.cloud_sync_label = QtWidgets.QLabel(self.cloud_gb) self.cloud_sync_label = QtWidgets.QLabel(self.cloud_gb)
self.cloud_sync_label.setObjectName("cloud_sync_label") 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.setWidgetResizable(True)
self.linux_settings_scroll.setObjectName("linux_settings_scroll") self.linux_settings_scroll.setObjectName("linux_settings_scroll")
self.linux_settings_contents = QtWidgets.QWidget() 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.setObjectName("linux_settings_contents")
self.linux_settings_contents_layout = QtWidgets.QVBoxLayout(self.linux_settings_contents) self.linux_settings_contents_layout = QtWidgets.QVBoxLayout(self.linux_settings_contents)
self.linux_settings_contents_layout.setContentsMargins(0, 0, 9, 0) 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.offline.setItemText(2, _translate("GameSettings", "No"))
self.launch_params_label.setText(_translate("GameSettings", "Launch parameters")) self.launch_params_label.setText(_translate("GameSettings", "Launch parameters"))
self.launch_params.setPlaceholderText(_translate("GameSettings", "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_label.setText(_translate("GameSettings", "Wrapper"))
self.wrapper.setPlaceholderText(_translate("GameSettings", "e.g. optirun")) 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_gb.setTitle(_translate("GameSettings", "Cloud Saves"))
self.cloud_sync_label.setText(_translate("GameSettings", "Sync with cloud")) self.cloud_sync_label.setText(_translate("GameSettings", "Sync with cloud"))
self.proton_groupbox.setTitle(_translate("GameSettings", "Proton Settings")) self.proton_groupbox.setTitle(_translate("GameSettings", "Proton Settings"))

View file

@ -26,6 +26,12 @@
</item> </item>
<item> <item>
<widget class="QGroupBox" name="launch_settings_groupbox"> <widget class="QGroupBox" name="launch_settings_groupbox">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title"> <property name="title">
<string>Launch Settings</string> <string>Launch Settings</string>
</property> </property>
@ -105,21 +111,6 @@
</widget> </widget>
</item> </item>
<item row="2" column="1"> <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"> <widget class="QLineEdit" name="launch_params">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
@ -132,16 +123,6 @@
</property> </property>
</widget> </widget>
</item> </item>
<item>
<widget class="QPushButton" name="launch_params_button">
<property name="text">
<string>Save</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="3" column="0"> <item row="3" column="0">
<widget class="QLabel" name="wrapper_label"> <widget class="QLabel" name="wrapper_label">
<property name="text"> <property name="text">
@ -150,21 +131,6 @@
</widget> </widget>
</item> </item>
<item row="3" column="1"> <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"> <widget class="QLineEdit" name="wrapper">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
@ -177,14 +143,18 @@
</property> </property>
</widget> </widget>
</item> </item>
<item> <item row="4" column="0">
<widget class="QPushButton" name="wrapper_button"> <widget class="QLabel" name="override_exe_label">
<property name="text"> <property name="text">
<string>Save</string> <string>Override Exe</string>
</property> </property>
</widget> </widget>
</item> </item>
</layout> <item row="4" column="1">
<widget class="QLineEdit" name="override_exe_edit">
<property name="placeholderText">
<string>Relative path to launch executable</string>
</property>
</widget> </widget>
</item> </item>
</layout> </layout>
@ -235,8 +205,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>747</width> <width>741</width>
<height>343</height> <height>328</height>
</rect> </rect>
</property> </property>
<layout class="QVBoxLayout" name="linux_settings_contents_layout"> <layout class="QVBoxLayout" name="linux_settings_contents_layout">