LinuxSettings: Synchronize wine_prefix
under [<app_name>]
with WINEPRFIX
under [<app_name>.env]
Implicitly fall back to `wine_prefix` if `WINEPREFIX` is unset.
This commit is contained in:
parent
c8a26da2bb
commit
08df915cf2
1 changed files with 37 additions and 18 deletions
|
@ -16,34 +16,53 @@ class LinuxSettings(QWidget, Ui_LinuxSettings):
|
|||
self.setupUi(self)
|
||||
|
||||
self.name = name if name is not None else "default"
|
||||
self.core = shared.core
|
||||
|
||||
# Wine prefix
|
||||
self.wine_prefix = PathEdit(self.core.lgd.config.get(self.name, "wine_prefix", fallback=""),
|
||||
file_type=QFileDialog.DirectoryOnly,
|
||||
save_func=lambda text: self.save_setting(text, "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)
|
||||
|
||||
# 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 text: self.save_setting(text, "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)
|
||||
|
||||
# dxvk
|
||||
self.dxvk = DxvkSettings(self.name)
|
||||
self.dxvk_layout.addWidget(self.dxvk)
|
||||
|
||||
def save_setting(self, text: str, setting_name: str):
|
||||
if self.name not in self.core.lgd.config.sections():
|
||||
self.core.lgd.config.add_section(self.name)
|
||||
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}")
|
||||
|
||||
self.core.lgd.config.set(self.name, setting_name, text)
|
||||
if not text:
|
||||
self.core.lgd.config.remove_option(self.name, setting_name)
|
||||
else:
|
||||
logger.debug("Set config of wine_prefix to " + text)
|
||||
if self.core.lgd.config[self.name] == {}:
|
||||
self.core.lgd.config.remove_section(self.name)
|
||||
self.core.lgd.save_config()
|
||||
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()
|
||||
|
|
Loading…
Reference in a new issue