show/hide param logic, usrp loopback example - neg freq
authorjblum <jblum@221aa14e-8319-0410-a670-987f0aec2ac5>
Tue, 9 Sep 2008 05:46:45 +0000 (05:46 +0000)
committerjblum <jblum@221aa14e-8319-0410-a670-987f0aec2ac5>
Tue, 9 Sep 2008 05:46:45 +0000 (05:46 +0000)
git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@9541 221aa14e-8319-0410-a670-987f0aec2ac5

grc/data/platforms/python/blocks/blks2_error_rate.xml
grc/data/platforms/python/blocks/options.xml
grc/data/platforms/python/blocks/preferences.xml
grc/examples/usrp/usrp_two_tone_loopback.grc
grc/src/gui/Preferences.py
grc/src/platforms/base/Param.py
grc/src/platforms/gui/Block.py
grc/src/platforms/gui/FlowGraph.py
grc/src/platforms/python/Param.py

index 79703f6e981ef4e852474376f8912565e87c6bb9..852e7db0128bff92f3508889648957e7eda1c268 100644 (file)
                <option>
                        <name>Bit Error Rate</name>
                        <key>&quot;BER&quot;</key>
+                       <opt>hide_bps:</opt>
                </option>
                <option>
                        <name>Symbol Error Rate</name>
                        <key>&quot;SER&quot;</key>
+                       <opt>hide_bps:all</opt>
                </option>
        </param>
        <param>
@@ -38,6 +40,7 @@
                <key>bits_per_symbol</key>
                <value>2</value>
                <type>int</type>
+               <hide>$type.hide_bps</hide>
        </param>
        <sink>
                <name>ref</name>
index 8e8f0689177ad83c63d45c84e4957a169f26952c..3a73050ae5a46ee211a75e0d775a0dbc9275910c 100644 (file)
@@ -39,6 +39,7 @@ import wx
                <key>window_size</key>
                <value>1280, 1024</value>
                <type>int_vector</type>
+               <hide>part</hide>
        </param>
        <param>
                <name>Generate Options</name>
index 51138c12388a7855bc82e858a5683a45a7e22cb0..e426b5a34706d5e0e20cdbd717a3844c48b8f844 100644 (file)
                        <key>hide</key>
                </option>
        </param>
-       <param>
-               <name>Show ID Label</name>
-               <key>show_id</key>
-               <value>show</value>
-               <type>enum</type>
-               <option>
-                       <name>Show</name>
-                       <key>show</key>
-               </option>
-               <option>
-                       <name>Hide</name>
-                       <key>hide</key>
-               </option>
-       </param>
        <!-- Misc Prefs -->
        <param>
                <name>Restore Open Files</name>
index ccbe190ec3200ad8704c020ae0334dd5573a3f62..30f5409b3408331dae95b2e771dff7bcd1c684a7 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version='1.0' encoding='ASCII'?>
 <flow_graph>
-  <timestamp>Thu Jul 24 14:27:46 2008</timestamp>
+  <timestamp>Mon Sep  8 21:47:19 2008</timestamp>
   <block>
     <key>options</key>
     <param>
     </param>
   </block>
   <block>
-    <key>variable_slider</key>
+    <key>variable</key>
     <param>
       <key>id</key>
-      <value>tone_ampl</value>
+      <value>samp_rate</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
-    <param>
-      <key>label</key>
-      <value>Tone Ampl</value>
-    </param>
     <param>
       <key>value</key>
-      <value>5000</value>
-    </param>
-    <param>
-      <key>min</key>
-      <value>0</value>
-    </param>
-    <param>
-      <key>max</key>
-      <value>5000</value>
-    </param>
-    <param>
-      <key>num_steps</key>
-      <value>100</value>
-    </param>
-    <param>
-      <key>slider_type</key>
-      <value>vertical</value>
-    </param>
-    <param>
-      <key>grid_pos</key>
-      <value>1, 0, 2, 1</value>
+      <value>64e6/200</value>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(21, 422)</value>
+      <value>(9, 166)</value>
     </param>
     <param>
       <key>_rotation</key>
     </param>
   </block>
   <block>
-    <key>usrp_simple_sink_x</key>
+    <key>variable</key>
     <param>
       <key>id</key>
-      <value>usrp_simple_sink_x</value>
-    </param>
-    <param>
-      <key>_enabled</key>
-      <value>True</value>
-    </param>
-    <param>
-      <key>type</key>
-      <value>complex</value>
-    </param>
-    <param>
-      <key>number</key>
-      <value>0</value>
-    </param>
-    <param>
-      <key>subdev_spec</key>
-      <value>None</value>
-    </param>
-    <param>
-      <key>frequency</key>
       <value>tun_freq</value>
     </param>
-    <param>
-      <key>interpolation</key>
-      <value>400</value>
-    </param>
-    <param>
-      <key>gain</key>
-      <value>0</value>
-    </param>
-    <param>
-      <key>mux</key>
-      <value>0x0</value>
-    </param>
-    <param>
-      <key>auto_tr</key>
-      <value>None</value>
-    </param>
-    <param>
-      <key>tx_enb</key>
-      <value>None</value>
-    </param>
-    <param>
-      <key>_coordinate</key>
-      <value>(835, 5)</value>
-    </param>
-    <param>
-      <key>_rotation</key>
-      <value>0</value>
-    </param>
-  </block>
-  <block>
-    <key>gr_float_to_complex</key>
-    <param>
-      <key>id</key>
-      <value>gr_float_to_complex</value>
-    </param>
-    <param>
-      <key>_enabled</key>
-      <value>True</value>
-    </param>
-    <param>
-      <key>_coordinate</key>
-      <value>(634, 226)</value>
-    </param>
-    <param>
-      <key>_rotation</key>
-      <value>0</value>
-    </param>
-  </block>
-  <block>
-    <key>gr_add_vxx</key>
-    <param>
-      <key>id</key>
-      <value>gr_add_vxx</value>
-    </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>type</key>
-      <value>float</value>
-    </param>
-    <param>
-      <key>num_inputs</key>
-      <value>3</value>
-    </param>
-    <param>
-      <key>vlen</key>
-      <value>1</value>
+      <key>value</key>
+      <value>int(100e6)</value>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(528, 78)</value>
+      <value>(116, 166)</value>
     </param>
     <param>
       <key>_rotation</key>
     </param>
     <param>
       <key>type</key>
-      <value>float</value>
+      <value>complex</value>
     </param>
     <param>
       <key>samp_rate</key>
     </param>
     <param>
       <key>type</key>
-      <value>float</value>
+      <value>complex</value>
     </param>
     <param>
       <key>samp_rate</key>
     </param>
     <param>
       <key>type</key>
-      <value>float</value>
+      <value>complex</value>
     </param>
     <param>
       <key>noise_type</key>
     </param>
   </block>
   <block>
-    <key>variable</key>
+    <key>gr_add_vxx</key>
     <param>
       <key>id</key>
-      <value>samp_rate</value>
+      <value>gr_add_vxx</value>
     </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
     <param>
-      <key>value</key>
-      <value>64e6/200</value>
+      <key>type</key>
+      <value>complex</value>
+    </param>
+    <param>
+      <key>num_inputs</key>
+      <value>3</value>
+    </param>
+    <param>
+      <key>vlen</key>
+      <value>1</value>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(9, 166)</value>
+      <value>(528, 78)</value>
     </param>
     <param>
       <key>_rotation</key>
     </param>
   </block>
   <block>
-    <key>variable</key>
+    <key>usrp_simple_sink_x</key>
     <param>
       <key>id</key>
+      <value>usrp_simple_sink_x</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>complex</value>
+    </param>
+    <param>
+      <key>number</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>subdev_spec</key>
+      <value>None</value>
+    </param>
+    <param>
+      <key>frequency</key>
       <value>tun_freq</value>
     </param>
+    <param>
+      <key>interpolation</key>
+      <value>400</value>
+    </param>
+    <param>
+      <key>gain</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>mux</key>
+      <value>0x0</value>
+    </param>
+    <param>
+      <key>auto_tr</key>
+      <value>None</value>
+    </param>
+    <param>
+      <key>tx_enb</key>
+      <value>None</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(835, 5)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>variable_slider</key>
+    <param>
+      <key>id</key>
+      <value>tone_ampl</value>
+    </param>
     <param>
       <key>_enabled</key>
       <value>True</value>
     </param>
+    <param>
+      <key>label</key>
+      <value>Tone Ampl</value>
+    </param>
     <param>
       <key>value</key>
-      <value>int(100e6)</value>
+      <value>5000</value>
+    </param>
+    <param>
+      <key>min</key>
+      <value>-samp_rate/2</value>
+    </param>
+    <param>
+      <key>max</key>
+      <value>samp_rate/2</value>
+    </param>
+    <param>
+      <key>num_steps</key>
+      <value>100</value>
+    </param>
+    <param>
+      <key>slider_type</key>
+      <value>vertical</value>
+    </param>
+    <param>
+      <key>grid_pos</key>
+      <value>1, 0, 2, 1</value>
     </param>
     <param>
       <key>_coordinate</key>
-      <value>(116, 166)</value>
+      <value>(21, 422)</value>
     </param>
     <param>
       <key>_rotation</key>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
-  <connection>
-    <source_block_id>gr_float_to_complex</source_block_id>
-    <sink_block_id>usrp_simple_sink_x</sink_block_id>
-    <source_key>0</source_key>
-    <sink_key>0</sink_key>
-  </connection>
   <connection>
     <source_block_id>gr_add_vxx</source_block_id>
-    <sink_block_id>gr_float_to_complex</sink_block_id>
+    <sink_block_id>usrp_simple_sink_x</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
-  <connection>
-    <source_block_id>gr_add_vxx</source_block_id>
-    <sink_block_id>gr_float_to_complex</sink_block_id>
-    <source_key>0</source_key>
-    <sink_key>1</sink_key>
-  </connection>
 </flow_graph>
\ No newline at end of file
index a5591500dc67eaa8ea03b5d406e5c76d729fa8d5..fc06d924641e464d0471ee71e8b6698138c94365 100644 (file)
@@ -55,7 +55,6 @@ class _Preferences(object):
                self.file_open_param = self._prefs_block.get_param('file_open')
                self.files_open_param = self._prefs_block.get_param('files_open')
                self.show_params_param = self._prefs_block.get_param('show_params')
-               self.show_id_param = self._prefs_block.get_param('show_id')
 
        def save(self):
                try: ParseXML.to_file({'block': self._prefs_block.export_data()}, self._prefs_file_path)
@@ -77,9 +76,8 @@ Snap to Grid forces the upper right corner of the signal block to align with a g
                                '''
 Show or hide the reports window at the bottom of the main window.
 Show or hide all paramater labels in the signal blocks.
-Show or hide the ID label in the signal blocks.
 ''',
-                               [self.show_reports_param, self.show_params_param, self.show_id_param],
+                               [self.show_reports_param, self.show_params_param],
                        ),
                        (
                                'Misc',
@@ -125,6 +123,3 @@ def show_grid():
 
 def show_params():
        return _get_prefs().show_params_param.get_value() == 'show'
-
-def show_id():
-       return _get_prefs().show_id_param.get_value() == 'show'
index 3a8d98c304c63e7a3f325ce374ce7d682389b873..232f6758f4fdc2290d55abb96140d3f36b0de88e 100644 (file)
@@ -188,8 +188,6 @@ class Param(Element):
 
        def is_enum(self): return self._type == 'enum'
 
-       def is_type_dependent(self): return '$' in self._type
-
        ##############################################
        # Access Options
        ##############################################
index d38e1713320068c3040bfbbdbbc55c51b3b13115..7589540b967efa9a4ff6316e68e460b3a72fc4a9 100644 (file)
@@ -134,10 +134,9 @@ class Block(Element):
                desc = pango.FontDescription(BLOCK_FONT)
                layout.set_font_description(desc)
                self.label_width, self.label_height = layout.get_pixel_size()
-               #display the params (except for the special params id and position)
+               #display the params
                if Preferences.show_params():
                        for param in filter(lambda p: p.get_hide() not in ('all', 'part'), self.get_params()):
-                               if not Preferences.show_id() and param.get_key() == 'id': continue
                                layout = param.get_layout()
                                layouts.append(layout)
                                w,h = layout.get_pixel_size()
index 1e654e1bf89919f55d0de9d4b27d6fb27cc6f231..60bb575283d563adfe9c0b429682583eb4712f31 100644 (file)
@@ -187,21 +187,22 @@ class FlowGraph(Element):
                """
                changed = False
                for selected_block in self.get_selected_blocks():
-                       for child in selected_block.get_params() + selected_block.get_ports():
-                               #find a param that controls a type
-                               type_param = None
-                               for param in selected_block.get_params():
-                                       if not type_param and param.is_enum(): type_param = param
-                                       if param.is_enum() and param.get_key() in child._type: type_param = param
-                               if type_param:
-                                       #try to increment the enum by direction
-                                       try:
-                                               keys = type_param.get_option_keys()
-                                               old_index = keys.index(type_param.get_value())
-                                               new_index = (old_index + direction + len(keys))%len(keys)
-                                               type_param.set_value(keys[new_index])
-                                               changed = True
-                                       except: pass
+                       type_param = None
+                       for param in filter(lambda p: p.is_enum(), selected_block.get_params()):
+                               children = param.get_parent().get_ports() + param.get_parent().get_params()
+                               #priority to the type controller
+                               if param.get_key() in ' '.join(map(lambda p: p._type, children)): type_param = param
+                               #use param if type param is unset
+                               if not type_param: type_param = param
+                       if type_param:
+                               #try to increment the enum by direction
+                               try:
+                                       keys = type_param.get_option_keys()
+                                       old_index = keys.index(type_param.get_value())
+                                       new_index = (old_index + direction + len(keys))%len(keys)
+                                       type_param.set_value(keys[new_index])
+                                       changed = True
+                               except: pass
                return changed
 
        def port_controller_modify_selected(self, direction):
@@ -212,7 +213,7 @@ class FlowGraph(Element):
                """
                changed = False
                for selected_block in self.get_selected_blocks():
-                       for ports in (selected_block.get_sources(), selected_block.get_sinks()):
+                       for ports in selected_block.get_ports():
                                if ports and hasattr(ports[0], 'get_nports') and ports[0].get_nports():
                                        #find the param that controls port0
                                        for param in selected_block.get_params():
index ed5c64063b4f7cb84b4a7b0f45ba18736c61c795..39ec57e3280fad0b7280bbb2dcd5573a689463a7 100644 (file)
@@ -39,19 +39,21 @@ class Param(_Param):
        def get_hide(self):
                """
                Get the hide value from the base class.
-               If hide was empty, and this is a type controller, set hide to part.
-               If hide was empty, and this is an id of a non variable, set hide to part.
+               Hide the ID parameter for most blocks. Exceptions below.
+               If the parameter controls a port type, vlen, or nports, return part.
+               These parameters are redundant to display in the flow graph view.
                @return hide the hide property string
                """
                hide = _Param.get_hide(self)
-               #hide IO controlling params
-               if not hide and self.get_key() in (
-                       'type', 'vlen', 'num_inputs', 'num_outputs'
-               ): hide = 'part'
+               if hide: return hide
                #hide ID in non variable blocks
-               elif not hide and self.get_key() == 'id' and self.get_parent().get_key() not in (
+               if self.get_key() == 'id' and self.get_parent().get_key() not in (
                        'variable', 'variable_slider', 'variable_chooser', 'variable_text_box', 'parameter', 'options'
-               ): hide = 'part'
+               ): return 'part'
+               #hide port controllers
+               if self.get_key() in ' '.join(map(
+                       lambda p: ' '.join([p._type, p._vlen, p._nports]), self.get_parent().get_ports())
+               ): return 'part'
                return hide
 
        def evaluate(self):