42 lines
1.1 KiB
Python
42 lines
1.1 KiB
Python
import pickle
|
|
from typing import Any
|
|
from .default_settings import DEFAULT_SETTINGS
|
|
|
|
|
|
from PyQt6 import QtCore
|
|
|
|
|
|
class Settings(QtCore.QSettings):
|
|
def value(self, key: str, defaultValue: Any = None, type: Any = None) -> Any:
|
|
if type:
|
|
return super().value(
|
|
key, defaultValue=defaultValue or DEFAULT_SETTINGS.get(key), type=type
|
|
)
|
|
else:
|
|
return super().value(
|
|
key, defaultValue=defaultValue or DEFAULT_SETTINGS.get(key)
|
|
)
|
|
|
|
def export(self, path: str):
|
|
data = {
|
|
key: self.value(key)
|
|
for key in self.allKeys()
|
|
if not ( # skip settings that might not translate well between platforms
|
|
isinstance(self.value(key), QtCore.QByteArray)
|
|
or key == "export/path"
|
|
or key == "message/last"
|
|
)
|
|
}
|
|
|
|
with open(path, "wb") as f:
|
|
pickle.dump(data, f)
|
|
|
|
def load(self, path: str):
|
|
self.clear()
|
|
|
|
with open(path, "rb") as f:
|
|
data = pickle.load(f)
|
|
|
|
for key in data:
|
|
self.setValue(key, data[key])
|