This commit is contained in:
2021-05-14 20:10:01 +02:00
parent c3f0761bbb
commit b44025e074
+33 -33
View File
@@ -20,46 +20,42 @@ class Persistence:
home = Path.home()
self.fname = home / fname
self.managed = managed
self.values = {}
def store(self):
self._get()
json_save(self.values, self.fname)
values = get_values(self.managed)
json_save(values, self.fname)
def load(self):
self.values = json_load(self.fname)
self._set()
def _get(self):
children = self.get_good_children()
for child in children:
value = child.GetValue()
name = get_long_name(child)
# print(name, value, sep="\t")
self.values[name] = value
def _set(self):
children = self.get_good_children()
for child in children:
name = get_long_name(child)
try:
value = self.values[name]
except KeyError:
print(f"Warning: cannot load previous value for: {name}")
else:
child.SetValue(value)
def get_good_children(self):
return list(c for c in recurse(self.managed) if isinstance(c, ws.PersistableWidget))
values = json_load(self.fname)
set_values(values, self.managed)
def recurse_all(objs):
for obj in objs:
yield from recurse(obj)
def get_values(obj):
values = {}
children = get_good_children(obj)
for child in children:
value = child.GetValue()
name = get_long_name(child)
# print(name, value, sep="\t")
values[name] = value
return values
def set_values(values, obj):
children = get_good_children(obj)
for child in children:
name = get_long_name(child)
try:
value = values[name]
except KeyError:
print(f"Warning: no previous value for: {name}")
else:
child.SetValue(value)
def get_good_children(obj):
return [c for c in recurse(obj) if isinstance(c, ws.PersistableWidget)]
def recurse(obj):
children = obj.GetChildren()
@@ -68,6 +64,10 @@ def recurse(obj):
else:
yield obj
def recurse_all(objs):
for obj in objs:
yield from recurse(obj)
def get_long_name(obj):