persistent Marker updates
This commit is contained in:
1 parent
1c01c67aec
commit
1bbef2bb73
1 file changed
+28
-1
+28
-1
@@ -1,13 +1,24 @@
|
||||
from .dotdir import DotDir
|
||||
from .jsonext import json_save, json_load
|
||||
from .utils import typename, singleton
|
||||
from .registry import Registry, instances
|
||||
from .printing import printable_dict
|
||||
|
||||
|
||||
DOT_FNAME = DotDir()("markers")
|
||||
|
||||
|
||||
class Marker(Registry):
|
||||
|
||||
def __init__(self, adj, value=None, name=None):
|
||||
if value is None:
|
||||
value = adj.get_current_value()
|
||||
if name is None:
|
||||
value = adj.get_current_value()
|
||||
else:
|
||||
try:
|
||||
value = json_load(DOT_FNAME)[name]
|
||||
except Exception:
|
||||
value = adj.get_current_value()
|
||||
|
||||
self.adj = adj
|
||||
self.value = value
|
||||
@@ -49,6 +60,8 @@ class Marker(Registry):
|
||||
def update(self, value=None):
|
||||
if value is None:
|
||||
value = self.adj.get_current_value()
|
||||
if self._name:
|
||||
update_json_dict(DOT_FNAME, self._name, value)
|
||||
self.value = value
|
||||
|
||||
|
||||
@@ -74,3 +87,17 @@ class markers:
|
||||
|
||||
|
||||
|
||||
def update_json_dict(fname, key, value):
|
||||
try:
|
||||
data = json_load(fname)
|
||||
except FileNotFoundError:
|
||||
data = {}
|
||||
else:
|
||||
if key in data and data[key] == value:
|
||||
# nothing changed => nothing to save
|
||||
return
|
||||
data[key] = value
|
||||
json_save(data, fname)
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user