diff options
author | Sebastian Koslowski <koslowski@kit.edu> | 2015-10-12 16:45:05 +0200 |
---|---|---|
committer | Sebastian Koslowski <koslowski@kit.edu> | 2015-11-13 22:49:37 +0100 |
commit | 19944f6328f1a852ed3384e750cb2b61da50d5bf (patch) | |
tree | fbbe9b612560a7b4350e2064bc001dfa85ec630f /grc/python/FlowGraph.py | |
parent | 5c544a06e2d129a5ac0d2cfe6fc0b4d32e8a1849 (diff) |
grc: auto-generate missing hier_blocks
Diffstat (limited to 'grc/python/FlowGraph.py')
-rw-r--r-- | grc/python/FlowGraph.py | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/grc/python/FlowGraph.py b/grc/python/FlowGraph.py index 49530af8a3..9b55cb6d43 100644 --- a/grc/python/FlowGraph.py +++ b/grc/python/FlowGraph.py @@ -30,9 +30,11 @@ _bussrc_searcher = re.compile('^(bus_source)$') _bus_struct_sink_searcher = re.compile('^(bus_structure_sink)$') _bus_struct_src_searcher = re.compile('^(bus_structure_source)$') + class FlowGraph(_FlowGraph, _GUIFlowGraph): def __init__(self, **kwargs): + self.grc_file_path = '' _FlowGraph.__init__(self, **kwargs) _GUIFlowGraph.__init__(self) self._eval_cache = dict() @@ -232,7 +234,6 @@ class FlowGraph(_FlowGraph, _GUIFlowGraph): return bussrc - def rewrite(self): """ Flag the namespace to be renewed. @@ -299,3 +300,21 @@ class FlowGraph(_FlowGraph, _GUIFlowGraph): #evaluate e = self._eval(expr, self.n, self.n_hash) return e + + def get_new_block(self, key): + """Try to auto-generate the block from file if missing""" + block = _FlowGraph.get_new_block(self, key) + if not block: + platform = self.get_parent() + # we're before the initial fg rewrite(), so no evaluated values! + # --> use raw value instead + path_param = self._options_block.get_param('hier_block_src_path') + file_path = platform.find_file_in_paths( + filename=key + '.' + platform.get_key(), + paths=path_param.get_value(), + cwd=self.grc_file_path + ) + if file_path: # grc file found. load and get block + platform.load_and_generate_flow_graph(file_path) + block = _FlowGraph.get_new_block(self, key) # can be None + return block |