diff options
author | Johnathan Corgan | 2009-09-23 18:15:59 -0700 |
---|---|---|
committer | Johnathan Corgan | 2009-09-23 18:15:59 -0700 |
commit | 18cd6228abbd66d5be283745b5e8f8fca94c3ad2 (patch) | |
tree | ad4498ed04eb5afbb62ed34119c5657075e9b531 /grc/base | |
parent | 7d8dd5e122e0201d96410eec6549b903881f8b3a (diff) | |
parent | 803943020c3d53686f2b65a70cd24a780b46c925 (diff) | |
download | gnuradio-18cd6228abbd66d5be283745b5e8f8fca94c3ad2.tar.gz gnuradio-18cd6228abbd66d5be283745b5e8f8fca94c3ad2.tar.bz2 gnuradio-18cd6228abbd66d5be283745b5e8f8fca94c3ad2.zip |
Merge branch 'grc' of http://gnuradio.org/git/jblum into master
* 'grc' of http://gnuradio.org/git/jblum:
xor that hash
bug fix for handling loading of dynamic params
Diffstat (limited to 'grc/base')
-rw-r--r-- | grc/base/Block.py | 24 | ||||
-rw-r--r-- | grc/base/FlowGraph.py | 1 |
2 files changed, 17 insertions, 8 deletions
diff --git a/grc/base/Block.py b/grc/base/Block.py index cb21c3958..203e878e4 100644 --- a/grc/base/Block.py +++ b/grc/base/Block.py @@ -233,12 +233,22 @@ class Block(Element): """ Import this block's params from nested data. Any param keys that do not exist will be ignored. + Since params can be dynamically created based another param, + call rewrite, and repeat the load until the params stick. + This call to rewrite will also create any dynamic ports + that are needed for the connections creation phase. @param n the nested data odict """ - params_n = n.findall('param') - for param_n in params_n: - key = param_n.find('key') - value = param_n.find('value') - #the key must exist in this block's params - if key in self.get_param_keys(): - self.get_param(key).set_value(value) + get_hash = lambda: reduce(lambda x, y: x ^ y, [hash(param) for param in self.get_params()], 0) + my_hash = 0 + while get_hash() != my_hash: + params_n = n.findall('param') + for param_n in params_n: + key = param_n.find('key') + value = param_n.find('value') + #the key must exist in this block's params + if key in self.get_param_keys(): + self.get_param(key).set_value(value) + #store hash and call rewrite + my_hash = get_hash() + self.rewrite() diff --git a/grc/base/FlowGraph.py b/grc/base/FlowGraph.py index ce370ca24..7c51ef42a 100644 --- a/grc/base/FlowGraph.py +++ b/grc/base/FlowGraph.py @@ -184,7 +184,6 @@ class FlowGraph(Element): #only load the block when the block key was valid if block: block.import_data(block_n) else: Messages.send_error_load('Block key "%s" not found in %s'%(key, self.get_parent())) - self.rewrite() #rewrite all blocks before connections are made (ex: nports) #build the connections for connection_n in connections_n: #try to make the connection |