From 5a34d090b390524ae7ae6fda8fcbae7b35dc4f09 Mon Sep 17 00:00:00 2001 From: Goffi Date: Mon, 16 Oct 2017 07:18:07 +0200 Subject: [PATCH] frontends (xmlui): new widget_value dict to get first value of widget by name --- frontends/src/tools/xmlui.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/frontends/src/tools/xmlui.py b/frontends/src/tools/xmlui.py index 15bbb95e..55d9e5cb 100644 --- a/frontends/src/tools/xmlui.py +++ b/frontends/src/tools/xmlui.py @@ -313,6 +313,20 @@ class XMLUIBase(object): raise NotImplementedError +class ValueGetter(object): + """dict like object which return values of widgets""" + + def __init__(self, widgets, attr='value'): + self.attr = attr + self.widgets = widgets + + def __getitem__(self, name): + return getattr(self.widgets[name], self.attr) + + def __getattr__(self, name): + return self.__getitem__(name) + + class XMLUIPanel(XMLUIBase): """XMLUI Panel @@ -323,9 +337,14 @@ class XMLUIPanel(XMLUIBase): widget_factory = None def __init__(self, host, parsed_dom, title=None, flags=None, callback=None, profile=C.PROF_KEY_NONE): + """ + @property widgets(dict): widget name => widget map + @property widget_value(ValueGetter): retrieve widget value from it's name + """ super(XMLUIPanel, self).__init__(host, parsed_dom, title=title, flags=flags, callback=callback, profile=profile) self.ctrl_list = {} # input widget, used mainly for forms self.widgets = {} # allow to access any named widgets + self.widget_value = ValueGetter(self.widgets) self._main_cont = None self.constructUI(parsed_dom)