initial app helpers completed - moving to make the default apps next.
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
from .config import Config
|
||||
from .config_item import ConfigItem
|
||||
@@ -0,0 +1,61 @@
|
||||
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
|
||||
@@ -0,0 +1,50 @@
|
||||
class ValueRange(object):
|
||||
def __init__(self, start, end):
|
||||
self.start = start
|
||||
self.end = end
|
||||
|
||||
@staticmethod
|
||||
def from_json(json_dict: dict):
|
||||
if not ("start" in json_dict and "end" in json_dict):
|
||||
raise ValueError("Value Range must be provided a start and end value in the provided json dictionary")
|
||||
return ValueRange(json_dict["start"], json_dict["end"])
|
||||
|
||||
def to_json(self):
|
||||
return {
|
||||
"start": self.start,
|
||||
"end": self.end
|
||||
}
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.to_json()}"
|
||||
|
||||
|
||||
class ConfigItem(object):
|
||||
def __init__(self, name: str, value, available_values: list = None, value_range: ValueRange = None,
|
||||
dependency: dict = None):
|
||||
self.name = name
|
||||
self.value = value
|
||||
self.available_values = available_values
|
||||
self.value_range = value_range
|
||||
self.dependency = dependency
|
||||
|
||||
@staticmethod
|
||||
def from_json(key: str, json_dict: dict):
|
||||
return ConfigItem(
|
||||
key,
|
||||
json_dict["current_value"],
|
||||
available_values=json_dict["available_values"] if "available_values" in json_dict else None,
|
||||
value_range=ValueRange.from_json(json_dict["value_range"]) if "value_range" in json_dict else None,
|
||||
dependency=json_dict["dependency"] if "dependency" in json_dict else None,
|
||||
)
|
||||
|
||||
def to_json(self):
|
||||
json_dict = {"current_value": self.value}
|
||||
if self.value_range:
|
||||
json_dict["value_range"] = self.value_range.to_json()
|
||||
if self.available_values:
|
||||
json_dict["available_values"] = self.available_values
|
||||
if self.dependency:
|
||||
json_dict["dependency"] = self.dependency
|
||||
|
||||
return json_dict
|
||||
Reference in New Issue
Block a user