Date
03 March 2014
Attendees
John Clyne, Alan, Scott
Agenda
Review Params changes proposal
The corresponding Doxygen to look at is the following:
-Everything in the Command class (this is the support for the Undo/Redo Queue)
-The related methods on ControlExecutive (Undo, Redo, GetCommandText, GetCurrentCommand)
-Plus, the relevant methods in Params, ParamsBase, including
SetValidationMode, GetValidationMode, Validate
Params::CaptureSetLong, Params::CaptureSetDouble, Params::CaptureSetString, Params::CaptureSetStringVec,
and the corresponding methods on ParamsBase.
If you would like to see how these methods are being used, check the various SetValue methods in RegionParams, ViewpointParams, AnimationParams, ArrowParams, Box, and Viewpoint classes. These methods are also used in the gui EventRouter classes (RegionEventRouter, ViewpointEventRouter, AnimationEventRouter, and ArrowEventRouter) however the EventRouters are not currently in Doxygen.
Notes
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.