2021-02-20 06:09:00 +13:00
|
|
|
from logging import getLogger
|
|
|
|
|
2021-04-23 00:34:06 +12:00
|
|
|
from PyQt5.QtWidgets import QVBoxLayout, QPushButton, QFileDialog, QLineEdit, QGroupBox
|
2021-02-20 06:09:00 +13:00
|
|
|
|
2021-04-23 00:34:06 +12:00
|
|
|
from custom_legendary.core import LegendaryCore
|
2021-04-08 08:42:30 +12:00
|
|
|
from rare.components.tabs.settings.dxvk import DxvkWidget
|
|
|
|
from rare.components.tabs.settings.settings_widget import SettingsWidget
|
2021-04-08 08:39:23 +12:00
|
|
|
from rare.utils.extra_widgets import PathEdit
|
2021-02-20 06:09:00 +13:00
|
|
|
|
|
|
|
logger = getLogger("LinuxSettings")
|
2021-02-20 00:57:55 +13:00
|
|
|
|
|
|
|
|
2021-03-28 05:51:38 +13:00
|
|
|
class LinuxSettings(QGroupBox):
|
2021-03-10 09:57:54 +13:00
|
|
|
def __init__(self, core: LegendaryCore, name="default"):
|
2021-02-20 00:57:55 +13:00
|
|
|
super(LinuxSettings, self).__init__()
|
|
|
|
self.layout = QVBoxLayout()
|
2021-03-10 09:57:54 +13:00
|
|
|
self.name = name
|
2021-02-20 06:09:00 +13:00
|
|
|
self.core = core
|
2021-03-28 05:51:38 +13:00
|
|
|
self.setTitle(self.tr("Linux settings"))
|
|
|
|
self.setObjectName("group")
|
2021-02-20 06:09:00 +13:00
|
|
|
# Wineprefix
|
2021-03-10 09:57:54 +13:00
|
|
|
self.select_path = PathEdit(self.core.lgd.config.get(self.name, "wine_prefix", fallback=""),
|
2021-02-20 06:09:00 +13:00
|
|
|
type_of_file=QFileDialog.DirectoryOnly,
|
|
|
|
infotext="Default")
|
|
|
|
self.select_path.text_edit.textChanged.connect(lambda t: self.save_path_button.setDisabled(False))
|
|
|
|
self.save_path_button = QPushButton("Save")
|
2021-04-08 21:09:17 +12:00
|
|
|
self.save_path_button.clicked.connect(lambda: self.save_setting(self.select_path, "wine_prefix"))
|
2021-03-10 09:57:54 +13:00
|
|
|
self.install_dir_widget = SettingsWidget(self.tr("Default Wine Prefix"), self.select_path,
|
|
|
|
self.save_path_button)
|
2021-02-20 06:09:00 +13:00
|
|
|
self.layout.addWidget(self.install_dir_widget)
|
|
|
|
|
|
|
|
# Wine executable
|
2021-03-10 09:57:54 +13:00
|
|
|
self.select_wine_exec = QLineEdit(self.core.lgd.config.get(self.name, "wine_executable", fallback=""))
|
2021-02-20 06:09:00 +13:00
|
|
|
self.save_wine_exec = QPushButton("Save")
|
2021-04-08 21:09:17 +12:00
|
|
|
self.save_wine_exec.clicked.connect(lambda: self.save_setting(self.select_wine_exec, "wine_executable"))
|
2021-03-10 09:57:54 +13:00
|
|
|
self.install_dir_widget = SettingsWidget(self.tr("Default Wine executable"), self.select_wine_exec,
|
|
|
|
self.save_wine_exec)
|
2021-02-20 06:09:00 +13:00
|
|
|
self.layout.addWidget(self.install_dir_widget)
|
|
|
|
|
|
|
|
# dxvk
|
|
|
|
self.dxvk_widget = DxvkWidget(core)
|
|
|
|
self.layout.addWidget(self.dxvk_widget)
|
2021-03-10 09:57:54 +13:00
|
|
|
if name == "default":
|
|
|
|
self.layout.addStretch(1)
|
2021-02-20 06:09:00 +13:00
|
|
|
self.setLayout(self.layout)
|
2021-02-20 00:57:55 +13:00
|
|
|
|
2021-04-08 21:09:17 +12:00
|
|
|
def save_setting(self, widget: QLineEdit, setting_name: str):
|
2021-03-10 09:57:54 +13:00
|
|
|
if not self.name in self.core.lgd.config.sections():
|
2021-04-08 21:09:17 +12:00
|
|
|
self.core.lgd.config.add_section(self.name)
|
2021-02-20 06:09:00 +13:00
|
|
|
|
2021-04-08 21:09:17 +12:00
|
|
|
self.core.lgd.config.set(self.name, setting_name, widget.text())
|
|
|
|
if widget.text() == "":
|
|
|
|
self.core.lgd.config.remove_option(self.name, setting_name)
|
2021-02-20 06:09:00 +13:00
|
|
|
else:
|
2021-04-08 21:09:17 +12:00
|
|
|
logger.info("Set config of wine_prefix to " + widget.text())
|
2021-03-10 09:57:54 +13:00
|
|
|
if self.core.lgd.config[self.name] == {}:
|
|
|
|
self.core.lgd.config.remove_section(self.name)
|
2021-02-20 06:09:00 +13:00
|
|
|
self.core.lgd.save_config()
|