Fixed Box::canPromotePlug( readOnlyPlug ) to return false.

Read only plugs cannot receive input connections, so trying to promote one is destined to fail.
Fixed Box::canPromotePlug() to check child plugs too.

The plug in question might appear promotable by itself, but a child could still be read only, or not accept inputs.
Fixed bug in read only Plugs with input connections.

They would throw when the value was being transferred through the connection. Readonlyness now only prevents the setting of static values on plugs, and has no bearing on setValue() calls made during computation or while propagating values through connections. This is reasonable because in the latter cases, no modification is made to the plug - the values are all stored in the cache instead.
Added Gadget setHighlighted/getHighlighted methods.

These match the equivalent methods on the Widget class.
Implemented highlighted drawing for StandardNodule.

It was already doing this, but using a private m_hovered member variable rather than the public status.
Moved node selection highlighting from StandardNodeGadget to GraphGadget.

This reduces the amount of signal handling needed to keep the highlight status up to date, and means other NodeGadget implementations would have one less thing to worry about.
Removed explicit selection handling from BackdropNodeGadget.

It just uses the highlighting state now that that is kept in sync with the selection by the GraphGadget.
Added pre-selection highlighting for GraphGadget.

As the user drags out the selection rectangle in the node graph, nodes are highlighted to indicate whether or not they will be selected. This makes it clearer what is about to happen, and avoids ambiguity about whether it is wholly enclosed or merely intersected nodes that will be selected.

Fixes #94.
Merge pull request #726 from johnhaddon/nodeSelectionPreHighlighting

Node selection pre-highlighting
Merge pull request #718 from johnhaddon/readOnlyPlugPromotion

Read only plug promotion fixes
added 'create expression' menu option for bool plugs
Fixed read only on CompoundPlugValueWidget labels

Previously, the labels on a CompoundPlugValueWidget weren't affected by __updateChildPlugUIs or setReadOnly(), meaning you could promote plugs in a read only node ui in certain situations.
Merge pull request #727 from davidsminor/boolplugexpressionui

added 'create expression' menu option for bool plugs
Merge pull request #728 from davidsminor/compoundPlugValueWidgetReadOnlyLabels

Fixed read only on CompoundPlugValueWidget labels
Added ImageReader::supportedExtensions() method.
Delayed module imports in test app.

When running "gaffer test ModuleName", the other modules are no longer loaded. This can be useful when running a subset of the tests in an environment where GafferUI won't import due to the lack of an X connection (over ssh for instance).
Added Viewer.view() method.

This returns the current view, which allows its settings to be modified - they are exposed simply as plugs on the View class itself.
Added SceneReader::supportedExtensions() method.
Added workaround for Qt OpenGL problem on OS X.

This would manifest itself as "invalid framebuffer" errors leaking into the IECoreGL and PyOpenGL code and being reported there, causing various forms of havoc.

Fixes #404.
Fixed some "invalid drawable" error messages on OS X.

I had hoped that this fix would make the previous commit unnecessary, but testing shows that they address different problems and both are needed. Additionally, although this fixes the initial "invalid drawable" messages on startup, they still appear later on when switching between fullscreen and not-fullscreen. This goes some way to addressing #396, but I suspect it'll be very hard to fix it completely without patching Qt in some way.