summaryrefslogtreecommitdiff
path: root/gr-wxgui/src/python/pubsub.py
diff options
context:
space:
mode:
authorjcorgan2009-03-20 02:16:20 +0000
committerjcorgan2009-03-20 02:16:20 +0000
commitd9744799b7df6c09180778540bf55eb9dc84281b (patch)
tree311339459f5fae94417321c08b4d48710e03f30e /gr-wxgui/src/python/pubsub.py
parent88304ce16a97945d13510b5fdaefcc0f62462d9d (diff)
downloadgnuradio-d9744799b7df6c09180778540bf55eb9dc84281b.tar.gz
gnuradio-d9744799b7df6c09180778540bf55eb9dc84281b.tar.bz2
gnuradio-d9744799b7df6c09180778540bf55eb9dc84281b.zip
Merged r10463:10658 from jblum/gui_guts into trunk. Trunk passes distcheck.
git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@10660 221aa14e-8319-0410-a670-987f0aec2ac5
Diffstat (limited to 'gr-wxgui/src/python/pubsub.py')
-rw-r--r--gr-wxgui/src/python/pubsub.py106
1 files changed, 53 insertions, 53 deletions
diff --git a/gr-wxgui/src/python/pubsub.py b/gr-wxgui/src/python/pubsub.py
index cc8ea5ccc..e55d69197 100644
--- a/gr-wxgui/src/python/pubsub.py
+++ b/gr-wxgui/src/python/pubsub.py
@@ -28,73 +28,73 @@ This is a proof of concept implementation, will likely change significantly.
class pubsub(dict):
def __init__(self):
- self._publishers = { }
- self._subscribers = { }
- self._proxies = { }
-
+ self._publishers = { }
+ self._subscribers = { }
+ self._proxies = { }
+
def __missing__(self, key, value=None):
- dict.__setitem__(self, key, value)
- self._publishers[key] = None
- self._subscribers[key] = []
- self._proxies[key] = None
-
+ dict.__setitem__(self, key, value)
+ self._publishers[key] = None
+ self._subscribers[key] = []
+ self._proxies[key] = None
+
def __setitem__(self, key, val):
- if not self.has_key(key):
- self.__missing__(key, val)
- elif self._proxies[key] is not None:
- (p, newkey) = self._proxies[key]
- p[newkey] = val
- else:
- dict.__setitem__(self, key, val)
- for sub in self._subscribers[key]:
- # Note this means subscribers will get called in the thread
- # context of the 'set' caller.
- sub(val)
+ if not self.has_key(key):
+ self.__missing__(key, val)
+ elif self._proxies[key] is not None:
+ (p, pkey) = self._proxies[key]
+ p[pkey] = val
+ else:
+ dict.__setitem__(self, key, val)
+ for sub in self._subscribers[key]:
+ # Note this means subscribers will get called in the thread
+ # context of the 'set' caller.
+ sub(val)
def __getitem__(self, key):
- if not self.has_key(key): self.__missing__(key)
- if self._proxies[key] is not None:
- (p, newkey) = self._proxies[key]
- return p[newkey]
- elif self._publishers[key] is not None:
- return self._publishers[key]()
- else:
- return dict.__getitem__(self, key)
+ if not self.has_key(key): self.__missing__(key)
+ if self._proxies[key] is not None:
+ (p, pkey) = self._proxies[key]
+ return p[pkey]
+ elif self._publishers[key] is not None:
+ return self._publishers[key]()
+ else:
+ return dict.__getitem__(self, key)
def publish(self, key, publisher):
- if not self.has_key(key): self.__missing__(key)
+ if not self.has_key(key): self.__missing__(key)
if self._proxies[key] is not None:
- (p, newkey) = self._proxies[key]
- p.publish(newkey, publisher)
+ (p, pkey) = self._proxies[key]
+ p.publish(pkey, publisher)
else:
self._publishers[key] = publisher
-
+
def subscribe(self, key, subscriber):
- if not self.has_key(key): self.__missing__(key)
+ if not self.has_key(key): self.__missing__(key)
if self._proxies[key] is not None:
- (p, newkey) = self._proxies[key]
- p.subscribe(newkey, subscriber)
+ (p, pkey) = self._proxies[key]
+ p.subscribe(pkey, subscriber)
else:
self._subscribers[key].append(subscriber)
-
+
def unpublish(self, key):
if self._proxies[key] is not None:
- (p, newkey) = self._proxies[key]
- p.unpublish(newkey)
+ (p, pkey) = self._proxies[key]
+ p.unpublish(pkey)
else:
self._publishers[key] = None
-
+
def unsubscribe(self, key, subscriber):
if self._proxies[key] is not None:
- (p, newkey) = self._proxies[key]
- p.unsubscribe(newkey, subscriber)
+ (p, pkey) = self._proxies[key]
+ p.unsubscribe(pkey, subscriber)
else:
self._subscribers[key].remove(subscriber)
- def proxy(self, key, p, newkey=None):
- if not self.has_key(key): self.__missing__(key)
- if newkey is None: newkey = key
- self._proxies[key] = (p, newkey)
+ def proxy(self, key, p, pkey=None):
+ if not self.has_key(key): self.__missing__(key)
+ if pkey is None: pkey = key
+ self._proxies[key] = (p, pkey)
def unproxy(self, key):
self._proxies[key] = None
@@ -110,22 +110,22 @@ if __name__ == "__main__":
# Add some subscribers
# First is a bare function
def print_len(x):
- print "len=%i" % (len(x), )
+ print "len=%i" % (len(x), )
o.subscribe('foo', print_len)
# The second is a class member function
class subber(object):
- def __init__(self, param):
- self._param = param
- def printer(self, x):
- print self._param, `x`
+ def __init__(self, param):
+ self._param = param
+ def printer(self, x):
+ print self._param, `x`
s = subber('param')
o.subscribe('foo', s.printer)
# The third is a lambda function
o.subscribe('foo', lambda x: sys.stdout.write('val='+`x`+'\n'))
- # Update key 'foo', will notify subscribers
+ # Update key 'foo', will notify subscribers
print "Updating 'foo' with three subscribers:"
o['foo'] = 'bar';
@@ -135,7 +135,7 @@ if __name__ == "__main__":
# Update now will only trigger second and third subscriber
print "Updating 'foo' after removing a subscriber:"
o['foo'] = 'bar2';
-
+
# Publish a key as a function, in this case, a lambda function
o.publish('baz', lambda : 42)
print "Published value of 'baz':", o['baz']
@@ -145,7 +145,7 @@ if __name__ == "__main__":
# This will return None, as there is no publisher
print "Value of 'baz' with no publisher:", o['baz']
-
+
# Set 'baz' key, it gets cached
o['baz'] = 'bazzz'