1
0
Fork 0
mirror of synced 2024-06-02 10:44:40 +12:00
Rare/Rare/Components/Tabs/Settings/Linux.py
2021-02-19 18:09:00 +01:00

101 lines
4.4 KiB
Python

from logging import getLogger
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QPushButton, QFileDialog, QCheckBox, QHBoxLayout, QToolButton
from legendary.core import LegendaryCore
from Rare.Components.Tabs.Settings.SettingsWidget import SettingsWidget
from Rare.utils.QtExtensions import PathEdit
logger = getLogger("LinuxSettings")
class LinuxSettings(QWidget):
def __init__(self, core: LegendaryCore):
super(LinuxSettings, self).__init__()
self.layout = QVBoxLayout()
self.core = core
self.title = QLabel("<h2>Linux settings</h2>")
self.layout.addWidget(self.title)
# Wineprefix
self.select_path = PathEdit(self.core.lgd.config.get("default", "wine_prefix", fallback=""),
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")
self.save_path_button.clicked.connect(self.save_wineprefix)
self.install_dir_widget = SettingsWidget("Default Wine Prefix", self.select_path, self.save_path_button)
self.layout.addWidget(self.install_dir_widget)
# Wine executable
self.select_wine_exec = PathEdit(self.core.lgd.config.get("default", "wine_executable", fallback=""),
type_of_file=QFileDialog.DirectoryOnly,
infotext="Default")
self.select_wine_exec.text_edit.textChanged.connect(lambda t: self.save_path_button.setDisabled(False))
self.save_wine_exec = QPushButton("Save")
self.save_wine_exec.clicked.connect(self.save_wineexec)
self.install_dir_widget = SettingsWidget("Default Wine executable", self.select_wine_exec, self.save_wine_exec)
self.layout.addWidget(self.install_dir_widget)
# dxvk
self.dxvk_widget = DxvkWidget(core)
self.layout.addWidget(self.dxvk_widget)
self.layout.addStretch(1)
self.setLayout(self.layout)
def save_wineprefix(self):
if not "default" in self.core.lgd.config.sections():
self.core.lgd.config["default"] = dict()
self.core.lgd.config["default"]["wine_prefix"] = self.select_path.text()
if self.select_path.text() == "":
self.core.lgd.config["default"].pop("wine_prefix")
logger.info("Remove wine_prefix section")
else:
logger.info("Set config of wine_prefix to " + self.select_path.text())
if self.core.lgd.config["default"] == {}:
self.core.lgd.config.remove_section("default")
self.core.lgd.save_config()
def save_wineexec(self):
if not "default" in self.core.lgd.config.sections():
self.core.lgd.config["default"] = dict()
self.core.lgd.config["default"]["wine_executable"] = self.select_wine_exec.text()
if self.select_wine_exec.text() == "":
self.core.lgd.config["default"].pop("wine_executable")
logger.info("Remove wine executable section")
else:
logger.info("Set config of wine executable to " + self.select_wine_exec.text())
if self.core.lgd.config["default"] == {}:
self.core.lgd.config.remove_section("default")
self.core.lgd.save_config()
class DxvkWidget(QWidget):
def __init__(self, core: LegendaryCore):
super(DxvkWidget, self).__init__()
self.core = core
self.layout = QVBoxLayout()
self.child_layout = QHBoxLayout()
self.title = QLabel("dxvk settings")
self.show_dxvk = QCheckBox("Show Dxvk HUD")
self.more_settings = QPushButton()
self.more_settings.clicked.connect(self.show_more_settings)
active = not self.core.lgd.config.get("default.env", "DXVK_HUD", fallback="") == ""
self.more_settings.setDisabled(active)
self.show_dxvk.stateChanged.connect(lambda x: self.more_settings.setDisabled(x == 0))
self.show_dxvk.setChecked(active)
self.layout.addWidget(self.title)
self.child_layout.addWidget(self.show_dxvk)
self.child_layout.addWidget(self.more_settings)
self.layout.addLayout(self.child_layout)
self.setLayout(self.layout)
def update_dettings(self):
pass
def show_more_settings(self):
pass