Expression Capture started with RigGV Control Item

Basic outline of the ExpressionCaptureNode has been created as an extra
control Item. Variable in size based off its text. Check that resizing
works for different sizes of text. It wont. self.borderRect has to be
passed through the rest of the paint commands and rectangles.

ExpressionSlider class has been developed and is a child of the
ExpressionCaptureNode. Sliding movement works fine and returns a
percentage correctly for its position.

Next develop actual ExpressionCaptureData models.
expresionCapture.py created for Expression Classes

Main Classes are blocked in for Expression Capture.

ExpressionItemState - this records the details of a rigView control Node.
records the node, index, group, groupName and reference Position.

ExpressionFaceState - creates and collects an ExpressionItemState for each
control Node in the scene. Also records an assoicated name for that
expressions and a corresponding ExpressionStateNode from the rigGV.

ExpressionCaptureProcessor - This is the top level of Expressions Capture.
It has a faceSnapShot which is a ExpressionFaceState for the current
position of the face. It then collects all the expressions in an
expressionLibrary list, so comparisions and final node positions can be
calculated from the data.
More functionality added to the ExpressionCapture System

Nothing really tested, just blocked out more critical functionality. Icons
built for the expression drop system. Button added to the UI for the
ExpressionStateNode. Basic drop is working, but need to properly consider
the process drop to setup a name and add appropriate Expression data.
ExpressionFaceNode creation and deletion complete

The basics of dragging in a new Expression and deleting an expression is
now implemented. Names are checked with the ExpressionCaptureProcessor to
make sure that they are unique, when being added to a scene.

Nothing tested for actually storing node positions etc.
Expression Capture System is working! No store/Read

The capture system is now full implemented mainly through the
ExpressionCaptureProcessor.processCombinedExpressions method. This method
looks at the ExpressionFaceState in the self.faceSnapShot, and compares
each controller that it finds to the positioning in that faceState. From
there the total difference can be calculated. The correct percentage is
taken of this, and stored as a delta in the faceSnapShot
ExpressionItemStates. Once all the deltas have been added up for all the
expressions, then the final position of the nodes can be calculated, and
the nodes are placed there.

Setting a new faceSnapShot resets all the sliders on all the
ExpressionStateNodes to zero, so no expression is contributing anything.
From there, any expression can be dialled in....
Partial Expression implemented with Selections

The system now records your selection before moving an ExpressionStateNode
slider, and then the slider will only act on the nodes that were selected.
Using the mousePress/ReleaseEvents in the slider the selection of the
rigGV is then restored afterwards.

The expression monitoring includes each ExpressionItemState having a
"selected" attribute. If no nodes are selected then the entire expression
is dialled in across all nodes.

The selection state for each node is collected for the whole view in the
mapSelected method of the ExpressionCaptureProcessor.
ExpressionStateNode now collects colour data from ExpressionFaceState

Attempting to collect all major data in the ExpressionFaceState. This way
only this needs to be saved and loaded, and it can create the appropriate
graphical representation when it does so (creating a new
ExpressionStateNode on read).

Appropirate attributes added to the ExpressonFaceState so that it can
record colour and position information for both the ExpressionStateNode
and its slider.
ClearAll method added to ExpressionCaptureProcessor

This method is added to clear out all expression library and faceSnapShot
data in the event of the whole rigGV being cleared.
ExpressionCapture Processor store/read blocked in

The methods read and store have been blocked in without syntax error all
the way down the expression system levels. Very limited testing. RigStore
is updated to try and record the ExpressionSystem in XML.

Initial Problem is that the faceSnapShot is a ExpressionFaceState, but has
no ExpressionStateNode associated with it, so things like getPos() fail
when store() is called. Look at changing store and read behaviour
depending on the existence of an ExpressionStateNode...
Expression System Saves and Loads, but is flawed on Load.

Expression system slider stuff etc is over engineered and built by hand in
a messy way. It turns out that you can use QGraphicsWidget to actually
build widgets directly into the graphics view. Fortunately functionality
is split off, so now I am going to be rewriting the ExpressionStateNode as
a QGraphicsWidget instead, with a QGraphicsLayout with a label and a
slider. This is last stand of the old system...
New ExpressionStateNode implemented in ControlItems

This is the rewrite of the old ExpressionStateNode with its
ExpressionPercentageSlider. The new class subclasses QGraphicsWidget,
which allows you to embed other QWidgets in the QGraphics View. As such
the QGraphicsWidget takes a QLabel and QSlider as inputs and builds a
small box around them with a nice colour background.

Functionality has not had to be adjusted, and at this stage there are
still old methods left in the ExpressionCapture systems mainly
ExpressionFaceStates that are now redundant.

Read and Store is not implemented. This needs to be cleaned up now...
New Expression Capture System now saves and loads

Saving and loading is now implmented (store, read), and works with
multiple expressions. There is a bug where the wiregroup pinTies do not
correctly line up with the nodes. Look into fixing this.

All data now is concerned with the position and setting of the QSlider.
This is much more efficient, than the previous method.
Merge branch 'expressionCaptureBranch'
Active GuideMarkers are now deleted upon WireGroup Generation

That is it.
Merge branch 'guideMarkerCleanupBranch'