diff options
author | Johnathan Corgan <johnathan@corganlabs.com> | 2017-03-21 11:23:35 -0700 |
---|---|---|
committer | Johnathan Corgan <johnathan@corganlabs.com> | 2017-03-21 11:23:35 -0700 |
commit | 80f1bc7840f633822a1032c4ad32ed251742c376 (patch) | |
tree | 9665c9ae14f5cb6cd8c705c4ecd68be2dfabc9b6 | |
parent | 5b400f1a6634dc4a2e220fc6a3944214d737bc4c (diff) | |
parent | fd3ce572962ab5f23f209f01db28ffd8661b0a84 (diff) |
Merge remote-tracking branch 'gnuradio-github/pr/1205'
-rw-r--r-- | grc/core/Param.py | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/grc/core/Param.py b/grc/core/Param.py index 26f9d2f451..afa478b3a2 100644 --- a/grc/core/Param.py +++ b/grc/core/Param.py @@ -485,13 +485,20 @@ class Param(Element): # Can python use this as a variable? if not _check_id_matcher.match(v): raise Exception('ID "{0}" must begin with a letter and may contain letters, numbers, and underscores.'.format(v)) - ids = [param.get_value() for param in self.get_all_params(t)] + ids = [param.get_value() for param in self.get_all_params(t, 'id')] - # Id should only appear once, or zero times if block is disabled - if ids.count(v) > 1: - raise Exception('ID "{0}" is not unique.'.format(v)) if v in ID_BLACKLIST: raise Exception('ID "{0}" is blacklisted.'.format(v)) + + if self._key == 'id': + # Id should only appear once, or zero times if block is disabled + if ids.count(v) > 1: + raise Exception('ID "{0}" is not unique.'.format(v)) + else: + # Id should exist to be a reference + if ids.count(v) < 1: + raise Exception('ID "{0}" does not exist.'.format(v)) + return v ######################### @@ -655,17 +662,19 @@ class Param(Element): else: return v - def get_all_params(self, type): + def get_all_params(self, type, key=None): """ - Get all the params from the flowgraph that have the given type. + Get all the params from the flowgraph that have the given type and + optionally a given key Args: type: the specified type + key: the key to match against Returns: a list of params """ - return sum([filter(lambda p: p.get_type() == type, block.get_params()) for block in self.get_parent().get_parent().get_enabled_blocks()], []) + return sum([filter(lambda p: ((p.get_type() == type) and ((key is None) or (p.get_key() == key))), block.get_params()) for block in self.get_parent().get_parent().get_enabled_blocks()], []) def is_enum(self): return self._type == 'enum' |