Source code for qargparser.object

from .arg import Arg

[docs]class Object(Arg): """ Object argument widget. You an can add all sub-argument types. :param default: The default value, defaults to {} :type default: dict, optional :param items: the list of child data, defaults to False :type items: list of dict, optional :return: The new instance :rtype: :class:`~qargparser.object.Object` instance """ def create(self): from .argparser import ArgParser wdg = ArgParser(description=self._data['description']) default = self._data["default"] if 'items' in self._data: for _data in self._data.get('items')[:]: #Update default if _data["name"] in default: _data["default"] = default[_data["name"]] wdg.add_arg(**_data) wdg.changed.connect(self.on_changed) self._read = wdg._read self.wdg = wdg self._data.pop("default") return wdg def is_edited(self): return any(child.is_edited() for child in self.get_children()) def reset(self): for child in self.get_children(): child.reset() child.changed.emit(None) self.changed.emit(None) def _update(self): super(Object, self)._update() self.reset() def add_arg(self, *args, **kwargs): return self.wdg.add_arg(*args, **kwargs) def pop_arg(self, *args, **kwargs): self.wdg.pop_arg(*args, **kwargs) self._update() def move_arg(self, *args, **kwargs): self.wdg.move_arg(*args, **kwargs) self._update() self.reset_requested.emit() def get_children(self): return self.wdg._args def to_data(self): data = super(Object, self).to_data() children = self.get_children() if children: data["items"] = [child.to_data() for child in self.get_children()] return data