import/export/reset settings
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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])
|
||||
|
||||
Reference in New Issue
Block a user