Evaluation fix in param.to_code().
authorJosh Blum <josh@joshknows.com>
Wed, 2 Sep 2009 23:58:15 +0000 (16:58 -0700)
committerJosh Blum <josh@joshknows.com>
Wed, 2 Sep 2009 23:58:15 +0000 (16:58 -0700)
Dont force an evaluation in to code unless the type is string or list.
Not doing so forces the variables to call evaluate before the namespace was bootstrapped.

This fixes a bug that came up when the validate was replaced with rewrite in flowgraph.import_data().
By replacing the validate, evaluate was only called once, and the namespace was not bootstrapped.

grc/python/Param.py

index 17cfad05123240823235fb0cca2faa0867bfcb97..e61779136c0698b5104f04c3d9e4b50a1e6c4326 100644 (file)
@@ -403,17 +403,18 @@ class Param(_Param, _GUIParam):
        def to_code(self):
                """
                Convert the value to code.
+               For string and list types, check the init flag, call evaluate().
+               This ensures that evaluate() was called to set the xxxify_flags.
                @return a string representing the code
                """
-               #run init tasks in evaluate
-               #such as setting flags
-               if not self._init: self.evaluate()
                v = self.get_value()
                t = self.get_type()
                if t in ('string', 'file_open', 'file_save'): #string types
+                       if not self._init: self.evaluate()
                        if self._stringify_flag: return '"%s"'%v.replace('"', '\"')
                        else: return v
                elif t in ('complex_vector', 'real_vector', 'int_vector'): #vector types
+                       if not self._init: self.evaluate()
                        if self._lisitify_flag: return '(%s, )'%v
                        else: return '(%s)'%v
                else: return v