Allow for multiple io pads per hier flow graph.
[debian/gnuradio] / grc / python / FlowGraph.py
index 4dd18a81f4cd230dbec042dfb77a2068129ed859..24e4aac3b8576e7a53bb4c0b1ab908bd390b3496 100644 (file)
@@ -50,44 +50,36 @@ class FlowGraph(_FlowGraph, _GUIFlowGraph):
                #return from cache
                return self._eval_cache[my_hash]
 
-       def _get_io_signature(self, pad_key):
+       def _get_io_signaturev(self, pad_key):
                """
-               Get an io signature for this flow graph.
+               Get a list of io signatures for this flow graph.
                The pad key determines the directionality of the io signature.
                @param pad_key a string of pad_source or pad_sink
-               @return a dict with: type, nports, vlen, size
+               @return a list of dicts with: type, label, vlen, size
                """
                pads = filter(lambda b: b.get_key() == pad_key, self.get_enabled_blocks())
-               if not pads: return {
-                       'nports': '0',
-                       'type': '',
-                       'vlen': '0',
-                       'size': '0',
-               }
-               pad = pads[0] #take only the first, user should not have more than 1
+               sorted_pads = sorted(pads, lambda x, y: cmp(x.get_id(), y.get_id()))
                #load io signature
-               return {
-                       'nports': str(pad.get_param('nports').get_evaluated()),
+               return [{
+                       'label': str(pad.get_param('label').get_evaluated()),
                        'type': str(pad.get_param('type').get_evaluated()),
                        'vlen': str(pad.get_param('vlen').get_evaluated()),
                        'size': pad.get_param('type').get_opt('size'),
-               }
+               } for pad in sorted_pads]
 
-       def get_input_signature(self):
+       def get_input_signaturev(self):
                """
                Get the io signature for the input side of this flow graph.
-               The io signature with be "0", "0" if no pad source is present.
-               @return a string tuple of type, num_ports, port_size
+               @return a list of io signature structures
                """
-               return self._get_io_signature('pad_source')
+               return self._get_io_signaturev('pad_source')
 
-       def get_output_signature(self):
+       def get_output_signaturev(self):
                """
                Get the io signature for the output side of this flow graph.
-               The io signature with be "0", "0" if no pad sink is present.
-               @return a string tuple of type, num_ports, port_size
+               @return a list of io signature structures
                """
-               return self._get_io_signature('pad_sink')
+               return self._get_io_signaturev('pad_sink')
 
        def get_imports(self):
                """