You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
import itertools
from gooey.gui.widgets import components2
class ComponentBuilder(object): def __init__(self, build_spec): self.build_spec = build_spec _required_specs = self.build_spec.get('required', None) _optional_specs = self.build_spec.get('optional', None)
self.required_args = self.build_widget(_required_specs) if _required_specs else None
optionals = self.build_widget(_optional_specs) if _optional_specs else None if _optional_specs: self.flags = [widget for widget in optionals if isinstance(widget, components2.CheckBox)] self.general_options = [widget for widget in optionals if not isinstance(widget, components2.CheckBox)] else: self.flags = [] self.general_options = []
def build_widget(self, build_spec): assembled_widgets = [] for spec in build_spec: widget_type = spec['type'] properties = spec['data']
Component = getattr(components2, widget_type) assembled_widgets.append(Component(data=properties)) return assembled_widgets
def __iter__(self): '''
return an iterator for all of the contained gui '''
return itertools.chain(self.required_args or [], self.flags or [], self.general_options or [])
|