81 lines
2.1 KiB
Python
81 lines
2.1 KiB
Python
import json
|
|
import os
|
|
|
|
|
|
class Settings:
|
|
@staticmethod
|
|
def default():
|
|
return {
|
|
"animation": "InOutQuart",
|
|
"theme": "Black acrylic",
|
|
"app_id": None,
|
|
"key": None,
|
|
"secret": None,
|
|
"cluster": None,
|
|
"client_id": None
|
|
}
|
|
|
|
@staticmethod
|
|
def fix() -> None:
|
|
try:
|
|
with open("data/settings.json", "w+") as file:
|
|
json.dump(Settings.default(), file)
|
|
except FileNotFoundError:
|
|
os.mkdir("data")
|
|
Settings.fix()
|
|
|
|
@staticmethod
|
|
def get_settings() -> dict:
|
|
try:
|
|
with open("data/settings.json", "r") as file:
|
|
return json.load(file)
|
|
except:
|
|
Settings.fix()
|
|
Settings.get_settings()
|
|
|
|
@staticmethod
|
|
def animation() -> dict:
|
|
from PyQt5.QtCore import QEasingCurve
|
|
with open("data/settings.json", "r") as file:
|
|
settings = json.load(file)
|
|
|
|
animation = QEasingCurve.InOutQuart
|
|
timing = 300
|
|
match settings["animation"]:
|
|
case "InOutQuart":
|
|
animation = QEasingCurve.InOutQuart
|
|
case "InOutBack":
|
|
animation = QEasingCurve.InOutBack
|
|
case "InOutBounce":
|
|
animation = QEasingCurve.InOutBounce
|
|
case "OutBack":
|
|
animation = QEasingCurve.OutBack
|
|
case "OutElastic":
|
|
animation = QEasingCurve.OutElastic
|
|
timing = 1000
|
|
|
|
return {
|
|
"animation": animation,
|
|
"timing": timing
|
|
}
|
|
|
|
@staticmethod
|
|
def update(key: str, value: str) -> dict:
|
|
with open("data/settings.json", "r") as file:
|
|
settings = json.load(file)
|
|
|
|
settings[key] = value
|
|
|
|
with open("data/settings.json", "w") as file:
|
|
json.dump(settings, file)
|
|
|
|
return settings
|
|
|
|
@staticmethod
|
|
def get(key: str) -> any:
|
|
try:
|
|
return Settings.get_settings()[key]
|
|
except KeyError:
|
|
Settings.update(key, Settings.default()[key])
|
|
return Settings.default()[key]
|