Fix Wine Resolver, mangohud, pre launch,
This commit is contained in:
parent
89e1336940
commit
b996aac3f7
|
@ -80,12 +80,17 @@ class GameSettings(DefaultGameSettings):
|
|||
new_path = self.core.get_save_path(self.game.app_name)
|
||||
except Exception as e:
|
||||
logger.warning(str(e))
|
||||
resolver = WineResolver(
|
||||
get_raw_save_path(self.game), self.game.app_name
|
||||
)
|
||||
if not resolver.wine_env.get("WINEPREFIX"):
|
||||
self.cloud_save_path_edit.setText("")
|
||||
QMessageBox.warning(self, "Warning", "No wine prefix selected. Please set it in settings")
|
||||
return
|
||||
self.cloud_save_path_edit.setText(self.tr("Loading"))
|
||||
self.cloud_save_path_edit.setDisabled(True)
|
||||
self.compute_save_path_button.setDisabled(True)
|
||||
resolver = WineResolver(
|
||||
get_raw_save_path(self.game), self.game.app_name, self.core
|
||||
)
|
||||
|
||||
app_name = self.game.app_name[:]
|
||||
resolver.signals.result_ready.connect(
|
||||
lambda x: self.wine_resolver_finished(x, app_name)
|
||||
|
|
|
@ -48,7 +48,7 @@ class EGLSyncGroup(QGroupBox, Ui_EGLSyncGroup):
|
|||
if not self.core.egl.programdata_path:
|
||||
self.egl_path_info.setText(self.tr("Updating..."))
|
||||
wine_resolver = WineResolver(
|
||||
PathSpec.egl_programdata, "default", self.core
|
||||
PathSpec.egl_programdata, "default"
|
||||
)
|
||||
wine_resolver.signals.result_ready.connect(self.wine_resolver_cb)
|
||||
self.thread_pool.start(wine_resolver)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import os
|
||||
import shutil
|
||||
from logging import getLogger
|
||||
|
||||
from PyQt5.QtWidgets import QFileDialog, QWidget
|
||||
|
@ -37,6 +38,7 @@ class LinuxSettings(QWidget, Ui_LinuxSettings):
|
|||
self.load_setting(self.name, "wine_executable"),
|
||||
file_type=QFileDialog.ExistingFile,
|
||||
name_filter="Wine executable (wine wine64)",
|
||||
edit_func=lambda text: (os.path.exists(text) or not text, text, PathEdit.reasons.dir_not_exist),
|
||||
save_func=lambda text: self.save_setting(
|
||||
text, section=self.name, setting="wine_executable"
|
||||
),
|
||||
|
@ -52,6 +54,10 @@ class LinuxSettings(QWidget, Ui_LinuxSettings):
|
|||
self.overlay_layout.addWidget(self.mangohud)
|
||||
self.mangohud.load_settings(self.name)
|
||||
|
||||
if not shutil.which("mangohud"):
|
||||
self.mangohud.setDisabled(True)
|
||||
self.mangohud.setToolTip(self.tr("Mangohud is not installed or not in path"))
|
||||
|
||||
def load_prefix(self) -> str:
|
||||
return self.load_setting(
|
||||
f"{self.name}.env",
|
||||
|
|
|
@ -2,26 +2,24 @@ import os
|
|||
import shutil
|
||||
from typing import Tuple
|
||||
|
||||
from PyQt5.QtWidgets import QWidget, QHBoxLayout, QCheckBox
|
||||
from PyQt5.QtWidgets import QHBoxLayout, QCheckBox
|
||||
|
||||
from rare.shared import LegendaryCoreSingleton
|
||||
from rare.utils import config_helper
|
||||
from rare.utils.extra_widgets import IndicatorLineEdit
|
||||
|
||||
|
||||
class PreLaunchSettings(QWidget):
|
||||
class PreLaunchSettings(QHBoxLayout):
|
||||
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)
|
||||
|
||||
|
|
|
@ -451,14 +451,16 @@ class WineResolverSignals(QObject):
|
|||
|
||||
|
||||
class WineResolver(QRunnable):
|
||||
def __init__(self, path: str, app_name: str, core: LegendaryCore):
|
||||
def __init__(self, path: str, app_name: str):
|
||||
super(WineResolver, self).__init__()
|
||||
self.signals = WineResolverSignals()
|
||||
self.setAutoDelete(True)
|
||||
self.wine_env = os.environ.copy()
|
||||
core = LegendaryCoreSingleton()
|
||||
self.wine_env.update(core.get_app_environment(app_name))
|
||||
self.wine_env["WINEDLLOVERRIDES"] = "winemenubuilder=d;mscoree=d;mshtml=d;"
|
||||
self.wine_env["DISPLAY"] = ""
|
||||
|
||||
self.wine_binary = core.lgd.config.get(
|
||||
app_name,
|
||||
"wine_executable",
|
||||
|
|
Loading…
Reference in a new issue