diff options
| author | Felix Domke <tmbinc@elitedvb.net> | 2009-05-21 04:08:58 +0200 |
|---|---|---|
| committer | Felix Domke <tmbinc@elitedvb.net> | 2009-05-21 04:08:58 +0200 |
| commit | aa63e716977d5f341495cf0694b327116b978f89 (patch) | |
| tree | 4564cf822fd7b50562e998bdd2f64e89679dbe0e /lib/python/Components/Element.py | |
| parent | 57794b7710b06a1dcc156a91c84bb8316f104f06 (diff) | |
| download | enigma2-aa63e716977d5f341495cf0694b327116b978f89.tar.gz enigma2-aa63e716977d5f341495cf0694b327116b978f89.zip | |
allow multiple sources for elements. last added source will be in .source, a list will be in .sources
Diffstat (limited to 'lib/python/Components/Element.py')
| -rw-r--r-- | lib/python/Components/Element.py | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/lib/python/Components/Element.py b/lib/python/Components/Element.py index 509a1c8d..3297a4ad 100644 --- a/lib/python/Components/Element.py +++ b/lib/python/Components/Element.py @@ -30,9 +30,12 @@ class Element(object): CHANGED_SPECIFIC = 3 # second tuple will specify what exactly changed CHANGED_POLL = 4 # a timer expired + SINGLE_SOURCE = True + def __init__(self): self.downstream_elements = CList() self.master = None + self.sources = [ ] self.source = None self.__suspended = True self.cache = None @@ -43,7 +46,9 @@ class Element(object): self.master = downstream def connectUpstream(self, upstream): - assert self.source is None + assert not self.SINGLE_SOURCE or self.source is None + self.sources.append(upstream) + # self.source always refers to the last recent source added. self.source = upstream self.changed((self.CHANGED_DEFAULT,)) @@ -58,10 +63,14 @@ class Element(object): assert len(self.downstream_elements) == 0, "there are still downstream elements left" # Sources don't have a source themselves. don't do anything here. - if self.source is not None: - self.source.disconnectDownstream(self) + for s in self.sources: + s.disconnectDownstream(self) + + if self.source: # sources are owned by the Screen, so don't destroy them here. self.destroy() + self.source = None + self.sources = [ ] def disconnectDownstream(self, downstream): self.downstream_elements.remove(downstream) @@ -77,10 +86,6 @@ class Element(object): self.downstream_elements.changed(*args, **kwargs) self.cache = None - def reconnectUpstream(self, new_upstream): - assert self.source is not None - self.source = new_upstream - def setSuspend(self, suspended): changed = self.__suspended != suspended if not self.__suspended and suspended: @@ -89,8 +94,9 @@ class Element(object): self.doSuspend(0) self.__suspended = suspended - if self.source is not None and changed: - self.source.checkSuspend() + if changed: + for s in self.sources: + s.checkSuspend() suspended = property(lambda self: self.__suspended, setSuspend) |
