from .constants import CONF_KEY_BASE, CONF_KEY_PLAYERSETTINGS, \
CONF_KEY_MUSICPROVIDERS, CONF_KEY_PLAYERPROVIDERS, EVENT_CONFIG_CHANGED
-class WatchedDict(dict):
- def __init__(self, mass, parent, savefunc, existing_dict=None):
- self.mass = mass
- self.parent = parent
- self.savefunc = savefunc
- if existing_dict:
- for key, value in existing_dict.items():
- self[key] = value
-
- def __setitem__(self, key, new_value):
- # optional processing here
- if key not in self:
- if isinstance(new_value, dict):
- new_value = WatchedDict(self.mass, key, self.savefunc, new_value)
- super().__setitem__(key, new_value)
- elif self[key] != new_value:
- # value changed
- super().__setitem__(key, new_value)
- self[key] = new_value
- self.mass.event_loop.create_task(
- self.mass.signal_event(EVENT_CONFIG_CHANGED, f"{self.parent}.{key}"))
- self.savefunc()
-
-class MassConfig(WatchedDict):
+class MassConfig(dict):
''' Class which holds our configuration '''
def __init__(self, mass):
- self.mass = mass
self.loading = False
- self.savefunc = self.__save
- self.parent = None
- self[CONF_KEY_BASE] = WatchedDict(mass, None, self.__save)
- self[CONF_KEY_MUSICPROVIDERS] = WatchedDict(mass, None, self.__save)
- self[CONF_KEY_PLAYERPROVIDERS] = WatchedDict(mass, None, self.__save)
- self[CONF_KEY_PLAYERSETTINGS] = WatchedDict(mass, None, self.__save)
+ self.mass = mass
+ self[CONF_KEY_BASE] = {}
+ self[CONF_KEY_MUSICPROVIDERS] = {}
+ self[CONF_KEY_PLAYERPROVIDERS] = {}
+ self[CONF_KEY_PLAYERSETTINGS] = {}
self.__load()
@property
self[base_key][conf_key] = new_conf
return self[base_key][conf_key]
- def __save(self):
+ def save(self):
''' save config to file '''
if self.loading:
LOGGER.warning("save already running")
final_conf[key][subkey] = subvalue
with open(conf_file, 'w') as f:
f.write(json.dumps(final_conf, indent=4))
+ LOGGER.info("Config saved!")
self.loading = False
def __load(self):