summaryrefslogtreecommitdiff
path: root/grc/core/Block.py
diff options
context:
space:
mode:
Diffstat (limited to 'grc/core/Block.py')
-rw-r--r--grc/core/Block.py55
1 files changed, 22 insertions, 33 deletions
diff --git a/grc/core/Block.py b/grc/core/Block.py
index d3fe4d85f2..10deec8e26 100644
--- a/grc/core/Block.py
+++ b/grc/core/Block.py
@@ -600,18 +600,13 @@ class Block(Element):
##############################################
def get_bus_structure(self, direction):
- bus_structure = self.resolve_dependencies(
- self._bus_structure_source if direction == 'source' else
- self._bus_structure_sink)
-
+ bus_structure = self.resolve_dependencies(self._bus_structure[direction])
if not bus_structure:
- return '' # TODO: Don't like empty strings. should change this to None eventually
-
+ return
try:
- clean_bus_structure = self.parent.evaluate(bus_structure)
- return clean_bus_structure
+ return self.parent_flowgraph.evaluate(bus_structure)
except:
- return ''
+ return
@staticmethod
def back_ofthe_bus(portlist):
@@ -625,16 +620,16 @@ class Block(Element):
def _import_bus_stuff(self, n):
bus_sinks = n.get('bus_sink', [])
if len(bus_sinks) > 0 and not self._bussify_sink:
- self.bussify({'name': 'bus', 'type': 'bus'}, 'sink')
+ self.bussify('sink')
elif len(bus_sinks) > 0:
- self.bussify({'name': 'bus', 'type': 'bus'}, 'sink')
- self.bussify({'name': 'bus', 'type': 'bus'}, 'sink')
+ self.bussify('sink')
+ self.bussify('sink')
bus_sources = n.get('bus_source', [])
if len(bus_sources) > 0 and not self._bussify_source:
- self.bussify({'name': 'bus', 'type': 'bus'}, 'source')
+ self.bussify('source')
elif len(bus_sources) > 0:
- self.bussify({'name': 'bus', 'type': 'bus'}, 'source')
- self.bussify({'name': 'bus', 'type': 'bus'}, 'source')
+ self.bussify('source')
+ self.bussify('source')
def form_bus_structure(self, direc):
ports = self.sources if direc == 'source' else self.sinks
@@ -657,12 +652,7 @@ class Block(Element):
self.current_bus_structure[direc] = struct
return struct
- def bussify(self, n, direc):
- if direc == 'source':
- get_p_gui = self.get_sources_gui
- else:
- get_p_gui = self.get_sinks_gui
-
+ def bussify(self, direc):
ports = self.sources if direc == 'source' else self.sinks
for elt in ports:
@@ -670,33 +660,32 @@ class Block(Element):
self.parent.remove_element(connect)
if ports and all('bus' != p.get_type() for p in ports):
- struct = self.form_bus_structure(direc)
- self.current_bus_structure[direc] = struct
+ struct = self.current_bus_structure[direc] = self.form_bus_structure(direc)
+ n = {'type': 'bus'}
if ports[0].get_nports():
n['nports'] = '1'
- for i in range(len(struct)):
- n['key'] = str(len(ports))
- n = dict(n)
- port = self.parent_platform.get_new_port(self, direction=direc, **n)
+ for i, structlet in enumerate(struct):
+ name = 'bus{}#{}'.format(i, len(structlet))
+ port = self.parent_platform.get_new_port(
+ self, direction=direc, key=str(len(ports)), name=name, **n)
ports.append(port)
elif any('bus' == p.get_type() for p in ports):
+ get_p_gui = self.get_sources_gui if direc == 'source' else self.get_sinks_gui
for elt in get_p_gui():
ports.remove(elt)
self.current_bus_structure[direc] = ''
def _init_bus_ports(self, n):
- self.back_ofthe_bus(self.sources)
- self.back_ofthe_bus(self.sinks)
self.current_bus_structure = {'source': '', 'sink': ''}
- self._bus_structure_source = n.get('bus_structure_source', '')
- self._bus_structure_sink = n.get('bus_structure_sink', '')
+ self._bus_structure = {'source': n.get('bus_structure_source', ''),
+ 'sink': n.get('bus_structure_sink', '')}
self._bussify_sink = n.get('bus_sink')
self._bussify_source = n.get('bus_source')
if self._bussify_sink:
- self.bussify({'name': 'bus', 'type': 'bus'}, 'sink')
+ self.bussify('sink')
if self._bussify_source:
- self.bussify({'name': 'bus', 'type': 'bus'}, 'source')
+ self.bussify('source')
class EPyBlock(Block):