|
|
'''
Created on Dec 8, 2013
@author: Chris '''
import itertools
import components from gooey.gui import argparse_test_data
class ComponentFactory(object): '''
Aggregates all of the actions and '''
def __init__(self, sorted_actions): self._actions = sorted_actions
self.required_args = self.BuildPositionals(self._actions) self.flags = self.BuildFlags(self._actions) self.general_options = (self.BuildChoices(self._actions) + self.BuildOptionals(self._actions) + self.BuildCounters(self._actions))
def BuildPositionals(self, actions): return self._AssembleWidgetsFromActions(actions, 'Positional', '_positionals')
def BuildChoices(self, actions): return self._AssembleWidgetsFromActions(actions, 'Choice', '_choices')
def BuildOptionals(self, actions): return self._AssembleWidgetsFromActions(actions, 'Optional', '_optionals')
def BuildFlags(self, actions): return self._AssembleWidgetsFromActions(actions, 'Flag', '_flags')
def BuildCounters(self, actions): return self._AssembleWidgetsFromActions(actions, 'Counter', '_counters')
def _AssembleWidgetsFromActions(self, actions, classname, actiontype): cls = getattr(components, classname) actions_list = getattr(actions, actiontype) return [cls(action) for action in actions_list]
def __iter__(self): '''
return an iterator for all of the contained gui '''
return itertools.chain(self.required_args, self.flags, self.general_options)
if __name__ == '__main__': a = ComponentFactory(argparse_test_data.parser)
|