Merged r10463:10658 from jblum/gui_guts into trunk. Trunk passes distcheck.
[debian/gnuradio] / gr-wxgui / src / python / pubsub.py
index cc8ea5ccc6fba0242bf6ce85e212a04293e2c162..e55d6919781f39f168ae9c6495be0a869a2aa488 100644 (file)
@@ -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'