We decided to simplify the Validation as follows:
- Do away with the three validation modes on SetValues. Instead all SetValues will just set the value, and return a nonzero value only if the value cannot be set (e.g. the tag or element does not exist). Effectively the validation mode will always be "NO_CHECK"
- The Validate method will be used as a means of ensuring valid entries. It will be invoked after the user edits text boxes and presses "enter", or after the user modifies one of the widgets in the GUI. The Validate will be used with the "default=false" argument so that it will modify invalid entries to make them fit with the current DataMgr.
- We may also decide to provide a version of "Validate" (possibly useful for scripting) that will return an error code and not issue SetValue's if invalid parameters are found to exist.
We also decided that there will be no "dirty bits" to indicate when there has been a change in a Params. Instead, renderers will need to check whether there has been a change to the state before rendering. Renderers can also make use of the ParamNode DirtyFlag. The DirtyFlag can be used to enable a renderer to check if a particular value has been modified, When a DirtyFlag has been registered, the dirtyFlag gets set whenever the associated element is modified, and it can be tested and cleared by the renderer.