1
0
Fork 0
mirror of synced 2024-06-25 17:50:45 +12:00

Add pre_launch settings

This commit is contained in:
Dummerle 2022-03-14 23:29:54 +01:00
parent 1a84abcb2b
commit d077e2bc24
No known key found for this signature in database
GPG key ID: AB68CC59CA39F2F1
5 changed files with 77 additions and 6 deletions

View file

@ -27,7 +27,7 @@ class BrowserLogin(QWidget, Ui_BrowserLogin):
self.core = core
self.sid_edit = IndicatorLineEdit(
ph_text=self.tr("Insert SID here"), edit_func=self.text_changed, parent=self
placeholder=self.tr("Insert SID here"), edit_func=self.text_changed, parent=self
)
self.link_text.setText(self.login_url)
self.copy_button.setIcon(icon("mdi.content-copy", "fa.copy"))

View file

@ -15,6 +15,7 @@ from legendary.core import LegendaryCore
from legendary.models.game import InstalledGame, Game
from rare.components.tabs.settings.linux import LinuxSettings
from rare.components.tabs.settings.widgets.pre_launch import PreLaunchSettings
from rare.components.tabs.settings.widgets.proton import ProtonSettings
from rare.components.tabs.settings.widgets.wrapper import WrapperSettings
from rare.ui.components.tabs.games.game_info.game_settings import Ui_GameSettings
@ -47,6 +48,11 @@ class GameSettings(QWidget, Ui_GameSettings):
QLabel("Wrapper"), self.wrapper_settings
)
self.pre_launch_settings = PreLaunchSettings()
self.launch_settings_group.layout().addRow(
QLabel("pre launch"), self.pre_launch_settings
)
self.cloud_save_path_edit = PathEdit(
"",
file_type=QFileDialog.DirectoryOnly,
@ -264,6 +270,9 @@ class GameSettings(QWidget, Ui_GameSettings):
self.override_exe_edit.setText(
self.core.lgd.config.get(self.game.app_name, "override_exe", fallback="")
)
self.pre_launch_settings.load_settings(app_name)
self.change = True
self.env_vars.update_game(app_name)

View file

@ -87,7 +87,7 @@ class ImportGroup(QGroupBox, Ui_ImportGroup):
self.path_edit_layout.addWidget(self.path_edit)
self.app_name = IndicatorLineEdit(
ph_text=self.tr("Use in case the app name was not found automatically"),
placeholder=self.tr("Use in case the app name was not found automatically"),
completer=AppNameCompleter(
app_names=[
(i.app_name, i.app_title) for i in self.api_results.game_list

View file

@ -0,0 +1,62 @@
import os
import shutil
from typing import Tuple
from PyQt5.QtWidgets import QWidget, QHBoxLayout, QCheckBox
from rare.shared import LegendaryCoreSingleton
from rare.utils import config_helper
from rare.utils.extra_widgets import IndicatorLineEdit
class PreLaunchSettings(QWidget):
app_name: str
def __init__(self):
super(PreLaunchSettings, self).__init__()
self.setLayout(QHBoxLayout())
self.core = LegendaryCoreSingleton()
self.edit = IndicatorLineEdit(
text="",
placeholder=self.tr("Pre launch command"),
edit_func=self.edit_command,
save_func=self.save_pre_launch_command,
parent=self
)
self.layout().addWidget(self.edit)
self.wait_check = QCheckBox(self.tr("Wait for finish"))
self.layout().addWidget(self.wait_check)
self.wait_check.stateChanged.connect(self.save_wait_finish)
def edit_command(self, text: str) -> Tuple[bool, str, str]:
if not text:
return True, text, ""
if not os.path.isfile(text.split()[0]) and not shutil.which(text.split()[0]):
return False, text, IndicatorLineEdit.reasons.dir_not_exist
else:
return True, text, ""
def save_pre_launch_command(self, text):
if text:
config_helper.add_option(self.app_name, "pre_launch_command", text)
self.wait_check.setDisabled(False)
else:
config_helper.remove_option(self.app_name, "pre_launch_command")
self.wait_check.setDisabled(True)
config_helper.remove_option(self.app_name, "pre_launch_wait")
def save_wait_finish(self):
config_helper.add_option(self.app_name, "pre_launch_wait", str(self.wait_check.isChecked()).lower())
def load_settings(self, app_name):
self.app_name = app_name
command = self.core.lgd.config.get(app_name, "pre_launch_command", fallback="")
self.edit.setText(command)
wait = self.core.lgd.config.getboolean(app_name, "pre_launch_wait", fallback=False)
self.wait_check.setChecked(wait)
self.wait_check.setEnabled(bool(command))

View file

@ -161,7 +161,7 @@ class IndicatorLineEdit(QWidget):
def __init__(
self,
text: str = "",
ph_text: str = "",
placeholder: str = "",
completer: QCompleter = None,
edit_func: Callable[[str], Tuple[bool, str, str]] = None,
save_func: Callable[[str], None] = None,
@ -176,7 +176,7 @@ class IndicatorLineEdit(QWidget):
# Add line_edit
self.line_edit = QLineEdit(self)
self.line_edit.setObjectName("line_edit")
self.line_edit.setPlaceholderText(ph_text)
self.line_edit.setPlaceholderText(placeholder)
self.line_edit.setSizePolicy(horiz_policy, QSizePolicy.Fixed)
# Add hint_label to line_edit
self.line_edit.setLayout(QHBoxLayout())
@ -199,7 +199,7 @@ class IndicatorLineEdit(QWidget):
self.indicator_label.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
self.layout.addWidget(self.indicator_label)
if not ph_text:
if not placeholder:
_translate = QCoreApplication.translate
self.line_edit.setPlaceholderText(
_translate(self.__class__.__name__, "Default")
@ -320,7 +320,7 @@ class PathEdit(IndicatorLineEdit):
self.completer.setModel(self.compl_model)
super(PathEdit, self).__init__(
text=path,
ph_text=placeholder,
placeholder=placeholder,
completer=self.completer,
edit_func=edit_func,
save_func=save_func,