summaryrefslogtreecommitdiff
path: root/gr-wxgui/src
diff options
context:
space:
mode:
authorJosh Blum2009-10-06 22:28:09 -0700
committerJosh Blum2009-10-06 22:28:09 -0700
commit645ab0cfa4ab46e057ab4df74066ab434ad5b90a (patch)
tree089cf1fb07aa17eefe37556ace82f11503d156e8 /gr-wxgui/src
parent69d09a30b38567c3ae33a227a3959aee43c721a7 (diff)
downloadgnuradio-645ab0cfa4ab46e057ab4df74066ab434ad5b90a.tar.gz
gnuradio-645ab0cfa4ab46e057ab4df74066ab434ad5b90a.tar.bz2
gnuradio-645ab0cfa4ab46e057ab4df74066ab434ad5b90a.zip
work on a special connect function that registers a callback
Diffstat (limited to 'gr-wxgui/src')
-rw-r--r--gr-wxgui/src/python/common.py20
-rw-r--r--gr-wxgui/src/python/fftsink_gl.py5
2 files changed, 23 insertions, 2 deletions
diff --git a/gr-wxgui/src/python/common.py b/gr-wxgui/src/python/common.py
index f355fd3ce..09ce44719 100644
--- a/gr-wxgui/src/python/common.py
+++ b/gr-wxgui/src/python/common.py
@@ -54,6 +54,26 @@ def bind_to_visible_event(win, callback):
win.Bind(wx.EVT_ACTIVATE, handler)
win = win.GetParent()
+from gnuradio import gr
+
+def special_connect(source, sink, hb, win, size):
+ nulls = [gr.null_sink(size), gr.null_source(size)]
+ def callback(visible, init=False):
+ if not init: hb.lock()
+ if visible:
+ if not init: hb.disconnect(source, nulls[0])
+ if not init: hb.disconnect(nulls[1], sink)
+ hb.connect(source, sink)
+ #hb.connect(nulls[1], nulls[0])
+ else:
+ if not init: hb.disconnect(source, sink)
+ #if not init: hb.disconnect(nulls[1], nulls[0])
+ hb.connect(source, nulls[0])
+ hb.connect(nulls[1], sink)
+ if not init: hb.unlock()
+ callback(False, init=True) #initially connect
+ bind_to_visible_event(win, callback)
+
#A macro to apply an index to a key
index_key = lambda key, i: "%s_%d"%(key, i+1)
diff --git a/gr-wxgui/src/python/fftsink_gl.py b/gr-wxgui/src/python/fftsink_gl.py
index 3f0a93fc8..4edb11b4a 100644
--- a/gr-wxgui/src/python/fftsink_gl.py
+++ b/gr-wxgui/src/python/fftsink_gl.py
@@ -73,8 +73,6 @@ class _fft_sink_base(gr.hier_block2):
)
msgq = gr.msg_queue(2)
sink = gr.message_sink(gr.sizeof_float*fft_size, msgq, True)
- #connect
- self.connect(self, fft, sink)
#controller
self.controller = pubsub()
self.controller.subscribe(AVERAGE_KEY, fft.set_average)
@@ -106,6 +104,9 @@ class _fft_sink_base(gr.hier_block2):
common.register_access_methods(self, self.win)
setattr(self.win, 'set_baseband_freq', getattr(self, 'set_baseband_freq')) #BACKWARDS
setattr(self.win, 'set_peak_hold', getattr(self, 'set_peak_hold')) #BACKWARDS
+ #connect
+ common.special_connect(self, fft, hb=self, win=self.win, size=self._item_size)
+ self.connect(fft, sink)
class fft_sink_f(_fft_sink_base):
_fft_chain = blks2.logpwrfft_f