Mercurial > libervia-backend
changeset 3474:1f1741dc3cc4
frontends (tools/xmui): implement `ValueGetter.items` and `XMLUIPanel.values` to get a map from widget name to values
author | Goffi <goffi@goffi.org> |
---|---|
date | Sat, 27 Feb 2021 18:39:25 +0100 |
parents | cc065c13052c |
children | 3ac28e51a24f |
files | sat_frontends/tools/xmlui.py |
diffstat | 1 files changed, 17 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/sat_frontends/tools/xmlui.py Sat Feb 27 18:37:43 2021 +0100 +++ b/sat_frontends/tools/xmlui.py Sat Feb 27 18:39:25 2021 +0100 @@ -364,6 +364,7 @@ class ValueGetter(object): """dict like object which return values of widgets""" + # FIXME: widget which can keep multiple values are not handled def __init__(self, widgets, attr="value"): self.attr = attr @@ -378,6 +379,17 @@ def keys(self): return list(self.widgets.keys()) + def items(self): + for name, widget in self.widgets.items(): + try: + value = widget.value + except AttributeError: + try: + value = list(widget.values) + except AttributeError: + continue + yield name, value + class XMLUIPanel(XMLUIBase): """XMLUI Panel @@ -426,6 +438,11 @@ def main_cont(self): return self._main_cont + @property + def values(self): + """Dict of all widgets values""" + return dict(self.widget_value.items()) + @main_cont.setter def main_cont(self, value): if self._main_cont is not None: