first commit
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
import re
|
||||
|
||||
|
||||
def _control_value(el, control):
|
||||
"""Lit la valeur actuelle d'un réglage à partir de l'élément stocké
|
||||
(content / attributs / style), avec repli sur sa valeur par défaut."""
|
||||
ctype = control["type"]
|
||||
style = el.get("style") or {}
|
||||
|
||||
if ctype == "preset":
|
||||
for key, _label, props in control["options"]:
|
||||
if all((style.get(k) or "") == (v or "") for k, v in props.items()):
|
||||
return key
|
||||
return control.get("default")
|
||||
|
||||
if ctype == "toggle_token":
|
||||
_kind, name = control["target"].split(":", 1)
|
||||
current = style.get(name, "") or ""
|
||||
return control["token"] in current.split()
|
||||
|
||||
if ctype == "scale":
|
||||
transform = style.get("transform", "") or ""
|
||||
m = re.search(r"scale\(([\d.]+)\)", transform)
|
||||
return float(m.group(1)) if m else control.get("default", 1)
|
||||
|
||||
target = control["target"]
|
||||
if target == "content":
|
||||
return el.get("content") or control.get("default", "")
|
||||
kind, name = target.split(":", 1)
|
||||
store = el.get("attributes") if kind == "attr" else style
|
||||
store = store or {}
|
||||
if ctype == "checkbox":
|
||||
if name not in store:
|
||||
return bool(control.get("default", False))
|
||||
return store[name] not in (None, "", control.get("false_value"))
|
||||
if ctype == "slider":
|
||||
raw = store.get(name)
|
||||
if raw is None:
|
||||
return control.get("default", 0)
|
||||
try:
|
||||
return float(str(raw).replace(control.get("unit", ""), "").strip() or 0)
|
||||
except ValueError:
|
||||
return control.get("default", 0)
|
||||
return store.get(name, control.get("default", ""))
|
||||
Reference in New Issue
Block a user