0.13.0

  • Fixed a bug whereby a node would be offset from the mouse position when dragging if starting the drag was delayed while other uis (particularly the NodeEditor) were updating.

  • Fixed a bug which meant that connections were not correctly represented in the GraphEditor for children of the ArrayNodule.

  • The ParameterHandler classes now correctly define the Ptr and ConstPtr member typedefs required for all IECore::RefCounted subclasses.

  • The ParameterHandler classes now have a plug() method which returns the plug which was created to represent the parameter().

  • The ParameterisedHolder class now exposes the internal ParameterHandler with a parameterHandler() method.

  • The CompoundParameterHandler class now provides access to the handlers it uses for child parameters using the childParameterHandler() method.

  • The CompoundParameterHandler now has python bindings.

  • The Image widget no longer expands to fill space if it is available.

  • The Label widget now has setText() and getText() methods.

  • The PathWidget class now has a path() method returning the path being displayed.

  • The Window.addChildWindow( window ) call now results in the parent window holding a reference to the python object representing the child. This avoids situations whereby the child python object would die but the QWidget representing the child on the C++ side would continue to live. Use Window.removeChild() to remove a child window when you wish to destroy it, or use setVisible( False ) to hide the child until you need it again.

  • Fixed bug in PathWidget which meant that the path display would be incorrect until the path changed for the first time.

  • PathListingWidget fixes :

    • Error when double clicking an item.
    • Selection was not being cleared when the current path wasn’t valid.
    • Path wasn’t being set when a leaf item was selected, which meant that hitting Enter in the PathChooserDialogue chose the wrong path.
    • Double clicking a directory when the current path wasn’t valid created another invalid path, rather than replacing the invalid section.
  • Added a “python” application which simply executes a python file in the Gaffer environment.

  • Added a GafferUI._Variant class which has helper function for dealing with differences in PySide and PyQt4 with respect to QVariant handling.

  • Fixed VectorDataWidget to work with PySide.

  • Added a BoxParameterHandler covering Box2i, Box2f, Box3i and Box3f parameter types.

  • GraphComponent now supports the len() function in python, returning the number of children for the instance. The nonzero method is also implemented so that queries of the type “if graphComponent : “ will return True as before, even if there are no children.

  • The sizing behaviour of the PathListingWidget is no longer quite as annoying.

  • GafferUI.Menu now optionally passes a “menu” argument to the checkBox callback of a menu item, in the same way as it does for the command callback.

  • Fixed bug in GafferUI.ColorSwatch.getColor().

  • Added Window.[gs]etFullScreen() methods, and added a menu item to the Layout menu to use them. Added a parentWindow argument to the Dialogue*.waitFor*() methods, and used it appropriately to keep dialogues on top even when in full screen mode.

  • The Image class now uses the Cortex PNGImageReader for loading png files, and correctly converts linear data to sRGB for display.

  • Added a basic framework for parameter-specific uis. Initially there are only specific uis for compound parameters, presets only parameters and path parameters - all others fall back to using the default plug widgets. A UI may be easily instantiated for all the parameters of a ParameterisedHolderNode using the GafferUI.CompoundParameterValueWidget - see GafferUI.ParameterisedHolderNodeUI for an example.

  • The MultiLineTextWidget now has much more sensible tab spacing.

  • The Collapsible container can now display an optional widget in the top right corner of the header. Use the setCornerWidget() and getCornerWidget() methods to manipulate this widget.

  • Removed font parameter from GafferUI.Label - it wasn’t doing anything anyway. Font control will likely return in the form of some support for text markup.

  • Fixed variable scope issues which meant that the following code would fail if executed in a script editor :

      class A() :
    
      	def __init__( self ) :
    
      		print A
    
      a = A()