Added virtual sink and logic to clone port.
[debian/gnuradio] / grc / python / Port.py
index f71c5fa35f87e768a979c4cc84e471deb3408704..bfbac72374f11eac6a51576ede21654210939be1 100644 (file)
@@ -57,11 +57,25 @@ class Port(_Port):
                except AssertionError: self.add_error_message('Port is not connected.')
                try: assert self.is_source() or len(self.get_enabled_connections()) <= 1
                except AssertionError: self.add_error_message('Port has too many connections.')
+               ################################################################
+               # message port logic
+               ################################################################
                if self.get_type() == 'msg':
                        try: assert not self.get_nports()
                        except AssertionError: self.add_error_message('A port of type "msg" cannot have "nports" set.')
                        try: assert self.get_vlen() == 1
                        except AssertionError: self.add_error_message('A port of type "msg" must have a "vlen" of 1.')
+               ################################################################
+               # virtual sink logic
+               ################################################################
+               if self.get_parent().get_key() == 'virtual_sink':
+                       if self.get_enabled_connections(): #clone type and vlen
+                               source = self.get_enabled_connections()[0].get_source()
+                               self._type = str(source.get_type())
+                               self._vlen = str(source.get_vlen())
+                       else: #reset type and vlen
+                               self._type = ''
+                               self._vlen = ''
 
        def get_vlen(self):
                """