NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

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]