class ZeroCenteredChildGroup(ChildGroup): def __init__(self, **kwargs): self.zero_centered_items = ZeroCenteredGroup() kwargs.setdefault('allow_index_resort', True) super(ZeroCenteredChildGroup, self).__init__(**kwargs) def get_zero_centered(self, **kwargs): child = kwargs.get('child') if child is None: child_index = kwargs.get('index') if child_index is None: child_id = kwargs.get('id') child = self[child_id] else: child = self.indexed_items[child_index] return self.zero_centered_items.get_zero_centered(child.Index) def on_child_Index_changed(self, **kwargs): child = kwargs.get('obj') old = kwargs.get('old') value = kwargs.get('value') if old in self.zero_centered_items: del self.zero_centered_items[old] self.zero_centered_items[value] = child super(ZeroCenteredChildGroup, self).on_child_Index_changed(**kwargs) def _ChildGroup_on_own_child_update(self, **kwargs): child = kwargs.get('obj') mode = kwargs.get('mode') if mode == 'add': self.zero_centered_items[child.Index] = child elif mode == 'remove': if child.Index in self.zero_centered_items: del self.zero_centered_items[child.Index] super(ZeroCenteredChildGroup, self)._ChildGroup_on_own_child_update(**kwargs)
def __init__(self, **kwargs): self.zero_centered_items = ZeroCenteredGroup() kwargs.setdefault('allow_index_resort', True) super(ZeroCenteredChildGroup, self).__init__(**kwargs)