From d4f6b86a9bdea09c2c158b9982559a727f8c6a0b Mon Sep 17 00:00:00 2001
From: Tom Rondeau <trondeau@vt.edu>
Date: Sun, 17 Mar 2013 12:24:38 -0400
Subject: blocks: converting references to vector source/sink, null
 source/sink, nop, copy, head, skiphead, vector_map, and annotator blocks to
 use gr-blocks.

---
 gr-wxgui/python/common.py | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

(limited to 'gr-wxgui/python')

diff --git a/gr-wxgui/python/common.py b/gr-wxgui/python/common.py
index 57fc530f88..48a62a28ab 100644
--- a/gr-wxgui/python/common.py
+++ b/gr-wxgui/python/common.py
@@ -24,6 +24,7 @@
 ##################################################
 import wx
 from gnuradio import gr
+from gnuradio import blocks
 
 RUN_ALWAYS = gr.prefs().get_bool ('wxgui', 'run_always', False)
 
@@ -47,7 +48,7 @@ class wxgui_hb(object):
 		"""
 		try:
 			assert points[0] == self or points[0][0] == self
-			copy = gr.copy(self._hb.input_signature().sizeof_stream_item(0))
+			copy = blocks.copy(self._hb.input_signature().sizeof_stream_item(0))
 			handler = self._handler_factory(copy.set_enabled)
 			if RUN_ALWAYS == False:
 				handler(False) #initially disable the copy block
-- 
cgit v1.2.3


From b33eb2258771d34113949628159b52d39074fa83 Mon Sep 17 00:00:00 2001
From: Tom Rondeau <trondeau@vt.edu>
Date: Mon, 18 Mar 2013 11:42:11 -0400
Subject: examples: updating many examples for changes in modules and
 namespaces.

---
 gr-analog/grc/analog_am_demod_cf.xml     |  47 +++
 gr-analog/grc/analog_block_tree.xml      |   9 +
 gr-analog/grc/analog_fm_deemph.xml       |  31 ++
 gr-analog/grc/analog_fm_demod_cf.xml     |  68 +++++
 gr-analog/grc/analog_fm_preemph.xml      |  31 ++
 gr-analog/grc/analog_nbfm_rx.xml         |  48 +++
 gr-analog/grc/analog_nbfm_tx.xml         |  48 +++
 gr-analog/grc/analog_wfm_rcv.xml         |  33 +++
 gr-analog/grc/analog_wfm_rcv_pll.xml     |  37 +++
 gr-analog/grc/analog_wfm_tx.xml          |  48 +++
 gr-fcd/examples/grc/fcd_apt_rx.grc       | 490 ++++++++++++++++---------------
 gr-fcd/examples/grc/fcd_nfm_rx.grc       | 154 +++++-----
 gr-filter/grc/CMakeLists.txt             |   1 +
 gr-filter/grc/filter_block_tree.xml      |   1 +
 gr-uhd/examples/grc/uhd_const_wave.grc   | 240 ++++++++-------
 gr-uhd/examples/grc/uhd_fft.grc          |  72 ++---
 gr-uhd/examples/grc/uhd_rx_dpsk.grc      |  80 ++++-
 gr-uhd/examples/grc/uhd_tx_dpsk.grc      | 180 +++++++-----
 gr-uhd/examples/grc/uhd_wbfm_receive.grc | 138 +++++----
 gr-wxgui/python/constsink_gl.py          |   3 +-
 grc/blocks/blks2_am_demod_cf.xml         |  47 ---
 grc/blocks/blks2_fm_deemph.xml           |  31 --
 grc/blocks/blks2_fm_demod_cf.xml         |  68 -----
 grc/blocks/blks2_fm_preemph.xml          |  31 --
 grc/blocks/blks2_nbfm_rx.xml             |  48 ---
 grc/blocks/blks2_nbfm_tx.xml             |  48 ---
 grc/blocks/blks2_wfm_rcv.xml             |  33 ---
 grc/blocks/blks2_wfm_rcv_pll.xml         |  37 ---
 grc/blocks/blks2_wfm_tx.xml              |  48 ---
 29 files changed, 1161 insertions(+), 989 deletions(-)
 create mode 100644 gr-analog/grc/analog_am_demod_cf.xml
 create mode 100644 gr-analog/grc/analog_fm_deemph.xml
 create mode 100644 gr-analog/grc/analog_fm_demod_cf.xml
 create mode 100644 gr-analog/grc/analog_fm_preemph.xml
 create mode 100644 gr-analog/grc/analog_nbfm_rx.xml
 create mode 100644 gr-analog/grc/analog_nbfm_tx.xml
 create mode 100644 gr-analog/grc/analog_wfm_rcv.xml
 create mode 100644 gr-analog/grc/analog_wfm_rcv_pll.xml
 create mode 100644 gr-analog/grc/analog_wfm_tx.xml
 delete mode 100644 grc/blocks/blks2_am_demod_cf.xml
 delete mode 100644 grc/blocks/blks2_fm_deemph.xml
 delete mode 100644 grc/blocks/blks2_fm_demod_cf.xml
 delete mode 100644 grc/blocks/blks2_fm_preemph.xml
 delete mode 100644 grc/blocks/blks2_nbfm_rx.xml
 delete mode 100644 grc/blocks/blks2_nbfm_tx.xml
 delete mode 100644 grc/blocks/blks2_wfm_rcv.xml
 delete mode 100644 grc/blocks/blks2_wfm_rcv_pll.xml
 delete mode 100644 grc/blocks/blks2_wfm_tx.xml

(limited to 'gr-wxgui/python')

diff --git a/gr-analog/grc/analog_am_demod_cf.xml b/gr-analog/grc/analog_am_demod_cf.xml
new file mode 100644
index 0000000000..b066882bda
--- /dev/null
+++ b/gr-analog/grc/analog_am_demod_cf.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<!--
+###################################################
+##AM Demod
+###################################################
+ -->
+<block>
+	<name>AM Demod</name>
+	<key>analog_am_demod_cf</key>
+	<import>from gnuradio import analog</import>
+	<make>analog.am_demod_cf(
+	channel_rate=$chan_rate,
+	audio_decim=$audio_decim,
+	audio_pass=$audio_pass,
+	audio_stop=$audio_stop,
+)</make>
+	<param>
+		<name>Channel Rate</name>
+		<key>chan_rate</key>
+		<type>real</type>
+	</param>
+	<param>
+		<name>Audio Decimation</name>
+		<key>audio_decim</key>
+		<type>int</type>
+	</param>
+	<param>
+		<name>Audio Pass</name>
+		<key>audio_pass</key>
+		<value>5000</value>
+		<type>real</type>
+	</param>
+	<param>
+		<name>Audio Stop</name>
+		<key>audio_stop</key>
+		<value>5500</value>
+		<type>real</type>
+	</param>
+	<sink>
+		<name>in</name>
+		<type>complex</type>
+	</sink>
+	<source>
+		<name>out</name>
+		<type>float</type>
+	</source>
+</block>
diff --git a/gr-analog/grc/analog_block_tree.xml b/gr-analog/grc/analog_block_tree.xml
index 1c4e46c914..fdb6db27ac 100644
--- a/gr-analog/grc/analog_block_tree.xml
+++ b/gr-analog/grc/analog_block_tree.xml
@@ -46,6 +46,15 @@
     <block>analog_frequency_modulator_fc</block>
     <block>analog_phase_modulator_fc</block>
     <block>analog_quadrature_demod_cf</block>
+    <block>analog_nbfm_tx</block>
+    <block>analog_nbfm_rx</block>
+    <block>analog_wfm_tx</block>
+    <block>analog_wfm_rcv</block>
+    <block>analog_wfm_rcv_pll</block>
+    <block>analog_am_demod_cf</block>
+    <block>analog_fm_demod_cf</block>
+    <block>analog_fm_deemph</block>
+    <block>analog_fm_preemph</block>
   </cat>
   <cat>
     <name>Sources</name>
diff --git a/gr-analog/grc/analog_fm_deemph.xml b/gr-analog/grc/analog_fm_deemph.xml
new file mode 100644
index 0000000000..0fcb5a87d4
--- /dev/null
+++ b/gr-analog/grc/analog_fm_deemph.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+<!--
+###################################################
+##FM Deemphasis
+###################################################
+ -->
+<block>
+	<name>FM Deemphasis</name>
+	<key>analog_fm_deemph</key>
+	<import>from gnuradio import analog</import>
+	<make>analog.fm_deemph(fs=$samp_rate, tau=$tau)</make>
+	<param>
+		<name>Sample Rate</name>
+		<key>samp_rate</key>
+		<type>real</type>
+	</param>
+	<param>
+		<name>Tau</name>
+		<key>tau</key>
+		<value>75e-6</value>
+		<type>real</type>
+	</param>
+	<sink>
+		<name>in</name>
+		<type>float</type>
+	</sink>
+	<source>
+		<name>out</name>
+		<type>float</type>
+	</source>
+</block>
diff --git a/gr-analog/grc/analog_fm_demod_cf.xml b/gr-analog/grc/analog_fm_demod_cf.xml
new file mode 100644
index 0000000000..c903ddfc73
--- /dev/null
+++ b/gr-analog/grc/analog_fm_demod_cf.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0"?>
+<!--
+###################################################
+##FM Demod
+###################################################
+ -->
+<block>
+	<name>FM Demod</name>
+	<key>analog_fm_demod_cf</key>
+	<import>from gnuradio import analog</import>
+	<make>analog.fm_demod_cf(
+	channel_rate=$chan_rate,
+	audio_decim=$audio_decim,
+	deviation=$deviation,
+	audio_pass=$audio_pass,
+	audio_stop=$audio_stop,
+	gain=$gain,
+	tau=$tau,
+)</make>
+	<param>
+		<name>Channel Rate</name>
+		<key>chan_rate</key>
+		<type>real</type>
+	</param>
+	<param>
+		<name>Audio Decimation</name>
+		<key>audio_decim</key>
+		<type>int</type>
+	</param>
+	<param>
+		<name>Deviation</name>
+		<key>deviation</key>
+		<value>75000</value>
+		<type>real</type>
+	</param>
+	<param>
+		<name>Audio Pass</name>
+		<key>audio_pass</key>
+		<value>15000</value>
+		<type>real</type>
+	</param>
+	<param>
+		<name>Audio Stop</name>
+		<key>audio_stop</key>
+		<value>16000</value>
+		<type>real</type>
+	</param>
+	<param>
+		<name>Gain</name>
+		<key>gain</key>
+		<value>1.0</value>
+		<type>real</type>
+	</param>
+	<param>
+		<name>Tau</name>
+		<key>tau</key>
+		<value>75e-6</value>
+		<type>real</type>
+	</param>
+	<sink>
+		<name>in</name>
+		<type>complex</type>
+	</sink>
+	<source>
+		<name>out</name>
+		<type>float</type>
+	</source>
+</block>
diff --git a/gr-analog/grc/analog_fm_preemph.xml b/gr-analog/grc/analog_fm_preemph.xml
new file mode 100644
index 0000000000..fb898b87f3
--- /dev/null
+++ b/gr-analog/grc/analog_fm_preemph.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+<!--
+###################################################
+##FM Preemphasis
+###################################################
+ -->
+<block>
+	<name>FM Preemphasis</name>
+	<key>analog_fm_preemph</key>
+	<import>from gnuradio import analog</import>
+	<make>analog.fm_preemph(fs=$samp_rate, tau=$tau)</make>
+	<param>
+		<name>Sample Rate</name>
+		<key>samp_rate</key>
+		<type>real</type>
+	</param>
+	<param>
+		<name>Tau</name>
+		<key>tau</key>
+		<value>75e-6</value>
+		<type>real</type>
+	</param>
+	<sink>
+		<name>in</name>
+		<type>float</type>
+	</sink>
+	<source>
+		<name>out</name>
+		<type>float</type>
+	</source>
+</block>
diff --git a/gr-analog/grc/analog_nbfm_rx.xml b/gr-analog/grc/analog_nbfm_rx.xml
new file mode 100644
index 0000000000..cc690c7b6b
--- /dev/null
+++ b/gr-analog/grc/analog_nbfm_rx.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<!--
+###################################################
+##NBFM Receive
+###################################################
+ -->
+<block>
+	<name>NBFM Receive</name>
+	<key>analog_nbfm_rx</key>
+	<import>from gnuradio import analog</import>
+	<make>analog.nbfm_rx(
+	audio_rate=$audio_rate,
+	quad_rate=$quad_rate,
+	tau=$tau,
+	max_dev=$max_dev,
+)</make>
+	<param>
+		<name>Audio Rate</name>
+		<key>audio_rate</key>
+		<type>int</type>
+	</param>
+	<param>
+		<name>Quadrature Rate</name>
+		<key>quad_rate</key>
+		<type>int</type>
+	</param>
+	<param>
+		<name>Tau</name>
+		<key>tau</key>
+		<value>75e-6</value>
+		<type>real</type>
+	</param>
+	<param>
+		<name>Max Deviation</name>
+		<key>max_dev</key>
+		<value>5e3</value>
+		<type>real</type>
+	</param>
+	<check>$quad_rate%$audio_rate == 0</check>
+	<sink>
+		<name>in</name>
+		<type>complex</type>
+	</sink>
+	<source>
+		<name>out</name>
+		<type>float</type>
+	</source>
+</block>
diff --git a/gr-analog/grc/analog_nbfm_tx.xml b/gr-analog/grc/analog_nbfm_tx.xml
new file mode 100644
index 0000000000..b3d3451cf7
--- /dev/null
+++ b/gr-analog/grc/analog_nbfm_tx.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<!--
+###################################################
+##NBFM Transmit
+###################################################
+ -->
+<block>
+	<name>NBFM Transmit</name>
+	<key>analog_nbfm_tx</key>
+	<import>from gnuradio import analog</import>
+	<make>analog.nbfm_tx(
+	audio_rate=$audio_rate,
+	quad_rate=$quad_rate,
+	tau=$tau,
+	max_dev=$max_dev,
+)</make>
+	<param>
+		<name>Audio Rate</name>
+		<key>audio_rate</key>
+		<type>int</type>
+	</param>
+	<param>
+		<name>Quadrature Rate</name>
+		<key>quad_rate</key>
+		<type>int</type>
+	</param>
+	<param>
+		<name>Tau</name>
+		<key>tau</key>
+		<value>75e-6</value>
+		<type>real</type>
+	</param>
+	<param>
+		<name>Max Deviation</name>
+		<key>max_dev</key>
+		<value>5e3</value>
+		<type>real</type>
+	</param>
+	<check>$quad_rate%$audio_rate == 0</check>
+	<sink>
+		<name>in</name>
+		<type>float</type>
+	</sink>
+	<source>
+		<name>out</name>
+		<type>complex</type>
+	</source>
+</block>
diff --git a/gr-analog/grc/analog_wfm_rcv.xml b/gr-analog/grc/analog_wfm_rcv.xml
new file mode 100644
index 0000000000..ce2abb92de
--- /dev/null
+++ b/gr-analog/grc/analog_wfm_rcv.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+<!--
+###################################################
+##WBFM Receive
+###################################################
+ -->
+<block>
+	<name>WBFM Receive</name>
+	<key>analog_wfm_rcv</key>
+	<import>from gnuradio import analog</import>
+	<make>analog.wfm_rcv(
+	quad_rate=$quad_rate,
+	audio_decimation=$audio_decimation,
+)</make>
+	<param>
+		<name>Quadrature Rate</name>
+		<key>quad_rate</key>
+		<type>real</type>
+	</param>
+	<param>
+		<name>Audio Decimation</name>
+		<key>audio_decimation</key>
+		<type>int</type>
+	</param>
+	<sink>
+		<name>in</name>
+		<type>complex</type>
+	</sink>
+	<source>
+		<name>out</name>
+		<type>float</type>
+	</source>
+</block>
diff --git a/gr-analog/grc/analog_wfm_rcv_pll.xml b/gr-analog/grc/analog_wfm_rcv_pll.xml
new file mode 100644
index 0000000000..db31ed9bee
--- /dev/null
+++ b/gr-analog/grc/analog_wfm_rcv_pll.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0"?>
+<!--
+###################################################
+##WBFM Receive PLL
+###################################################
+ -->
+<block>
+	<name>WBFM Receive PLL</name>
+	<key>analog_wfm_rcv_pll</key>
+	<import>from gnuradio import analog</import>
+	<make>analog.wfm_rcv_pll(
+	demod_rate=$quad_rate,
+	audio_decimation=$audio_decimation,
+)</make>
+	<param>
+		<name>Quadrature Rate</name>
+		<key>quad_rate</key>
+		<type>real</type>
+	</param>
+	<param>
+		<name>Audio Decimation</name>
+		<key>audio_decimation</key>
+		<type>int</type>
+	</param>
+	<sink>
+		<name>in</name>
+		<type>complex</type>
+	</sink>
+	<source>
+		<name>Lout</name>
+		<type>float</type>
+	</source>
+	<source>
+		<name>Rout</name>
+		<type>float</type>
+	</source>
+</block>
diff --git a/gr-analog/grc/analog_wfm_tx.xml b/gr-analog/grc/analog_wfm_tx.xml
new file mode 100644
index 0000000000..0e00f05fb2
--- /dev/null
+++ b/gr-analog/grc/analog_wfm_tx.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<!--
+###################################################
+##WBFM Transmit
+###################################################
+ -->
+<block>
+	<name>WBFM Transmit</name>
+	<key>analog_wfm_tx</key>
+	<import>from gnuradio import analog</import>
+	<make>analog.wfm_tx(
+	audio_rate=$audio_rate,
+	quad_rate=$quad_rate,
+	tau=$tau,
+	max_dev=$max_dev,
+)</make>
+	<param>
+		<name>Audio Rate</name>
+		<key>audio_rate</key>
+		<type>int</type>
+	</param>
+	<param>
+		<name>Quadrature Rate</name>
+		<key>quad_rate</key>
+		<type>int</type>
+	</param>
+	<param>
+		<name>Tau</name>
+		<key>tau</key>
+		<value>75e-6</value>
+		<type>real</type>
+	</param>
+	<param>
+		<name>Max Deviation</name>
+		<key>max_dev</key>
+		<value>75e3</value>
+		<type>real</type>
+	</param>
+	<check>$quad_rate%$audio_rate == 0</check>
+	<sink>
+		<name>in</name>
+		<type>float</type>
+	</sink>
+	<source>
+		<name>out</name>
+		<type>complex</type>
+	</source>
+</block>
diff --git a/gr-fcd/examples/grc/fcd_apt_rx.grc b/gr-fcd/examples/grc/fcd_apt_rx.grc
index 41a806a102..3c88db7edd 100644
--- a/gr-fcd/examples/grc/fcd_apt_rx.grc
+++ b/gr-fcd/examples/grc/fcd_apt_rx.grc
@@ -1,6 +1,6 @@
 <?xml version='1.0' encoding='ASCII'?>
 <flow_graph>
-  <timestamp>Sun May  8 18:01:53 2011</timestamp>
+  <timestamp>Mon Mar 18 10:04:36 2013</timestamp>
   <block>
     <key>options</key>
     <param>
@@ -43,6 +43,10 @@
       <key>run</key>
       <value>True</value>
     </param>
+    <param>
+      <key>max_nouts</key>
+      <value>0</value>
+    </param>
     <param>
       <key>realtime_scheduling</key>
       <value></value>
@@ -57,57 +61,42 @@
     </param>
   </block>
   <block>
-    <key>variable</key>
+    <key>variable_static_text</key>
     <param>
       <key>id</key>
-      <value>samp_rate</value>
+      <value>rec_info</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>value</key>
-      <value>96000</value>
-    </param>
-    <param>
-      <key>_coordinate</key>
-      <value>(200, 9)</value>
+      <key>label</key>
+      <value>Recording to</value>
     </param>
     <param>
-      <key>_rotation</key>
-      <value>0</value>
+      <key>value</key>
+      <value>wav_file</value>
     </param>
-  </block>
-  <block>
-    <key>audio_sink</key>
     <param>
-      <key>id</key>
-      <value>audio_sink</value>
+      <key>converver</key>
+      <value>str_converter</value>
     </param>
     <param>
-      <key>_enabled</key>
-      <value>True</value>
+      <key>formatter</key>
+      <value>None</value>
     </param>
     <param>
-      <key>samp_rate</key>
-      <value>48000</value>
+      <key>grid_pos</key>
+      <value>1,1,1,1</value>
     </param>
     <param>
-      <key>device_name</key>
+      <key>notebook</key>
       <value></value>
     </param>
-    <param>
-      <key>ok_to_block</key>
-      <value>True</value>
-    </param>
-    <param>
-      <key>num_inputs</key>
-      <value>1</value>
-    </param>
     <param>
       <key>_coordinate</key>
-      <value>(794, 355)</value>
+      <value>(641, 14)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -115,46 +104,54 @@
     </param>
   </block>
   <block>
-    <key>blks2_fm_demod_cf</key>
+    <key>fcd_source_c</key>
     <param>
       <key>id</key>
-      <value>blks2_fm_demod_cf</value>
+      <value>fcd_source_c_0</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>chan_rate</key>
-      <value>samp_rate</value>
+      <key>device_name</key>
+      <value>hw:1</value>
     </param>
     <param>
-      <key>audio_decim</key>
-      <value>2</value>
+      <key>freq</key>
+      <value>sat_freq</value>
     </param>
     <param>
-      <key>deviation</key>
-      <value>max_dev</value>
+      <key>lna</key>
+      <value>fcd_lna_gain</value>
     </param>
     <param>
-      <key>audio_pass</key>
-      <value>5000</value>
+      <key>mixer</key>
+      <value>+12</value>
     </param>
     <param>
-      <key>audio_stop</key>
-      <value>7000</value>
+      <key>ppm</key>
+      <value>-120</value>
     </param>
     <param>
-      <key>gain</key>
-      <value>1.0</value>
+      <key>dci</key>
+      <value>0.0</value>
     </param>
     <param>
-      <key>tau</key>
-      <value>75e-6</value>
+      <key>dcq</key>
+      <value>0.0</value>
+    </param>
+    <param>
+      <key>iq_phase</key>
+      <value>0.0</value>
+    </param>
+    <param>
+      <key>iq_gain</key>
+      <value>1.0</value>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(568, 307)</value>
+      <value>(68, 215)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -162,38 +159,50 @@
     </param>
   </block>
   <block>
-    <key>blks2_rational_resampler_xxx</key>
+    <key>variable_chooser</key>
     <param>
       <key>id</key>
-      <value>blks2_rational_resampler_xxx_0</value>
+      <value>fcd_lna_gain</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>type</key>
-      <value>fff</value>
+      <key>label</key>
+      <value>LNA gain [dB]</value>
     </param>
     <param>
-      <key>decim</key>
-      <value>48000</value>
+      <key>value</key>
+      <value>20.0</value>
     </param>
     <param>
-      <key>interp</key>
-      <value>11025</value>
+      <key>choices</key>
+      <value>[30.0, 25.0, 20.0, 17.5, 15.0, 12.5, 10.0, 7.5, 5.0, 2.5, 0.0, -2.5, -5.0]</value>
     </param>
     <param>
-      <key>taps</key>
+      <key>labels</key>
       <value>[]</value>
     </param>
     <param>
-      <key>fractional_bw</key>
-      <value>0</value>
+      <key>type</key>
+      <value>drop_down</value>
+    </param>
+    <param>
+      <key>style</key>
+      <value>wx.RA_HORIZONTAL</value>
+    </param>
+    <param>
+      <key>grid_pos</key>
+      <value>2,0,1,1</value>
+    </param>
+    <param>
+      <key>notebook</key>
+      <value></value>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(516, 522)</value>
+      <value>(247, 405)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -201,45 +210,50 @@
     </param>
   </block>
   <block>
-    <key>variable</key>
+    <key>variable_chooser</key>
     <param>
       <key>id</key>
-      <value>wav_file</value>
+      <value>sat_freq</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
+    <param>
+      <key>label</key>
+      <value>Satellite</value>
+    </param>
     <param>
       <key>value</key>
-      <value>prefix + datetime.now().strftime("%Y.%m.%d.%H.%M.%S") + ".wav"</value>
+      <value>137500000</value>
     </param>
     <param>
-      <key>_coordinate</key>
-      <value>(762, 652)</value>
+      <key>choices</key>
+      <value>[137500000,137620000,137912500,137100000]</value>
     </param>
     <param>
-      <key>_rotation</key>
-      <value>0</value>
+      <key>labels</key>
+      <value>["NOAA-15","NOAA-17","NOAA-18","NOAA-19"]</value>
     </param>
-  </block>
-  <block>
-    <key>variable</key>
     <param>
-      <key>id</key>
-      <value>prefix</value>
+      <key>type</key>
+      <value>drop_down</value>
     </param>
     <param>
-      <key>_enabled</key>
-      <value>True</value>
+      <key>style</key>
+      <value>wx.RA_HORIZONTAL</value>
     </param>
     <param>
-      <key>value</key>
-      <value>"FCD_APT_REC-"</value>
+      <key>grid_pos</key>
+      <value>1,0,1,1</value>
+    </param>
+    <param>
+      <key>notebook</key>
+      <value></value>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(625, 653)</value>
+      <value>(58, 403)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -247,108 +261,113 @@
     </param>
   </block>
   <block>
-    <key>import</key>
+    <key>wxgui_fftsink2</key>
     <param>
       <key>id</key>
-      <value>import_0</value>
+      <value>fftsink</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>import</key>
-      <value>from datetime import datetime</value>
+      <key>type</key>
+      <value>complex</value>
     </param>
     <param>
-      <key>_coordinate</key>
-      <value>(508, 653)</value>
+      <key>title</key>
+      <value>FCD Spectrum</value>
     </param>
     <param>
-      <key>_rotation</key>
-      <value>0</value>
+      <key>samp_rate</key>
+      <value>samp_rate</value>
     </param>
-  </block>
-  <block>
-    <key>blocks_wavfile_sink</key>
     <param>
-      <key>id</key>
-      <value>wavfile_sink</value>
+      <key>baseband_freq</key>
+      <value>sat_freq</value>
     </param>
     <param>
-      <key>_enabled</key>
-      <value>True</value>
+      <key>y_per_div</key>
+      <value>10</value>
     </param>
     <param>
-      <key>file</key>
-      <value>wav_file</value>
+      <key>y_divs</key>
+      <value>10</value>
     </param>
     <param>
-      <key>nchan</key>
-      <value>1</value>
+      <key>ref_level</key>
+      <value>0.0</value>
     </param>
     <param>
-      <key>samp_rate</key>
-      <value>11025</value>
+      <key>ref_scale</key>
+      <value>1.0</value>
     </param>
     <param>
-      <key>bits_per_sample</key>
-      <value>16</value>
+      <key>fft_size</key>
+      <value>512</value>
     </param>
     <param>
-      <key>_coordinate</key>
-      <value>(805, 530)</value>
+      <key>fft_rate</key>
+      <value>15</value>
     </param>
     <param>
-      <key>_rotation</key>
+      <key>peak_hold</key>
+      <value>False</value>
+    </param>
+    <param>
+      <key>average</key>
+      <value>False</value>
+    </param>
+    <param>
+      <key>avg_alpha</key>
       <value>0</value>
     </param>
-  </block>
-  <block>
-    <key>variable_chooser</key>
     <param>
-      <key>id</key>
-      <value>sat_freq</value>
+      <key>win</key>
+      <value>None</value>
     </param>
     <param>
-      <key>_enabled</key>
-      <value>True</value>
+      <key>win_size</key>
+      <value></value>
     </param>
     <param>
-      <key>label</key>
-      <value>Satellite</value>
+      <key>grid_pos</key>
+      <value>0,0,1,2</value>
     </param>
     <param>
-      <key>value</key>
-      <value>137500000</value>
+      <key>notebook</key>
+      <value></value>
     </param>
     <param>
-      <key>choices</key>
-      <value>[137500000,137620000,137912500,137100000]</value>
+      <key>freqvar</key>
+      <value>None</value>
     </param>
     <param>
-      <key>labels</key>
-      <value>["NOAA-15","NOAA-17","NOAA-18","NOAA-19"]</value>
+      <key>_coordinate</key>
+      <value>(375, 11)</value>
     </param>
     <param>
-      <key>type</key>
-      <value>drop_down</value>
+      <key>_rotation</key>
+      <value>0</value>
     </param>
+  </block>
+  <block>
+    <key>variable</key>
     <param>
-      <key>style</key>
-      <value>wx.RA_HORIZONTAL</value>
+      <key>id</key>
+      <value>samp_rate</value>
     </param>
     <param>
-      <key>grid_pos</key>
-      <value>1,0,1,1</value>
+      <key>_enabled</key>
+      <value>True</value>
     </param>
     <param>
-      <key>notebook</key>
-      <value></value>
+      <key>value</key>
+      <value>96000</value>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(18, 479)</value>
+      <value>(190, 11)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -371,7 +390,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(299, 10)</value>
+      <value>(282, 11)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -379,50 +398,57 @@
     </param>
   </block>
   <block>
-    <key>variable_chooser</key>
+    <key>blocks_wavfile_sink</key>
     <param>
       <key>id</key>
-      <value>fcd_lna_gain</value>
+      <value>wavfile_sink</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>label</key>
-      <value>LNA gain [dB]</value>
+      <key>file</key>
+      <value>wav_file</value>
     </param>
     <param>
-      <key>value</key>
-      <value>20.0</value>
+      <key>nchan</key>
+      <value>1</value>
     </param>
     <param>
-      <key>choices</key>
-      <value>[30.0, 25.0, 20.0, 17.5, 15.0, 12.5, 10.0, 7.5, 5.0, 2.5, 0.0, -2.5, -5.0]</value>
+      <key>samp_rate</key>
+      <value>11025</value>
     </param>
     <param>
-      <key>labels</key>
-      <value>[]</value>
+      <key>bits_per_sample</key>
+      <value>16</value>
     </param>
     <param>
-      <key>type</key>
-      <value>drop_down</value>
+      <key>_coordinate</key>
+      <value>(845, 431)</value>
     </param>
     <param>
-      <key>style</key>
-      <value>wx.RA_HORIZONTAL</value>
+      <key>_rotation</key>
+      <value>0</value>
     </param>
+  </block>
+  <block>
+    <key>import</key>
     <param>
-      <key>grid_pos</key>
-      <value>2,0,1,1</value>
+      <key>id</key>
+      <value>import_0</value>
     </param>
     <param>
-      <key>notebook</key>
-      <value></value>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>import</key>
+      <value>from datetime import datetime</value>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(207, 481)</value>
+      <value>(552, 523)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -430,42 +456,45 @@
     </param>
   </block>
   <block>
-    <key>variable_static_text</key>
+    <key>variable</key>
     <param>
       <key>id</key>
-      <value>rec_info</value>
+      <value>prefix</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>label</key>
-      <value>Recording to</value>
+      <key>value</key>
+      <value>"FCD_APT_REC-"</value>
     </param>
     <param>
-      <key>value</key>
-      <value>wav_file</value>
+      <key>_coordinate</key>
+      <value>(669, 523)</value>
     </param>
     <param>
-      <key>converver</key>
-      <value>str_converter</value>
+      <key>_rotation</key>
+      <value>0</value>
     </param>
+  </block>
+  <block>
+    <key>variable</key>
     <param>
-      <key>formatter</key>
-      <value>None</value>
+      <key>id</key>
+      <value>wav_file</value>
     </param>
     <param>
-      <key>grid_pos</key>
-      <value>1,1,1,1</value>
+      <key>_enabled</key>
+      <value>True</value>
     </param>
     <param>
-      <key>notebook</key>
-      <value></value>
+      <key>value</key>
+      <value>prefix + datetime.now().strftime("%Y.%m.%d.%H.%M.%S") + ".wav"</value>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(641, 14)</value>
+      <value>(806, 522)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -520,7 +549,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(334, 307)</value>
+      <value>(374, 231)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -528,50 +557,34 @@
     </param>
   </block>
   <block>
-    <key>fcd_source_c</key>
+    <key>audio_sink</key>
     <param>
       <key>id</key>
-      <value>fcd_source_c_0</value>
+      <value>audio_sink</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>device_name</key>
-      <value>hw:1</value>
-    </param>
-    <param>
-      <key>freq</key>
-      <value>sat_freq</value>
-    </param>
-    <param>
-      <key>lna</key>
-      <value>fcd_lna_gain</value>
-    </param>
-    <param>
-      <key>ppm</key>
-      <value>-120</value>
-    </param>
-    <param>
-      <key>dci</key>
-      <value>0.0</value>
+      <key>samp_rate</key>
+      <value>48000</value>
     </param>
     <param>
-      <key>dcq</key>
-      <value>0.0</value>
+      <key>device_name</key>
+      <value></value>
     </param>
     <param>
-      <key>iq_phase</key>
-      <value>0.0</value>
+      <key>ok_to_block</key>
+      <value>True</value>
     </param>
     <param>
-      <key>iq_gain</key>
-      <value>1.0</value>
+      <key>num_inputs</key>
+      <value>1</value>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(25, 299)</value>
+      <value>(834, 279)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -579,10 +592,10 @@
     </param>
   </block>
   <block>
-    <key>wxgui_fftsink2</key>
+    <key>rational_resampler_xxx</key>
     <param>
       <key>id</key>
-      <value>fftsink</value>
+      <value>rational_resampler_xxx_0</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -590,75 +603,74 @@
     </param>
     <param>
       <key>type</key>
-      <value>complex</value>
-    </param>
-    <param>
-      <key>title</key>
-      <value>FCD Spectrum</value>
+      <value>fff</value>
     </param>
     <param>
-      <key>samp_rate</key>
-      <value>samp_rate</value>
+      <key>interp</key>
+      <value>11025</value>
     </param>
     <param>
-      <key>baseband_freq</key>
-      <value>sat_freq</value>
+      <key>decim</key>
+      <value>48000</value>
     </param>
     <param>
-      <key>y_per_div</key>
-      <value>10</value>
+      <key>taps</key>
+      <value>[]</value>
     </param>
     <param>
-      <key>y_divs</key>
-      <value>10</value>
+      <key>fbw</key>
+      <value>0</value>
     </param>
     <param>
-      <key>ref_level</key>
-      <value>0.0</value>
+      <key>_coordinate</key>
+      <value>(591, 423)</value>
     </param>
     <param>
-      <key>ref_scale</key>
-      <value>1.0</value>
+      <key>_rotation</key>
+      <value>0</value>
     </param>
+  </block>
+  <block>
+    <key>analog_fm_demod_cf</key>
     <param>
-      <key>fft_size</key>
-      <value>512</value>
+      <key>id</key>
+      <value>analog_fm_demod_cf_0</value>
     </param>
     <param>
-      <key>fft_rate</key>
-      <value>15</value>
+      <key>_enabled</key>
+      <value>True</value>
     </param>
     <param>
-      <key>peak_hold</key>
-      <value>False</value>
+      <key>chan_rate</key>
+      <value>samp_rate</value>
     </param>
     <param>
-      <key>average</key>
-      <value>False</value>
+      <key>audio_decim</key>
+      <value>2</value>
     </param>
     <param>
-      <key>avg_alpha</key>
-      <value>0</value>
+      <key>deviation</key>
+      <value>max_dev</value>
     </param>
     <param>
-      <key>win</key>
-      <value>None</value>
+      <key>audio_pass</key>
+      <value>5000</value>
     </param>
     <param>
-      <key>win_size</key>
-      <value></value>
+      <key>audio_stop</key>
+      <value>7000</value>
     </param>
     <param>
-      <key>grid_pos</key>
-      <value>0,0,1,2</value>
+      <key>gain</key>
+      <value>1.0</value>
     </param>
     <param>
-      <key>notebook</key>
-      <value></value>
+      <key>tau</key>
+      <value>75e-6</value>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(335, 103)</value>
+      <value>(605, 231)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -666,38 +678,38 @@
     </param>
   </block>
   <connection>
-    <source_block_id>low_pass_filter</source_block_id>
-    <sink_block_id>blks2_fm_demod_cf</sink_block_id>
+    <source_block_id>rational_resampler_xxx_0</source_block_id>
+    <sink_block_id>wavfile_sink</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
   <connection>
-    <source_block_id>blks2_fm_demod_cf</source_block_id>
-    <sink_block_id>audio_sink</sink_block_id>
+    <source_block_id>fcd_source_c_0</source_block_id>
+    <sink_block_id>fftsink</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
   <connection>
-    <source_block_id>blks2_rational_resampler_xxx_0</source_block_id>
-    <sink_block_id>wavfile_sink</sink_block_id>
+    <source_block_id>fcd_source_c_0</source_block_id>
+    <sink_block_id>low_pass_filter</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
   <connection>
-    <source_block_id>blks2_fm_demod_cf</source_block_id>
-    <sink_block_id>blks2_rational_resampler_xxx_0</sink_block_id>
+    <source_block_id>low_pass_filter</source_block_id>
+    <sink_block_id>analog_fm_demod_cf_0</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
   <connection>
-    <source_block_id>fcd_source_c_0</source_block_id>
-    <sink_block_id>low_pass_filter</sink_block_id>
+    <source_block_id>analog_fm_demod_cf_0</source_block_id>
+    <sink_block_id>audio_sink</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
   <connection>
-    <source_block_id>fcd_source_c_0</source_block_id>
-    <sink_block_id>fftsink</sink_block_id>
+    <source_block_id>analog_fm_demod_cf_0</source_block_id>
+    <sink_block_id>rational_resampler_xxx_0</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
diff --git a/gr-fcd/examples/grc/fcd_nfm_rx.grc b/gr-fcd/examples/grc/fcd_nfm_rx.grc
index 96d6f55e2e..afe343a834 100644
--- a/gr-fcd/examples/grc/fcd_nfm_rx.grc
+++ b/gr-fcd/examples/grc/fcd_nfm_rx.grc
@@ -1,6 +1,6 @@
 <?xml version='1.0' encoding='ASCII'?>
 <flow_graph>
-  <timestamp>Tue Nov  6 12:24:50 2012</timestamp>
+  <timestamp>Mon Mar 18 10:11:39 2013</timestamp>
   <block>
     <key>options</key>
     <param>
@@ -378,37 +378,6 @@
       <value>0</value>
     </param>
   </block>
-  <block>
-    <key>blocks_multiply_const_vxx</key>
-    <param>
-      <key>id</key>
-      <value>blocks_multiply_const_vxx_1</value>
-    </param>
-    <param>
-      <key>_enabled</key>
-      <value>True</value>
-    </param>
-    <param>
-      <key>type</key>
-      <value>float</value>
-    </param>
-    <param>
-      <key>const</key>
-      <value>af_gain</value>
-    </param>
-    <param>
-      <key>vlen</key>
-      <value>1</value>
-    </param>
-    <param>
-      <key>_coordinate</key>
-      <value>(674, 507)</value>
-    </param>
-    <param>
-      <key>_rotation</key>
-      <value>0</value>
-    </param>
-  </block>
   <block>
     <key>audio_sink</key>
     <param>
@@ -879,41 +848,6 @@
       <value>0</value>
     </param>
   </block>
-  <block>
-    <key>blks2_nbfm_rx</key>
-    <param>
-      <key>id</key>
-      <value>nbfm_normal</value>
-    </param>
-    <param>
-      <key>_enabled</key>
-      <value>True</value>
-    </param>
-    <param>
-      <key>audio_rate</key>
-      <value>48000</value>
-    </param>
-    <param>
-      <key>quad_rate</key>
-      <value>96000</value>
-    </param>
-    <param>
-      <key>tau</key>
-      <value>75e-6</value>
-    </param>
-    <param>
-      <key>max_dev</key>
-      <value>5e3</value>
-    </param>
-    <param>
-      <key>_coordinate</key>
-      <value>(441, 483)</value>
-    </param>
-    <param>
-      <key>_rotation</key>
-      <value>0</value>
-    </param>
-  </block>
   <block>
     <key>low_pass_filter</key>
     <param>
@@ -962,7 +896,7 @@
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(742, 258)</value>
+      <value>(742, 266)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -996,6 +930,72 @@
       <value>0</value>
     </param>
   </block>
+  <block>
+    <key>blocks_multiply_const_vxx</key>
+    <param>
+      <key>id</key>
+      <value>blocks_multiply_const_vxx_1</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>float</value>
+    </param>
+    <param>
+      <key>const</key>
+      <value>af_gain</value>
+    </param>
+    <param>
+      <key>vlen</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(674, 507)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>analog_nbfm_rx</key>
+    <param>
+      <key>id</key>
+      <value>analog_nbfm_rx_0</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>audio_rate</key>
+      <value>48000</value>
+    </param>
+    <param>
+      <key>quad_rate</key>
+      <value>96000</value>
+    </param>
+    <param>
+      <key>tau</key>
+      <value>75e-6</value>
+    </param>
+    <param>
+      <key>max_dev</key>
+      <value>5e3</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(440, 483)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
   <connection>
     <source_block_id>blocks_multiply_const_vxx_1</source_block_id>
     <sink_block_id>audio_sink</sink_block_id>
@@ -1008,12 +1008,6 @@
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
-  <connection>
-    <source_block_id>nbfm_normal</source_block_id>
-    <sink_block_id>blocks_multiply_const_vxx_1</sink_block_id>
-    <source_key>0</source_key>
-    <sink_key>0</sink_key>
-  </connection>
   <connection>
     <source_block_id>fcd_source_c_1</source_block_id>
     <sink_block_id>freq_xlating_fir_filter_xxx_0</sink_block_id>
@@ -1032,15 +1026,21 @@
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
+  <connection>
+    <source_block_id>low_pass_filter</source_block_id>
+    <sink_block_id>analog_simple_squelch_cc_0</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
   <connection>
     <source_block_id>analog_simple_squelch_cc_0</source_block_id>
-    <sink_block_id>nbfm_normal</sink_block_id>
+    <sink_block_id>analog_nbfm_rx_0</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
   <connection>
-    <source_block_id>low_pass_filter</source_block_id>
-    <sink_block_id>analog_simple_squelch_cc_0</sink_block_id>
+    <source_block_id>analog_nbfm_rx_0</source_block_id>
+    <sink_block_id>blocks_multiply_const_vxx_1</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
diff --git a/gr-filter/grc/CMakeLists.txt b/gr-filter/grc/CMakeLists.txt
index 1ca23d560e..3a2af83da9 100644
--- a/gr-filter/grc/CMakeLists.txt
+++ b/gr-filter/grc/CMakeLists.txt
@@ -33,6 +33,7 @@ install(FILES
     filter_pfb_decimator.xml
     filter_pfb_interpolator.xml
     filter_pfb_synthesizer.xml
+    filter_rational_resampler_xxx.xml
     filter_rational_resampler_base_xxx.xml
     filter_single_pole_iir_filter_xx.xml
     filter_low_pass_filter.xml
diff --git a/gr-filter/grc/filter_block_tree.xml b/gr-filter/grc/filter_block_tree.xml
index 9b72dcf605..a9dfd56549 100644
--- a/gr-filter/grc/filter_block_tree.xml
+++ b/gr-filter/grc/filter_block_tree.xml
@@ -51,6 +51,7 @@
 		<block>pfb_decimator_ccf</block>
 		<block>pfb_interpolator_ccf</block>
 		<block>pfb_synthesizer_ccf</block>
+		<block>rational_resampler_xxx</block>
 		<block>rational_resampler_base_xxx</block>
 		<block>single_pole_iir_filter_xx</block>
 	</cat>
diff --git a/gr-uhd/examples/grc/uhd_const_wave.grc b/gr-uhd/examples/grc/uhd_const_wave.grc
index c64721c833..46596109de 100644
--- a/gr-uhd/examples/grc/uhd_const_wave.grc
+++ b/gr-uhd/examples/grc/uhd_const_wave.grc
@@ -1,27 +1,59 @@
 <?xml version='1.0' encoding='ASCII'?>
 <flow_graph>
-  <timestamp>Sat Oct  8 10:24:27 2011</timestamp>
+  <timestamp>Mon Mar 18 11:04:05 2013</timestamp>
   <block>
-    <key>const_source_x</key>
+    <key>options</key>
     <param>
       <key>id</key>
-      <value>const_source_x_0</value>
+      <value>uhd_const_wave</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>type</key>
-      <value>complex</value>
+      <key>title</key>
+      <value>UHD Constant Wave</value>
     </param>
     <param>
-      <key>const</key>
-      <value>ampl</value>
+      <key>author</key>
+      <value>Example</value>
+    </param>
+    <param>
+      <key>description</key>
+      <value>Tune UHD Device</value>
+    </param>
+    <param>
+      <key>window_size</key>
+      <value>1280, 1024</value>
+    </param>
+    <param>
+      <key>generate_options</key>
+      <value>wx_gui</value>
+    </param>
+    <param>
+      <key>category</key>
+      <value>Custom</value>
+    </param>
+    <param>
+      <key>run_options</key>
+      <value>prompt</value>
+    </param>
+    <param>
+      <key>run</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>max_nouts</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>realtime_scheduling</key>
+      <value></value>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(102, 193)</value>
+      <value>(10, 10)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -194,54 +226,69 @@
     </param>
   </block>
   <block>
-    <key>options</key>
+    <key>parameter</key>
     <param>
       <key>id</key>
-      <value>uhd_const_wave</value>
+      <value>address</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>title</key>
-      <value>UHD Constant Wave</value>
+      <key>label</key>
+      <value>IP Address</value>
     </param>
     <param>
-      <key>author</key>
-      <value>Example</value>
+      <key>value</key>
+      <value>addr=192.168.11.2</value>
     </param>
     <param>
-      <key>description</key>
-      <value>Tune UHD Device</value>
+      <key>type</key>
+      <value>string</value>
     </param>
     <param>
-      <key>window_size</key>
-      <value>1280, 1024</value>
+      <key>short_id</key>
+      <value>a</value>
     </param>
     <param>
-      <key>generate_options</key>
-      <value>wx_gui</value>
+      <key>_coordinate</key>
+      <value>(188, 12)</value>
     </param>
     <param>
-      <key>category</key>
-      <value>Custom</value>
+      <key>_rotation</key>
+      <value>0</value>
     </param>
+  </block>
+  <block>
+    <key>parameter</key>
     <param>
-      <key>run_options</key>
-      <value>prompt</value>
+      <key>id</key>
+      <value>samp_rate</value>
     </param>
     <param>
-      <key>run</key>
+      <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>realtime_scheduling</key>
-      <value></value>
+      <key>label</key>
+      <value>Sample Rate</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>1e6</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>eng_float</value>
+    </param>
+    <param>
+      <key>short_id</key>
+      <value>s</value>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(10, 10)</value>
+      <value>(342, 14)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -252,7 +299,7 @@
     <key>parameter</key>
     <param>
       <key>id</key>
-      <value>address</value>
+      <value>freq</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -260,23 +307,23 @@
     </param>
     <param>
       <key>label</key>
-      <value>IP Address</value>
+      <value>Default Frequency</value>
     </param>
     <param>
       <key>value</key>
-      <value>addr=192.168.11.2</value>
+      <value>2.45e9</value>
     </param>
     <param>
       <key>type</key>
-      <value>string</value>
+      <value>eng_float</value>
     </param>
     <param>
       <key>short_id</key>
-      <value>a</value>
+      <value>f</value>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(188, 12)</value>
+      <value>(468, 14)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -287,7 +334,7 @@
     <key>parameter</key>
     <param>
       <key>id</key>
-      <value>samp_rate</value>
+      <value>gain</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -295,11 +342,11 @@
     </param>
     <param>
       <key>label</key>
-      <value>Sample Rate</value>
+      <value>Default Gain</value>
     </param>
     <param>
       <key>value</key>
-      <value>1e6</value>
+      <value>0</value>
     </param>
     <param>
       <key>type</key>
@@ -307,11 +354,11 @@
     </param>
     <param>
       <key>short_id</key>
-      <value>s</value>
+      <value>g</value>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(342, 14)</value>
+      <value>(616, 13)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -330,7 +377,15 @@
     </param>
     <param>
       <key>type</key>
-      <value>complex</value>
+      <value>fc32</value>
+    </param>
+    <param>
+      <key>otw</key>
+      <value></value>
+    </param>
+    <param>
+      <key>stream_args</key>
+      <value></value>
     </param>
     <param>
       <key>dev_addr</key>
@@ -349,7 +404,11 @@
       <value>1</value>
     </param>
     <param>
-      <key>ref_source0</key>
+      <key>clock_source0</key>
+      <value></value>
+    </param>
+    <param>
+      <key>time_source0</key>
       <value></value>
     </param>
     <param>
@@ -357,7 +416,11 @@
       <value></value>
     </param>
     <param>
-      <key>ref_source1</key>
+      <key>clock_source1</key>
+      <value></value>
+    </param>
+    <param>
+      <key>time_source1</key>
       <value></value>
     </param>
     <param>
@@ -365,7 +428,11 @@
       <value></value>
     </param>
     <param>
-      <key>ref_source2</key>
+      <key>clock_source2</key>
+      <value></value>
+    </param>
+    <param>
+      <key>time_source2</key>
       <value></value>
     </param>
     <param>
@@ -373,7 +440,11 @@
       <value></value>
     </param>
     <param>
-      <key>ref_source3</key>
+      <key>clock_source3</key>
+      <value></value>
+    </param>
+    <param>
+      <key>time_source3</key>
       <value></value>
     </param>
     <param>
@@ -381,7 +452,11 @@
       <value></value>
     </param>
     <param>
-      <key>ref_source4</key>
+      <key>clock_source4</key>
+      <value></value>
+    </param>
+    <param>
+      <key>time_source4</key>
       <value></value>
     </param>
     <param>
@@ -389,7 +464,11 @@
       <value></value>
     </param>
     <param>
-      <key>ref_source5</key>
+      <key>clock_source5</key>
+      <value></value>
+    </param>
+    <param>
+      <key>time_source5</key>
       <value></value>
     </param>
     <param>
@@ -397,7 +476,11 @@
       <value></value>
     </param>
     <param>
-      <key>ref_source6</key>
+      <key>clock_source6</key>
+      <value></value>
+    </param>
+    <param>
+      <key>time_source6</key>
       <value></value>
     </param>
     <param>
@@ -405,7 +488,11 @@
       <value></value>
     </param>
     <param>
-      <key>ref_source7</key>
+      <key>clock_source7</key>
+      <value></value>
+    </param>
+    <param>
+      <key>time_source7</key>
       <value></value>
     </param>
     <param>
@@ -942,69 +1029,26 @@
     </param>
   </block>
   <block>
-    <key>parameter</key>
+    <key>analog_const_source_x</key>
     <param>
       <key>id</key>
-      <value>freq</value>
+      <value>analog_const_source_x_0</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
-    <param>
-      <key>label</key>
-      <value>Default Frequency</value>
-    </param>
-    <param>
-      <key>value</key>
-      <value>2.45e9</value>
-    </param>
-    <param>
-      <key>type</key>
-      <value>eng_float</value>
-    </param>
-    <param>
-      <key>short_id</key>
-      <value>f</value>
-    </param>
-    <param>
-      <key>_coordinate</key>
-      <value>(468, 14)</value>
-    </param>
-    <param>
-      <key>_rotation</key>
-      <value>0</value>
-    </param>
-  </block>
-  <block>
-    <key>parameter</key>
-    <param>
-      <key>id</key>
-      <value>gain</value>
-    </param>
-    <param>
-      <key>_enabled</key>
-      <value>True</value>
-    </param>
-    <param>
-      <key>label</key>
-      <value>Default Gain</value>
-    </param>
-    <param>
-      <key>value</key>
-      <value>0</value>
-    </param>
     <param>
       <key>type</key>
-      <value>eng_float</value>
+      <value>complex</value>
     </param>
     <param>
-      <key>short_id</key>
-      <value>g</value>
+      <key>const</key>
+      <value>ampl</value>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(616, 13)</value>
+      <value>(74, 193)</value>
     </param>
     <param>
       <key>_rotation</key>
@@ -1012,7 +1056,7 @@
     </param>
   </block>
   <connection>
-    <source_block_id>const_source_x_0</source_block_id>
+    <source_block_id>analog_const_source_x_0</source_block_id>
     <sink_block_id>uhd_usrp_sink_0</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
diff --git a/gr-uhd/examples/grc/uhd_fft.grc b/gr-uhd/examples/grc/uhd_fft.grc
index 2582b5e3b1..1db98ab8aa 100644
--- a/gr-uhd/examples/grc/uhd_fft.grc
+++ b/gr-uhd/examples/grc/uhd_fft.grc
@@ -1,6 +1,6 @@
 <?xml version='1.0' encoding='ASCII'?>
 <flow_graph>
-  <timestamp>Mon Jun 18 14:20:11 2012</timestamp>
+  <timestamp>Mon Mar 18 11:09:57 2013</timestamp>
   <block>
     <key>options</key>
     <param>
@@ -1145,41 +1145,6 @@
       <value>0</value>
     </param>
   </block>
-  <block>
-    <key>parameter</key>
-    <param>
-      <key>id</key>
-      <value>address</value>
-    </param>
-    <param>
-      <key>_enabled</key>
-      <value>True</value>
-    </param>
-    <param>
-      <key>label</key>
-      <value>IP Address</value>
-    </param>
-    <param>
-      <key>value</key>
-      <value></value>
-    </param>
-    <param>
-      <key>type</key>
-      <value>string</value>
-    </param>
-    <param>
-      <key>short_id</key>
-      <value>a</value>
-    </param>
-    <param>
-      <key>_coordinate</key>
-      <value>(190, 15)</value>
-    </param>
-    <param>
-      <key>_rotation</key>
-      <value>0</value>
-    </param>
-  </block>
   <block>
     <key>wxgui_fftsink2</key>
     <param>
@@ -1507,6 +1472,41 @@
       <value>0</value>
     </param>
   </block>
+  <block>
+    <key>parameter</key>
+    <param>
+      <key>id</key>
+      <value>address</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>label</key>
+      <value>IP Address</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value></value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>string</value>
+    </param>
+    <param>
+      <key>short_id</key>
+      <value>a</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(190, 15)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
   <connection>
     <source_block_id>uhd_usrp_source_0</source_block_id>
     <sink_block_id>wxgui_scopesink2_0</sink_block_id>
diff --git a/gr-uhd/examples/grc/uhd_rx_dpsk.grc b/gr-uhd/examples/grc/uhd_rx_dpsk.grc
index b40c541629..8a9faa4b73 100644
--- a/gr-uhd/examples/grc/uhd_rx_dpsk.grc
+++ b/gr-uhd/examples/grc/uhd_rx_dpsk.grc
@@ -1,6 +1,6 @@
 <?xml version='1.0' encoding='ASCII'?>
 <flow_graph>
-  <timestamp>Sat Oct  8 15:08:55 2011</timestamp>
+  <timestamp>Mon Mar 18 11:10:25 2013</timestamp>
   <block>
     <key>options</key>
     <param>
@@ -43,6 +43,10 @@
       <key>run</key>
       <value>True</value>
     </param>
+    <param>
+      <key>max_nouts</key>
+      <value>0</value>
+    </param>
     <param>
       <key>realtime_scheduling</key>
       <value></value>
@@ -603,6 +607,10 @@
       <key>notebook</key>
       <value></value>
     </param>
+    <param>
+      <key>freqvar</key>
+      <value>None</value>
+    </param>
     <param>
       <key>_coordinate</key>
       <value>(710, 236)</value>
@@ -635,20 +643,20 @@
       <value>0.35</value>
     </param>
     <param>
-      <key>phase_bw</key>
+      <key>freq_bw</key>
       <value>6.28/100.0</value>
     </param>
     <param>
-      <key>timing_bw</key>
+      <key>phase_bw</key>
       <value>6.28/100.0</value>
     </param>
     <param>
-      <key>omega_relative_limit</key>
-      <value>0.005</value>
+      <key>timing_bw</key>
+      <value>6.28/100.0</value>
     </param>
     <param>
-      <key>gray_coded</key>
-      <value>True</value>
+      <key>mod_code</key>
+      <value>"gray"</value>
     </param>
     <param>
       <key>verbose</key>
@@ -793,7 +801,15 @@
     </param>
     <param>
       <key>type</key>
-      <value>complex</value>
+      <value>fc32</value>
+    </param>
+    <param>
+      <key>otw</key>
+      <value></value>
+    </param>
+    <param>
+      <key>stream_args</key>
+      <value></value>
     </param>
     <param>
       <key>dev_addr</key>
@@ -812,7 +828,11 @@
       <value>1</value>
     </param>
     <param>
-      <key>ref_source0</key>
+      <key>clock_source0</key>
+      <value></value>
+    </param>
+    <param>
+      <key>time_source0</key>
       <value></value>
     </param>
     <param>
@@ -820,7 +840,11 @@
       <value></value>
     </param>
     <param>
-      <key>ref_source1</key>
+      <key>clock_source1</key>
+      <value></value>
+    </param>
+    <param>
+      <key>time_source1</key>
       <value></value>
     </param>
     <param>
@@ -828,7 +852,11 @@
       <value></value>
     </param>
     <param>
-      <key>ref_source2</key>
+      <key>clock_source2</key>
+      <value></value>
+    </param>
+    <param>
+      <key>time_source2</key>
       <value></value>
     </param>
     <param>
@@ -836,7 +864,11 @@
       <value></value>
     </param>
     <param>
-      <key>ref_source3</key>
+      <key>clock_source3</key>
+      <value></value>
+    </param>
+    <param>
+      <key>time_source3</key>
       <value></value>
     </param>
     <param>
@@ -844,7 +876,11 @@
       <value></value>
     </param>
     <param>
-      <key>ref_source4</key>
+      <key>clock_source4</key>
+      <value></value>
+    </param>
+    <param>
+      <key>time_source4</key>
       <value></value>
     </param>
     <param>
@@ -852,7 +888,11 @@
       <value></value>
     </param>
     <param>
-      <key>ref_source5</key>
+      <key>clock_source5</key>
+      <value></value>
+    </param>
+    <param>
+      <key>time_source5</key>
       <value></value>
     </param>
     <param>
@@ -860,7 +900,11 @@
       <value></value>
     </param>
     <param>
-      <key>ref_source6</key>
+      <key>clock_source6</key>
+      <value></value>
+    </param>
+    <param>
+      <key>time_source6</key>
       <value></value>
     </param>
     <param>
@@ -868,7 +912,11 @@
       <value></value>
     </param>
     <param>
-      <key>ref_source7</key>
+      <key>clock_source7</key>
+      <value></value>
+    </param>
+    <param>
+      <key>time_source7</key>
       <value></value>
     </param>
     <param>
diff --git a/gr-uhd/examples/grc/uhd_tx_dpsk.grc b/gr-uhd/examples/grc/uhd_tx_dpsk.grc
index 38318bef4b..b5f8e41054 100644
--- a/gr-uhd/examples/grc/uhd_tx_dpsk.grc
+++ b/gr-uhd/examples/grc/uhd_tx_dpsk.grc
@@ -1,6 +1,65 @@
 <?xml version='1.0' encoding='ASCII'?>
 <flow_graph>
-  <timestamp>Sat Oct  8 14:55:39 2011</timestamp>
+  <timestamp>Mon Mar 18 11:11:06 2013</timestamp>
+  <block>
+    <key>options</key>
+    <param>
+      <key>id</key>
+      <value>uhd_tx_dpsk</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>title</key>
+      <value>UHD TX DPSK</value>
+    </param>
+    <param>
+      <key>author</key>
+      <value></value>
+    </param>
+    <param>
+      <key>description</key>
+      <value></value>
+    </param>
+    <param>
+      <key>window_size</key>
+      <value>1280, 1024</value>
+    </param>
+    <param>
+      <key>generate_options</key>
+      <value>wx_gui</value>
+    </param>
+    <param>
+      <key>category</key>
+      <value>Custom</value>
+    </param>
+    <param>
+      <key>run_options</key>
+      <value>prompt</value>
+    </param>
+    <param>
+      <key>run</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>max_nouts</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>realtime_scheduling</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(10, 10)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
   <block>
     <key>variable</key>
     <param>
@@ -321,8 +380,8 @@
       <value>0.35</value>
     </param>
     <param>
-      <key>gray_coded</key>
-      <value>True</value>
+      <key>mod_code</key>
+      <value>"gray"</value>
     </param>
     <param>
       <key>verbose</key>
@@ -423,7 +482,15 @@
     </param>
     <param>
       <key>type</key>
-      <value>complex</value>
+      <value>fc32</value>
+    </param>
+    <param>
+      <key>otw</key>
+      <value></value>
+    </param>
+    <param>
+      <key>stream_args</key>
+      <value></value>
     </param>
     <param>
       <key>dev_addr</key>
@@ -442,7 +509,11 @@
       <value>1</value>
     </param>
     <param>
-      <key>ref_source0</key>
+      <key>clock_source0</key>
+      <value></value>
+    </param>
+    <param>
+      <key>time_source0</key>
       <value></value>
     </param>
     <param>
@@ -450,7 +521,11 @@
       <value></value>
     </param>
     <param>
-      <key>ref_source1</key>
+      <key>clock_source1</key>
+      <value></value>
+    </param>
+    <param>
+      <key>time_source1</key>
       <value></value>
     </param>
     <param>
@@ -458,7 +533,11 @@
       <value></value>
     </param>
     <param>
-      <key>ref_source2</key>
+      <key>clock_source2</key>
+      <value></value>
+    </param>
+    <param>
+      <key>time_source2</key>
       <value></value>
     </param>
     <param>
@@ -466,7 +545,11 @@
       <value></value>
     </param>
     <param>
-      <key>ref_source3</key>
+      <key>clock_source3</key>
+      <value></value>
+    </param>
+    <param>
+      <key>time_source3</key>
       <value></value>
     </param>
     <param>
@@ -474,7 +557,11 @@
       <value></value>
     </param>
     <param>
-      <key>ref_source4</key>
+      <key>clock_source4</key>
+      <value></value>
+    </param>
+    <param>
+      <key>time_source4</key>
       <value></value>
     </param>
     <param>
@@ -482,7 +569,11 @@
       <value></value>
     </param>
     <param>
-      <key>ref_source5</key>
+      <key>clock_source5</key>
+      <value></value>
+    </param>
+    <param>
+      <key>time_source5</key>
       <value></value>
     </param>
     <param>
@@ -490,7 +581,11 @@
       <value></value>
     </param>
     <param>
-      <key>ref_source6</key>
+      <key>clock_source6</key>
+      <value></value>
+    </param>
+    <param>
+      <key>time_source6</key>
       <value></value>
     </param>
     <param>
@@ -498,7 +593,11 @@
       <value></value>
     </param>
     <param>
-      <key>ref_source7</key>
+      <key>clock_source7</key>
+      <value></value>
+    </param>
+    <param>
+      <key>time_source7</key>
       <value></value>
     </param>
     <param>
@@ -1144,63 +1243,12 @@
       <value></value>
     </param>
     <param>
-      <key>_coordinate</key>
-      <value>(827, 299)</value>
-    </param>
-    <param>
-      <key>_rotation</key>
-      <value>0</value>
-    </param>
-  </block>
-  <block>
-    <key>options</key>
-    <param>
-      <key>id</key>
-      <value>uhd_tx_dpsk</value>
-    </param>
-    <param>
-      <key>_enabled</key>
-      <value>True</value>
-    </param>
-    <param>
-      <key>title</key>
-      <value>UHD TX DPSK</value>
-    </param>
-    <param>
-      <key>author</key>
-      <value></value>
-    </param>
-    <param>
-      <key>description</key>
-      <value></value>
-    </param>
-    <param>
-      <key>window_size</key>
-      <value>1280, 1024</value>
-    </param>
-    <param>
-      <key>generate_options</key>
-      <value>wx_gui</value>
-    </param>
-    <param>
-      <key>category</key>
-      <value>Custom</value>
-    </param>
-    <param>
-      <key>run_options</key>
-      <value>prompt</value>
-    </param>
-    <param>
-      <key>run</key>
-      <value>True</value>
-    </param>
-    <param>
-      <key>realtime_scheduling</key>
-      <value></value>
+      <key>freqvar</key>
+      <value>None</value>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(10, 10)</value>
+      <value>(827, 299)</value>
     </param>
     <param>
       <key>_rotation</key>
diff --git a/gr-uhd/examples/grc/uhd_wbfm_receive.grc b/gr-uhd/examples/grc/uhd_wbfm_receive.grc
index 943e82cf31..e19015a790 100644
--- a/gr-uhd/examples/grc/uhd_wbfm_receive.grc
+++ b/gr-uhd/examples/grc/uhd_wbfm_receive.grc
@@ -1,6 +1,6 @@
 <?xml version='1.0' encoding='ASCII'?>
 <flow_graph>
-  <timestamp>Tue Apr 24 16:59:09 2012</timestamp>
+  <timestamp>Mon Mar 18 11:13:02 2013</timestamp>
   <block>
     <key>options</key>
     <param>
@@ -43,6 +43,10 @@
       <key>run</key>
       <value>True</value>
     </param>
+    <param>
+      <key>max_nouts</key>
+      <value>0</value>
+    </param>
     <param>
       <key>realtime_scheduling</key>
       <value></value>
@@ -1040,41 +1044,6 @@
       <value>0</value>
     </param>
   </block>
-  <block>
-    <key>parameter</key>
-    <param>
-      <key>id</key>
-      <value>address</value>
-    </param>
-    <param>
-      <key>_enabled</key>
-      <value>True</value>
-    </param>
-    <param>
-      <key>label</key>
-      <value>IP Address</value>
-    </param>
-    <param>
-      <key>value</key>
-      <value>addr=192.168.10.2</value>
-    </param>
-    <param>
-      <key>type</key>
-      <value>string</value>
-    </param>
-    <param>
-      <key>short_id</key>
-      <value>a</value>
-    </param>
-    <param>
-      <key>_coordinate</key>
-      <value>(199, 14)</value>
-    </param>
-    <param>
-      <key>_rotation</key>
-      <value>0</value>
-    </param>
-  </block>
   <block>
     <key>parameter</key>
     <param>
@@ -1180,33 +1149,6 @@
       <value>0</value>
     </param>
   </block>
-  <block>
-    <key>blks2_wfm_rcv</key>
-    <param>
-      <key>id</key>
-      <value>blks2_wfm_rcv</value>
-    </param>
-    <param>
-      <key>_enabled</key>
-      <value>True</value>
-    </param>
-    <param>
-      <key>quad_rate</key>
-      <value>samp_rate</value>
-    </param>
-    <param>
-      <key>audio_decimation</key>
-      <value>audio_decim</value>
-    </param>
-    <param>
-      <key>_coordinate</key>
-      <value>(626, 153)</value>
-    </param>
-    <param>
-      <key>_rotation</key>
-      <value>0</value>
-    </param>
-  </block>
   <block>
     <key>low_pass_filter</key>
     <param>
@@ -1363,6 +1305,10 @@
       <key>notebook</key>
       <value></value>
     </param>
+    <param>
+      <key>freqvar</key>
+      <value>None</value>
+    </param>
     <param>
       <key>_coordinate</key>
       <value>(624, 278)</value>
@@ -1372,6 +1318,68 @@
       <value>0</value>
     </param>
   </block>
+  <block>
+    <key>analog_wfm_rcv</key>
+    <param>
+      <key>id</key>
+      <value>analog_wfm_rcv</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>quad_rate</key>
+      <value>samp_rate</value>
+    </param>
+    <param>
+      <key>audio_decimation</key>
+      <value>audio_decim</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(625, 153)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>parameter</key>
+    <param>
+      <key>id</key>
+      <value>address</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>label</key>
+      <value>IP Address</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>addr=192.168.10.2</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>string</value>
+    </param>
+    <param>
+      <key>short_id</key>
+      <value>a</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(199, 14)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
   <connection>
     <source_block_id>blocks_multiply_const_vxx</source_block_id>
     <sink_block_id>audio_sink</sink_block_id>
@@ -1379,14 +1387,14 @@
     <sink_key>0</sink_key>
   </connection>
   <connection>
-    <source_block_id>blks2_wfm_rcv</source_block_id>
+    <source_block_id>analog_wfm_rcv</source_block_id>
     <sink_block_id>blocks_multiply_const_vxx</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
   <connection>
     <source_block_id>low_pass_filter_0</source_block_id>
-    <sink_block_id>blks2_wfm_rcv</sink_block_id>
+    <sink_block_id>analog_wfm_rcv</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
diff --git a/gr-wxgui/python/constsink_gl.py b/gr-wxgui/python/constsink_gl.py
index 0313e7fea0..dea76ea753 100644
--- a/gr-wxgui/python/constsink_gl.py
+++ b/gr-wxgui/python/constsink_gl.py
@@ -26,6 +26,7 @@ import const_window
 import common
 from gnuradio import gr
 from gnuradio import blocks
+from gnuradio import analog
 from pubsub import pubsub
 from constants import *
 import sys
@@ -100,7 +101,7 @@ class const_sink_c(gr.hier_block2, common.wxgui_hb):
 		#	gain_omega,
 		#	omega_limit,
 		#)
-		agc = gr.feedforward_agc_cc(16, 1)
+		agc = analog.feedforward_agc_cc(16, 1)
 		msgq = gr.msg_queue(2)
 		sink = blocks.message_sink(gr.sizeof_gr_complex*const_size, msgq, True)
 		#controller
diff --git a/grc/blocks/blks2_am_demod_cf.xml b/grc/blocks/blks2_am_demod_cf.xml
deleted file mode 100644
index 898c613beb..0000000000
--- a/grc/blocks/blks2_am_demod_cf.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##AM Demod
-###################################################
- -->
-<block>
-	<name>AM Demod</name>
-	<key>blks2_am_demod_cf</key>
-	<import>from gnuradio import blks2</import>
-	<make>blks2.am_demod_cf(
-	channel_rate=$chan_rate,
-	audio_decim=$audio_decim,
-	audio_pass=$audio_pass,
-	audio_stop=$audio_stop,
-)</make>
-	<param>
-		<name>Channel Rate</name>
-		<key>chan_rate</key>
-		<type>real</type>
-	</param>
-	<param>
-		<name>Audio Decimation</name>
-		<key>audio_decim</key>
-		<type>int</type>
-	</param>
-	<param>
-		<name>Audio Pass</name>
-		<key>audio_pass</key>
-		<value>5000</value>
-		<type>real</type>
-	</param>
-	<param>
-		<name>Audio Stop</name>
-		<key>audio_stop</key>
-		<value>5500</value>
-		<type>real</type>
-	</param>
-	<sink>
-		<name>in</name>
-		<type>complex</type>
-	</sink>
-	<source>
-		<name>out</name>
-		<type>float</type>
-	</source>
-</block>
diff --git a/grc/blocks/blks2_fm_deemph.xml b/grc/blocks/blks2_fm_deemph.xml
deleted file mode 100644
index 6f38dab6d0..0000000000
--- a/grc/blocks/blks2_fm_deemph.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##FM Deemphasis
-###################################################
- -->
-<block>
-	<name>FM Deemphasis</name>
-	<key>blks2_fm_deemph</key>
-	<import>from gnuradio import blks2</import>
-	<make>blks2.fm_deemph(fs=$samp_rate, tau=$tau)</make>
-	<param>
-		<name>Sample Rate</name>
-		<key>samp_rate</key>
-		<type>real</type>
-	</param>
-	<param>
-		<name>Tau</name>
-		<key>tau</key>
-		<value>75e-6</value>
-		<type>real</type>
-	</param>
-	<sink>
-		<name>in</name>
-		<type>float</type>
-	</sink>
-	<source>
-		<name>out</name>
-		<type>float</type>
-	</source>
-</block>
diff --git a/grc/blocks/blks2_fm_demod_cf.xml b/grc/blocks/blks2_fm_demod_cf.xml
deleted file mode 100644
index 2ce1fb9732..0000000000
--- a/grc/blocks/blks2_fm_demod_cf.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##FM Demod
-###################################################
- -->
-<block>
-	<name>FM Demod</name>
-	<key>blks2_fm_demod_cf</key>
-	<import>from gnuradio import blks2</import>
-	<make>blks2.fm_demod_cf(
-	channel_rate=$chan_rate,
-	audio_decim=$audio_decim,
-	deviation=$deviation,
-	audio_pass=$audio_pass,
-	audio_stop=$audio_stop,
-	gain=$gain,
-	tau=$tau,
-)</make>
-	<param>
-		<name>Channel Rate</name>
-		<key>chan_rate</key>
-		<type>real</type>
-	</param>
-	<param>
-		<name>Audio Decimation</name>
-		<key>audio_decim</key>
-		<type>int</type>
-	</param>
-	<param>
-		<name>Deviation</name>
-		<key>deviation</key>
-		<value>75000</value>
-		<type>real</type>
-	</param>
-	<param>
-		<name>Audio Pass</name>
-		<key>audio_pass</key>
-		<value>15000</value>
-		<type>real</type>
-	</param>
-	<param>
-		<name>Audio Stop</name>
-		<key>audio_stop</key>
-		<value>16000</value>
-		<type>real</type>
-	</param>
-	<param>
-		<name>Gain</name>
-		<key>gain</key>
-		<value>1.0</value>
-		<type>real</type>
-	</param>
-	<param>
-		<name>Tau</name>
-		<key>tau</key>
-		<value>75e-6</value>
-		<type>real</type>
-	</param>
-	<sink>
-		<name>in</name>
-		<type>complex</type>
-	</sink>
-	<source>
-		<name>out</name>
-		<type>float</type>
-	</source>
-</block>
diff --git a/grc/blocks/blks2_fm_preemph.xml b/grc/blocks/blks2_fm_preemph.xml
deleted file mode 100644
index 672a7a7b28..0000000000
--- a/grc/blocks/blks2_fm_preemph.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##FM Preemphasis
-###################################################
- -->
-<block>
-	<name>FM Preemphasis</name>
-	<key>blks2_fm_preemph</key>
-	<import>from gnuradio import blks2</import>
-	<make>blks2.fm_preemph(fs=$samp_rate, tau=$tau)</make>
-	<param>
-		<name>Sample Rate</name>
-		<key>samp_rate</key>
-		<type>real</type>
-	</param>
-	<param>
-		<name>Tau</name>
-		<key>tau</key>
-		<value>75e-6</value>
-		<type>real</type>
-	</param>
-	<sink>
-		<name>in</name>
-		<type>float</type>
-	</sink>
-	<source>
-		<name>out</name>
-		<type>float</type>
-	</source>
-</block>
diff --git a/grc/blocks/blks2_nbfm_rx.xml b/grc/blocks/blks2_nbfm_rx.xml
deleted file mode 100644
index d332b9a6b0..0000000000
--- a/grc/blocks/blks2_nbfm_rx.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##NBFM Receive
-###################################################
- -->
-<block>
-	<name>NBFM Receive</name>
-	<key>blks2_nbfm_rx</key>
-	<import>from gnuradio import blks2</import>
-	<make>blks2.nbfm_rx(
-	audio_rate=$audio_rate,
-	quad_rate=$quad_rate,
-	tau=$tau,
-	max_dev=$max_dev,
-)</make>
-	<param>
-		<name>Audio Rate</name>
-		<key>audio_rate</key>
-		<type>int</type>
-	</param>
-	<param>
-		<name>Quadrature Rate</name>
-		<key>quad_rate</key>
-		<type>int</type>
-	</param>
-	<param>
-		<name>Tau</name>
-		<key>tau</key>
-		<value>75e-6</value>
-		<type>real</type>
-	</param>
-	<param>
-		<name>Max Deviation</name>
-		<key>max_dev</key>
-		<value>5e3</value>
-		<type>real</type>
-	</param>
-	<check>$quad_rate%$audio_rate == 0</check>
-	<sink>
-		<name>in</name>
-		<type>complex</type>
-	</sink>
-	<source>
-		<name>out</name>
-		<type>float</type>
-	</source>
-</block>
diff --git a/grc/blocks/blks2_nbfm_tx.xml b/grc/blocks/blks2_nbfm_tx.xml
deleted file mode 100644
index 3aa7ede0e2..0000000000
--- a/grc/blocks/blks2_nbfm_tx.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##NBFM Transmit
-###################################################
- -->
-<block>
-	<name>NBFM Transmit</name>
-	<key>blks2_nbfm_tx</key>
-	<import>from gnuradio import blks2</import>
-	<make>blks2.nbfm_tx(
-	audio_rate=$audio_rate,
-	quad_rate=$quad_rate,
-	tau=$tau,
-	max_dev=$max_dev,
-)</make>
-	<param>
-		<name>Audio Rate</name>
-		<key>audio_rate</key>
-		<type>int</type>
-	</param>
-	<param>
-		<name>Quadrature Rate</name>
-		<key>quad_rate</key>
-		<type>int</type>
-	</param>
-	<param>
-		<name>Tau</name>
-		<key>tau</key>
-		<value>75e-6</value>
-		<type>real</type>
-	</param>
-	<param>
-		<name>Max Deviation</name>
-		<key>max_dev</key>
-		<value>5e3</value>
-		<type>real</type>
-	</param>
-	<check>$quad_rate%$audio_rate == 0</check>
-	<sink>
-		<name>in</name>
-		<type>float</type>
-	</sink>
-	<source>
-		<name>out</name>
-		<type>complex</type>
-	</source>
-</block>
diff --git a/grc/blocks/blks2_wfm_rcv.xml b/grc/blocks/blks2_wfm_rcv.xml
deleted file mode 100644
index 37fb3ba8c4..0000000000
--- a/grc/blocks/blks2_wfm_rcv.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##WBFM Receive
-###################################################
- -->
-<block>
-	<name>WBFM Receive</name>
-	<key>blks2_wfm_rcv</key>
-	<import>from gnuradio import blks2</import>
-	<make>blks2.wfm_rcv(
-	quad_rate=$quad_rate,
-	audio_decimation=$audio_decimation,
-)</make>
-	<param>
-		<name>Quadrature Rate</name>
-		<key>quad_rate</key>
-		<type>real</type>
-	</param>
-	<param>
-		<name>Audio Decimation</name>
-		<key>audio_decimation</key>
-		<type>int</type>
-	</param>
-	<sink>
-		<name>in</name>
-		<type>complex</type>
-	</sink>
-	<source>
-		<name>out</name>
-		<type>float</type>
-	</source>
-</block>
diff --git a/grc/blocks/blks2_wfm_rcv_pll.xml b/grc/blocks/blks2_wfm_rcv_pll.xml
deleted file mode 100644
index 2771350cfd..0000000000
--- a/grc/blocks/blks2_wfm_rcv_pll.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##WBFM Receive PLL
-###################################################
- -->
-<block>
-	<name>WBFM Receive PLL</name>
-	<key>blks2_wfm_rcv_pll</key>
-	<import>from gnuradio import blks2</import>
-	<make>blks2.wfm_rcv_pll(
-	demod_rate=$quad_rate,
-	audio_decimation=$audio_decimation,
-)</make>
-	<param>
-		<name>Quadrature Rate</name>
-		<key>quad_rate</key>
-		<type>real</type>
-	</param>
-	<param>
-		<name>Audio Decimation</name>
-		<key>audio_decimation</key>
-		<type>int</type>
-	</param>
-	<sink>
-		<name>in</name>
-		<type>complex</type>
-	</sink>
-	<source>
-		<name>Lout</name>
-		<type>float</type>
-	</source>
-	<source>
-		<name>Rout</name>
-		<type>float</type>
-	</source>
-</block>
diff --git a/grc/blocks/blks2_wfm_tx.xml b/grc/blocks/blks2_wfm_tx.xml
deleted file mode 100644
index cff92d8190..0000000000
--- a/grc/blocks/blks2_wfm_tx.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##WBFM Transmit
-###################################################
- -->
-<block>
-	<name>WBFM Transmit</name>
-	<key>blks2_wfm_tx</key>
-	<import>from gnuradio import blks2</import>
-	<make>blks2.wfm_tx(
-	audio_rate=$audio_rate,
-	quad_rate=$quad_rate,
-	tau=$tau,
-	max_dev=$max_dev,
-)</make>
-	<param>
-		<name>Audio Rate</name>
-		<key>audio_rate</key>
-		<type>int</type>
-	</param>
-	<param>
-		<name>Quadrature Rate</name>
-		<key>quad_rate</key>
-		<type>int</type>
-	</param>
-	<param>
-		<name>Tau</name>
-		<key>tau</key>
-		<value>75e-6</value>
-		<type>real</type>
-	</param>
-	<param>
-		<name>Max Deviation</name>
-		<key>max_dev</key>
-		<value>75e3</value>
-		<type>real</type>
-	</param>
-	<check>$quad_rate%$audio_rate == 0</check>
-	<sink>
-		<name>in</name>
-		<type>float</type>
-	</sink>
-	<source>
-		<name>out</name>
-		<type>complex</type>
-	</source>
-</block>
-- 
cgit v1.2.3


From c856fe0106bcbcad871452014af2eb459a32e916 Mon Sep 17 00:00:00 2001
From: Tom Rondeau <trondeau@vt.edu>
Date: Mon, 18 Mar 2013 15:55:38 -0400
Subject: wxgui: Moved oscope and histogram bases into wxgui.

This makes gr-wxgui more like a normal component that generates a libgnuradio-wxgui.so file.
---
 gnuradio-core/CMakeLists.txt                       |   1 -
 gnuradio-core/src/lib/CMakeLists.txt               |   1 -
 gnuradio-core/src/lib/io/CMakeLists.txt            |  58 ---
 gnuradio-core/src/lib/io/gr_histo_sink.i           |  39 --
 gnuradio-core/src/lib/io/gr_histo_sink_f.cc        | 165 --------
 gnuradio-core/src/lib/io/gr_histo_sink_f.h         |  71 ----
 gnuradio-core/src/lib/io/gr_oscope_guts.cc         | 437 --------------------
 gnuradio-core/src/lib/io/gr_oscope_guts.h          | 123 ------
 gnuradio-core/src/lib/io/gr_oscope_sink.i          |  77 ----
 gnuradio-core/src/lib/io/gr_oscope_sink_f.cc       |  78 ----
 gnuradio-core/src/lib/io/gr_oscope_sink_f.h        |  63 ---
 gnuradio-core/src/lib/io/gr_oscope_sink_x.cc       | 156 --------
 gnuradio-core/src/lib/io/gr_oscope_sink_x.h        |  77 ----
 gnuradio-core/src/lib/io/gr_trigger_mode.h         |  38 --
 gnuradio-core/src/lib/io/io.i                      |  37 --
 gnuradio-core/src/lib/swig/CMakeLists.txt          |   2 +-
 gnuradio-core/src/lib/swig/gnuradio_core.py        |   1 -
 gnuradio-core/src/lib/swig/gnuradio_core_io.i      |  32 --
 gr-audio/examples/grc/cvsd_sweep.grc               |   6 +-
 gr-digital/examples/demod/ber_simulation.grc       |   2 +-
 gr-digital/examples/demod/digital_freq_lock.grc    |   4 +-
 gr-digital/examples/demod/dpsk_loopback.grc        |   2 +-
 gr-digital/examples/demod/pam_sync.grc             |   4 +-
 gr-digital/examples/demod/pam_timing.grc           |  10 +-
 gr-howto-write-a-block/apps/howto_square.grc       |   4 +-
 gr-howto-write-a-block/apps/howto_square.py        |   4 +-
 gr-noaa/examples/usrp_rx_hrpt.grc                  |   2 +-
 .../examples/grc/interference_cancellation.grc     |   2 +-
 gr-trellis/examples/grc/pccc.grc                   |   2 +-
 gr-trellis/examples/grc/pccc1.grc                  |   2 +-
 gr-trellis/examples/grc/sccc.grc                   |   2 +-
 gr-trellis/examples/grc/sccc1.grc                  |   2 +-
 gr-uhd/apps/uhd_fft                                |   4 +
 gr-uhd/examples/grc/uhd_dpsk_mod.grc               |   2 +-
 gr-uhd/examples/grc/uhd_fft.grc                    |   6 +-
 gr-wxgui/CMakeLists.txt                            |  16 +-
 gr-wxgui/grc/wxgui_constellationsink2.xml          |   1 +
 gr-wxgui/grc/wxgui_fftsink2.xml                    |   1 +
 gr-wxgui/grc/wxgui_histosink2.xml                  |   1 +
 gr-wxgui/grc/wxgui_numbersink2.xml                 |   1 +
 gr-wxgui/grc/wxgui_scopesink2.xml                  |  10 +-
 gr-wxgui/grc/wxgui_termsink.xml                    |   1 +
 gr-wxgui/grc/wxgui_waterfallsink2.xml              |   1 +
 gr-wxgui/include/wxgui/CMakeLists.txt              |  32 ++
 gr-wxgui/include/wxgui/api.h                       |  33 ++
 gr-wxgui/include/wxgui/histo_sink_f.h              |  55 +++
 gr-wxgui/include/wxgui/oscope_guts.h               | 131 ++++++
 gr-wxgui/include/wxgui/oscope_sink_f.h             |  53 +++
 gr-wxgui/include/wxgui/oscope_sink_x.h             |  91 +++++
 gr-wxgui/include/wxgui/trigger_mode.h              |  44 +++
 gr-wxgui/lib/CMakeLists.txt                        |  78 ++++
 gr-wxgui/lib/gnuradio-wxgui.rc.in                  |  54 +++
 gr-wxgui/lib/histo_sink_f_impl.cc                  | 186 +++++++++
 gr-wxgui/lib/histo_sink_f_impl.h                   |  63 +++
 gr-wxgui/lib/oscope_guts.cc                        | 439 +++++++++++++++++++++
 gr-wxgui/lib/oscope_sink_f_impl.cc                 |  84 ++++
 gr-wxgui/lib/oscope_sink_f_impl.h                  |  51 +++
 gr-wxgui/lib/oscope_sink_x.cc                      | 161 ++++++++
 gr-wxgui/python/__init__.py                        |   2 +
 gr-wxgui/python/histosink_gl.py                    |   3 +-
 gr-wxgui/python/scope_window.py                    |  23 +-
 gr-wxgui/python/scopesink_gl.py                    |  13 +-
 gr-wxgui/python/scopesink_nongl.py                 |  11 +-
 gr-wxgui/python/waterfallsink_nongl.py             |   4 +-
 gr-wxgui/swig/CMakeLists.txt                       |  57 +++
 gr-wxgui/swig/wxgui_swig.i                         |  43 ++
 grc/examples/xmlrpc/xmlrpc_server.grc              |   2 +-
 67 files changed, 1745 insertions(+), 1516 deletions(-)
 delete mode 100644 gnuradio-core/src/lib/io/CMakeLists.txt
 delete mode 100644 gnuradio-core/src/lib/io/gr_histo_sink.i
 delete mode 100644 gnuradio-core/src/lib/io/gr_histo_sink_f.cc
 delete mode 100644 gnuradio-core/src/lib/io/gr_histo_sink_f.h
 delete mode 100644 gnuradio-core/src/lib/io/gr_oscope_guts.cc
 delete mode 100644 gnuradio-core/src/lib/io/gr_oscope_guts.h
 delete mode 100644 gnuradio-core/src/lib/io/gr_oscope_sink.i
 delete mode 100644 gnuradio-core/src/lib/io/gr_oscope_sink_f.cc
 delete mode 100644 gnuradio-core/src/lib/io/gr_oscope_sink_f.h
 delete mode 100644 gnuradio-core/src/lib/io/gr_oscope_sink_x.cc
 delete mode 100644 gnuradio-core/src/lib/io/gr_oscope_sink_x.h
 delete mode 100644 gnuradio-core/src/lib/io/gr_trigger_mode.h
 delete mode 100644 gnuradio-core/src/lib/io/io.i
 delete mode 100644 gnuradio-core/src/lib/swig/gnuradio_core_io.i
 create mode 100644 gr-wxgui/include/wxgui/CMakeLists.txt
 create mode 100644 gr-wxgui/include/wxgui/api.h
 create mode 100644 gr-wxgui/include/wxgui/histo_sink_f.h
 create mode 100644 gr-wxgui/include/wxgui/oscope_guts.h
 create mode 100644 gr-wxgui/include/wxgui/oscope_sink_f.h
 create mode 100644 gr-wxgui/include/wxgui/oscope_sink_x.h
 create mode 100644 gr-wxgui/include/wxgui/trigger_mode.h
 create mode 100644 gr-wxgui/lib/CMakeLists.txt
 create mode 100644 gr-wxgui/lib/gnuradio-wxgui.rc.in
 create mode 100644 gr-wxgui/lib/histo_sink_f_impl.cc
 create mode 100644 gr-wxgui/lib/histo_sink_f_impl.h
 create mode 100644 gr-wxgui/lib/oscope_guts.cc
 create mode 100644 gr-wxgui/lib/oscope_sink_f_impl.cc
 create mode 100644 gr-wxgui/lib/oscope_sink_f_impl.h
 create mode 100644 gr-wxgui/lib/oscope_sink_x.cc
 create mode 100644 gr-wxgui/swig/CMakeLists.txt
 create mode 100644 gr-wxgui/swig/wxgui_swig.i

(limited to 'gr-wxgui/python')

diff --git a/gnuradio-core/CMakeLists.txt b/gnuradio-core/CMakeLists.txt
index 9e910aa6bb..154a078826 100644
--- a/gnuradio-core/CMakeLists.txt
+++ b/gnuradio-core/CMakeLists.txt
@@ -52,7 +52,6 @@ GR_SET_GLOBAL(GNURADIO_CORE_INCLUDE_DIRS
     ${CMAKE_CURRENT_BINARY_DIR}/src/lib/filter
     ${CMAKE_CURRENT_SOURCE_DIR}/src/lib/filter
     ${CMAKE_CURRENT_SOURCE_DIR}/src/lib/missing
-    ${CMAKE_CURRENT_SOURCE_DIR}/src/lib/io
     ${CMAKE_CURRENT_BINARY_DIR}/src/lib/swig
     ${CMAKE_CURRENT_SOURCE_DIR}/src/lib/swig
     ${CMAKE_CURRENT_SOURCE_DIR}/src/lib/hier
diff --git a/gnuradio-core/src/lib/CMakeLists.txt b/gnuradio-core/src/lib/CMakeLists.txt
index b5a41ec430..c72be94db5 100644
--- a/gnuradio-core/src/lib/CMakeLists.txt
+++ b/gnuradio-core/src/lib/CMakeLists.txt
@@ -28,7 +28,6 @@ include(${CMAKE_CURRENT_SOURCE_DIR}/ConfigChecks.cmake)
 GR_INCLUDE_SUBDIRECTORY(missing)
 GR_INCLUDE_SUBDIRECTORY(runtime)
 GR_INCLUDE_SUBDIRECTORY(general)
-GR_INCLUDE_SUBDIRECTORY(io)
 
 list(APPEND gnuradio_core_sources bug_work_around_6.cc)
 list(APPEND test_gnuradio_core_sources bug_work_around_6.cc)
diff --git a/gnuradio-core/src/lib/io/CMakeLists.txt b/gnuradio-core/src/lib/io/CMakeLists.txt
deleted file mode 100644
index ee8e9befa5..0000000000
--- a/gnuradio-core/src/lib/io/CMakeLists.txt
+++ /dev/null
@@ -1,58 +0,0 @@
-# Copyright 2010-2011 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING.  If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-
-########################################################################
-# This file included, use CMake directory variables
-########################################################################
-
-########################################################################
-# Append gnuradio-core library sources
-########################################################################
-list(APPEND gnuradio_core_sources
-    ${CMAKE_CURRENT_SOURCE_DIR}/gr_histo_sink_f.cc
-    ${CMAKE_CURRENT_SOURCE_DIR}/gr_oscope_guts.cc
-    ${CMAKE_CURRENT_SOURCE_DIR}/gr_oscope_sink_f.cc
-    ${CMAKE_CURRENT_SOURCE_DIR}/gr_oscope_sink_x.cc
-)
-
-########################################################################
-# Install runtime headers
-########################################################################
-install(FILES
-    ${CMAKE_CURRENT_SOURCE_DIR}/gr_histo_sink_f.h
-    ${CMAKE_CURRENT_SOURCE_DIR}/gr_oscope_guts.h
-    ${CMAKE_CURRENT_SOURCE_DIR}/gr_oscope_sink_f.h
-    ${CMAKE_CURRENT_SOURCE_DIR}/gr_oscope_sink_x.h
-    ${CMAKE_CURRENT_SOURCE_DIR}/gr_trigger_mode.h
-    DESTINATION ${GR_INCLUDE_DIR}/gnuradio
-    COMPONENT "core_devel"
-)
-
-########################################################################
-# Install swig headers
-########################################################################
-if(ENABLE_PYTHON)
-install(FILES
-    ${CMAKE_CURRENT_SOURCE_DIR}/io.i
-    ${CMAKE_CURRENT_SOURCE_DIR}/gr_histo_sink.i
-    ${CMAKE_CURRENT_SOURCE_DIR}/gr_oscope_sink.i
-    DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig
-    COMPONENT "core_swig"
-)
-endif(ENABLE_PYTHON)
diff --git a/gnuradio-core/src/lib/io/gr_histo_sink.i b/gnuradio-core/src/lib/io/gr_histo_sink.i
deleted file mode 100644
index 14079e1907..0000000000
--- a/gnuradio-core/src/lib/io/gr_histo_sink.i
+++ /dev/null
@@ -1,39 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2009 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-
-GR_SWIG_BLOCK_MAGIC(gr,histo_sink_f)
-
-gr_histo_sink_f_sptr gr_make_histo_sink_f (gr_msg_queue_sptr msgq);
-
-class gr_histo_sink_f : public gr_sync_block
-{
-public:
-  ~gr_histo_sink_f (void);
-
-  unsigned int get_frame_size(void);
-  unsigned int get_num_bins(void);
-
-  void set_frame_size(unsigned int frame_size);
-  void set_num_bins(unsigned int num_bins);
-
-};
diff --git a/gnuradio-core/src/lib/io/gr_histo_sink_f.cc b/gnuradio-core/src/lib/io/gr_histo_sink_f.cc
deleted file mode 100644
index fc0c12ce64..0000000000
--- a/gnuradio-core/src/lib/io/gr_histo_sink_f.cc
+++ /dev/null
@@ -1,165 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2009,2010,2011 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <gr_histo_sink_f.h>
-#include <gr_io_signature.h>
-#include <boost/math/special_functions/round.hpp>
-
-static float get_clean_num(float num){
-  if (num == 0) return 0;
-  /* extract sign and exponent from num */
-  int sign = (num < 0) ? -1 : 1; num = fabs(num);
-  float exponent = floor(log10(num));
-  /* search for closest number with base 1, 2, 5, 10 */
-  float closest_num = 10*pow(10, exponent);
-  if (fabs(num - 1*pow(10, exponent)) < fabs(num - closest_num))
-    closest_num = 1*pow(10, exponent);
-  if (fabs(num - 2*pow(10, exponent)) < fabs(num - closest_num))
-    closest_num = 2*pow(10, exponent);
-  if (fabs(num - 5*pow(10, exponent)) < fabs(num - closest_num))
-    closest_num = 5*pow(10, exponent);
-  return sign*closest_num;
-}
-
-gr_histo_sink_f_sptr
-gr_make_histo_sink_f (gr_msg_queue_sptr msgq)
-{
-  return gnuradio::get_initial_sptr(new gr_histo_sink_f (msgq));
-}
-
-gr_histo_sink_f::gr_histo_sink_f (gr_msg_queue_sptr msgq)
-  : gr_sync_block ("histo_sink_f", gr_make_io_signature (1, 1, sizeof (float)), gr_make_io_signature (0, 0, 0)),
-  d_msgq (msgq), d_num_bins(11), d_frame_size(1000), d_sample_count(0), d_bins(NULL), d_samps(NULL)
-{
-  //allocate arrays and clear
-  set_num_bins(d_num_bins);
-  set_frame_size(d_frame_size);
-}
-
-gr_histo_sink_f::~gr_histo_sink_f (void)
-{
-  delete [] d_samps;
-  delete [] d_bins;
-}
-
-int
-gr_histo_sink_f::work (int noutput_items,
-  gr_vector_const_void_star &input_items,
-  gr_vector_void_star &output_items)
-{
-  const float *in = (const float *) input_items[0];
-  gruel::scoped_lock guard(d_mutex);	// hold mutex for duration of this function
-  for (unsigned int i = 0; i < (unsigned int)noutput_items; i++){
-    d_samps[d_sample_count] = in[i];
-    d_sample_count++;
-    /* processed a frame? */
-    if (d_sample_count == d_frame_size){
-      send_frame();
-      clear();
-    }
-  }
-  return noutput_items;
-}
-
-void
-gr_histo_sink_f::send_frame(void){
-  /* output queue full, drop the data */
-  if (d_msgq->full_p()) return;
-  /* find the minimum and maximum */
-  float minimum = d_samps[0];
-  float maximum = d_samps[0];
-  for (unsigned int i = 0; i < d_frame_size; i++){
-    if (d_samps[i] < minimum) minimum = d_samps[i];
-    if (d_samps[i] > maximum) maximum = d_samps[i];
-  }
-  minimum = get_clean_num(minimum);
-  maximum = get_clean_num(maximum);
-  if (minimum == maximum || minimum > maximum) return; //useless data or screw up?
-  /* load the bins */
-  int index;
-  float bin_width = (maximum - minimum)/(d_num_bins-1);
-  for (unsigned int i = 0; i < d_sample_count; i++){
-    index = boost::math::iround((d_samps[i] - minimum)/bin_width);
-    /* ensure the index range in case a small floating point error is involed */
-    if (index < 0) index = 0;
-    if (index >= (int)d_num_bins) index = d_num_bins-1;
-    d_bins[index]++;
-  }
-  /* Build a message to hold the output records */
-  gr_message_sptr msg = gr_make_message(0, minimum, maximum, d_num_bins*sizeof(float));
-  float *out = (float *)msg->msg(); // get pointer to raw message buffer
-  /* normalize the bins and put into message */
-  for (unsigned int i = 0; i < d_num_bins; i++){
-    out[i] = ((float)d_bins[i])/d_frame_size;
-  }
-  /* send the message */
-  d_msgq->handle(msg);
-}
-
-void
-gr_histo_sink_f::clear(void){
-  d_sample_count = 0;
-  /* zero the bins */
-  for (unsigned int i = 0; i < d_num_bins; i++){
-    d_bins[i] = 0;
-  }
-}
-
-/**************************************************
- * Getters
- **************************************************/
-unsigned int
-gr_histo_sink_f::get_frame_size(void){
-  return d_frame_size;
-}
-
-unsigned int
-gr_histo_sink_f::get_num_bins(void){
-  return d_num_bins;
-}
-
-/**************************************************
- * Setters
- **************************************************/
-void
-gr_histo_sink_f::set_frame_size(unsigned int frame_size){
-  gruel::scoped_lock guard(d_mutex);	// hold mutex for duration of this function
-  d_frame_size = frame_size;
-  /* allocate a new sample array */
-  delete [] d_samps;
-  d_samps = new float[d_frame_size];
-  clear();
-}
-
-void
-gr_histo_sink_f::set_num_bins(unsigned int num_bins){
-  gruel::scoped_lock guard(d_mutex);	// hold mutex for duration of this function
-  d_num_bins = num_bins;
-  /* allocate a new bin array */
-  delete [] d_bins;
-  d_bins = new unsigned int[d_num_bins];
-  clear();
-}
diff --git a/gnuradio-core/src/lib/io/gr_histo_sink_f.h b/gnuradio-core/src/lib/io/gr_histo_sink_f.h
deleted file mode 100644
index 934066ba20..0000000000
--- a/gnuradio-core/src/lib/io/gr_histo_sink_f.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2009 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_GR_HISTO_SINK_F_H
-#define INCLUDED_GR_HISTO_SINK_F_H
-
-#include <gr_core_api.h>
-#include <gr_sync_block.h>
-#include <gr_msg_queue.h>
-#include <gruel/thread.h>
-
-class gr_histo_sink_f;
-typedef boost::shared_ptr<gr_histo_sink_f> gr_histo_sink_f_sptr;
-
-GR_CORE_API gr_histo_sink_f_sptr gr_make_histo_sink_f (gr_msg_queue_sptr msgq);
-
-/*!
- * \brief Histogram module.
- * \ingroup sink_blk
- */
-class GR_CORE_API gr_histo_sink_f : public gr_sync_block
-{
-private:
-  gr_msg_queue_sptr	d_msgq;
-  unsigned int d_num_bins;
-  unsigned int d_frame_size;
-  unsigned int d_sample_count;
-  unsigned int *d_bins;
-  float *d_samps;
-  gruel::mutex d_mutex;
-
-  friend GR_CORE_API gr_histo_sink_f_sptr gr_make_histo_sink_f (gr_msg_queue_sptr msgq);
-  gr_histo_sink_f (gr_msg_queue_sptr msgq);
-  void send_frame(void);
-  void clear(void);
-
-public:
-  ~gr_histo_sink_f (void);
-
-  int work (int noutput_items,
-    gr_vector_const_void_star &input_items,
-    gr_vector_void_star &output_items);
-
-  unsigned int get_frame_size(void);
-  unsigned int get_num_bins(void);
-
-  void set_frame_size(unsigned int frame_size);
-  void set_num_bins(unsigned int num_bins);
-
-};
-
-#endif /* INCLUDED_GR_HISTO_SINK_F_H */
diff --git a/gnuradio-core/src/lib/io/gr_oscope_guts.cc b/gnuradio-core/src/lib/io/gr_oscope_guts.cc
deleted file mode 100644
index a5ea3002a9..0000000000
--- a/gnuradio-core/src/lib/io/gr_oscope_guts.cc
+++ /dev/null
@@ -1,437 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2003,2005 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <gr_oscope_guts.h>
-#include <stdexcept>
-#include <stdio.h>
-#include <algorithm>
-#include <unistd.h>
-#include <math.h>
-#include <assert.h>
-
-/*
- * Bad performance if it's large, and flaky triggering if it's too small
- */
-static const int OUTPUT_RECORD_SIZE = 1024;  // Must be power of 2
-
-/*
- * For (slow-updated) STRIPCHART triggering, we make the record size larger, since we
- *   potentially want to be able to "see" hours of data.  This works as long as the
- *   update rates to a STRIPCHART are low, which they generally are--that's rather what
- *   a stripchart is all about!
- */
-static const int SCHART_MULT = 8;
-
-
-static inline int
-wrap_bi (int buffer_index, int mx)                // wrap buffer index
-{
-  return buffer_index & (mx - 1);
-}
-
-static inline int
-incr_bi (int buffer_index, int mx)                // increment buffer index
-{
-  return wrap_bi (buffer_index + 1, mx);
-}
-
-static inline int
-decr_bi (int buffer_index, int mx)                // decrement buffer index
-{
-  return wrap_bi (buffer_index - 1, mx);
-}
-
-gr_oscope_guts::gr_oscope_guts (double sample_rate, gr_msg_queue_sptr msgq)
-  : d_nchannels (1),
-    d_msgq (msgq),
-    d_trigger_mode (gr_TRIG_MODE_AUTO),
-    d_trigger_slope (gr_TRIG_SLOPE_POS),
-    d_trigger_channel (0),
-    d_sample_rate (sample_rate),
-    d_update_rate (20),
-    d_trigger_level (0),
-    d_obi (0),
-    d_state (HOLD_OFF),
-    d_decimator_count (0),
-    d_decimator_count_init (1),
-    d_hold_off_count (0),
-    d_hold_off_count_init (OUTPUT_RECORD_SIZE/2-1),
-    d_pre_trigger_count (0),
-    d_post_trigger_count (0),
-    d_post_trigger_count_init (OUTPUT_RECORD_SIZE/2)
-{
-  for (int i = 0; i < MAX_CHANNELS; i++)
-    d_buffer[i] = 0;
-
-  for (int i = 0; i < MAX_CHANNELS; i++){
-    d_buffer[i] = new float [OUTPUT_RECORD_SIZE*SCHART_MULT];
-    for (int j = 0; j < OUTPUT_RECORD_SIZE*SCHART_MULT; j++)
-      d_buffer[i][j] = 0.0;
-  }
-
-  // be sure buffer is full before first write
-  enter_hold_off ();
-  update_rate_or_decimation_changed ();
-}
-
-gr_oscope_guts::~gr_oscope_guts ()
-{
-  for (int i = 0; i < MAX_CHANNELS; i++)
-    delete [] d_buffer[i];
-}
-
-// MANIPULATORS
-
-// \p channel_data points to nchannels float values.  These are the values
-// for each channel at this sample time.
-
-void
-gr_oscope_guts::process_sample (const float *channel_data)
-{
-  d_decimator_count--;
-  if (d_decimator_count > 0)
-    return;
-
-  d_decimator_count = d_decimator_count_init;
-
-  if (d_trigger_mode != gr_TRIG_MODE_STRIPCHART)
-  {
-	  for (int i = 0; i < d_nchannels; i++)
-		d_buffer[i][d_obi] = channel_data[i];                // copy data into buffer
-
-	  switch (d_state){
-	  case HOLD_OFF:
-		d_hold_off_count--;
-		if (d_hold_off_count <= 0)
-		  enter_look_for_trigger ();
-		break;
-
-	  case LOOK_FOR_TRIGGER:
-		if (found_trigger ())
-		  enter_post_trigger ();
-		break;
-
-	  case POST_TRIGGER:
-		d_post_trigger_count--;
-		if (d_post_trigger_count <= 0){
-		  write_output_records ();
-		  enter_hold_off ();
-		}
-		break;
-
-	  default:
-		assert (0);
-	  }
-
-	  d_obi = incr_bi (d_obi, OUTPUT_RECORD_SIZE);
-  }
-  else
-  {
-	  for (int i = 0; i < d_nchannels; i++)
-	  {
-	    for (int j = (OUTPUT_RECORD_SIZE*SCHART_MULT)-1; j > 0; j--)
-	    {
-			d_buffer[i][j] = d_buffer[i][j-1];
-		}
-		d_buffer[i][0] = channel_data[i];
-	  }
-	  d_trigger_off = 0;
-	  write_output_records();
-  }
-}
-
-/*
- * Functions called on state entry
- */
-
-void
-gr_oscope_guts::enter_hold_off ()
-{
-  d_state = HOLD_OFF;
-  d_hold_off_count = d_hold_off_count_init;
-}
-
-void
-gr_oscope_guts::enter_look_for_trigger ()
-{
-  d_pre_trigger_count = 0;
-  d_state = LOOK_FOR_TRIGGER;
-}
-
-void
-gr_oscope_guts::enter_post_trigger ()
-{
-  d_state = POST_TRIGGER;
-  d_post_trigger_count = d_post_trigger_count_init;
-  //ensure that the trigger offset is no more than than half a sample
-  if (d_trigger_off > .5) d_trigger_off -= 1;
-  else d_post_trigger_count--;
-}
-
-// ----------------------------------------------------------------
-// returns true if trigger found
-
-bool
-gr_oscope_guts::found_trigger ()
-{
-	int mx = d_trigger_mode == gr_TRIG_MODE_STRIPCHART ? OUTPUT_RECORD_SIZE*SCHART_MULT :
-		OUTPUT_RECORD_SIZE;
-
-  float prev_sample = d_buffer[d_trigger_channel][decr_bi(d_obi, mx)];
-  float new_sample = d_buffer[d_trigger_channel][d_obi];
-
-  switch (d_trigger_mode){
-
-  case gr_TRIG_MODE_AUTO: //too many samples without a trigger
-    d_pre_trigger_count++;
-    if (d_pre_trigger_count > OUTPUT_RECORD_SIZE/2) return true;
-
-  case gr_TRIG_MODE_NORM: //look for trigger
-    switch (d_trigger_slope){
-
-    case gr_TRIG_SLOPE_POS: //trigger point in pos slope?
-      if (new_sample < d_trigger_level || prev_sample >= d_trigger_level) return false;
-      break;
-
-    case gr_TRIG_SLOPE_NEG: //trigger point in neg slope?
-      if (new_sample > d_trigger_level || prev_sample <= d_trigger_level) return false;
-      break;
-    }
-
-    //calculate the trigger offset in % sample
-    d_trigger_off = (d_trigger_level - prev_sample)/(new_sample - prev_sample);
-    return true;
-
-  case gr_TRIG_MODE_FREE: //free run mode, always trigger
-    d_trigger_off = 0;
-    return true;
-
-  default:
-    assert (0);
-    return false;
-  }
-}
-
-// ----------------------------------------------------------------
-// write output records (duh!)
-
-void
-gr_oscope_guts::write_output_records ()
-{
-	int mx;
-
-	mx = d_trigger_mode == gr_TRIG_MODE_STRIPCHART ?
-		OUTPUT_RECORD_SIZE*SCHART_MULT : OUTPUT_RECORD_SIZE;
-
-  // if the output queue if full, drop the data like its hot.
-  if (d_msgq->full_p())
-    return;
-    // Build a message to hold the output records
-  gr_message_sptr msg =
-    gr_make_message(0,                                         // msg type
-            d_nchannels,                                       // arg1 for other side
-            mx,                                // arg2 for other side
-            ((d_nchannels * mx) + 1) * sizeof(float)); // sizeof payload
-
-  float *out = (float *)msg->msg();        // get pointer to raw message buffer
-
-  for (int ch = 0; ch < d_nchannels; ch++){
-    // note that d_obi + 1 points at the oldest sample in the buffer
-    for (int i = 0; i < mx; i++){
-      out[i] = d_buffer[ch][wrap_bi(d_obi + 1 + i, mx)];
-    }
-    out += mx;
-  }
-  //Set the last sample as the trigger offset:
-  //  The non gl scope sink will not look at this last sample.
-  //  The gl scope sink will use this last sample as an offset.
-  out[0] = d_trigger_off;
-  d_msgq->handle(msg);                // send the msg
-}
-
-// ----------------------------------------------------------------
-
-bool
-gr_oscope_guts::set_update_rate (double update_rate)
-{
-  d_update_rate = std::min (std::max (1./10., update_rate), d_sample_rate);
-  update_rate_or_decimation_changed ();
-  return true;
-}
-
-bool
-gr_oscope_guts::set_decimation_count (int decimator_count)
-{
-  decimator_count = std::max (1, decimator_count);
-  d_decimator_count_init = decimator_count;
-  update_rate_or_decimation_changed ();
-  return true;
-}
-
-bool
-gr_oscope_guts::set_sample_rate(double sample_rate)
-{
-  d_sample_rate = sample_rate;
-  return set_update_rate(update_rate());
-}
-
-
-void
-gr_oscope_guts::update_rate_or_decimation_changed ()
-{
-  d_hold_off_count_init =
-    (int) rint (d_sample_rate / d_update_rate / d_decimator_count_init);
-}
-
-bool
-gr_oscope_guts::set_trigger_channel (int channel)
-{
-  if (channel >= 0 && channel < d_nchannels){
-    d_trigger_channel = channel;
-    trigger_changed ();
-    return true;
-  }
-
-  return false;
-}
-
-bool
-gr_oscope_guts::set_trigger_mode (gr_trigger_mode mode)
-{
-  d_trigger_mode = mode;
-  trigger_changed ();
-  return true;
-}
-
-bool
-gr_oscope_guts::set_trigger_slope (gr_trigger_slope slope)
-{
-  d_trigger_slope = slope;
-  trigger_changed ();
-  return true;
-}
-
-bool
-gr_oscope_guts::set_trigger_level (double trigger_level)
-{
-  d_trigger_level = trigger_level;
-  trigger_changed ();
-  return true;
-}
-
-bool
-gr_oscope_guts::set_trigger_level_auto ()
-{
-  // find the level 1/2 way between the min and the max
-
-  float min_v = d_buffer[d_trigger_channel][0];
-  float max_v = d_buffer[d_trigger_channel][0];
-
-  for (int i = 1; i < OUTPUT_RECORD_SIZE; i++){
-    min_v = std::min (min_v, d_buffer[d_trigger_channel][i]);
-    max_v = std::max (max_v, d_buffer[d_trigger_channel][i]);
-  }
-  return set_trigger_level((min_v + max_v) * 0.5);
-}
-
-bool
-gr_oscope_guts::set_num_channels(int nchannels)
-{
-  if (nchannels > 0 && nchannels <= MAX_CHANNELS){
-    d_nchannels = nchannels;
-    return true;
-  }
-  return false;
-}
-
-
-void
-gr_oscope_guts::trigger_changed ()
-{
-  enter_look_for_trigger ();
-}
-
-// ACCESSORS
-
-int
-gr_oscope_guts::num_channels () const
-{
-  return d_nchannels;
-}
-
-double
-gr_oscope_guts::sample_rate () const
-{
-  return d_sample_rate;
-}
-
-double
-gr_oscope_guts::update_rate () const
-{
-  return d_update_rate;
-}
-
-int
-gr_oscope_guts::get_decimation_count () const
-{
-  return d_decimator_count_init;
-}
-
-int
-gr_oscope_guts::get_trigger_channel () const
-{
-  return d_trigger_channel;
-}
-
-gr_trigger_mode
-gr_oscope_guts::get_trigger_mode () const
-{
-  return d_trigger_mode;
-}
-
-gr_trigger_slope
-gr_oscope_guts::get_trigger_slope () const
-{
-  return d_trigger_slope;
-}
-
-double
-gr_oscope_guts::get_trigger_level () const
-{
-  return d_trigger_level;
-}
-
-int
-gr_oscope_guts::get_samples_per_output_record () const
-{
-	int mx;
-
-	mx = OUTPUT_RECORD_SIZE;
-	if (d_trigger_mode == gr_TRIG_MODE_STRIPCHART)
-	{
-		mx = OUTPUT_RECORD_SIZE*SCHART_MULT;
-	}
-  return mx;
-}
diff --git a/gnuradio-core/src/lib/io/gr_oscope_guts.h b/gnuradio-core/src/lib/io/gr_oscope_guts.h
deleted file mode 100644
index bc9513c7e7..0000000000
--- a/gnuradio-core/src/lib/io/gr_oscope_guts.h
+++ /dev/null
@@ -1,123 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2003,2005 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-
-#ifndef INCLUDED_GR_OSCOPE_GUTS_H
-#define INCLUDED_GR_OSCOPE_GUTS_H
-
-#include <gr_core_api.h>
-#include <gr_trigger_mode.h>
-#include <gr_msg_queue.h>
-
-/*!
- * \brief guts of oscilloscope trigger and buffer module
- *
- * This module processes sets of samples provided the \p process_sample
- * method.  When appropriate given the updateRate, sampleRate and
- * trigger conditions, process_sample will periodically write output
- * records of captured data to output_fd.  For each trigger event,
- * nchannels records will be written.  Each record consists of
- * get_samples_per_output_record binary floats.  The trigger instant
- * occurs at the 1/2 way point in the buffer.  Thus, output records
- * consist of 50% pre-trigger data and 50% post-trigger data.
- */
-
-class GR_CORE_API gr_oscope_guts {
-public:
-  static const int	MAX_CHANNELS = 8;
-private:
-  enum scope_state 	{ HOLD_OFF, LOOK_FOR_TRIGGER, POST_TRIGGER };
-
-  int			d_nchannels;		// how many channels
-  gr_msg_queue_sptr	d_msgq;			// message queue we stuff output records into
-  gr_trigger_mode	d_trigger_mode;
-  gr_trigger_slope	d_trigger_slope;
-  int			d_trigger_channel;	// which channel to watch for trigger condition
-  double		d_sample_rate;		// input sample rate in Hz
-  double		d_update_rate;		// approx freq to produce an output record (Hz)
-  double		d_trigger_level;
-
-  int			d_obi;			// output buffer index
-  float		       *d_buffer[MAX_CHANNELS];
-
-  scope_state		d_state;
-  int			d_decimator_count;
-  int			d_decimator_count_init;
-  int			d_hold_off_count;
-  int			d_hold_off_count_init;
-  int			d_pre_trigger_count;
-  int			d_post_trigger_count;
-  int			d_post_trigger_count_init;
-  float			d_trigger_off;			//%sample trigger is off
-
-  // NOT IMPLEMENTED
-  gr_oscope_guts (const gr_oscope_guts &rhs);			// no copy constructor
-  gr_oscope_guts &operator= (const gr_oscope_guts &rhs);	// no assignment operator
-
-  void trigger_changed ();
-  void update_rate_or_decimation_changed ();
-  bool found_trigger ();	// returns true if found
-  void write_output_records ();
-
-  void enter_hold_off ();			// called on state entry
-  void enter_look_for_trigger ();
-  void enter_post_trigger ();
-
-public:
-  // CREATORS
-  gr_oscope_guts (double sample_rate, gr_msg_queue_sptr msgq);
-  ~gr_oscope_guts ();
-
-  // MANIPULATORS
-
-  /*!
-   * \p channel_data points to nchannels float values.  These are the values
-   * for each channel at this sample time.
-   */
-  void process_sample (const float *channel_data);
-
-  bool set_update_rate (double update_rate);
-  bool set_decimation_count (int decimation_count);
-  bool set_trigger_channel (int channel);
-  bool set_trigger_mode (gr_trigger_mode mode);
-  bool set_trigger_slope (gr_trigger_slope slope);
-  bool set_trigger_level (double trigger_level);
-  bool set_trigger_level_auto ();				// set to 50% level
-  bool set_sample_rate(double sample_rate);
-  bool set_num_channels(int nchannels);
-
-
-  // ACCESSORS
-  int num_channels () const;
-  double sample_rate () const;
-  double update_rate () const;
-  int get_decimation_count () const;
-  int get_trigger_channel () const;
-  gr_trigger_mode get_trigger_mode () const;
-  gr_trigger_slope get_trigger_slope () const;
-  double get_trigger_level () const;
-
-  // # of samples written to each output record.
-  int get_samples_per_output_record () const;
-};
-
-#endif /* INCLUDED_GR_OSCOPE_GUTS_H */
diff --git a/gnuradio-core/src/lib/io/gr_oscope_sink.i b/gnuradio-core/src/lib/io/gr_oscope_sink.i
deleted file mode 100644
index 3d7072ed45..0000000000
--- a/gnuradio-core/src/lib/io/gr_oscope_sink.i
+++ /dev/null
@@ -1,77 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2004 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-%include gr_trigger_mode.h
-
-// GR_SWIG_BLOCK_MAGIC(gr,oscope_sink_x)
-
-%ignore gr_oscope_sink_x;
-class gr_oscope_sink_x : public gr_sync_block
-{
- protected:
-  gr_oscope_sink_x (const std::string name,
-		    gr_io_signature_sptr input_sig,
-		    double sample_rate);
-
- public:
-  ~gr_oscope_sink_x ();
-
-  bool set_update_rate (double update_rate);
-  bool set_decimation_count (int decimation_count);
-  bool set_trigger_channel (int channel);
-  bool set_trigger_mode (gr_trigger_mode mode);
-  bool set_trigger_slope (gr_trigger_slope slope);
-  bool set_trigger_level (double trigger_level);
-  bool set_trigger_level_auto ();				// set to 50% level
-  bool set_sample_rate(double sample_rate);
-
-  // ACCESSORS
-  int num_channels () const;
-  double sample_rate () const;
-  double update_rate () const;
-  int get_decimation_count () const;
-  int get_trigger_channel () const;
-  gr_trigger_mode get_trigger_mode () const;
-  gr_trigger_slope get_trigger_slope () const;
-  double get_trigger_level () const;
-
-  // # of samples written to each output record.
-  int get_samples_per_output_record () const;
-};
-
-// ----------------------------------------------------------------
-
-GR_SWIG_BLOCK_MAGIC(gr,oscope_sink_f)
-
-gr_oscope_sink_f_sptr
-gr_make_oscope_sink_f (double sample_rate, gr_msg_queue_sptr msgq);
-
-class gr_oscope_sink_f : public gr_oscope_sink_x
-{
-private:
-  gr_oscope_sink_f (double sample_rate, gr_msg_queue_sptr msgq);
-
-public:
-  ~gr_oscope_sink_f ();
-};
-
-// ----------------------------------------------------------------
diff --git a/gnuradio-core/src/lib/io/gr_oscope_sink_f.cc b/gnuradio-core/src/lib/io/gr_oscope_sink_f.cc
deleted file mode 100644
index 493a25e81e..0000000000
--- a/gnuradio-core/src/lib/io/gr_oscope_sink_f.cc
+++ /dev/null
@@ -1,78 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2003,2004,2005,2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <gr_oscope_sink_f.h>
-#include <gr_io_signature.h>
-#include <gr_oscope_guts.h>
-
-
-gr_oscope_sink_f_sptr
-gr_make_oscope_sink_f (double sampling_rate, gr_msg_queue_sptr msgq)
-{
-  return gnuradio::get_initial_sptr(new gr_oscope_sink_f (sampling_rate, msgq));
-}
-
-
-gr_oscope_sink_f::gr_oscope_sink_f (double sampling_rate, gr_msg_queue_sptr msgq)
-  : gr_oscope_sink_x ("oscope_sink_f",
-		      gr_make_io_signature (1, gr_oscope_guts::MAX_CHANNELS, sizeof (float)),
-		      sampling_rate),
-    d_msgq(msgq)
-{
-  d_guts = new gr_oscope_guts (d_sampling_rate, d_msgq);
-}
-
-
-bool
-gr_oscope_sink_f::check_topology (int ninputs, int noutputs)
-{
-  return d_guts->set_num_channels(ninputs);
-}
-
-
-gr_oscope_sink_f::~gr_oscope_sink_f ()
-{
-}
-
-int
-gr_oscope_sink_f::work (int noutput_items,
-			gr_vector_const_void_star &input_items,
-			gr_vector_void_star &output_items)
-{
-  int	  ni = input_items.size ();
-  float	  tmp[gr_oscope_guts::MAX_CHANNELS];
-
-  for (int i = 0; i < noutput_items; i++){
-
-    // FIXME for now, copy the data.  Fix later if reqd
-    for (int ch = 0; ch < ni; ch++)
-      tmp[ch] = ((const float *) input_items[ch])[i];
-
-    d_guts->process_sample (tmp);
-  }
-
-  return noutput_items;
-}
diff --git a/gnuradio-core/src/lib/io/gr_oscope_sink_f.h b/gnuradio-core/src/lib/io/gr_oscope_sink_f.h
deleted file mode 100644
index 8d434d2bc4..0000000000
--- a/gnuradio-core/src/lib/io/gr_oscope_sink_f.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2003,2004,2005 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_GR_OSCOPE_SINK_F_H
-#define INCLUDED_GR_OSCOPE_SINK_F_H
-
-#include <gr_core_api.h>
-#include <gr_oscope_sink_x.h>
-#include <gr_msg_queue.h>
-
-class gr_oscope_sink_f;
-typedef boost::shared_ptr<gr_oscope_sink_x> gr_oscope_sink_f_sptr;
-
-GR_CORE_API gr_oscope_sink_f_sptr gr_make_oscope_sink_f (double sampling_rate, gr_msg_queue_sptr msgq);
-
-
-/*!
- * \brief Building block for python oscilloscope module.
- * \ingroup sink_blk
- *
- * Accepts multiple float streams.
- */
-class GR_CORE_API gr_oscope_sink_f : public gr_oscope_sink_x
-{
-private:
-  friend GR_CORE_API gr_oscope_sink_f_sptr
-  gr_make_oscope_sink_f (double sampling_rate, gr_msg_queue_sptr msgq);
-
-  gr_oscope_sink_f (double sampling_rate, gr_msg_queue_sptr msgq);
-
-  gr_msg_queue_sptr	d_msgq;
-
- public:
-  ~gr_oscope_sink_f ();
-
-  int work (int noutput_items,
-	    gr_vector_const_void_star &input_items,
-	    gr_vector_void_star &output_items);
-
-  bool check_topology (int ninputs, int noutputs);
-};
-
-#endif /* INCLUDED_GR_OSCOPE_SINK_F_H */
-
diff --git a/gnuradio-core/src/lib/io/gr_oscope_sink_x.cc b/gnuradio-core/src/lib/io/gr_oscope_sink_x.cc
deleted file mode 100644
index 9580dbf6a3..0000000000
--- a/gnuradio-core/src/lib/io/gr_oscope_sink_x.cc
+++ /dev/null
@@ -1,156 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2003,2004 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <gr_oscope_sink_x.h>
-#include <gr_io_signature.h>
-#include <gr_oscope_guts.h>
-
-
-gr_oscope_sink_x::gr_oscope_sink_x (const std::string name,
-				    gr_io_signature_sptr input_sig,
-				    double sampling_rate)
-  : gr_sync_block (name, input_sig, gr_make_io_signature (0, 0, 0)),
-    d_sampling_rate (sampling_rate), d_guts (0)
-{
-}
-
-gr_oscope_sink_x::~gr_oscope_sink_x ()
-{
-  delete d_guts;
-}
-
-// ----------------------------------------------------------------
-
-bool
-gr_oscope_sink_x::set_update_rate (double update_rate)
-{
-  return d_guts->set_update_rate (update_rate);
-}
-
-bool
-gr_oscope_sink_x::set_decimation_count (int decimation_count)
-{
-  return d_guts->set_decimation_count (decimation_count);
-}
-
-bool
-gr_oscope_sink_x::set_trigger_channel (int channel)
-{
-  return d_guts->set_trigger_channel (channel);
-}
-
-bool
-gr_oscope_sink_x::set_trigger_mode (gr_trigger_mode mode)
-{
-  return d_guts->set_trigger_mode (mode);
-}
-
-bool
-gr_oscope_sink_x::set_trigger_slope (gr_trigger_slope slope)
-{
-  return d_guts->set_trigger_slope (slope);
-}
-
-bool
-gr_oscope_sink_x::set_trigger_level (double trigger_level)
-{
-  return d_guts->set_trigger_level (trigger_level);
-}
-
-
-bool
-gr_oscope_sink_x::set_trigger_level_auto ()
-{
-  return d_guts->set_trigger_level_auto ();
-}
-
-bool
-gr_oscope_sink_x::set_sample_rate (double sample_rate)
-{
-  return d_guts->set_sample_rate (sample_rate);
-}
-
-bool
-gr_oscope_sink_x::set_num_channels (int nchannels)
-{
-  return d_guts->set_num_channels (nchannels);
-}
-
-// ACCESSORS
-
-int
-gr_oscope_sink_x::num_channels () const
-{
-  return d_guts->num_channels ();
-}
-
-double
-gr_oscope_sink_x::sample_rate () const
-{
-  return d_guts->sample_rate ();
-}
-
-double
-gr_oscope_sink_x::update_rate () const
-{
-  return d_guts->update_rate ();
-}
-
-int
-gr_oscope_sink_x::get_decimation_count () const
-{
-  return d_guts->get_decimation_count ();
-}
-
-int
-gr_oscope_sink_x::get_trigger_channel () const
-{
-  return d_guts->get_trigger_channel ();
-}
-
-gr_trigger_mode
-gr_oscope_sink_x::get_trigger_mode () const
-{
-  return d_guts->get_trigger_mode ();
-}
-
-gr_trigger_slope
-gr_oscope_sink_x::get_trigger_slope () const
-{
-  return d_guts->get_trigger_slope ();
-}
-
-double
-gr_oscope_sink_x::get_trigger_level () const
-{
-  return d_guts->get_trigger_level ();
-}
-
-int
-gr_oscope_sink_x::get_samples_per_output_record () const
-{
-  return d_guts->get_samples_per_output_record ();
-}
diff --git a/gnuradio-core/src/lib/io/gr_oscope_sink_x.h b/gnuradio-core/src/lib/io/gr_oscope_sink_x.h
deleted file mode 100644
index 153d0937ab..0000000000
--- a/gnuradio-core/src/lib/io/gr_oscope_sink_x.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2003,2004 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_GR_OSCOPE_SINK_X_H
-#define INCLUDED_GR_OSCOPE_SINK_X_H
-
-#include <gr_core_api.h>
-#include <gr_sync_block.h>
-#include <gr_trigger_mode.h>
-
-class gr_oscope_guts;
-
-/*!
- * \brief Abstract class for python oscilloscope module.
- * \ingroup sink_blk
- *
- * Don't instantiate this.  Use gr_oscope_sink_f or gr_oscope_sink_c instead.
- */
-class GR_CORE_API gr_oscope_sink_x : public gr_sync_block
-{
-protected:
-  double			 d_sampling_rate;
-  gr_oscope_guts		*d_guts;
-
-  gr_oscope_sink_x (const std::string name,
-		    gr_io_signature_sptr input_sig,
-		    double sampling_rate);
-
-public:
-  ~gr_oscope_sink_x ();
-
-  bool set_update_rate (double update_rate);
-  bool set_decimation_count (int decimation_count);
-  bool set_trigger_channel (int channel);
-  bool set_trigger_mode (gr_trigger_mode mode);
-  bool set_trigger_slope (gr_trigger_slope slope);
-  bool set_trigger_level (double trigger_level);
-  bool set_trigger_level_auto ();				// set to 50% level
-  bool set_sample_rate(double sample_rate);
-  bool set_num_channels (int nchannels);
-
-
-  // ACCESSORS
-  int num_channels () const;
-  double sample_rate () const;
-  double update_rate () const;
-  int get_decimation_count () const;
-  int get_trigger_channel () const;
-  gr_trigger_mode get_trigger_mode () const;
-  gr_trigger_slope get_trigger_slope () const;
-  double get_trigger_level () const;
-
-  // # of samples written to each output record.
-  int get_samples_per_output_record () const;
-
-};
-
-#endif /* INCLUDED_GR_OSCOPE_SINK_X_H */
diff --git a/gnuradio-core/src/lib/io/gr_trigger_mode.h b/gnuradio-core/src/lib/io/gr_trigger_mode.h
deleted file mode 100644
index be131686b4..0000000000
--- a/gnuradio-core/src/lib/io/gr_trigger_mode.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2003,2004 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_GR_TRIGGER_MODE_H
-#define INCLUDED_GR_TRIGGER_MODE_H
-
-enum gr_trigger_mode {
-  gr_TRIG_MODE_FREE,
-  gr_TRIG_MODE_AUTO,
-  gr_TRIG_MODE_NORM,
-  gr_TRIG_MODE_STRIPCHART,
-};
-
-enum gr_trigger_slope {
-  gr_TRIG_SLOPE_POS,
-  gr_TRIG_SLOPE_NEG,
-};
-
-#endif /* INCLUDED_GR_TRIGGER_MODE_H */
diff --git a/gnuradio-core/src/lib/io/io.i b/gnuradio-core/src/lib/io/io.i
deleted file mode 100644
index 2c8def973c..0000000000
--- a/gnuradio-core/src/lib/io/io.i
+++ /dev/null
@@ -1,37 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2004,2007 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-%{
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <gr_histo_sink_f.h>
-#include <gr_oscope_sink_x.h>
-#include <gr_oscope_sink_f.h>
-%}
-
-%include "gr_histo_sink.i"
-%include "gr_oscope_sink.i"
-
-
diff --git a/gnuradio-core/src/lib/swig/CMakeLists.txt b/gnuradio-core/src/lib/swig/CMakeLists.txt
index a397339eeb..f098597df0 100644
--- a/gnuradio-core/src/lib/swig/CMakeLists.txt
+++ b/gnuradio-core/src/lib/swig/CMakeLists.txt
@@ -60,7 +60,7 @@ link_directories(${Boost_LIBRARY_DIRS})
 set(GR_SWIG_TARGET_DEPS gnuradio_core_generated_sources
   general_generated filter_generated pmt_swig)
 
-foreach(what runtime general io)
+foreach(what runtime general)
     SET(GR_SWIG_DOC_FILE ${CMAKE_CURRENT_BINARY_DIR}/${what}_swig_doc.i)
     SET(GR_SWIG_DOC_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../${what} ${CMAKE_CURRENT_BINARY_DIR}/../${what})
     GR_SWIG_MAKE(gnuradio_core_${what} gnuradio_core_${what}.i)
diff --git a/gnuradio-core/src/lib/swig/gnuradio_core.py b/gnuradio-core/src/lib/swig/gnuradio_core.py
index 98e415f31a..09d00fcdc1 100644
--- a/gnuradio-core/src/lib/swig/gnuradio_core.py
+++ b/gnuradio-core/src/lib/swig/gnuradio_core.py
@@ -22,4 +22,3 @@
 
 from gnuradio_core_runtime import *
 from gnuradio_core_general import *
-from gnuradio_core_io import *
diff --git a/gnuradio-core/src/lib/swig/gnuradio_core_io.i b/gnuradio-core/src/lib/swig/gnuradio_core_io.i
deleted file mode 100644
index 522b12b347..0000000000
--- a/gnuradio-core/src/lib/swig/gnuradio_core_io.i
+++ /dev/null
@@ -1,32 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006,2009,2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-%include "io_swig_doc.i"
-
-#ifndef SWIGIMPORTED
-%module(directors="1") gnuradio_core_io
-#endif
-
- //%feature("autodoc", "1");		// generate python docstrings
-
-%include "gnuradio.i"				// the common stuff
-
-%include "io.i"
diff --git a/gr-audio/examples/grc/cvsd_sweep.grc b/gr-audio/examples/grc/cvsd_sweep.grc
index 496fd4f8e7..00da399da1 100644
--- a/gr-audio/examples/grc/cvsd_sweep.grc
+++ b/gr-audio/examples/grc/cvsd_sweep.grc
@@ -520,7 +520,7 @@
     </param>
     <param>
       <key>trig_mode</key>
-      <value>gr.gr_TRIG_MODE_AUTO</value>
+      <value>wxgui.TRIG_MODE_AUTO</value>
     </param>
     <param>
       <key>y_axis_label</key>
@@ -595,7 +595,7 @@
     </param>
     <param>
       <key>trig_mode</key>
-      <value>gr.gr_TRIG_MODE_AUTO</value>
+      <value>wxgui.TRIG_MODE_AUTO</value>
     </param>
     <param>
       <key>y_axis_label</key>
@@ -761,7 +761,7 @@
     </param>
     <param>
       <key>trig_mode</key>
-      <value>gr.gr_TRIG_MODE_AUTO</value>
+      <value>wxgui.TRIG_MODE_AUTO</value>
     </param>
     <param>
       <key>y_axis_label</key>
diff --git a/gr-digital/examples/demod/ber_simulation.grc b/gr-digital/examples/demod/ber_simulation.grc
index b216912a6f..d0bec741c3 100644
--- a/gr-digital/examples/demod/ber_simulation.grc
+++ b/gr-digital/examples/demod/ber_simulation.grc
@@ -537,7 +537,7 @@
     </param>
     <param>
       <key>trig_mode</key>
-      <value>gr.gr_TRIG_MODE_AUTO</value>
+      <value>wxgui.TRIG_MODE_AUTO</value>
     </param>
     <param>
       <key>y_axis_label</key>
diff --git a/gr-digital/examples/demod/digital_freq_lock.grc b/gr-digital/examples/demod/digital_freq_lock.grc
index 965768ece3..399d52488d 100644
--- a/gr-digital/examples/demod/digital_freq_lock.grc
+++ b/gr-digital/examples/demod/digital_freq_lock.grc
@@ -244,7 +244,7 @@
     </param>
     <param>
       <key>trig_mode</key>
-      <value>gr.gr_TRIG_MODE_AUTO</value>
+      <value>wxgui.TRIG_MODE_AUTO</value>
     </param>
     <param>
       <key>y_axis_label</key>
@@ -630,7 +630,7 @@
     </param>
     <param>
       <key>trig_mode</key>
-      <value>gr.gr_TRIG_MODE_AUTO</value>
+      <value>wxgui.TRIG_MODE_AUTO</value>
     </param>
     <param>
       <key>y_axis_label</key>
diff --git a/gr-digital/examples/demod/dpsk_loopback.grc b/gr-digital/examples/demod/dpsk_loopback.grc
index 9befa69b6c..daa076c47b 100644
--- a/gr-digital/examples/demod/dpsk_loopback.grc
+++ b/gr-digital/examples/demod/dpsk_loopback.grc
@@ -374,7 +374,7 @@
     </param>
     <param>
       <key>trig_mode</key>
-      <value>gr.gr_TRIG_MODE_AUTO</value>
+      <value>wxgui.TRIG_MODE_AUTO</value>
     </param>
     <param>
       <key>y_axis_label</key>
diff --git a/gr-digital/examples/demod/pam_sync.grc b/gr-digital/examples/demod/pam_sync.grc
index 693b112088..d8497e423d 100644
--- a/gr-digital/examples/demod/pam_sync.grc
+++ b/gr-digital/examples/demod/pam_sync.grc
@@ -228,7 +228,7 @@
     </param>
     <param>
       <key>trig_mode</key>
-      <value>gr.gr_TRIG_MODE_AUTO</value>
+      <value>wxgui.TRIG_MODE_AUTO</value>
     </param>
     <param>
       <key>y_axis_label</key>
@@ -1054,7 +1054,7 @@
     </param>
     <param>
       <key>trig_mode</key>
-      <value>gr.gr_TRIG_MODE_AUTO</value>
+      <value>wxgui.TRIG_MODE_AUTO</value>
     </param>
     <param>
       <key>y_axis_label</key>
diff --git a/gr-digital/examples/demod/pam_timing.grc b/gr-digital/examples/demod/pam_timing.grc
index 632477821a..50dd8a1c86 100644
--- a/gr-digital/examples/demod/pam_timing.grc
+++ b/gr-digital/examples/demod/pam_timing.grc
@@ -519,7 +519,7 @@
     </param>
     <param>
       <key>trig_mode</key>
-      <value>gr.gr_TRIG_MODE_AUTO</value>
+      <value>wxgui.TRIG_MODE_AUTO</value>
     </param>
     <param>
       <key>y_axis_label</key>
@@ -594,7 +594,7 @@
     </param>
     <param>
       <key>trig_mode</key>
-      <value>gr.gr_TRIG_MODE_AUTO</value>
+      <value>wxgui.TRIG_MODE_AUTO</value>
     </param>
     <param>
       <key>y_axis_label</key>
@@ -669,7 +669,7 @@
     </param>
     <param>
       <key>trig_mode</key>
-      <value>gr.gr_TRIG_MODE_AUTO</value>
+      <value>wxgui.TRIG_MODE_AUTO</value>
     </param>
     <param>
       <key>y_axis_label</key>
@@ -744,7 +744,7 @@
     </param>
     <param>
       <key>trig_mode</key>
-      <value>gr.gr_TRIG_MODE_AUTO</value>
+      <value>wxgui.TRIG_MODE_AUTO</value>
     </param>
     <param>
       <key>y_axis_label</key>
@@ -819,7 +819,7 @@
     </param>
     <param>
       <key>trig_mode</key>
-      <value>gr.gr_TRIG_MODE_AUTO</value>
+      <value>wxgui.TRIG_MODE_AUTO</value>
     </param>
     <param>
       <key>y_axis_label</key>
diff --git a/gr-howto-write-a-block/apps/howto_square.grc b/gr-howto-write-a-block/apps/howto_square.grc
index ee2c8db271..0eea15426c 100644
--- a/gr-howto-write-a-block/apps/howto_square.grc
+++ b/gr-howto-write-a-block/apps/howto_square.grc
@@ -143,7 +143,7 @@
     </param>
     <param>
       <key>trig_mode</key>
-      <value>gr.gr_TRIG_MODE_AUTO</value>
+      <value>wxgui.TRIG_MODE_AUTO</value>
     </param>
     <param>
       <key>y_axis_label</key>
@@ -303,7 +303,7 @@
     </param>
     <param>
       <key>trig_mode</key>
-      <value>gr.gr_TRIG_MODE_AUTO</value>
+      <value>wxgui.TRIG_MODE_AUTO</value>
     </param>
     <param>
       <key>y_axis_label</key>
diff --git a/gr-howto-write-a-block/apps/howto_square.py b/gr-howto-write-a-block/apps/howto_square.py
index 4a9bfe3f8e..818e776232 100755
--- a/gr-howto-write-a-block/apps/howto_square.py
+++ b/gr-howto-write-a-block/apps/howto_square.py
@@ -42,7 +42,7 @@ class howto_square(grc_wxgui.top_block_gui):
 			ac_couple=False,
 			xy_mode=False,
 			num_inputs=1,
-			trig_mode=gr.gr_TRIG_MODE_AUTO,
+			trig_mode=wxgui.TRIG_MODE_AUTO,
 			y_axis_label="Counts",
 		)
 		self.Add(self.sink2.win)
@@ -56,7 +56,7 @@ class howto_square(grc_wxgui.top_block_gui):
 			ac_couple=False,
 			xy_mode=False,
 			num_inputs=1,
-			trig_mode=gr.gr_TRIG_MODE_AUTO,
+			trig_mode=wxgui.TRIG_MODE_AUTO,
 			y_axis_label="Counts",
 		)
 		self.Add(self.sink.win)
diff --git a/gr-noaa/examples/usrp_rx_hrpt.grc b/gr-noaa/examples/usrp_rx_hrpt.grc
index 1f61a8880f..56d07446bf 100644
--- a/gr-noaa/examples/usrp_rx_hrpt.grc
+++ b/gr-noaa/examples/usrp_rx_hrpt.grc
@@ -1667,7 +1667,7 @@
     </param>
     <param>
       <key>trig_mode</key>
-      <value>gr.gr_TRIG_MODE_AUTO</value>
+      <value>wxgui.TRIG_MODE_AUTO</value>
     </param>
     <param>
       <key>y_axis_label</key>
diff --git a/gr-trellis/examples/grc/interference_cancellation.grc b/gr-trellis/examples/grc/interference_cancellation.grc
index 29452311c6..4555a244a9 100644
--- a/gr-trellis/examples/grc/interference_cancellation.grc
+++ b/gr-trellis/examples/grc/interference_cancellation.grc
@@ -969,7 +969,7 @@
     </param>
     <param>
       <key>trig_mode</key>
-      <value>gr.gr_TRIG_MODE_AUTO</value>
+      <value>wxgui.TRIG_MODE_AUTO</value>
     </param>
     <param>
       <key>y_axis_label</key>
diff --git a/gr-trellis/examples/grc/pccc.grc b/gr-trellis/examples/grc/pccc.grc
index 359cfefc83..c0e587a09e 100644
--- a/gr-trellis/examples/grc/pccc.grc
+++ b/gr-trellis/examples/grc/pccc.grc
@@ -389,7 +389,7 @@
     </param>
     <param>
       <key>trig_mode</key>
-      <value>gr.gr_TRIG_MODE_AUTO</value>
+      <value>wxgui.TRIG_MODE_AUTO</value>
     </param>
     <param>
       <key>y_axis_label</key>
diff --git a/gr-trellis/examples/grc/pccc1.grc b/gr-trellis/examples/grc/pccc1.grc
index 8f58404794..4507cae890 100644
--- a/gr-trellis/examples/grc/pccc1.grc
+++ b/gr-trellis/examples/grc/pccc1.grc
@@ -389,7 +389,7 @@
     </param>
     <param>
       <key>trig_mode</key>
-      <value>gr.gr_TRIG_MODE_AUTO</value>
+      <value>wxgui.TRIG_MODE_AUTO</value>
     </param>
     <param>
       <key>y_axis_label</key>
diff --git a/gr-trellis/examples/grc/sccc.grc b/gr-trellis/examples/grc/sccc.grc
index ee532da9fe..ec84665c14 100644
--- a/gr-trellis/examples/grc/sccc.grc
+++ b/gr-trellis/examples/grc/sccc.grc
@@ -395,7 +395,7 @@
     </param>
     <param>
       <key>trig_mode</key>
-      <value>gr.gr_TRIG_MODE_AUTO</value>
+      <value>wxgui.TRIG_MODE_AUTO</value>
     </param>
     <param>
       <key>y_axis_label</key>
diff --git a/gr-trellis/examples/grc/sccc1.grc b/gr-trellis/examples/grc/sccc1.grc
index fa6506ba18..332ec6bdd7 100644
--- a/gr-trellis/examples/grc/sccc1.grc
+++ b/gr-trellis/examples/grc/sccc1.grc
@@ -631,7 +631,7 @@
     </param>
     <param>
       <key>trig_mode</key>
-      <value>gr.gr_TRIG_MODE_AUTO</value>
+      <value>wxgui.TRIG_MODE_AUTO</value>
     </param>
     <param>
       <key>y_axis_label</key>
diff --git a/gr-uhd/apps/uhd_fft b/gr-uhd/apps/uhd_fft
index 800a5fab84..f16f2d71b5 100755
--- a/gr-uhd/apps/uhd_fft
+++ b/gr-uhd/apps/uhd_fft
@@ -38,6 +38,10 @@ except ImportError:
     sys.stderr.write("Error importing GNU Radio's wxgui. Please make sure gr-wxgui is installed.\n")
     sys.exit(1)
 
+import os
+print os.getpid()
+raw_input()
+
 class app_top_block(stdgui2.std_top_block):
     def __init__(self, frame, panel, vbox, argv):
         stdgui2.std_top_block.__init__(self, frame, panel, vbox, argv)
diff --git a/gr-uhd/examples/grc/uhd_dpsk_mod.grc b/gr-uhd/examples/grc/uhd_dpsk_mod.grc
index 9caafbb6ac..8387890372 100644
--- a/gr-uhd/examples/grc/uhd_dpsk_mod.grc
+++ b/gr-uhd/examples/grc/uhd_dpsk_mod.grc
@@ -226,7 +226,7 @@
     </param>
     <param>
       <key>trig_mode</key>
-      <value>gr.gr_TRIG_MODE_AUTO</value>
+      <value>wxgui.TRIG_MODE_AUTO</value>
     </param>
     <param>
       <key>y_axis_label</key>
diff --git a/gr-uhd/examples/grc/uhd_fft.grc b/gr-uhd/examples/grc/uhd_fft.grc
index 1db98ab8aa..08e5f70edb 100644
--- a/gr-uhd/examples/grc/uhd_fft.grc
+++ b/gr-uhd/examples/grc/uhd_fft.grc
@@ -1,6 +1,6 @@
 <?xml version='1.0' encoding='ASCII'?>
 <flow_graph>
-  <timestamp>Mon Mar 18 11:09:57 2013</timestamp>
+  <timestamp>Mon Mar 18 15:42:27 2013</timestamp>
   <block>
     <key>options</key>
     <param>
@@ -248,7 +248,7 @@
     </param>
     <param>
       <key>trig_mode</key>
-      <value>gr.gr_TRIG_MODE_AUTO</value>
+      <value>wxgui.TRIG_MODE_AUTO</value>
     </param>
     <param>
       <key>y_axis_label</key>
@@ -1488,7 +1488,7 @@
     </param>
     <param>
       <key>value</key>
-      <value></value>
+      <value>addr=192.168.11.2</value>
     </param>
     <param>
       <key>type</key>
diff --git a/gr-wxgui/CMakeLists.txt b/gr-wxgui/CMakeLists.txt
index 04c4a26569..52e0a7061d 100644
--- a/gr-wxgui/CMakeLists.txt
+++ b/gr-wxgui/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2011 Free Software Foundation, Inc.
+# Copyright 2011,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -22,8 +22,8 @@
 ########################################################################
 include(GrPython)
 
-GR_PYTHON_CHECK_MODULE("wx >= 2.8"  wx           "wx.version().split()[0] >= '2.8'"    WX_FOUND)
-GR_PYTHON_CHECK_MODULE("numpy"      numpy        True                                  NUMPY_FOUND)
+GR_PYTHON_CHECK_MODULE("wx >= 2.8" wx "wx.version().split()[0] >= '2.8'" WX_FOUND)
+GR_PYTHON_CHECK_MODULE("numpy" numpy True NUMPY_FOUND)
 
 ########################################################################
 # Register component
@@ -50,6 +50,13 @@ GR_REGISTER_COMPONENT("gr-wxgui" ENABLE_GR_WXGUI
 ########################################################################
 if(ENABLE_GR_WXGUI)
 
+GR_SET_GLOBAL(GR_WXGUI_INCLUDE_DIRS
+    ${CMAKE_CURRENT_SOURCE_DIR}/lib
+    ${CMAKE_CURRENT_SOURCE_DIR}/include
+    ${CMAKE_CURRENT_BINARY_DIR}/lib
+    ${CMAKE_CURRENT_BINARY_DIR}/include
+)
+
 ########################################################################
 # Setup CPack components
 ########################################################################
@@ -86,7 +93,10 @@ install(
 ########################################################################
 # Add subdirectories
 ########################################################################
+add_subdirectory(include/wxgui)
+add_subdirectory(lib)
 add_subdirectory(grc)
+add_subdirectory(swig)
 add_subdirectory(python)
 
 endif(ENABLE_GR_WXGUI)
diff --git a/gr-wxgui/grc/wxgui_constellationsink2.xml b/gr-wxgui/grc/wxgui_constellationsink2.xml
index f9df9d4acd..1c0789e2c0 100644
--- a/gr-wxgui/grc/wxgui_constellationsink2.xml
+++ b/gr-wxgui/grc/wxgui_constellationsink2.xml
@@ -9,6 +9,7 @@
 	<key>wxgui_constellationsink2</key>
 	<category>WX GUI Widgets</category>
 	<import>from gnuradio.wxgui import constsink_gl</import>
+        <import>from gnuradio import wxgui</import>
 	<make>#set $parent = $notebook() and 'self.%s.GetPage(%s)'%$notebook() or 'self'
 constsink_gl.const_sink_c(
 	$(parent).GetWin(),
diff --git a/gr-wxgui/grc/wxgui_fftsink2.xml b/gr-wxgui/grc/wxgui_fftsink2.xml
index ff5c47b85c..086f7de753 100644
--- a/gr-wxgui/grc/wxgui_fftsink2.xml
+++ b/gr-wxgui/grc/wxgui_fftsink2.xml
@@ -10,6 +10,7 @@
 	<category>WX GUI Widgets</category>
 	<import>from gnuradio.fft import window</import>
 	<import>from gnuradio.wxgui import fftsink2</import>
+        <import>from gnuradio import wxgui</import>
 	<make>#set $parent = $notebook() and 'self.%s.GetPage(%s)'%$notebook() or 'self'
 fftsink2.$(type.fcn)(
 	$(parent).GetWin(),
diff --git a/gr-wxgui/grc/wxgui_histosink2.xml b/gr-wxgui/grc/wxgui_histosink2.xml
index f4f6a29597..39237755e8 100644
--- a/gr-wxgui/grc/wxgui_histosink2.xml
+++ b/gr-wxgui/grc/wxgui_histosink2.xml
@@ -9,6 +9,7 @@
 	<key>wxgui_histosink2</key>
 	<category>WX GUI Widgets</category>
 	<import>from gnuradio.wxgui import histosink_gl</import>
+        <import>from gnuradio import wxgui</import>
 	<make>#set $parent = $notebook() and 'self.%s.GetPage(%s)'%$notebook() or 'self'
 histosink_gl.histo_sink_f(
 	$(parent).GetWin(),
diff --git a/gr-wxgui/grc/wxgui_numbersink2.xml b/gr-wxgui/grc/wxgui_numbersink2.xml
index 2559266101..8e47db26e2 100644
--- a/gr-wxgui/grc/wxgui_numbersink2.xml
+++ b/gr-wxgui/grc/wxgui_numbersink2.xml
@@ -9,6 +9,7 @@
 	<key>wxgui_numbersink2</key>
 	<category>WX GUI Widgets</category>
 	<import>from gnuradio.wxgui import numbersink2</import>
+        <import>from gnuradio import wxgui</import>
 	<make>#set $parent = $notebook() and 'self.%s.GetPage(%s)'%$notebook() or 'self'
 numbersink2.$(type.fcn)(
 	$(parent).GetWin(),
diff --git a/gr-wxgui/grc/wxgui_scopesink2.xml b/gr-wxgui/grc/wxgui_scopesink2.xml
index dbf983e112..596fe03397 100644
--- a/gr-wxgui/grc/wxgui_scopesink2.xml
+++ b/gr-wxgui/grc/wxgui_scopesink2.xml
@@ -9,7 +9,7 @@
 	<key>wxgui_scopesink2</key>
 	<category>WX GUI Widgets</category>
 	<import>from gnuradio.wxgui import scopesink2</import>
-	<import>from gnuradio import gr</import>
+	<import>from gnuradio import wxgui</import>
 	<make>#set $parent = $notebook() and 'self.%s.GetPage(%s)'%$notebook() or 'self'
 scopesink2.$(type.fcn)(
 	$(parent).GetWin(),
@@ -143,19 +143,19 @@ $(parent).GridAdd(self.$(id).win, $(', '.join(map(str, $grid_pos()))))
 		<type>enum</type>
 		<option>
 			<name>Auto</name>
-			<key>gr.gr_TRIG_MODE_AUTO</key>
+			<key>wxgui.TRIG_MODE_AUTO</key>
 		</option>
 		<option>
 			<name>Normal</name>
-			<key>gr.gr_TRIG_MODE_NORM</key>
+			<key>wxgui.TRIG_MODE_NORM</key>
 		</option>
 		<option>
 			<name>Freerun</name>
-			<key>gr.gr_TRIG_MODE_FREE</key>
+			<key>wxgui.TRIG_MODE_FREE</key>
 		</option>
 		<option>
 			<name>Stripchart</name>
-			<key>gr.gr_TRIG_MODE_STRIPCHART</key>
+			<key>wxgui.TRIG_MODE_STRIPCHART</key>
 		</option>
 	</param>
 	<param>
diff --git a/gr-wxgui/grc/wxgui_termsink.xml b/gr-wxgui/grc/wxgui_termsink.xml
index 3e35c75788..a13927926b 100644
--- a/gr-wxgui/grc/wxgui_termsink.xml
+++ b/gr-wxgui/grc/wxgui_termsink.xml
@@ -10,6 +10,7 @@
 	<category>WX GUI Widgets</category>
 
 	<import>from gnuradio.wxgui import termsink</import>
+        <import>from gnuradio import wxgui</import>
 
 	<make>#set $parent = $notebook() and 'self.%s.GetPage(%s)'%$notebook() or 'self'
 termsink.termsink(
diff --git a/gr-wxgui/grc/wxgui_waterfallsink2.xml b/gr-wxgui/grc/wxgui_waterfallsink2.xml
index c02901d336..971e90f413 100644
--- a/gr-wxgui/grc/wxgui_waterfallsink2.xml
+++ b/gr-wxgui/grc/wxgui_waterfallsink2.xml
@@ -10,6 +10,7 @@
 	<category>WX GUI Widgets</category>
 	<import>from gnuradio.fft import window</import>
 	<import>from gnuradio.wxgui import waterfallsink2</import>
+        <import>from gnuradio import wxgui</import>
 	<make>#set $parent = $notebook() and 'self.%s.GetPage(%s)'%$notebook() or 'self'
 waterfallsink2.$(type.fcn)(
 	$(parent).GetWin(),
diff --git a/gr-wxgui/include/wxgui/CMakeLists.txt b/gr-wxgui/include/wxgui/CMakeLists.txt
new file mode 100644
index 0000000000..fad84792e1
--- /dev/null
+++ b/gr-wxgui/include/wxgui/CMakeLists.txt
@@ -0,0 +1,32 @@
+# Copyright 2013 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING.  If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+
+########################################################################
+# Install header files
+########################################################################
+install(FILES
+    api.h
+    histo_sink_f.h
+    oscope_guts.h
+    oscope_sink_f.h
+    oscope_sink_x.h
+    trigger_mode.h
+    DESTINATION ${GR_INCLUDE_DIR}/gnuradio/wxgui
+    COMPONENT "wxgui_devel"
+)
diff --git a/gr-wxgui/include/wxgui/api.h b/gr-wxgui/include/wxgui/api.h
new file mode 100644
index 0000000000..442e112e4b
--- /dev/null
+++ b/gr-wxgui/include/wxgui/api.h
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2013 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_WXGUI_API_H
+#define INCLUDED_WXGUI_API_H
+
+#include <gruel/attributes.h>
+
+#ifdef gnuradio_wxgui_EXPORTS
+#  define WXGUI_API __GR_ATTR_EXPORT
+#else
+#  define WXGUI_API __GR_ATTR_IMPORT
+#endif
+
+#endif /* INCLUDED_WXGUI_API_H */
diff --git a/gr-wxgui/include/wxgui/histo_sink_f.h b/gr-wxgui/include/wxgui/histo_sink_f.h
new file mode 100644
index 0000000000..f65517ca35
--- /dev/null
+++ b/gr-wxgui/include/wxgui/histo_sink_f.h
@@ -0,0 +1,55 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2009,2013 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_GR_HISTO_SINK_F_H
+#define INCLUDED_GR_HISTO_SINK_F_H
+
+#include <wxgui/api.h>
+#include <gr_sync_block.h>
+#include <gr_msg_queue.h>
+
+namespace gr {
+  namespace wxgui {
+
+    /*!
+     * \brief Histogram module.
+     * \ingroup sink_blk
+     */
+    class WXGUI_API histo_sink_f : virtual public gr_sync_block
+    {
+    public:
+      // gr::blocks::histo_sink_f::sptr
+      typedef boost::shared_ptr<histo_sink_f> sptr;
+
+      static sptr make(gr_msg_queue_sptr msgq);
+
+      virtual unsigned int get_frame_size(void) = 0;
+      virtual unsigned int get_num_bins(void) = 0;
+
+      virtual void set_frame_size(unsigned int frame_size) = 0;
+      virtual void set_num_bins(unsigned int num_bins) = 0;
+    };
+
+  } /* namespace wxgui */
+} /* namespace gr */
+
+#endif /* INCLUDED_GR_HISTO_SINK_F_H */
diff --git a/gr-wxgui/include/wxgui/oscope_guts.h b/gr-wxgui/include/wxgui/oscope_guts.h
new file mode 100644
index 0000000000..a6abd81539
--- /dev/null
+++ b/gr-wxgui/include/wxgui/oscope_guts.h
@@ -0,0 +1,131 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2003,2005,2013 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+
+#ifndef INCLUDED_GR_OSCOPE_GUTS_H
+#define INCLUDED_GR_OSCOPE_GUTS_H
+
+#include <wxgui/api.h>
+#include <wxgui/trigger_mode.h>
+#include <gr_msg_queue.h>
+
+namespace gr {
+  namespace wxgui {
+    
+    /*!
+     * \brief guts of oscilloscope trigger and buffer module
+     *
+     * This module processes sets of samples provided the \p
+     * process_sample method. When appropriate given the updateRate,
+     * sampleRate and trigger conditions, process_sample will
+     * periodically write output records of captured data to
+     * output_fd. For each trigger event, nchannels records will be
+     * written. Each record consists of get_samples_per_output_record
+     * binary floats. The trigger instant occurs at the 1/2 way point
+     * in the buffer. Thus, output records consist of 50% pre-trigger
+     * data and 50% post-trigger data.
+     */
+
+    class WXGUI_API oscope_guts 
+    {
+    public:
+      static const int MAX_CHANNELS = 8;
+
+    private:
+      enum scope_state  { HOLD_OFF, LOOK_FOR_TRIGGER, POST_TRIGGER };
+
+      int d_nchannels;		     // how many channels
+      gr_msg_queue_sptr d_msgq;      // message queue we stuff output records into
+      trigger_mode  d_trigger_mode;
+      trigger_slope d_trigger_slope;
+      int d_trigger_channel;         // which channel to watch for trigger condition
+      double d_sample_rate;          // input sample rate in Hz
+      double d_update_rate;          // approx freq to produce an output record (Hz)
+      double d_trigger_level;
+
+      int d_obi;                     // output buffer index
+      float *d_buffer[MAX_CHANNELS];
+
+      scope_state d_state;
+      int d_decimator_count;
+      int d_decimator_count_init;
+      int d_hold_off_count;
+      int d_hold_off_count_init;
+      int d_pre_trigger_count;
+      int d_post_trigger_count;
+      int d_post_trigger_count_init;
+      float d_trigger_off;          //%sample trigger is off
+
+      // NOT IMPLEMENTED
+      oscope_guts(const oscope_guts &rhs);              // no copy constructor
+      oscope_guts &operator= (const oscope_guts &rhs);  // no assignment operator
+
+      void trigger_changed();
+      void update_rate_or_decimation_changed();
+      bool found_trigger();          // returns true if found
+      void write_output_records();
+
+      void enter_hold_off();         // called on state entry
+      void enter_look_for_trigger();
+      void enter_post_trigger();
+
+    public:
+      // CREATORS
+      oscope_guts(double sample_rate, gr_msg_queue_sptr msgq);
+      ~oscope_guts();
+
+      // MANIPULATORS
+
+      /*!
+       * \param channel_data points to nchannels float values. These
+       * are the values for each channel at this sample time.
+       */
+      void process_sample(const float *channel_data);
+
+      bool set_update_rate(double update_rate);
+      bool set_decimation_count(int decimation_count);
+      bool set_trigger_channel(int channel);
+      bool set_trigger_mode(trigger_mode mode);
+      bool set_trigger_slope(trigger_slope slope);
+      bool set_trigger_level(double trigger_level);
+      bool set_trigger_level_auto();                // set to 50% level
+      bool set_sample_rate(double sample_rate);
+      bool set_num_channels(int nchannels);
+
+      // ACCESSORS
+      int num_channels() const;
+      double sample_rate() const;
+      double update_rate() const;
+      int get_decimation_count() const;
+      int get_trigger_channel() const;
+      trigger_mode get_trigger_mode() const;
+      trigger_slope get_trigger_slope() const;
+      double get_trigger_level() const;
+
+      // # of samples written to each output record.
+      int get_samples_per_output_record() const;
+    };
+
+  } /* namespace wxgui */
+} /* namespace gr */
+
+#endif /* INCLUDED_GR_OSCOPE_GUTS_H */
diff --git a/gr-wxgui/include/wxgui/oscope_sink_f.h b/gr-wxgui/include/wxgui/oscope_sink_f.h
new file mode 100644
index 0000000000..a7c7657d40
--- /dev/null
+++ b/gr-wxgui/include/wxgui/oscope_sink_f.h
@@ -0,0 +1,53 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2003-2005,2013 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_GR_OSCOPE_SINK_F_H
+#define INCLUDED_GR_OSCOPE_SINK_F_H
+
+#include <wxgui/api.h>
+#include <wxgui/oscope_sink_x.h>
+#include <gr_msg_queue.h>
+
+namespace gr {
+  namespace wxgui {
+
+    /*!
+     * \brief Building block for python oscilloscope module.
+     * \ingroup sink_blk
+     *
+     * Accepts multiple float streams.
+     */
+    class WXGUI_API oscope_sink_f
+      : virtual public oscope_sink_x
+    {
+    public:
+      // gr::blocks::oscope_sink_f::sptr
+      typedef boost::shared_ptr<oscope_sink_f> sptr;
+
+      static sptr make(double sampling_rate, gr_msg_queue_sptr msgq);
+    };
+
+  } /* namespace wxgui */
+} /* namespace gr */
+
+#endif /* INCLUDED_GR_OSCOPE_SINK_F_H */
+
diff --git a/gr-wxgui/include/wxgui/oscope_sink_x.h b/gr-wxgui/include/wxgui/oscope_sink_x.h
new file mode 100644
index 0000000000..17fa9a0f5a
--- /dev/null
+++ b/gr-wxgui/include/wxgui/oscope_sink_x.h
@@ -0,0 +1,91 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2003,2004,2013 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_GR_OSCOPE_SINK_X_H
+#define INCLUDED_GR_OSCOPE_SINK_X_H
+
+#include <wxgui/api.h>
+#include <wxgui/trigger_mode.h>
+#include <wxgui/oscope_guts.h>
+#include <gr_sync_block.h>
+
+namespace gr {
+  namespace wxgui {
+
+    /*!
+     * \brief Abstract class for python oscilloscope module.
+     * \ingroup sink_blk
+     *
+     * Don't instantiate this. Use gr::blocks::oscope_sink_f instead.
+     */
+    class WXGUI_API oscope_sink_x : public gr_sync_block
+    {
+    protected:
+      double d_sampling_rate;
+      oscope_guts *d_guts;
+
+      oscope_sink_x() {};
+      oscope_sink_x(const std::string name,
+                    gr_io_signature_sptr input_sig,
+                    double sampling_rate);
+    public:
+      virtual ~oscope_sink_x();
+
+      //// gr::blocks::oscope_sink_x::sptr
+      //typedef boost::shared_ptr<oscope_sink_x> sptr;
+      //
+      //static sptr make(const std::string name,
+      //                 gr_io_signature_sptr input_sig,
+      //                 double sampling_rate);
+
+      bool set_update_rate(double update_rate);
+      bool set_decimation_count(int decimation_count);
+      bool set_trigger_channel(int channel);
+      bool set_trigger_mode(trigger_mode mode);
+      bool set_trigger_slope(trigger_slope slope);
+      bool set_trigger_level(double trigger_level);
+      bool set_trigger_level_auto();
+      bool set_sample_rate(double sample_rate);
+      bool set_num_channels(int nchannels);
+
+      // ACCESSORS
+      int num_channels() const;
+      double sample_rate() const;
+      double update_rate() const;
+      int get_decimation_count() const;
+      int get_trigger_channel() const;
+      trigger_mode get_trigger_mode() const;
+      trigger_slope get_trigger_slope() const;
+      double get_trigger_level() const;
+
+      // # of samples written to each output record.
+      int get_samples_per_output_record() const;
+
+      virtual int work(int noutput_items,
+                       gr_vector_const_void_star &input_items,
+                       gr_vector_void_star &output_items) = 0;
+    };
+
+  } /* namespace wxgui */
+} /* namespace gr */
+
+#endif /* INCLUDED_GR_OSCOPE_SINK_X_H */
diff --git a/gr-wxgui/include/wxgui/trigger_mode.h b/gr-wxgui/include/wxgui/trigger_mode.h
new file mode 100644
index 0000000000..11654ef6c5
--- /dev/null
+++ b/gr-wxgui/include/wxgui/trigger_mode.h
@@ -0,0 +1,44 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2003,2004,2013 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_GR_TRIGGER_MODE_H
+#define INCLUDED_GR_TRIGGER_MODE_H
+
+namespace gr {
+  namespace wxgui {
+
+    enum trigger_mode {
+      TRIG_MODE_FREE,
+      TRIG_MODE_AUTO,
+      TRIG_MODE_NORM,
+      TRIG_MODE_STRIPCHART,
+    };
+
+    enum trigger_slope {
+      TRIG_SLOPE_POS,
+      TRIG_SLOPE_NEG,
+    };
+
+  } /* namespace wxgui */
+} /* namespace gr */
+
+#endif /* INCLUDED_GR_TRIGGER_MODE_H */
diff --git a/gr-wxgui/lib/CMakeLists.txt b/gr-wxgui/lib/CMakeLists.txt
new file mode 100644
index 0000000000..8c7c56fdcc
--- /dev/null
+++ b/gr-wxgui/lib/CMakeLists.txt
@@ -0,0 +1,78 @@
+# Copyright 2012-2013 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING.  If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+
+########################################################################
+# Setup the include and linker paths
+########################################################################
+include_directories(
+    ${CMAKE_CURRENT_SOURCE_DIR}
+    ${CMAKE_CURRENT_BINARY_DIR}
+    ${CMAKE_CURRENT_BINARY_DIR}/../include
+    ${GR_WXGUI_INCLUDE_DIRS}
+    ${GNURADIO_CORE_INCLUDE_DIRS}
+    ${VOLK_INCLUDE_DIRS}
+    ${GRUEL_INCLUDE_DIRS}
+    ${Boost_INCLUDE_DIRS}
+)
+
+link_directories(${Boost_LIBRARY_DIRS})
+
+if(ENABLE_GR_CTRLPORT)
+  ADD_DEFINITIONS(-DGR_CTRLPORT)
+  include_directories(${ICE_INCLUDE_DIR})
+endif(ENABLE_GR_CTRLPORT)
+
+########################################################################
+# Setup library
+########################################################################
+list(APPEND gr_wxgui_sources
+  histo_sink_f_impl.cc
+  oscope_guts.cc
+  oscope_sink_x.cc
+  oscope_sink_f_impl.cc
+)
+
+#Add Windows DLL resource file if using MSVC
+IF(MSVC)
+    include(${CMAKE_SOURCE_DIR}/cmake/Modules/GrVersion.cmake)
+
+    configure_file(
+        ${CMAKE_CURRENT_SOURCE_DIR}/gnuradio-wxgui.rc.in
+        ${CMAKE_CURRENT_BINARY_DIR}/gnuradio-wxgui.rc
+    @ONLY)
+
+    list(APPEND gr_wxgui_sources
+        ${CMAKE_CURRENT_BINARY_DIR}/gnuradio-wxgui.rc
+    )
+ENDIF(MSVC)
+
+list(APPEND wxgui_libs
+    gnuradio-core
+    volk
+    ${Boost_LIBRARIES}
+    ${BLOCKS_LIBRARIES}
+    ${LOG4CPP_LIBRARIES}
+)
+
+add_library(gnuradio-wxgui SHARED ${gr_wxgui_sources})
+
+target_link_libraries(gnuradio-wxgui ${wxgui_libs})
+GR_LIBRARY_FOO(gnuradio-wxgui
+  RUNTIME_COMPONENT "wxgui_runtime"
+  DEVEL_COMPONENT "wxgui_devel")
diff --git a/gr-wxgui/lib/gnuradio-wxgui.rc.in b/gr-wxgui/lib/gnuradio-wxgui.rc.in
new file mode 100644
index 0000000000..126db75091
--- /dev/null
+++ b/gr-wxgui/lib/gnuradio-wxgui.rc.in
@@ -0,0 +1,54 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2013 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+#include <afxres.h>
+
+VS_VERSION_INFO VERSIONINFO
+  FILEVERSION @MAJOR_VERSION@,@API_COMPAT@,@RC_MINOR_VERSION@,@RC_MAINT_VERSION@
+  PRODUCTVERSION @MAJOR_VERSION@,@API_COMPAT@,@RC_MINOR_VERSION@,@RC_MAINT_VERSION@
+  FILEFLAGSMASK 0x3fL
+#ifndef NDEBUG
+  FILEFLAGS 0x0L
+#else
+  FILEFLAGS 0x1L
+#endif
+  FILEOS VOS__WINDOWS32
+  FILETYPE VFT_DLL
+  FILESUBTYPE VFT2_DRV_INSTALLABLE
+  BEGIN
+    BLOCK "StringFileInfo"
+    BEGIN
+      BLOCK "040904b0"
+      BEGIN
+        VALUE "FileDescription", "gnuradio-blocks"
+        VALUE "FileVersion", "@VERSION@"
+        VALUE "InternalName", "gnuradio-blocks.dll"
+        VALUE "LegalCopyright", "Licensed under GPLv3 or any later version"
+        VALUE "OriginalFilename", "gnuradio-blocks.dll"
+        VALUE "ProductName", "gnuradio-blocks"
+        VALUE "ProductVersion", "@VERSION@"
+      END
+    END
+    BLOCK "VarFileInfo"
+    BEGIN
+      VALUE "Translation", 0x409, 1200
+    END
+  END
diff --git a/gr-wxgui/lib/histo_sink_f_impl.cc b/gr-wxgui/lib/histo_sink_f_impl.cc
new file mode 100644
index 0000000000..f9459ac8d9
--- /dev/null
+++ b/gr-wxgui/lib/histo_sink_f_impl.cc
@@ -0,0 +1,186 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2009-2011,2013 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "histo_sink_f_impl.h"
+#include <gr_io_signature.h>
+#include <boost/math/special_functions/round.hpp>
+
+namespace gr {
+  namespace wxgui {
+
+    static float get_clean_num(float num)
+    {
+      if(num == 0)
+        return 0;
+      /* extract sign and exponent from num */
+      int sign = (num < 0) ? -1 : 1; num = fabs(num);
+      float exponent = floor(log10(num));
+      /* search for closest number with base 1, 2, 5, 10 */
+      float closest_num = 10*pow(10, exponent);
+      if(fabs(num - 1*pow(10, exponent)) < fabs(num - closest_num))
+        closest_num = 1*pow(10, exponent);
+      if(fabs(num - 2*pow(10, exponent)) < fabs(num - closest_num))
+        closest_num = 2*pow(10, exponent);
+      if(fabs(num - 5*pow(10, exponent)) < fabs(num - closest_num))
+        closest_num = 5*pow(10, exponent);
+      return sign*closest_num;
+    }
+
+    histo_sink_f::sptr
+    histo_sink_f::make(gr_msg_queue_sptr msgq)
+    {
+      return gnuradio::get_initial_sptr
+        (new histo_sink_f_impl(msgq));
+    }
+
+    histo_sink_f_impl::histo_sink_f_impl(gr_msg_queue_sptr msgq)
+      : gr_sync_block("histo_sink_f",
+                      gr_make_io_signature(1, 1, sizeof(float)),
+                      gr_make_io_signature(0, 0, 0)),
+        d_msgq(msgq), d_num_bins(11), d_frame_size(1000),
+        d_sample_count(0), d_bins(NULL), d_samps(NULL)
+    {
+      //allocate arrays and clear
+      set_num_bins(d_num_bins);
+      set_frame_size(d_frame_size);
+    }
+
+    histo_sink_f_impl::~histo_sink_f_impl(void)
+    {
+      delete [] d_samps;
+      delete [] d_bins;
+    }
+
+    int
+    histo_sink_f_impl::work(int noutput_items,
+                            gr_vector_const_void_star &input_items,
+                            gr_vector_void_star &output_items)
+    {
+      const float *in = (const float*)input_items[0];
+      gruel::scoped_lock guard(d_mutex);  // hold mutex for duration of this function
+      for(unsigned int i = 0; i < (unsigned int)noutput_items; i++) {
+        d_samps[d_sample_count] = in[i];
+        d_sample_count++;
+        /* processed a frame? */
+        if(d_sample_count == d_frame_size) {
+          send_frame();
+          clear();
+        }
+      }
+      return noutput_items;
+    }
+
+    void
+    histo_sink_f_impl::send_frame(void)
+    {
+      /* output queue full, drop the data */
+      if(d_msgq->full_p())
+        return;
+      /* find the minimum and maximum */
+      float minimum = d_samps[0];
+      float maximum = d_samps[0];
+      for(unsigned int i = 0; i < d_frame_size; i++) {
+        if(d_samps[i] < minimum) minimum = d_samps[i];
+        if(d_samps[i] > maximum) maximum = d_samps[i];
+      }
+      minimum = get_clean_num(minimum);
+      maximum = get_clean_num(maximum);
+      if(minimum == maximum || minimum > maximum)
+        return; //useless data or screw up?
+      /* load the bins */
+      int index;
+      float bin_width = (maximum - minimum)/(d_num_bins-1);
+      for(unsigned int i = 0; i < d_sample_count; i++) {
+        index = boost::math::iround((d_samps[i] - minimum)/bin_width);
+        /* ensure the index range in case a small floating point error is involed */
+        if(index < 0)
+          index = 0;
+        if(index >= (int)d_num_bins)
+          index = d_num_bins-1;
+        d_bins[index]++;
+      }
+      /* Build a message to hold the output records */
+      gr_message_sptr msg = gr_make_message(0, minimum, maximum, d_num_bins*sizeof(float));
+      float *out = (float *)msg->msg(); // get pointer to raw message buffer
+      /* normalize the bins and put into message */
+      for(unsigned int i = 0; i < d_num_bins; i++) {
+        out[i] = ((float)d_bins[i])/d_frame_size;
+      }
+      /* send the message */
+      d_msgq->handle(msg);
+    }
+
+    void
+    histo_sink_f_impl::clear(void)
+    {
+      d_sample_count = 0;
+      /* zero the bins */
+      for(unsigned int i = 0; i < d_num_bins; i++) {
+        d_bins[i] = 0;
+      }
+    }
+
+    /**************************************************
+     * Getters
+     **************************************************/
+    unsigned int
+    histo_sink_f_impl::get_frame_size(void)
+    {
+      return d_frame_size;
+    }
+
+    unsigned int
+    histo_sink_f_impl::get_num_bins(void)
+    {
+      return d_num_bins;
+    }
+
+    /**************************************************
+     * Setters
+     **************************************************/
+    void
+    histo_sink_f_impl::set_frame_size(unsigned int frame_size)
+    {
+      gruel::scoped_lock guard(d_mutex);    // hold mutex for duration of this function
+      d_frame_size = frame_size;
+      /* allocate a new sample array */
+      delete [] d_samps;
+      d_samps = new float[d_frame_size];
+      clear();
+    }
+
+    void
+    histo_sink_f_impl::set_num_bins(unsigned int num_bins) {
+      gruel::scoped_lock guard(d_mutex);    // hold mutex for duration of this function
+      d_num_bins = num_bins;
+      /* allocate a new bin array */
+      delete [] d_bins;
+      d_bins = new unsigned int[d_num_bins];
+      clear();
+    }
+
+  } /* namespace wxgui */
+} /* namespace gr */
diff --git a/gr-wxgui/lib/histo_sink_f_impl.h b/gr-wxgui/lib/histo_sink_f_impl.h
new file mode 100644
index 0000000000..e160e0e550
--- /dev/null
+++ b/gr-wxgui/lib/histo_sink_f_impl.h
@@ -0,0 +1,63 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2009,2013 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_GR_HISTO_SINK_F_IMPL_H
+#define INCLUDED_GR_HISTO_SINK_F_IMPL_H
+
+#include <wxgui/histo_sink_f.h>
+
+namespace gr {
+  namespace wxgui {
+
+    class histo_sink_f_impl : public histo_sink_f
+    {
+    private:
+      gr_msg_queue_sptr d_msgq;
+      unsigned int d_num_bins;
+      unsigned int d_frame_size;
+      unsigned int d_sample_count;
+      unsigned int *d_bins;
+      float *d_samps;
+      gruel::mutex d_mutex;
+
+      void send_frame(void);
+      void clear(void);
+
+    public:
+      histo_sink_f_impl(gr_msg_queue_sptr msgq);
+      ~histo_sink_f_impl(void);
+
+      int work(int noutput_items,
+               gr_vector_const_void_star &input_items,
+               gr_vector_void_star &output_items);
+
+      unsigned int get_frame_size(void);
+      unsigned int get_num_bins(void);
+
+      void set_frame_size(unsigned int frame_size);
+      void set_num_bins(unsigned int num_bins);
+    };
+
+  } /* namespace wxgui */
+} /* namespace gr */
+
+#endif /* INCLUDED_GR_HISTO_SINK_F_IMPL_H */
diff --git a/gr-wxgui/lib/oscope_guts.cc b/gr-wxgui/lib/oscope_guts.cc
new file mode 100644
index 0000000000..3d1f085a6f
--- /dev/null
+++ b/gr-wxgui/lib/oscope_guts.cc
@@ -0,0 +1,439 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2003,2005,2013 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <wxgui/oscope_guts.h>
+#include <stdexcept>
+#include <stdio.h>
+#include <algorithm>
+#include <unistd.h>
+#include <math.h>
+#include <assert.h>
+
+namespace gr {
+  namespace wxgui {
+    
+    /*
+     * Bad performance if it's large, and flaky triggering if it's too small
+     */
+    static const int OUTPUT_RECORD_SIZE = 1024;  // Must be power of 2
+
+    /*
+     * For (slow-updated) STRIPCHART triggering, we make the record
+     * size larger, since we potentially want to be able to "see"
+     * hours of data. This works as long as the update rates to a
+     * STRIPCHART are low, which they generally are--that's rather
+     * what a stripchart is all about!
+     */
+    static const int SCHART_MULT = 8;
+
+
+    static inline int
+    wrap_bi(int buffer_index, int mx)                // wrap buffer index
+    {
+      return buffer_index & (mx - 1);
+    }
+
+    static inline int
+    incr_bi(int buffer_index, int mx)                // increment buffer index
+    {
+      return wrap_bi(buffer_index + 1, mx);
+    }
+
+    static inline int
+    decr_bi(int buffer_index, int mx)                // decrement buffer index
+    {
+      return wrap_bi(buffer_index - 1, mx);
+    }
+
+    oscope_guts::oscope_guts(double sample_rate, gr_msg_queue_sptr msgq)
+      : d_nchannels(1),
+    d_msgq(msgq),
+    d_trigger_mode(TRIG_MODE_AUTO),
+    d_trigger_slope(TRIG_SLOPE_POS),
+    d_trigger_channel(0),
+    d_sample_rate(sample_rate),
+    d_update_rate(20),
+    d_trigger_level(0),
+    d_obi(0),
+    d_state(HOLD_OFF),
+    d_decimator_count(0),
+    d_decimator_count_init(1),
+    d_hold_off_count(0),
+    d_hold_off_count_init(OUTPUT_RECORD_SIZE/2-1),
+    d_pre_trigger_count(0),
+    d_post_trigger_count(0),
+    d_post_trigger_count_init(OUTPUT_RECORD_SIZE/2)
+    {
+      for(int i = 0; i < MAX_CHANNELS; i++)
+        d_buffer[i] = 0;
+
+      for(int i = 0; i < MAX_CHANNELS; i++) {
+        d_buffer[i] = new float[OUTPUT_RECORD_SIZE*SCHART_MULT];
+        for(int j = 0; j < OUTPUT_RECORD_SIZE*SCHART_MULT; j++)
+          d_buffer[i][j] = 0.0;
+      }
+
+      // be sure buffer is full before first write
+      enter_hold_off();
+      update_rate_or_decimation_changed();
+    }
+
+    oscope_guts::~oscope_guts()
+    {
+      for(int i = 0; i < MAX_CHANNELS; i++)
+        delete [] d_buffer[i];
+    }
+
+    // MANIPULATORS
+    void
+    oscope_guts::process_sample(const float *channel_data)
+    {
+      d_decimator_count--;
+      if(d_decimator_count > 0)
+        return;
+
+      d_decimator_count = d_decimator_count_init;
+
+      if(d_trigger_mode != TRIG_MODE_STRIPCHART) {
+        for(int i = 0; i < d_nchannels; i++)
+          d_buffer[i][d_obi] = channel_data[i];  // copy data into buffer
+
+        switch(d_state) {
+        case HOLD_OFF:
+          d_hold_off_count--;
+          if(d_hold_off_count <= 0)
+            enter_look_for_trigger ();
+          break;
+
+        case LOOK_FOR_TRIGGER:
+          if(found_trigger())
+            enter_post_trigger();
+          break;
+
+        case POST_TRIGGER:
+          d_post_trigger_count--;
+          if(d_post_trigger_count <= 0) {
+            write_output_records();
+            enter_hold_off();
+          }
+          break;
+
+        default:
+          assert(0);
+        }
+
+        d_obi = incr_bi(d_obi, OUTPUT_RECORD_SIZE);
+      }
+      else {
+        for(int i = 0; i < d_nchannels; i++) {
+          for(int j = (OUTPUT_RECORD_SIZE*SCHART_MULT)-1; j > 0; j--) {
+            d_buffer[i][j] = d_buffer[i][j-1];
+          }
+          d_buffer[i][0] = channel_data[i];
+        }
+        d_trigger_off = 0;
+        write_output_records();
+      }
+    }
+
+    /*
+     * Functions called on state entry
+     */
+
+    void
+    oscope_guts::enter_hold_off()
+    {
+      d_state = HOLD_OFF;
+      d_hold_off_count = d_hold_off_count_init;
+    }
+
+    void
+    oscope_guts::enter_look_for_trigger()
+    {
+      d_pre_trigger_count = 0;
+      d_state = LOOK_FOR_TRIGGER;
+    }
+
+    void
+    oscope_guts::enter_post_trigger()
+    {
+      d_state = POST_TRIGGER;
+      d_post_trigger_count = d_post_trigger_count_init;
+      //ensure that the trigger offset is no more than than half a sample
+      if(d_trigger_off > .5)
+        d_trigger_off -= 1;
+      else
+        d_post_trigger_count--;
+    }
+
+    // ----------------------------------------------------------------
+    // returns true if trigger found
+
+    bool
+    oscope_guts::found_trigger()
+    {
+      int mx = d_trigger_mode == TRIG_MODE_STRIPCHART ? OUTPUT_RECORD_SIZE*SCHART_MULT :
+        OUTPUT_RECORD_SIZE;
+
+      float prev_sample = d_buffer[d_trigger_channel][decr_bi(d_obi, mx)];
+      float new_sample = d_buffer[d_trigger_channel][d_obi];
+
+      switch(d_trigger_mode) {
+
+      case TRIG_MODE_AUTO: //too many samples without a trigger
+        d_pre_trigger_count++;
+        if(d_pre_trigger_count > OUTPUT_RECORD_SIZE/2)
+          return true;
+
+      case TRIG_MODE_NORM: //look for trigger
+        switch(d_trigger_slope) {
+
+        case TRIG_SLOPE_POS: //trigger point in pos slope?
+          if(new_sample < d_trigger_level || prev_sample >= d_trigger_level)
+            return false;
+          break;
+
+        case TRIG_SLOPE_NEG: //trigger point in neg slope?
+          if(new_sample > d_trigger_level || prev_sample <= d_trigger_level)
+            return false;
+          break;
+        }
+
+        //calculate the trigger offset in % sample
+        d_trigger_off = (d_trigger_level - prev_sample)/(new_sample - prev_sample);
+        return true;
+
+      case TRIG_MODE_FREE: //free run mode, always trigger
+        d_trigger_off = 0;
+        return true;
+
+      default:
+        assert(0);
+        return false;
+      }
+    }
+
+    // ----------------------------------------------------------------
+    // write output records (duh!)
+
+    void
+    oscope_guts::write_output_records()
+    {
+      int mx;
+
+      mx = d_trigger_mode == TRIG_MODE_STRIPCHART ?
+        OUTPUT_RECORD_SIZE*SCHART_MULT : OUTPUT_RECORD_SIZE;
+
+      // if the output queue if full, drop the data like its hot.
+      if(d_msgq->full_p())
+        return;
+      // Build a message to hold the output records
+      gr_message_sptr msg =
+        gr_make_message(0,                           // msg type
+                        d_nchannels,                 // arg1 for other side
+                        mx,                          // arg2 for other side
+                        ((d_nchannels * mx) + 1) * sizeof(float)); // sizeof payload
+
+      float *out = (float *)msg->msg();        // get pointer to raw message buffer
+
+      for(int ch = 0; ch < d_nchannels; ch++) {
+        // note that d_obi + 1 points at the oldest sample in the buffer
+        for(int i = 0; i < mx; i++) {
+          out[i] = d_buffer[ch][wrap_bi(d_obi + 1 + i, mx)];
+        }
+        out += mx;
+      }
+      //Set the last sample as the trigger offset:
+      //  The non gl scope sink will not look at this last sample.
+      //  The gl scope sink will use this last sample as an offset.
+      out[0] = d_trigger_off;
+      d_msgq->handle(msg);                // send the msg
+    }
+
+    // ----------------------------------------------------------------
+
+    bool
+    oscope_guts::set_update_rate(double update_rate)
+    {
+      d_update_rate = std::min(std::max (1./10., update_rate), d_sample_rate);
+      update_rate_or_decimation_changed();
+      return true;
+    }
+
+    bool
+    oscope_guts::set_decimation_count(int decimator_count)
+    {
+      decimator_count = std::max(1, decimator_count);
+      d_decimator_count_init = decimator_count;
+      update_rate_or_decimation_changed();
+      return true;
+    }
+
+    bool
+    oscope_guts::set_sample_rate(double sample_rate)
+    {
+      d_sample_rate = sample_rate;
+      return set_update_rate(update_rate());
+    }
+
+    void
+    oscope_guts::update_rate_or_decimation_changed()
+    {
+      d_hold_off_count_init =
+        (int)rint(d_sample_rate / d_update_rate / d_decimator_count_init);
+    }
+
+    bool
+    oscope_guts::set_trigger_channel(int channel)
+    {
+      if(channel >= 0 && channel < d_nchannels) {
+        d_trigger_channel = channel;
+        trigger_changed ();
+        return true;
+      }
+
+      return false;
+    }
+
+    bool
+    oscope_guts::set_trigger_mode(trigger_mode mode)
+    {
+      d_trigger_mode = mode;
+      trigger_changed();
+      return true;
+    }
+
+    bool
+    oscope_guts::set_trigger_slope(trigger_slope slope)
+    {
+      d_trigger_slope = slope;
+      trigger_changed();
+      return true;
+    }
+
+    bool
+    oscope_guts::set_trigger_level(double trigger_level)
+    {
+      d_trigger_level = trigger_level;
+      trigger_changed();
+      return true;
+    }
+
+    bool
+    oscope_guts::set_trigger_level_auto()
+    {
+      // find the level 1/2 way between the min and the max
+
+      float min_v = d_buffer[d_trigger_channel][0];
+      float max_v = d_buffer[d_trigger_channel][0];
+
+      for(int i = 1; i < OUTPUT_RECORD_SIZE; i++) {
+        min_v = std::min (min_v, d_buffer[d_trigger_channel][i]);
+        max_v = std::max (max_v, d_buffer[d_trigger_channel][i]);
+      }
+      return set_trigger_level((min_v + max_v) * 0.5);
+    }
+
+    bool
+    oscope_guts::set_num_channels(int nchannels)
+    {
+      if(nchannels > 0 && nchannels <= MAX_CHANNELS) {
+        d_nchannels = nchannels;
+        return true;
+      }
+      return false;
+    }
+
+    void
+    oscope_guts::trigger_changed()
+    {
+      enter_look_for_trigger();
+    }
+
+    // ACCESSORS
+
+    int
+    oscope_guts::num_channels() const
+    {
+      return d_nchannels;
+    }
+
+    double
+    oscope_guts::sample_rate() const
+    {
+      return d_sample_rate;
+    }
+
+    double
+    oscope_guts::update_rate() const
+    {
+      return d_update_rate;
+    }
+
+    int
+    oscope_guts::get_decimation_count() const
+    {
+      return d_decimator_count_init;
+    }
+
+    int
+    oscope_guts::get_trigger_channel() const
+    {
+      return d_trigger_channel;
+    }
+
+    trigger_mode
+    oscope_guts::get_trigger_mode() const
+    {
+      return d_trigger_mode;
+    }
+
+    trigger_slope
+    oscope_guts::get_trigger_slope() const
+    {
+      return d_trigger_slope;
+    }
+
+    double
+    oscope_guts::get_trigger_level() const
+    {
+      return d_trigger_level;
+    }
+
+    int
+    oscope_guts::get_samples_per_output_record() const
+    {
+      int mx;
+
+      mx = OUTPUT_RECORD_SIZE;
+      if(d_trigger_mode == TRIG_MODE_STRIPCHART) {
+        mx = OUTPUT_RECORD_SIZE*SCHART_MULT;
+      }
+      return mx;
+    }
+
+  } /* namespace wxgui */
+} /* namespace gr */
diff --git a/gr-wxgui/lib/oscope_sink_f_impl.cc b/gr-wxgui/lib/oscope_sink_f_impl.cc
new file mode 100644
index 0000000000..a95bf58827
--- /dev/null
+++ b/gr-wxgui/lib/oscope_sink_f_impl.cc
@@ -0,0 +1,84 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2003-2005,2010,2013 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "oscope_sink_f_impl.h"
+#include <wxgui/oscope_sink_x.h>
+#include <wxgui/oscope_guts.h>
+#include <gr_io_signature.h>
+
+namespace gr {
+  namespace wxgui {
+
+    oscope_sink_f::sptr
+    oscope_sink_f::make(double sampling_rate, gr_msg_queue_sptr msgq)
+    {
+      return gnuradio::get_initial_sptr
+        (new oscope_sink_f_impl(sampling_rate, msgq));
+    }
+
+    oscope_sink_f_impl::oscope_sink_f_impl(double sampling_rate, gr_msg_queue_sptr msgq)
+      : oscope_sink_x("oscope_sink_f",
+                      gr_make_io_signature(1, oscope_guts::MAX_CHANNELS,
+                                           sizeof(float)),
+                      sampling_rate),
+        d_msgq(msgq)
+    {
+      d_guts = new oscope_guts(d_sampling_rate, d_msgq);
+    }
+
+    oscope_sink_f_impl::~oscope_sink_f_impl()
+    {
+    }
+
+    bool
+    oscope_sink_f_impl::check_topology(int ninputs, int noutputs)
+    {
+      GR_LOG_DEBUG(d_logger, "oscopy_sink_f check_topology");
+      return d_guts->set_num_channels(ninputs);
+    }
+
+    int
+    oscope_sink_f_impl::work(int noutput_items,
+                             gr_vector_const_void_star &input_items,
+                             gr_vector_void_star &output_items)
+    {
+      int ni = input_items.size();
+      float tmp[oscope_guts::MAX_CHANNELS];
+
+      for(int i = 0; i < noutput_items; i++) {
+
+        // FIXME for now, copy the data.  Fix later if reqd
+        for(int ch = 0; ch < ni; ch++)
+          tmp[ch] = ((const float*)input_items[ch])[i];
+
+        d_guts->process_sample(tmp);
+      }
+
+      return noutput_items;
+    }
+
+  } /* namespace wxgui */
+} /* namespace gr */
diff --git a/gr-wxgui/lib/oscope_sink_f_impl.h b/gr-wxgui/lib/oscope_sink_f_impl.h
new file mode 100644
index 0000000000..6ad28a885f
--- /dev/null
+++ b/gr-wxgui/lib/oscope_sink_f_impl.h
@@ -0,0 +1,51 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2003-2005,2013 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_GR_OSCOPE_SINK_F_IMPL_H
+#define INCLUDED_GR_OSCOPE_SINK_F_IMPL_H
+
+#include <wxgui/oscope_sink_f.h>
+
+namespace gr {
+  namespace wxgui {
+
+    class oscope_sink_f_impl : public oscope_sink_f
+    {
+    private:
+      gr_msg_queue_sptr d_msgq;
+
+    public:
+      oscope_sink_f_impl(double sampling_rate, gr_msg_queue_sptr msgq);
+      ~oscope_sink_f_impl();
+
+      bool check_topology(int ninputs, int noutputs);
+
+      int work(int noutput_items,
+               gr_vector_const_void_star &input_items,
+               gr_vector_void_star &output_items);
+    };
+
+  } /* namespace wxgui */
+} /* namespace gr */
+
+#endif /* INCLUDED_GR_OSCOPE_SINK_F_IMPL_H */
+
diff --git a/gr-wxgui/lib/oscope_sink_x.cc b/gr-wxgui/lib/oscope_sink_x.cc
new file mode 100644
index 0000000000..417442979c
--- /dev/null
+++ b/gr-wxgui/lib/oscope_sink_x.cc
@@ -0,0 +1,161 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2003,2004,2013 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <wxgui/oscope_sink_x.h>
+#include <wxgui/oscope_guts.h>
+#include <gr_io_signature.h>
+
+namespace gr {
+  namespace wxgui {
+    
+    oscope_sink_x::oscope_sink_x(const std::string name,
+                                 gr_io_signature_sptr input_sig,
+                                 double sampling_rate)
+      : gr_sync_block(name, input_sig,
+                      gr_make_io_signature(0, 0, 0)),
+        d_sampling_rate(sampling_rate), d_guts(0)
+    {
+    }
+
+    oscope_sink_x::~oscope_sink_x()
+    {
+      delete d_guts;
+    }
+
+    // ----------------------------------------------------------------
+
+    bool
+    oscope_sink_x::set_update_rate(double update_rate)
+    {
+      return d_guts->set_update_rate(update_rate);
+    }
+
+    bool
+    oscope_sink_x::set_decimation_count(int decimation_count)
+    {
+      return d_guts->set_decimation_count(decimation_count);
+    }
+
+    bool
+    oscope_sink_x::set_trigger_channel(int channel)
+    {
+      return d_guts->set_trigger_channel(channel);
+    }
+
+    bool
+    oscope_sink_x::set_trigger_mode(trigger_mode mode)
+    {
+      return d_guts->set_trigger_mode(mode);
+    }
+
+    bool
+    oscope_sink_x::set_trigger_slope(trigger_slope slope)
+    {
+      return d_guts->set_trigger_slope(slope);
+    }
+
+    bool
+    oscope_sink_x::set_trigger_level(double trigger_level)
+    {
+      return d_guts->set_trigger_level(trigger_level);
+    }
+
+    bool
+    oscope_sink_x::set_trigger_level_auto()
+    {
+      return d_guts->set_trigger_level_auto();
+    }
+
+    bool
+    oscope_sink_x::set_sample_rate(double sample_rate)
+    {
+      return d_guts->set_sample_rate(sample_rate);
+    }
+
+    bool
+    oscope_sink_x::set_num_channels(int nchannels)
+    {
+      return d_guts->set_num_channels(nchannels);
+    }
+
+    // ACCESSORS
+
+    int
+    oscope_sink_x::num_channels() const
+    {
+      return d_guts->num_channels();
+    }
+
+    double
+    oscope_sink_x::sample_rate() const
+    {
+      return d_guts->sample_rate();
+    }
+
+    double
+    oscope_sink_x::update_rate() const
+    {
+      return d_guts->update_rate();
+    }
+
+    int
+    oscope_sink_x::get_decimation_count() const
+    {
+      return d_guts->get_decimation_count();
+    }
+
+    int
+    oscope_sink_x::get_trigger_channel() const
+    {
+      return d_guts->get_trigger_channel();
+    }
+
+    trigger_mode
+    oscope_sink_x::get_trigger_mode() const
+    {
+      return d_guts->get_trigger_mode();
+    }
+
+    trigger_slope
+    oscope_sink_x::get_trigger_slope() const
+    {
+      return d_guts->get_trigger_slope();
+    }
+
+    double
+    oscope_sink_x::get_trigger_level() const
+    {
+      return d_guts->get_trigger_level();
+    }
+
+    int
+    oscope_sink_x::get_samples_per_output_record() const
+    {
+      return d_guts->get_samples_per_output_record();
+    }
+
+  } /* namespace wxgui */
+} /* namespace gr */
diff --git a/gr-wxgui/python/__init__.py b/gr-wxgui/python/__init__.py
index 07dbaf1620..dd81647fe9 100644
--- a/gr-wxgui/python/__init__.py
+++ b/gr-wxgui/python/__init__.py
@@ -22,3 +22,5 @@
 '''
 Provides a GUI interface using the Wx backend.
 '''
+
+from wxgui_swig import *
diff --git a/gr-wxgui/python/histosink_gl.py b/gr-wxgui/python/histosink_gl.py
index 6fa7539aa7..2126d63191 100644
--- a/gr-wxgui/python/histosink_gl.py
+++ b/gr-wxgui/python/histosink_gl.py
@@ -27,6 +27,7 @@ import common
 from gnuradio import gr
 from gnuradio import analog
 from gnuradio import blocks
+from gnuradio import wxgui
 from pubsub import pubsub
 from constants import *
 
@@ -55,7 +56,7 @@ class histo_sink_f(gr.hier_block2, common.wxgui_hb):
 		)
 		#blocks
 		msgq = gr.msg_queue(2)
-		histo = gr.histo_sink_f(msgq)
+		histo = wxgui.histo_sink_f(msgq)
 		histo.set_num_bins(num_bins)
 		histo.set_frame_size(frame_size)
 		#controller
diff --git a/gr-wxgui/python/scope_window.py b/gr-wxgui/python/scope_window.py
index 306e1757f1..357998bf95 100644
--- a/gr-wxgui/python/scope_window.py
+++ b/gr-wxgui/python/scope_window.py
@@ -30,6 +30,7 @@ import time
 import pubsub
 from constants import *
 from gnuradio import gr #for gr.prefs, trigger modes
+from gnuradio import wxgui
 import forms
 
 ##################################################
@@ -38,21 +39,21 @@ import forms
 DEFAULT_FRAME_RATE = gr.prefs().get_long('wxgui', 'scope_rate', 30)
 PERSIST_ALPHA_MIN_EXP, PERSIST_ALPHA_MAX_EXP = -2, 0
 SLIDER_STEPS = 100
-DEFAULT_TRIG_MODE = gr.prefs().get_long('wxgui', 'trig_mode', gr.gr_TRIG_MODE_AUTO)
+DEFAULT_TRIG_MODE = gr.prefs().get_long('wxgui', 'trig_mode', wxgui.TRIG_MODE_AUTO)
 DEFAULT_WIN_SIZE = (600, 300)
 COUPLING_MODES = (
 	('DC', False),
 	('AC', True),
 )
 TRIGGER_MODES = (
-	('Freerun', gr.gr_TRIG_MODE_FREE),
-	('Auto', gr.gr_TRIG_MODE_AUTO),
-	('Normal', gr.gr_TRIG_MODE_NORM),
-	('Stripchart', gr.gr_TRIG_MODE_STRIPCHART),
+	('Freerun', wxgui.TRIG_MODE_FREE),
+	('Auto', wxgui.TRIG_MODE_AUTO),
+	('Normal', wxgui.TRIG_MODE_NORM),
+	('Stripchart', wxgui.TRIG_MODE_STRIPCHART),
 )
 TRIGGER_SLOPES = (
-	('Pos +', gr.gr_TRIG_SLOPE_POS),
-	('Neg -', gr.gr_TRIG_SLOPE_NEG),
+	('Pos +', wxgui.TRIG_SLOPE_POS),
+	('Neg -', wxgui.TRIG_SLOPE_NEG),
 )
 CHANNEL_COLOR_SPECS = (
 	(0.3, 0.3, 1.0),
@@ -281,7 +282,7 @@ class control_panel(wx.Panel):
 		)
 		def disable_all(trigger_mode):
 			for widget in (trigger_slope_chooser, trigger_channel_chooser, trigger_level_buttons, trigger_level_button):
-				widget.Disable(trigger_mode == gr.gr_TRIG_MODE_FREE)
+				widget.Disable(trigger_mode == wxgui.TRIG_MODE_FREE)
 		parent.subscribe(TRIGGER_MODE_KEY, disable_all)
 		disable_all(parent[TRIGGER_MODE_KEY])
 		##################################################
@@ -480,12 +481,12 @@ class scope_window(wx.Panel, pubsub.pubsub):
 		self[TRIGGER_CHANNEL_KEY] = 0
 		self[TRIGGER_MODE_KEY] = trig_mode
 
-		self[TRIGGER_SLOPE_KEY] = gr.gr_TRIG_SLOPE_POS
+		self[TRIGGER_SLOPE_KEY] = wxgui.TRIG_SLOPE_POS
 		self[T_FRAC_OFF_KEY] = 0.5
 		self[USE_PERSISTENCE_KEY] = use_persistence
 		self[PERSIST_ALPHA_KEY] = persist_alpha
 
-		if self[TRIGGER_MODE_KEY] == gr.gr_TRIG_MODE_STRIPCHART:
+		if self[TRIGGER_MODE_KEY] == wxgui.TRIG_MODE_STRIPCHART:
 			self[T_FRAC_OFF_KEY] = 0.0
 
 		for i in range(num_inputs):
@@ -639,7 +640,7 @@ class scope_window(wx.Panel, pubsub.pubsub):
 		if self[TRIGGER_LEVEL_KEY] < self.get_y_min():
 			self[TRIGGER_LEVEL_KEY] = self.get_y_min(); return
 		#disable the trigger channel
-		if not self[TRIGGER_SHOW_KEY] or self[XY_MODE_KEY] or self[TRIGGER_MODE_KEY] == gr.gr_TRIG_MODE_FREE:
+		if not self[TRIGGER_SHOW_KEY] or self[XY_MODE_KEY] or self[TRIGGER_MODE_KEY] == wxgui.TRIG_MODE_FREE:
 			self.plotter.clear_waveform(channel='Trig')
 		else: #show trigger channel
 			trigger_level = self[TRIGGER_LEVEL_KEY]
diff --git a/gr-wxgui/python/scopesink_gl.py b/gr-wxgui/python/scopesink_gl.py
index 21d7169026..b2d5670c77 100644
--- a/gr-wxgui/python/scopesink_gl.py
+++ b/gr-wxgui/python/scopesink_gl.py
@@ -26,6 +26,8 @@ import scope_window
 import common
 from gnuradio import gr, filter
 from gnuradio import blocks
+from gnuradio import analog
+from gnuradio import wxgui
 from pubsub import pubsub
 from constants import *
 import math
@@ -101,7 +103,7 @@ class _scope_sink_base(gr.hier_block2, common.wxgui_hb):
 		)
 		#scope
 		msgq = gr.msg_queue(2)
-		scope = gr.oscope_sink_f(sample_rate, msgq)
+		scope = wxgui.oscope_sink_f(sample_rate, msgq)
 		#controller
 		self.controller = pubsub()
 		self.controller.subscribe(SAMPLE_RATE_KEY, scope.set_sample_rate)
@@ -207,12 +209,13 @@ class test_top_block (stdgui2.std_top_block):
 
         # Generate a complex sinusoid
         ampl=1.0e3
-        self.src0 = analog.sig_source_c(input_rate, gr.GR_SIN_WAVE,
+        self.src0 = analog.sig_source_c(input_rate, analog.GR_SIN_WAVE,
 					25.1e3*input_rate/default_input_rate, ampl)
-        self.noise = analog.sig_source_c (input_rate, analog.GR_SIN_WAVE,
-					  11.1*25.1e3*input_rate/default_input_rate, ampl/10)
+        self.noise = analog.sig_source_c(input_rate, analog.GR_SIN_WAVE,
+					 11.1*25.1e3*input_rate/default_input_rate,
+                                         ampl/10)
         #self.noise = analog.noise_source_c(analog.GR_GAUSSIAN, ampl/10)
-        self.combine = analog.add_cc()
+        self.combine = blocks.add_cc()
 
         # We add this throttle block so that this demo doesn't suck down
         # all the CPU available.  You normally wouldn't use it...
diff --git a/gr-wxgui/python/scopesink_nongl.py b/gr-wxgui/python/scopesink_nongl.py
index 2c5ff9278a..28a473860f 100644
--- a/gr-wxgui/python/scopesink_nongl.py
+++ b/gr-wxgui/python/scopesink_nongl.py
@@ -23,6 +23,7 @@
 from gnuradio import gr, gru, eng_notation
 from gnuradio import analog
 from gnuradio import blocks
+from gnuradio import wxgui
 from gnuradio.wxgui import stdgui2
 import wx
 import gnuradio.wxgui.plot as plot
@@ -43,7 +44,7 @@ class scope_sink_f(gr.hier_block2):
                                 gr.io_signature(0,0,0))
 
         msgq = gr.msg_queue(2)         # message queue that holds at most 2 messages
-        self.guts = gr.oscope_sink_f(sample_rate, msgq)
+        self.guts = wxgui.oscope_sink_f(sample_rate, msgq)
         for i in range(num_inputs):
           self.connect((self, i), (self.guts, i))
 
@@ -64,7 +65,7 @@ class scope_sink_c(gr.hier_block2):
                                 gr.io_signature(0,0,0))
 
         msgq = gr.msg_queue(2)         # message queue that holds at most 2 messages
-        self.guts = gr.oscope_sink_f(sample_rate, msgq)
+        self.guts = wxgui.oscope_sink_f(sample_rate, msgq)
         for i in range(num_inputs):
 	        c2f = blocks.complex_to_float()
 	        self.connect((self, i), c2f)
@@ -425,11 +426,11 @@ class scope_window(wx.Panel):
         sink = self.info.scopesink
         s = evt.GetString()
         if s == 'Norm':
-            sink.set_trigger_mode(gr.gr_TRIG_MODE_NORM)
+            sink.set_trigger_mode(wxgui.TRIG_MODE_NORM)
         elif s == 'Auto':
-            sink.set_trigger_mode(gr.gr_TRIG_MODE_AUTO)
+            sink.set_trigger_mode(wxgui.TRIG_MODE_AUTO)
         elif s == 'Free':
-            sink.set_trigger_mode(gr.gr_TRIG_MODE_FREE)
+            sink.set_trigger_mode(wxgui.TRIG_MODE_FREE)
         else:
             assert 0, "Bad trig_mode_choice string"
 
diff --git a/gr-wxgui/python/waterfallsink_nongl.py b/gr-wxgui/python/waterfallsink_nongl.py
index 37b8281927..bd93a84ab7 100644
--- a/gr-wxgui/python/waterfallsink_nongl.py
+++ b/gr-wxgui/python/waterfallsink_nongl.py
@@ -89,7 +89,7 @@ class waterfall_sink_f(gr.hier_block2, waterfall_sink_base):
                                fft_rate=fft_rate,
                                average=average, avg_alpha=avg_alpha, title=title)
 
-        self.s2p = gr.serial_to_parallel(gr.sizeof_float, self.fft_size)
+        self.s2p = blocks.stream_to_vector(gr.sizeof_float, self.fft_size)
         self.one_in_n = blocks.keep_one_in_n(gr.sizeof_float * self.fft_size,
                                              max(1, int(self.sample_rate/self.fft_size/self.fft_rate)))
 
@@ -120,7 +120,7 @@ class waterfall_sink_c(gr.hier_block2, waterfall_sink_base):
                                      fft_rate=fft_rate,
                                      average=average, avg_alpha=avg_alpha, title=title)
 
-        self.s2p = gr.serial_to_parallel(gr.sizeof_gr_complex, self.fft_size)
+        self.s2p = blocks.stream_to_vector(gr.sizeof_gr_complex, self.fft_size)
         self.one_in_n = blocks.keep_one_in_n(gr.sizeof_gr_complex * self.fft_size,
                                              max(1, int(self.sample_rate/self.fft_size/self.fft_rate)))
 
diff --git a/gr-wxgui/swig/CMakeLists.txt b/gr-wxgui/swig/CMakeLists.txt
new file mode 100644
index 0000000000..16e7d65050
--- /dev/null
+++ b/gr-wxgui/swig/CMakeLists.txt
@@ -0,0 +1,57 @@
+# Copyright 2013 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING.  If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+
+########################################################################
+# Setup swig generation
+########################################################################
+include(GrPython)
+include(GrSwig)
+
+set(GR_SWIG_INCLUDE_DIRS
+    ${CMAKE_CURRENT_BINARY_DIR}/../include
+    ${GR_WXGUI_INCLUDE_DIRS}
+    ${GNURADIO_CORE_SWIG_INCLUDE_DIRS}
+    ${GRUEL_INCLUDE_DIRS}
+    ${Boost_INCLUDE_DIRS}
+)
+
+if(ENABLE_GR_CTRLPORT)
+  SET(GR_SWIG_FLAGS "-DGR_CTRLPORT")
+endif(ENABLE_GR_CTRLPORT)
+
+set(GR_SWIG_DOC_FILE ${CMAKE_CURRENT_BINARY_DIR}/wxgui_swig_doc.i)
+set(GR_SWIG_DOC_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../lib)
+set(GR_SWIG_TARGET_DEPS wxgui_generated_includes)
+set(GR_SWIG_LIBRARIES gnuradio-wxgui)
+
+GR_SWIG_MAKE(wxgui_swig wxgui_swig.i)
+
+GR_SWIG_INSTALL(
+    TARGETS wxgui_swig
+    DESTINATION ${GR_PYTHON_DIR}/gnuradio/wxgui
+    COMPONENT "wxgui_python"
+)
+
+install(
+    FILES
+    wxgui_swig.i
+    ${CMAKE_CURRENT_BINARY_DIR}/wxgui_swig_doc.i
+    DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig
+    COMPONENT "wxgui_swig"
+)
diff --git a/gr-wxgui/swig/wxgui_swig.i b/gr-wxgui/swig/wxgui_swig.i
new file mode 100644
index 0000000000..1151b17ee5
--- /dev/null
+++ b/gr-wxgui/swig/wxgui_swig.i
@@ -0,0 +1,43 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2013 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#define WXGUI_API
+
+%include "gnuradio.i"
+
+//load generated python docstrings
+%include "wxgui_swig_doc.i"
+
+%include "wxgui/trigger_mode.h"
+
+%{
+#include "wxgui/oscope_sink_x.h"
+#include "wxgui/histo_sink_f.h"
+#include "wxgui/oscope_sink_f.h"
+%}
+
+%include "wxgui/oscope_sink_x.h"
+%include "wxgui/histo_sink_f.h"
+%include "wxgui/oscope_sink_f.h"
+
+GR_SWIG_BLOCK_MAGIC2(wxgui, histo_sink_f);
+GR_SWIG_BLOCK_MAGIC2(wxgui, oscope_sink_f);
diff --git a/grc/examples/xmlrpc/xmlrpc_server.grc b/grc/examples/xmlrpc/xmlrpc_server.grc
index 7497117f28..3a133fd7c4 100644
--- a/grc/examples/xmlrpc/xmlrpc_server.grc
+++ b/grc/examples/xmlrpc/xmlrpc_server.grc
@@ -170,7 +170,7 @@
     </param>
     <param>
       <key>trig_mode</key>
-      <value>gr.gr_TRIG_MODE_AUTO</value>
+      <value>wxgui.TRIG_MODE_AUTO</value>
     </param>
     <param>
       <key>y_axis_label</key>
-- 
cgit v1.2.3


From f5fb7e9d9df913eb8ca23c47b6b9aa117656971f Mon Sep 17 00:00:00 2001
From: Tom Rondeau <trondeau@vt.edu>
Date: Wed, 20 Mar 2013 10:48:05 -0400
Subject: wxgui: fixing up some sloppiness after merge from master.

---
 gr-wxgui/python/fftsink_nongl.py | 29 +++++++++--------------------
 1 file changed, 9 insertions(+), 20 deletions(-)

(limited to 'gr-wxgui/python')

diff --git a/gr-wxgui/python/fftsink_nongl.py b/gr-wxgui/python/fftsink_nongl.py
index c65fc07ae4..57eb2840cd 100644
--- a/gr-wxgui/python/fftsink_nongl.py
+++ b/gr-wxgui/python/fftsink_nongl.py
@@ -21,7 +21,7 @@
 #
 
 from gnuradio import gr, gru, fft
-+import gnuradio.filter as grfilter
+import gnuradio.filter as grfilter
 from gnuradio import blocks
 from gnuradio import analog
 from gnuradio.wxgui import stdgui2
@@ -41,7 +41,8 @@ class fft_sink_base(object):
                  y_divs=8, ref_level=50,
                  sample_rate=1, fft_size=512,
                  fft_rate=default_fft_rate,
-                 average=False, avg_alpha=None, title='', peak_hold=False,use_persistence=False,persist_alpha=0.2):
+                 average=False, avg_alpha=None, title='',
+                 peak_hold=False, use_persistence=False, persist_alpha=0.2):
 
         # initialize common attributes
         self.baseband_freq = baseband_freq
@@ -110,7 +111,8 @@ class fft_sink_f(gr.hier_block2, fft_sink_base):
     def __init__(self, parent, baseband_freq=0, ref_scale=2.0,
                  y_per_div=10, y_divs=8, ref_level=50, sample_rate=1, fft_size=512,
                  fft_rate=default_fft_rate, average=False, avg_alpha=None,
-                 title='', size=default_fftsink_size, peak_hold=False, use_persistence=False,persist_alpha=0.2, **kwargs):
+                 title='', size=default_fftsink_size, peak_hold=False,
+                 use_persistence=False, persist_alpha=0.2, **kwargs):
 
         gr.hier_block2.__init__(self, "fft_sink_f",
                                 gr.io_signature(1, 1, gr.sizeof_float),
@@ -121,7 +123,8 @@ class fft_sink_f(gr.hier_block2, fft_sink_base):
                                sample_rate=sample_rate, fft_size=fft_size,
                                fft_rate=fft_rate,
                                average=average, avg_alpha=avg_alpha, title=title,
-                               peak_hold=peak_hold,use_persistence=use_persistence,persist_alpha=persist_alpha)
+                               peak_hold=peak_hold, use_persistence=use_persistence,
+                               persist_alpha=persist_alpha)
 
         self.s2p = blocks.stream_to_vector(gr.sizeof_float, self.fft_size)
         self.one_in_n = blocks.keep_one_in_n(gr.sizeof_float * self.fft_size,
@@ -167,7 +170,8 @@ class fft_sink_c(gr.hier_block2, fft_sink_base):
                                sample_rate=sample_rate, fft_size=fft_size,
                                fft_rate=fft_rate,
                                average=average, avg_alpha=avg_alpha, title=title,
-                               peak_hold=peak_hold, use_persistence=use_persistence,persist_alpha=persist_alpha)
+                               peak_hold=peak_hold, use_persistence=use_persistence, 
+                               persist_alpha=persist_alpha)
 
         self.s2p = blocks.stream_to_vector(gr.sizeof_gr_complex, self.fft_size)
         self.one_in_n = blocks.keep_one_in_n(gr.sizeof_gr_complex * self.fft_size,
@@ -611,15 +615,10 @@ class test_app_block (stdgui2.std_top_block):
         input_rate = 100*20.48e3
 
         # Generate a complex sinusoid
-<<<<<<< HEAD:gr-wxgui/python/fftsink_nongl.py
-        #src1 = analog.sig_source_c(input_rate, analog.GR_SIN_WAVE, 100*2e3, 1)
-        src1 = analog.sig_source_c(input_rate, analog.GR_CONST_WAVE, 100*5.75e3, 1)
-=======
         #src1 = gr.sig_source_c (input_rate, gr.GR_SIN_WAVE, 100*2e3, 1)
         src1 = gr.sig_source_c (input_rate, gr.GR_CONST_WAVE, 100*5.75e3, 1)
         noise1 = analog.noise_source_c(analog.GR_UNIFORM, 1.0/10)
         add1 = blocks.add_cc()
->>>>>>> master:gr-wxgui/src/python/fftsink_nongl.py
 
         # We add these throttle blocks so that this demo doesn't
         # suck down all the CPU available.  Normally you wouldn't use these.
@@ -634,15 +633,6 @@ class test_app_block (stdgui2.std_top_block):
         self.connect(noise1, (add1,1))
         self.connect(add1, thr1, sink1)
 
-<<<<<<< HEAD:gr-wxgui/python/fftsink_nongl.py
-        #src2 = analog.sig_source_f(input_rate, analog.GR_SIN_WAVE, 100*2e3, 1)
-        src2 = analog.sig_source_f(input_rate, analog.GR_CONST_WAVE, 100*5.75e3, 1)
-        thr2 = blocks.throttle(gr.sizeof_float, input_rate)
-        sink2 = fft_sink_f(panel, title="Real Data", fft_size=fft_size*2,
-                           sample_rate=input_rate, baseband_freq=100e3,
-                           ref_level=0, y_per_div=20, y_divs=10)
-        vbox.Add(sink2.win, 1, wx.EXPAND)
-=======
         #src2 = gr.sig_source_f (input_rate, gr.GR_SIN_WAVE, 100*2e3, 1)
         src2 = gr.sig_source_f (input_rate, gr.GR_CONST_WAVE, 100*5.75e3, 1)
         noise2 = analog.noise_source_f(analog.GR_UNIFORM, 1.0/10)
@@ -653,7 +643,6 @@ class test_app_block (stdgui2.std_top_block):
                             sample_rate=input_rate, baseband_freq=100e3,
                             ref_level=0, y_per_div=20, y_divs=10)
         vbox.Add (sink2.win, 1, wx.EXPAND)
->>>>>>> master:gr-wxgui/src/python/fftsink_nongl.py
 
         self.connect(src2, (add2,0))
         self.connect(noise2, (add2,1))
-- 
cgit v1.2.3


From 005639344364edad157cfceeab2a47fae22878e1 Mon Sep 17 00:00:00 2001
From: Tim O'Shea <tim.oshea753@gmail.com>
Date: Fri, 29 Mar 2013 13:04:13 -0400
Subject: gr-wxgui: blocks naming fix

---
 gr-wxgui/python/fftsink_nongl.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

(limited to 'gr-wxgui/python')

diff --git a/gr-wxgui/python/fftsink_nongl.py b/gr-wxgui/python/fftsink_nongl.py
index 57eb2840cd..f567a22256 100644
--- a/gr-wxgui/python/fftsink_nongl.py
+++ b/gr-wxgui/python/fftsink_nongl.py
@@ -140,7 +140,7 @@ class fft_sink_f(gr.hier_block2, fft_sink_base):
         self.avg = grfilter.single_pole_iir_filter_ff(1.0, self.fft_size)
 
         # FIXME  We need to add 3dB to all bins but the DC bin
-        self.log = gr.nlog10_ff(20, self.fft_size,
+        self.log = blocks.nlog10_ff(20, self.fft_size,
                                -20*math.log10(self.fft_size)                # Adjust for number of bins
                                -10*math.log10(power/self.fft_size)        # Adjust for windowing loss
                                -20*math.log10(ref_scale/2))                # Adjust for reference scale
@@ -187,7 +187,7 @@ class fft_sink_c(gr.hier_block2, fft_sink_base):
         self.avg = grfilter.single_pole_iir_filter_ff(1.0, self.fft_size)
 
         # FIXME  We need to add 3dB to all bins but the DC bin
-        self.log = gr.nlog10_ff(20, self.fft_size,
+        self.log = blocks.nlog10_ff(20, self.fft_size,
                                 -20*math.log10(self.fft_size)                # Adjust for number of bins
                                 -10*math.log10(power/self.fft_size)        # Adjust for windowing loss
                                 -20*math.log10(ref_scale/2))                # Adjust for reference scale
-- 
cgit v1.2.3