ObservableList.py 1013 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. from . import Observable
  2. class ObservableList(list, Observable):
  3. def __init__(self, lst: list, parent: Observable = None):
  4. list.__init__(self)
  5. Observable.__init__(self, parent)
  6. for element in lst:
  7. list.append(self, Observable.create(element, self))
  8. def __getitem__(self, value):
  9. return super().__getitem__(int(value))
  10. def __setitem__(self, key, value):
  11. super().__setitem__(key, Observable.create(value, self))
  12. Observable.notify(self)
  13. def __delitem__(self, key):
  14. super().__delitem__(key)
  15. Observable.notify(self)
  16. def append(self, value):
  17. obs = Observable.create(value, self)
  18. super().append(obs)
  19. Observable.notify(self)
  20. return obs
  21. def __copy__(self):
  22. def c(e):
  23. if isinstance(e, (ObservableDict, ObservableList)):
  24. return e.copy()
  25. else:
  26. return e
  27. return list(map(c, self))
  28. from . import ObservableDict