childrenlist.py (2409B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\carbonui\primitives\childrenlist.py 2 from __future__ import print_function 3 import weakref 4 from carbonui.primitives.base import Base 5 6 class PyChildrenList(object): 7 8 def __init__(self, owner, children = None): 9 if children is None: 10 children = [] 11 self._childrenObjects = children 12 self._ownerRef = weakref.ref(owner) 13 14 def GetOwner(self): 15 if self._ownerRef: 16 return self._ownerRef() 17 18 def append(self, obj): 19 return self.insert(-1, obj) 20 21 def insert(self, idx, obj): 22 if not isinstance(obj, Base): 23 print('Someone trying to add item which is not of correct type', obj) 24 return 25 owner = self.GetOwner() 26 if owner: 27 obj._parentRef = weakref.ref(owner) 28 if idx == -1 or idx is None: 29 self._childrenObjects.append(obj) 30 owner._AppendChildRO(obj) 31 else: 32 self._childrenObjects.insert(idx, obj) 33 owner._InsertChildRO(idx, obj) 34 obj.FlagAlignmentDirty() 35 return self 36 37 def remove(self, obj): 38 obj._parentRef = None 39 owner = self.GetOwner() 40 if owner and not owner._containerClosing: 41 try: 42 self._childrenObjects.remove(obj) 43 except ValueError: 44 pass 45 46 owner._RemoveChildRO(obj) 47 if obj.isPushAligned: 48 for each in owner.children: 49 if each.isAffectedByPushAlignment: 50 each.FlagAlignmentDirty() 51 52 return self 53 54 def index(self, obj): 55 return self._childrenObjects.index(obj) 56 57 def __getitem__(self, key): 58 return self._childrenObjects[key] 59 60 def __len__(self): 61 return len(self._childrenObjects) 62 63 def __hash__(self): 64 return hash(self._childrenObjects) 65 66 def __iter__(self): 67 return iter(self._childrenObjects) 68 69 def __getslice__(self, f, t): 70 return self._childrenObjects[f:t] 71 72 def __contains__(self, obj): 73 return obj in self._childrenObjects 74 75 def __cmp__(self, other): 76 return cmp(other, self._childrenObjects) 77 78 def __reversed__(self): 79 return reversed(self._childrenObjects) 80 81 def __delitem__(self, key): 82 del self._childrenObjects[key]