Rare: Import platform specific modules only on the relevant platforms
This commit is contained in:
parent
0ea29bc941
commit
8bde2c2c6d
|
@ -8,17 +8,22 @@ from PyQt5.QtGui import QShowEvent
|
|||
from PyQt5.QtWidgets import QFileDialog, QComboBox, QLineEdit
|
||||
from legendary.models.game import Game, InstalledGame
|
||||
|
||||
from rare.components.tabs.settings.widgets.wrappers import WrapperSettings
|
||||
from rare.components.tabs.settings.widgets.game import GameSettingsBase
|
||||
from rare.components.tabs.settings.widgets.env_vars import EnvVars
|
||||
from rare.components.tabs.settings.widgets.game import GameSettingsBase
|
||||
from rare.components.tabs.settings.widgets.launch import LaunchSettingsBase
|
||||
from rare.components.tabs.settings.widgets.overlay import MangoHudSettings, DxvkSettings
|
||||
from rare.components.tabs.settings.widgets.proton import ProtonSettings
|
||||
from rare.components.tabs.settings.widgets.wine import WineSettings
|
||||
from rare.components.tabs.settings.widgets.overlay import DxvkSettings
|
||||
from rare.components.tabs.settings.widgets.wrappers import WrapperSettings
|
||||
from rare.models.game import RareGame
|
||||
from rare.utils import config_helper as config
|
||||
from rare.widgets.indicator_edit import PathEdit, IndicatorReasonsCommon
|
||||
|
||||
if pf.system() != "Windows":
|
||||
from rare.components.tabs.settings.widgets.wine import WineSettings
|
||||
|
||||
if pf.system() not in {"Windows", "Darwin"}:
|
||||
from rare.components.tabs.settings.widgets.proton import ProtonSettings
|
||||
from rare.components.tabs.settings.widgets.overlay import MangoHudSettings
|
||||
|
||||
logger = getLogger("GameSettings")
|
||||
|
||||
|
||||
|
@ -131,14 +136,22 @@ class GameLaunchSettings(LaunchSettingsBase):
|
|||
self.wrappers_widget.load_settings(rgame.app_name)
|
||||
|
||||
|
||||
class GameWineSettings(WineSettings):
|
||||
def load_settings(self, app_name):
|
||||
self.app_name = app_name
|
||||
if pf.system() != "Windows":
|
||||
|
||||
class GameWineSettings(WineSettings):
|
||||
def load_settings(self, app_name):
|
||||
self.app_name = app_name
|
||||
|
||||
|
||||
class GameProtonSettings(ProtonSettings):
|
||||
def load_settings(self, app_name: str):
|
||||
self.app_name = app_name
|
||||
if pf.system() not in {"Windows", "Darwin"}:
|
||||
|
||||
class GameProtonSettings(ProtonSettings):
|
||||
def load_settings(self, app_name: str):
|
||||
self.app_name = app_name
|
||||
|
||||
class GameMangoHudSettings(MangoHudSettings):
|
||||
def load_settings(self, app_name: str):
|
||||
self.app_name = app_name
|
||||
|
||||
|
||||
class GameDxvkSettings(DxvkSettings):
|
||||
|
@ -146,11 +159,6 @@ class GameDxvkSettings(DxvkSettings):
|
|||
self.app_name = app_name
|
||||
|
||||
|
||||
class GameMangoHudSettings(MangoHudSettings):
|
||||
def load_settings(self, app_name: str):
|
||||
self.app_name = app_name
|
||||
|
||||
|
||||
class GameEnvVars(EnvVars):
|
||||
def load_settings(self, app_name):
|
||||
self.app_name = app_name
|
||||
|
@ -158,11 +166,23 @@ class GameEnvVars(EnvVars):
|
|||
|
||||
class GameSettings(GameSettingsBase):
|
||||
def __init__(self, parent=None):
|
||||
super(GameSettings, self).__init__(
|
||||
GameLaunchSettings, GameWineSettings, GameProtonSettings,
|
||||
GameDxvkSettings, GameMangoHudSettings, GameEnvVars,
|
||||
parent=parent
|
||||
)
|
||||
if pf.system() not in {"Windows", "Darwin"}:
|
||||
super(GameSettings, self).__init__(
|
||||
GameLaunchSettings, GameDxvkSettings, GameEnvVars,
|
||||
GameWineSettings, GameProtonSettings, GameMangoHudSettings,
|
||||
parent=parent
|
||||
)
|
||||
elif pf.system() != "Windows":
|
||||
super(GameSettings, self).__init__(
|
||||
GameLaunchSettings, GameDxvkSettings, GameEnvVars,
|
||||
GameWineSettings,
|
||||
parent=parent
|
||||
)
|
||||
else:
|
||||
super(GameSettings, self).__init__(
|
||||
GameLaunchSettings, GameDxvkSettings, GameEnvVars,
|
||||
parent=parent
|
||||
)
|
||||
|
||||
def load_settings(self, rgame: RareGame):
|
||||
self.set_title.emit(rgame.app_title)
|
||||
|
@ -170,7 +190,7 @@ class GameSettings(GameSettingsBase):
|
|||
self.launch.load_settings(rgame)
|
||||
if pf.system() != "Windows":
|
||||
self.wine.load_settings(rgame.app_name)
|
||||
if pf.system() == "Linux":
|
||||
if pf.system() not in {"Windows", "Darwin"}:
|
||||
self.proton_tool.load_settings(rgame.app_name)
|
||||
self.mangohud.load_settings(rgame.app_name)
|
||||
self.dxvk.load_settings(rgame.app_name)
|
||||
|
|
|
@ -1,13 +1,19 @@
|
|||
import platform as pf
|
||||
from logging import getLogger
|
||||
|
||||
from .widgets.env_vars import EnvVars
|
||||
from .widgets.game import GameSettingsBase
|
||||
from .widgets.launch import LaunchSettingsBase
|
||||
from .widgets.overlay import MangoHudSettings, DxvkSettings
|
||||
from .widgets.proton import ProtonSettings
|
||||
from .widgets.wine import WineSettings
|
||||
from .widgets.overlay import DxvkSettings
|
||||
from .widgets.wrappers import WrapperSettings
|
||||
|
||||
if pf.system() != "Windows":
|
||||
from .widgets.wine import WineSettings
|
||||
|
||||
if pf.system() not in {"Windows", "Darwin"}:
|
||||
from .widgets.proton import ProtonSettings
|
||||
from .widgets.overlay import MangoHudSettings
|
||||
|
||||
logger = getLogger("GameSettings")
|
||||
|
||||
|
||||
|
@ -18,7 +24,20 @@ class LaunchSettings(LaunchSettingsBase):
|
|||
|
||||
class GameSettings(GameSettingsBase):
|
||||
def __init__(self, parent=None):
|
||||
super(GameSettings, self).__init__(
|
||||
LaunchSettings, WineSettings, ProtonSettings, DxvkSettings, MangoHudSettings, EnvVars,
|
||||
parent=parent
|
||||
)
|
||||
if pf.system() not in {"Windows", "Darwin"}:
|
||||
super(GameSettings, self).__init__(
|
||||
LaunchSettings, DxvkSettings, EnvVars,
|
||||
WineSettings, ProtonSettings, MangoHudSettings,
|
||||
parent=parent
|
||||
)
|
||||
elif pf.system() != "Windows":
|
||||
super(GameSettings, self).__init__(
|
||||
LaunchSettings, DxvkSettings, EnvVars,
|
||||
WineSettings,
|
||||
parent=parent
|
||||
)
|
||||
else:
|
||||
super(GameSettings, self).__init__(
|
||||
LaunchSettings, DxvkSettings, EnvVars,
|
||||
parent=parent
|
||||
)
|
||||
|
|
|
@ -12,9 +12,9 @@ from rare.utils.misc import icon
|
|||
|
||||
if platform.system() != "Windows":
|
||||
from rare.utils.runners.wine import get_wine_environment
|
||||
if platform.system() != "Darwin":
|
||||
from rare.utils.runners.proton import get_steam_environment
|
||||
|
||||
if platform.system() not in {"Windows", "Darwin"}:
|
||||
from rare.utils.runners.proton import get_steam_environment
|
||||
|
||||
|
||||
class EnvVarsTableModel(QAbstractTableModel):
|
||||
|
@ -34,8 +34,8 @@ class EnvVarsTableModel(QAbstractTableModel):
|
|||
]
|
||||
if platform.system() != "Windows":
|
||||
self.__readonly.extend(get_wine_environment().keys())
|
||||
if platform.system() != "Darwin":
|
||||
self.__readonly.extend(get_steam_environment().keys())
|
||||
if platform.system() not in {"Windows", "Darwin"}:
|
||||
self.__readonly.extend(get_steam_environment().keys())
|
||||
|
||||
self.__default: str = "default"
|
||||
self.__appname: str = None
|
||||
|
|
|
@ -9,13 +9,18 @@ from PyQt5.QtWidgets import (
|
|||
)
|
||||
|
||||
from rare.shared import LegendaryCoreSingleton
|
||||
from rare.widgets.side_tab import SideTabContents
|
||||
from rare.utils import config_helper as config
|
||||
from rare.widgets.side_tab import SideTabContents
|
||||
from .env_vars import EnvVars
|
||||
from .launch import LaunchSettingsType
|
||||
from .overlay import MangoHudSettings, DxvkSettings
|
||||
from .proton import ProtonSettings
|
||||
from .wine import WineSettings
|
||||
from .overlay import DxvkSettings
|
||||
|
||||
if pf.system() != "Windows":
|
||||
from .wine import WineSettings
|
||||
|
||||
if pf.system() not in {"Windows", "Darwin"}:
|
||||
from .proton import ProtonSettings
|
||||
from .overlay import MangoHudSettings
|
||||
|
||||
|
||||
class GameSettingsBase(QWidget, SideTabContents):
|
||||
|
@ -23,11 +28,11 @@ class GameSettingsBase(QWidget, SideTabContents):
|
|||
def __init__(
|
||||
self,
|
||||
launch_widget: Type[LaunchSettingsType],
|
||||
wine_widget: Type[WineSettings],
|
||||
proton_widget: Type[ProtonSettings],
|
||||
dxvk_widget: Type[DxvkSettings],
|
||||
mangohud_widget: Type[MangoHudSettings],
|
||||
envvar_widget: Type[EnvVars],
|
||||
wine_widget: Type['WineSettings'] = None,
|
||||
proton_widget: Type['ProtonSettings'] = None,
|
||||
mangohud_widget: Type['MangoHudSettings'] = None,
|
||||
parent=None
|
||||
):
|
||||
super(GameSettingsBase, self).__init__(parent=parent)
|
||||
|
@ -43,27 +48,27 @@ class GameSettingsBase(QWidget, SideTabContents):
|
|||
self.wine = wine_widget(self)
|
||||
self.wine.environ_changed.connect(self.env_vars.reset_model)
|
||||
|
||||
if pf.system() == "Linux":
|
||||
if pf.system() not in {"Windows", "Darwin"}:
|
||||
self.proton_tool = proton_widget(self)
|
||||
self.proton_tool.environ_changed.connect(self.env_vars.reset_model)
|
||||
self.proton_tool.tool_enabled.connect(self.wine.tool_enabled)
|
||||
self.proton_tool.tool_enabled.connect(self.launch.tool_enabled)
|
||||
|
||||
self.mangohud = mangohud_widget(self)
|
||||
self.mangohud.environ_changed.connect(self.env_vars.reset_model)
|
||||
|
||||
self.dxvk = dxvk_widget(self)
|
||||
self.dxvk.environ_changed.connect(self.env_vars.reset_model)
|
||||
|
||||
if pf.system() not in {"Windows", "Darwin"}:
|
||||
self.mangohud = mangohud_widget(self)
|
||||
self.mangohud.environ_changed.connect(self.env_vars.reset_model)
|
||||
|
||||
self.main_layout = QVBoxLayout(self)
|
||||
self.main_layout.addWidget(self.launch)
|
||||
if pf.system() != "Windows":
|
||||
self.main_layout.addWidget(self.wine)
|
||||
if pf.system() == "Linux":
|
||||
if pf.system() not in {"Windows", "Darwin"}:
|
||||
self.main_layout.addWidget(self.proton_tool)
|
||||
self.main_layout.addWidget(self.mangohud)
|
||||
self.main_layout.addWidget(self.dxvk)
|
||||
if pf.system() == "Linux":
|
||||
if pf.system() not in {"Windows", "Darwin"}:
|
||||
self.main_layout.addWidget(self.mangohud)
|
||||
self.main_layout.addWidget(self.env_vars)
|
||||
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
import platform as pf
|
||||
import shlex
|
||||
import shutil
|
||||
from logging import getLogger
|
||||
|
@ -22,7 +23,9 @@ from PyQt5.QtWidgets import (
|
|||
from rare.models.wrapper import Wrapper
|
||||
from rare.shared import RareCore
|
||||
from rare.utils.misc import icon
|
||||
from rare.utils.runners import proton
|
||||
|
||||
if pf.system() not in {"Windows", "Darwin"}:
|
||||
from rare.utils.runners import proton
|
||||
|
||||
logger = getLogger("WrapperSettings")
|
||||
|
||||
|
@ -233,14 +236,15 @@ class WrapperSettings(QWidget):
|
|||
if not wrapper:
|
||||
return
|
||||
|
||||
compat_cmds = [tool.command() for tool in proton.find_tools()]
|
||||
if wrapper.command in compat_cmds:
|
||||
QMessageBox.warning(
|
||||
self,
|
||||
self.tr("Warning"),
|
||||
self.tr("Do not insert compatibility tools manually. Add them through Proton settings"),
|
||||
)
|
||||
return
|
||||
if pf.system() not in {"Windows", "Darwin"}:
|
||||
compat_cmds = [tool.command() for tool in proton.find_tools()]
|
||||
if wrapper.command in compat_cmds:
|
||||
QMessageBox.warning(
|
||||
self,
|
||||
self.tr("Warning"),
|
||||
self.tr("Do not insert compatibility tools manually. Add them through Proton settings"),
|
||||
)
|
||||
return
|
||||
|
||||
if wrapper.checksum in self.wrappers.get_game_md5sum_list(self.app_name):
|
||||
QMessageBox.warning(
|
||||
|
|
|
@ -10,7 +10,7 @@ from PyQt5.QtCore import pyqtSignal, QObject, QRunnable
|
|||
from rare.lgndr.core import LegendaryCore
|
||||
from rare.models.game import RareGame
|
||||
from rare.models.pathspec import PathSpec
|
||||
from rare.utils import runners, config_helper as config
|
||||
from rare.utils import config_helper as config
|
||||
from rare.utils.misc import path_size, format_size
|
||||
from .worker import Worker
|
||||
|
||||
|
@ -18,6 +18,8 @@ if platform.system() == "Windows":
|
|||
# noinspection PyUnresolvedReferences
|
||||
import winreg # pylint: disable=E0401
|
||||
from legendary.lfs import windows_helpers
|
||||
else:
|
||||
from rare.utils import runners
|
||||
|
||||
logger = getLogger("WineResolver")
|
||||
|
||||
|
|
|
@ -1,12 +1,15 @@
|
|||
import os
|
||||
import platform
|
||||
import subprocess
|
||||
from configparser import ConfigParser
|
||||
from logging import getLogger
|
||||
from typing import Mapping, Dict, List, Tuple, Optional
|
||||
|
||||
from rare.utils import config_helper as config
|
||||
from . import proton
|
||||
from . import wine
|
||||
if platform.system() != "Windows":
|
||||
from . import wine
|
||||
if platform.system() != "Darwin":
|
||||
from . import proton
|
||||
|
||||
logger = getLogger("Runners")
|
||||
|
||||
|
|
Loading…
Reference in a new issue