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