1
0
Fork 0
mirror of synced 2024-06-02 10:44:40 +12:00
Rare/rare/components/tabs/settings/dxvk.py
aznd 9b59707a10
Unify strings formatting (#158)
* Part 1: Unifying strings

* Part 2: Unifying strings

* Part 3: Unifying strings

* Fix missing close bracket

* Remove unneeded str()
2022-02-01 22:29:34 +01:00

100 lines
4 KiB
Python

from logging import getLogger
from PyQt5.QtWidgets import QGroupBox
from rare import shared
from rare.ui.components.tabs.settings.dxvk import Ui_DxvkSettings
logger = getLogger("DXVK Settings")
class DxvkSettings(QGroupBox, Ui_DxvkSettings):
def __init__(self, name=None):
super(DxvkSettings, self).__init__()
self.setupUi(self)
self.name = name if name is not None else "default"
self.core = shared.core
self.dxvk_options_map = {
"devinfo": self.devinfo,
"fps": self.fps,
"frametime": self.frametime,
"memory": self.memory,
"gpuload": self.gpuload,
"version": self.version,
"api": self.api,
}
self.load_settings()
self.show_dxvk.currentIndexChanged.connect(self.store_settings)
for opt in self.dxvk_options_map:
self.dxvk_options_map[opt].stateChanged.connect(self.store_settings)
# Show HUD ComboBox
# System Default, index 0, removes DXVK_HUD to use setting from env
# Hidden , index 1, adds DXVK_HUD=0 to override system configuration
# Visible , index 2, adds DXVK_HUD=1 to override system configuration
# Custom Options, index 3, adds DXVK_HUD=devinfo,fps and enables the customization panel
def load_settings(self):
dxvk_options = self.core.lgd.config.get(
f"{self.name}.env", "DXVK_HUD", fallback=None
)
self.gb_dxvk_options.setDisabled(True)
if dxvk_options is not None:
if dxvk_options == "0":
self.show_dxvk.setCurrentIndex(1)
elif dxvk_options == "1":
self.show_dxvk.setCurrentIndex(2)
else:
self.show_dxvk.setCurrentIndex(3)
self.gb_dxvk_options.setDisabled(False)
for opt in dxvk_options.split(","):
try:
self.dxvk_options_map[opt].setChecked(True)
except KeyError:
print(f"Malformed DXVK Option: {opt}")
continue
else:
self.show_dxvk.setCurrentIndex(0)
def store_settings(self):
show_dxvk_index = self.show_dxvk.currentIndex()
if show_dxvk_index:
if f"{self.name}.env" not in self.core.lgd.config.sections():
self.core.lgd.config.add_section(f"{self.name}.env")
if show_dxvk_index == 1:
self.core.lgd.config[f"{self.name}.env"]["DXVK_HUD"] = "0"
if show_dxvk_index == 2:
self.core.lgd.config[f"{self.name}.env"]["DXVK_HUD"] = "1"
if show_dxvk_index == 3:
dxvk_options = []
for opt in self.dxvk_options_map:
if self.dxvk_options_map[opt].isChecked():
dxvk_options.append(opt)
if not dxvk_options:
# Check if this is the first activation
stored = self.core.lgd.config.get(
f"{self.name}.env", "DXVK_HUD", fallback=None
)
if stored not in [None, "0", "1"]:
self.core.lgd.config[f"{self.name}.env"]["DXVK_HUD"] = "0"
else:
dxvk_options = ["devinfo", "fps"]
# Check again if dxvk_options changed due to first activation
if dxvk_options:
self.core.lgd.config[f"{self.name}.env"]["DXVK_HUD"] = ",".join(
dxvk_options
)
else:
if (
self.core.lgd.config.get(f"{self.name}.env", "DXVK_HUD", fallback=None)
is not None
):
self.core.lgd.config.remove_option(f"{self.name}.env", "DXVK_HUD")
if not self.core.lgd.config[f"{self.name}.env"]:
self.core.lgd.config.remove_section(f"{self.name}.env")
self.core.lgd.save_config()
self.load_settings()