1
0
Fork 0
mirror of synced 2024-07-03 05:31:23 +12:00
Rare/rare/components/tabs/settings/linux.py

69 lines
2.6 KiB
Python
Raw Normal View History

2021-02-20 06:09:00 +13:00
from logging import getLogger
2021-11-11 07:00:15 +13:00
from PyQt5.QtWidgets import QFileDialog, QWidget
2021-02-20 06:09:00 +13:00
2021-10-08 07:19:24 +13:00
from rare import shared
2021-10-24 12:47:49 +13:00
from rare.components.tabs.settings.dxvk import DxvkSettings
from rare.ui.components.tabs.settings.linux import Ui_LinuxSettings
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
class LinuxSettings(QWidget, Ui_LinuxSettings):
2021-10-08 07:19:24 +13:00
def __init__(self, name=None):
2021-02-20 00:57:55 +13:00
super(LinuxSettings, self).__init__()
self.setupUi(self)
self.name = name if name is not None else "default"
2021-05-02 08:15:42 +12:00
# Wine prefix
self.wine_prefix = PathEdit(
self.load_prefix(),
file_type=QFileDialog.DirectoryOnly,
save_func=self.save_prefix)
self.prefix_layout.addWidget(self.wine_prefix)
2021-02-20 06:09:00 +13:00
# Wine executable
self.wine_exec = PathEdit(
self.load_setting(self.name, "wine_executable"),
file_type=QFileDialog.ExistingFile,
name_filter="Wine executable (wine wine64)",
save_func=lambda text: self.save_setting(text, section=self.name, setting="wine_executable"))
self.exec_layout.addWidget(self.wine_exec)
2021-02-20 06:09:00 +13:00
# dxvk
2021-10-24 12:47:49 +13:00
self.dxvk = DxvkSettings(self.name)
self.dxvk_layout.addWidget(self.dxvk)
def load_prefix(self) -> str:
return self.load_setting(f'{self.name}.env',
'WINEPREFIX',
fallback=self.load_setting(self.name, 'wine_prefix'))
def save_prefix(self, text: str):
self.save_setting(text, f'{self.name}.env', 'WINEPREFIX')
self.save_setting(text, self.name, 'wine_prefix')
@staticmethod
def load_setting(section: str, setting: str, fallback: str = str()):
return shared.core.lgd.config.get(section, setting, fallback=fallback)
@staticmethod
def save_setting(text: str, section: str, setting: str):
if text:
if section not in shared.core.lgd.config.sections():
shared.core.lgd.config.add_section(section)
logger.debug(f"Added {f'[{section}]'} configuration section")
shared.core.lgd.config.set(section, setting, text)
logger.debug(f"Set {setting} in {f'[{section}]'} to {text}")
2021-02-20 06:09:00 +13:00
else:
shared.core.lgd.config.remove_option(section, setting)
logger.debug(f"Unset {setting} from {f'[{section}]'}")
if not shared.core.lgd.config[section]:
shared.core.lgd.config.remove_section(section)
logger.debug(f"Removed {f'[{section}]'} configuration section")
shared.core.lgd.save_config()