61 lines
1.7 KiB
Python
61 lines
1.7 KiB
Python
import json
|
|
|
|
from .config_item import ConfigItem
|
|
|
|
|
|
class Config(object):
|
|
def __init__(self, save_file):
|
|
self._data = {}
|
|
self._items = {}
|
|
self._save_file = save_file
|
|
|
|
def load(self, default_config=None):
|
|
try:
|
|
f = open(self._save_file, "r")
|
|
self._data = json.load(f)
|
|
self._items = {}
|
|
for key, value in self._data.items():
|
|
self._items[key] = ConfigItem.from_json(key, value)
|
|
except Exception as e:
|
|
print(e)
|
|
self._items = {}
|
|
self._data = {}
|
|
if default_config:
|
|
for item in default_config._items:
|
|
if not (item in self._items):
|
|
self._items[item] = default_config._items[item]
|
|
return self
|
|
|
|
def get_items(self):
|
|
return self._items
|
|
|
|
def get_item_by_name(self, key):
|
|
if key in self._items:
|
|
return self._items[key]
|
|
else:
|
|
return None
|
|
|
|
def set_item(self, config_item: ConfigItem):
|
|
self._items[config_item.name] = config_item
|
|
return self
|
|
|
|
def save(self):
|
|
save_format = {}
|
|
for name, item in self._items.items():
|
|
save_format[name] = item.to_json()
|
|
with open(self._save_file, "w") as f:
|
|
json.dump(save_format, f)
|
|
self._data = save_format
|
|
return self
|
|
|
|
def key_tone_enabled(self):
|
|
return self.get_item_by_name("key_tone").value
|
|
|
|
def key_tone_hz(self):
|
|
return self.get_item_by_name("key_tone_hz").value if self.key_tone_enabled() else 0
|
|
|
|
def brightness(self):
|
|
return self.get_item_by_name("brightness").value
|
|
|
|
def debug_app_enabled(self):
|
|
return self.get_item_by_name("debug_app").value |