Fix other wrappers than proton; + minor other bug fixes
This commit is contained in:
parent
8d4f25b8c2
commit
01674f2e5e
3 changed files with 17 additions and 12 deletions
|
@ -1,7 +1,7 @@
|
||||||
import datetime
|
import datetime
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from logging import getLogger
|
from logging import getLogger
|
||||||
from typing import Union
|
from typing import Union, List
|
||||||
|
|
||||||
from PyQt5.QtCore import QObject, pyqtSignal, QRunnable, QThreadPool, Qt, QSettings
|
from PyQt5.QtCore import QObject, pyqtSignal, QRunnable, QThreadPool, Qt, QSettings
|
||||||
from PyQt5.QtWidgets import QDialog, QMessageBox, QSizePolicy, QLayout
|
from PyQt5.QtWidgets import QDialog, QMessageBox, QSizePolicy, QLayout
|
||||||
|
@ -118,12 +118,12 @@ class CloudSaveUtils(QObject):
|
||||||
if not shared.args.offline:
|
if not shared.args.offline:
|
||||||
self.latest_saves = self.get_latest_saves(saves)
|
self.latest_saves = self.get_latest_saves(saves)
|
||||||
else:
|
else:
|
||||||
self.latest_saves = dict
|
self.latest_saves = dict()
|
||||||
self.settings = QSettings()
|
self.settings = QSettings()
|
||||||
|
|
||||||
self.thread_pool = QThreadPool.globalInstance()
|
self.thread_pool = QThreadPool.globalInstance()
|
||||||
|
|
||||||
def get_latest_saves(self, saves) -> dict:
|
def get_latest_saves(self, saves: List[SaveGameFile]) -> dict:
|
||||||
save_games = set()
|
save_games = set()
|
||||||
for igame in self.core.get_installed_list():
|
for igame in self.core.get_installed_list():
|
||||||
game = self.core.get_game(igame.app_name)
|
game = self.core.get_game(igame.app_name)
|
||||||
|
|
|
@ -102,7 +102,8 @@ class GameSettings(QWidget, Ui_GameSettings):
|
||||||
# FIXME: Remove the spacerItem and margins from the linux settings
|
# FIXME: Remove the spacerItem and margins from the linux settings
|
||||||
# FIXME: This should be handled differently at soem point in the future
|
# FIXME: This should be handled differently at soem point in the future
|
||||||
self.linux_settings.layout().setContentsMargins(0, 0, 0, 0)
|
self.linux_settings.layout().setContentsMargins(0, 0, 0, 0)
|
||||||
for item in [self.linux_settings.layout().itemAt(idx) for idx in range(self.linux_settings.layout().count())]:
|
for item in [self.linux_settings.layout().itemAt(idx) for idx in
|
||||||
|
range(self.linux_settings.layout().count())]:
|
||||||
if item.spacerItem():
|
if item.spacerItem():
|
||||||
self.linux_settings.layout().removeItem(item)
|
self.linux_settings.layout().removeItem(item)
|
||||||
del item
|
del item
|
||||||
|
@ -129,9 +130,11 @@ class GameSettings(QWidget, Ui_GameSettings):
|
||||||
resolver.signals.result_ready.connect(lambda x: self.wine_resolver_finished(x, app_name))
|
resolver.signals.result_ready.connect(lambda x: self.wine_resolver_finished(x, app_name))
|
||||||
QThreadPool.globalInstance().start(resolver)
|
QThreadPool.globalInstance().start(resolver)
|
||||||
return
|
return
|
||||||
|
else:
|
||||||
self.cloud_save_path_edit.setText(new_path)
|
self.cloud_save_path_edit.setText(new_path)
|
||||||
|
|
||||||
def wine_resolver_finished(self, path, app_name):
|
def wine_resolver_finished(self, path, app_name):
|
||||||
|
logger.info(f"Wine resolver finished for {app_name}. Computed save path: {path}")
|
||||||
if app_name == self.game.app_name:
|
if app_name == self.game.app_name:
|
||||||
self.cloud_save_path_edit.setDisabled(False)
|
self.cloud_save_path_edit.setDisabled(False)
|
||||||
self.compute_save_path_button.setDisabled(False)
|
self.compute_save_path_button.setDisabled(False)
|
||||||
|
@ -145,9 +148,10 @@ class GameSettings(QWidget, Ui_GameSettings):
|
||||||
self.game.app_title, path))
|
self.game.app_title, path))
|
||||||
return
|
return
|
||||||
if not path:
|
if not path:
|
||||||
|
self.cloud_save_path_edit.setText("")
|
||||||
return
|
return
|
||||||
self.cloud_save_path_edit.setText(path)
|
self.cloud_save_path_edit.setText(path)
|
||||||
else:
|
elif path:
|
||||||
igame = self.core.get_installed_game(app_name)
|
igame = self.core.get_installed_game(app_name)
|
||||||
igame.save_path = path
|
igame.save_path = path
|
||||||
self.core.lgd.set_installed_game(app_name, igame)
|
self.core.lgd.set_installed_game(app_name, igame)
|
||||||
|
@ -285,7 +289,7 @@ class GameSettings(QWidget, Ui_GameSettings):
|
||||||
self.linux_settings.update_game(app_name)
|
self.linux_settings.update_game(app_name)
|
||||||
|
|
||||||
proton = self.core.lgd.config.get(f"{app_name}", "wrapper", fallback="").replace('"', "")
|
proton = self.core.lgd.config.get(f"{app_name}", "wrapper", fallback="").replace('"', "")
|
||||||
if proton != "":
|
if proton and "proton" in proton:
|
||||||
self.proton_prefix.setEnabled(True)
|
self.proton_prefix.setEnabled(True)
|
||||||
self.proton_wrapper.setCurrentText(f'"{proton.replace(" run", "")}" run')
|
self.proton_wrapper.setCurrentText(f'"{proton.replace(" run", "")}" run')
|
||||||
proton_prefix = self.core.lgd.config.get(f"{app_name}.env", "STEAM_COMPAT_DATA_PATH",
|
proton_prefix = self.core.lgd.config.get(f"{app_name}.env", "STEAM_COMPAT_DATA_PATH",
|
||||||
|
|
|
@ -59,6 +59,7 @@ class LinuxSettings(QWidget, Ui_LinuxSettings):
|
||||||
logger.debug(f"Set {setting} in {f'[{section}]'} to {text}")
|
logger.debug(f"Set {setting} in {f'[{section}]'} to {text}")
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
if shared.core.lgd.config.has_section(section) and shared.core.lgd.config.has_option(section, setting):
|
||||||
shared.core.lgd.config.remove_option(section, setting)
|
shared.core.lgd.config.remove_option(section, setting)
|
||||||
logger.debug(f"Unset {setting} from {f'[{section}]'}")
|
logger.debug(f"Unset {setting} from {f'[{section}]'}")
|
||||||
if not shared.core.lgd.config[section]:
|
if not shared.core.lgd.config[section]:
|
||||||
|
|
Loading…
Reference in a new issue