Add pre_launch settings
This commit is contained in:
parent
1a84abcb2b
commit
d077e2bc24
|
@ -27,7 +27,7 @@ class BrowserLogin(QWidget, Ui_BrowserLogin):
|
||||||
self.core = core
|
self.core = core
|
||||||
|
|
||||||
self.sid_edit = IndicatorLineEdit(
|
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.link_text.setText(self.login_url)
|
||||||
self.copy_button.setIcon(icon("mdi.content-copy", "fa.copy"))
|
self.copy_button.setIcon(icon("mdi.content-copy", "fa.copy"))
|
||||||
|
|
|
@ -15,6 +15,7 @@ from legendary.core import LegendaryCore
|
||||||
from legendary.models.game import InstalledGame, Game
|
from legendary.models.game import InstalledGame, Game
|
||||||
|
|
||||||
from rare.components.tabs.settings.linux import LinuxSettings
|
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.proton import ProtonSettings
|
||||||
from rare.components.tabs.settings.widgets.wrapper import WrapperSettings
|
from rare.components.tabs.settings.widgets.wrapper import WrapperSettings
|
||||||
from rare.ui.components.tabs.games.game_info.game_settings import Ui_GameSettings
|
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
|
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(
|
self.cloud_save_path_edit = PathEdit(
|
||||||
"",
|
"",
|
||||||
file_type=QFileDialog.DirectoryOnly,
|
file_type=QFileDialog.DirectoryOnly,
|
||||||
|
@ -264,6 +270,9 @@ class GameSettings(QWidget, Ui_GameSettings):
|
||||||
self.override_exe_edit.setText(
|
self.override_exe_edit.setText(
|
||||||
self.core.lgd.config.get(self.game.app_name, "override_exe", fallback="")
|
self.core.lgd.config.get(self.game.app_name, "override_exe", fallback="")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
self.pre_launch_settings.load_settings(app_name)
|
||||||
|
|
||||||
self.change = True
|
self.change = True
|
||||||
self.env_vars.update_game(app_name)
|
self.env_vars.update_game(app_name)
|
||||||
|
|
||||||
|
|
|
@ -87,7 +87,7 @@ class ImportGroup(QGroupBox, Ui_ImportGroup):
|
||||||
self.path_edit_layout.addWidget(self.path_edit)
|
self.path_edit_layout.addWidget(self.path_edit)
|
||||||
|
|
||||||
self.app_name = IndicatorLineEdit(
|
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(
|
completer=AppNameCompleter(
|
||||||
app_names=[
|
app_names=[
|
||||||
(i.app_name, i.app_title) for i in self.api_results.game_list
|
(i.app_name, i.app_title) for i in self.api_results.game_list
|
||||||
|
|
62
rare/components/tabs/settings/widgets/pre_launch.py
Normal file
62
rare/components/tabs/settings/widgets/pre_launch.py
Normal 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))
|
|
@ -161,7 +161,7 @@ class IndicatorLineEdit(QWidget):
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
text: str = "",
|
text: str = "",
|
||||||
ph_text: str = "",
|
placeholder: str = "",
|
||||||
completer: QCompleter = None,
|
completer: QCompleter = None,
|
||||||
edit_func: Callable[[str], Tuple[bool, str, str]] = None,
|
edit_func: Callable[[str], Tuple[bool, str, str]] = None,
|
||||||
save_func: Callable[[str], None] = None,
|
save_func: Callable[[str], None] = None,
|
||||||
|
@ -176,7 +176,7 @@ class IndicatorLineEdit(QWidget):
|
||||||
# Add line_edit
|
# Add line_edit
|
||||||
self.line_edit = QLineEdit(self)
|
self.line_edit = QLineEdit(self)
|
||||||
self.line_edit.setObjectName("line_edit")
|
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)
|
self.line_edit.setSizePolicy(horiz_policy, QSizePolicy.Fixed)
|
||||||
# Add hint_label to line_edit
|
# Add hint_label to line_edit
|
||||||
self.line_edit.setLayout(QHBoxLayout())
|
self.line_edit.setLayout(QHBoxLayout())
|
||||||
|
@ -199,7 +199,7 @@ class IndicatorLineEdit(QWidget):
|
||||||
self.indicator_label.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
|
self.indicator_label.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
|
||||||
self.layout.addWidget(self.indicator_label)
|
self.layout.addWidget(self.indicator_label)
|
||||||
|
|
||||||
if not ph_text:
|
if not placeholder:
|
||||||
_translate = QCoreApplication.translate
|
_translate = QCoreApplication.translate
|
||||||
self.line_edit.setPlaceholderText(
|
self.line_edit.setPlaceholderText(
|
||||||
_translate(self.__class__.__name__, "Default")
|
_translate(self.__class__.__name__, "Default")
|
||||||
|
@ -320,7 +320,7 @@ class PathEdit(IndicatorLineEdit):
|
||||||
self.completer.setModel(self.compl_model)
|
self.completer.setModel(self.compl_model)
|
||||||
super(PathEdit, self).__init__(
|
super(PathEdit, self).__init__(
|
||||||
text=path,
|
text=path,
|
||||||
ph_text=placeholder,
|
placeholder=placeholder,
|
||||||
completer=self.completer,
|
completer=self.completer,
|
||||||
edit_func=edit_func,
|
edit_func=edit_func,
|
||||||
save_func=save_func,
|
save_func=save_func,
|
||||||
|
|
Loading…
Reference in a new issue