persistent Marker updates

This commit is contained in:
augustin_s committed 2026-08-27 23:24:58 +02:00
1 parent 1c01c67aec
commit 1bbef2bb73
1 file changed
+28 -1
+28 -1
View File
@@ -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)