import/export/reset settings

This commit is contained in:
dries.k
2022-04-04 15:44:46 +02:00
parent c591ebf09c
commit b622a0fe58
11 changed files with 252 additions and 80 deletions

View File

@@ -1,7 +1,16 @@
import os
from pathlib import Path
from ..__version__ import __title__
DEFAULT_SETTINGS = {
"message/check_missed/notify": True,
"message/last_id": 0,
"logging/level": "Disabled",
"settings/export_path": os.path.join(
Path.home(), f"{__title__.replace(' ', '-').lower()}-settings.bytes"
),
"shortcuts/quit": "Ctrl+Q",
"tray/notifications/priority": 5,
"tray/notifications/duration_ms": 5000,

View File

@@ -1,3 +1,4 @@
import pickle
from typing import Any
from .default_settings import DEFAULT_SETTINGS
@@ -8,6 +9,32 @@ 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)
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))
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 == "settings/export_path"
)
}
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])