0.17.0

  • Fixed a bug in NumericPlug::setValue() which meant it was possible to set value outside the Plug’s min/max range.
  • Changed ParameterHandler interface to allow the same ParameterHandler instance to be used repeatedly even when Parameters are being added and remove or are changing type. This should be more efficient but more importantly will be necessary to allow the CompoundParameterValueWidget to adjust the ui when Parameters are edited in this way. The following changes need to be made to a ParameterHandler implementation :
    • Remove the plugParent argument to the constructor, and move the plug creation code to an implementation of the new setupPlug() pure virtual function.
    • Stop passing the parameter to the base class constructor, but instead store it as a member variable, and implement the pure virtual parameter() method to return it.

See python/GafferTest/ParameterHandlerTest.py for an example.

  • The path argument to the PathPlugValueWidget is now optional, with a FileSystemPath being used if no path is specified.
  • ValuePlug now emits plugSetSignal() before calling Node::dirty(), rather than vice versa.
  • The ReadNode now exposes the parameters of the IECore::Readers it uses as plugs on the node.
  • The PathListingWidget contents can now be customised by passing a column specification to the constructor. See PathListingWidget.defaultFileSystemColumns for an example. Also added support for sorting the listing by clicking on the headers, and allowed the column specification to provide a sorting function to be used in this case.
  • The PathListingWidget now allows multiple selection of files using the allowMultipleSelection argument to the constructor, and provides a list of the currently selected paths using the selectedPaths() method.
  • Implemented the ParameterisedHolder::setParameterised( className, classVersion, searchPathEnvVar ) overload. Still needs some work so nodes can be serialised to a script and reloaded properly.
  • Fixed a bug in the Node bindings which meant that the C++ base class implementations weren’t called when a python class didn’t provide overrides.
  • ParameterHandler::setupPlug now takes an argument specifying the plug direction required.
  • Added an ObjectParameterHandler.
  • Added Widget setEnabled(), getEnabled() and enabled( relativeTo ) methods - see documentation for details. Signals are not emitted for Widgets which have been disabled.
  • Fixed a bug in the RunTimeTyped registration for TypedPlug.