53 lines
2.2 KiB
Python
53 lines
2.2 KiB
Python
from logging import getLogger
|
|
|
|
from PyQt5.QtWidgets import QFileDialog, QWidget
|
|
|
|
from legendary.core import LegendaryCore
|
|
from rare.components.tabs.settings.dxvk import DxvkSettings, DxvkWidget
|
|
from rare.ui.components.tabs.settings.linux import Ui_LinuxSettings
|
|
from rare.utils.extra_widgets import PathEdit
|
|
|
|
logger = getLogger("LinuxSettings")
|
|
|
|
|
|
class LinuxSettings(QWidget, Ui_LinuxSettings):
|
|
def __init__(self, core: LegendaryCore, name=None):
|
|
super(LinuxSettings, self).__init__()
|
|
self.setupUi(self)
|
|
|
|
self.name = name if name is not None else "default"
|
|
self.core = core
|
|
|
|
# Wine prefix
|
|
self.wine_prefix = PathEdit(self.core.lgd.config.get(self.name, "wine_prefix", fallback=""),
|
|
file_type=QFileDialog.DirectoryOnly,
|
|
save_func=lambda: self.save_setting(self.wine_prefix, "wine_prefix"))
|
|
self.prefix_layout.addWidget(self.wine_prefix)
|
|
|
|
# Wine executable
|
|
self.wine_exec = PathEdit(self.core.lgd.config.get(self.name, "wine_executable", fallback=""),
|
|
file_type=QFileDialog.ExistingFile,
|
|
name_filter="Wine executable (wine wine64)",
|
|
save_func=lambda: self.save_setting(self.wine_exec, "wine_executable"))
|
|
self.exec_layout.addWidget(self.wine_exec)
|
|
|
|
# dxvk
|
|
# FIXME: Remove this check when done with per game settings
|
|
if name is None:
|
|
self.dxvk = DxvkSettings(core, self.name)
|
|
else:
|
|
self.dxvk = DxvkWidget(core)
|
|
self.dxvk_layout.addWidget(self.dxvk)
|
|
|
|
def save_setting(self, widget: PathEdit, setting_name: str):
|
|
if self.name not in self.core.lgd.config.sections():
|
|
self.core.lgd.config.add_section(self.name)
|
|
|
|
self.core.lgd.config.set(self.name, setting_name, widget.text())
|
|
if not widget.text():
|
|
self.core.lgd.config.remove_option(self.name, setting_name)
|
|
else:
|
|
logger.info("Set config of wine_prefix to " + widget.text())
|
|
if self.core.lgd.config[self.name] == {}:
|
|
self.core.lgd.config.remove_section(self.name)
|
|
self.core.lgd.save_config()
|