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()