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

Fix Wine Resolver, mangohud, pre launch,

This commit is contained in:
Dummerle 2022-03-21 20:56:03 +01:00
parent 89e1336940
commit b996aac3f7
No known key found for this signature in database
GPG key ID: AB68CC59CA39F2F1
5 changed files with 20 additions and 9 deletions

View file

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

View file

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

View file

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

View file

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

View file

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