def __init__(self, impl, presenter): self._impl = impl self._title = "" self._presenter = presenter self._model = self._presenter.get_viewmodel() self._fields = OrderedDict() self._groups = OrderedDict() self._presenter.set_view(self) self._groupcounter = { } # veldnaam => counter, t.b.v. geneste groepen met herhalende records self._receiving = False # voorkom deadlocks; geef geen events door aan presenter als _receiving True is. self._main_group = ViewGroup("main", ViewLayout.VERTICAL) if impl: impl.set_base(self)
def __new__(cls, clsname, bases, dct): new_cls = type.__new__(cls, clsname, bases, dct) # Veldattributen moeten worden afgebeeld in volgorde van declaratie. new_cls._fieldattrs = OrderedDict() for fieldname, field in sorted( inspect.getmembers( new_cls, lambda member: isinstance(member, ViewField)), key=lambda name_and_field: name_and_field[1]._sequence): new_cls._fieldattrs[fieldname] = field return new_cls
def __init__(self, **kwargs): self._fieldindex = OrderedDict() # mapping tussen ids en veldnamen self._fltr = None # voor elke instantie van ViewModel krijgen de # veldnamen een uniek id for fieldname, classfield in self._fieldattrs.items(): idx = counter.inc() field = classfield.__class__(name=fieldname, config=classfield) field._idx = idx field.set_model(self) object.__setattr__(self, fieldname, field) self._fieldindex[idx] = fieldname
def __init__(self, *args, **kwargs): super(RelationField, self).__init__(*args[1:], **kwargs) if kwargs.get("config"): return assert args, "Geen relatie opgegeven" assert issubclass( args[0], ViewModel ), "Argument is geen subklasse van ViewModel: %r" % args[0] self._relation = args[0] if self._group: self._group.fieldcount = self.fieldcount headers = OrderedDict() for fieldname, field in self._relation._fieldattrs.items(): headers[fieldname] = HeaderField(name=fieldname, value=fieldname.capitalize()) HeaderCls = type("%sHeader" % self._relation.__name__, (ViewModel, ), headers) self._group.header = HeaderCls()
def clear_groups(self): self._groups = OrderedDict()
def clear_fields(self): if self._impl: self._impl.clear_fields() self._fields = OrderedDict()