BUG: "reference" attributes on transform were not editting scene

In Slicer3, then an output transform of a CLI had a "reference",
the MRML scene would be editted automatically to place the "reference"
image under the transform.

The implementation in Slicer3 performed the hierarchy editing by passing
a string of Tcl commands from the processing thread to the gui thread. This
approach was never ported to Slicer4.

This patch uses the Command/Observer to request that an event be
issued in the main thread. In this case, the event is one to edit
the transform hierarchy.  The details of how the transform hierarchy
is be editted are encoded in a callback function. Two layers of callback
functions are used.  One layer is a generic callback function which
accepts another callback in its calldata. It then delegates to that
second callback.  In this manner, the same structure can be used
for other hierarchy edits by switching the callback passed as calldata.
The second callback is a one shot callback. The first callback will
delete the second callback upon completion.

This patch should resolve bug #3091. Unfortunately, I cannot test it on
my system as BrainsFit crashes for a different reason.  But this patch
does restore the transform hierarchy behavior for the RigidRegistration
module accessible under "Legacy" modules.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22254 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: #3204. Crosshair selection overridden by cross hair toggle.

This addresses a bug involving toggling and switching crosshairs:

1. If crosshair display is in mode "A"
2. Crosshair it toggled off in the GUI
3. Crosshair is set to mode "B" in the GUI

then the cross would display as "A" and not as "B".

The issue is in the order in which the "selection" signals are raised
relative to the "toggle" signals. When switching from off to any mode
the selection signals are raised first and then the toggled signals.

This ordering was aligned with the order in which the crosshair
node was modified relative to how the mode was cached (to set up for
toggling).

Caching the mode before setting mode addressed the issue.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22255 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: 2153. Fixed removal from members of DoubleArrayIDs inside iteration loop that caused crash.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22256 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: #3270 Slice Model is white in FA mode

Color scalar image modes were being treated differently with respect
to the image pipeline, meaning that the resulting texture image data was
5 component with a duplicated alpha channel (so it was RGBAA not RGBA).
Putting adding the ExtractComponents instance to the pipeline
took care of this.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22257 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: vtkGPURayCastVolumeMapper does not support image sample distance < 1.

Issue #1752

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22258 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: #3125 filename not changed if it is still default from load

The file load mechanism assigns a default node name based on
the filename.  If the node no longer has that default name, update
the filename to match what the user provided.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22259 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: #2326 mark a node as modified if the name has changed

When the user has changed the name of a node this is
reflected in the suggested name of the file (see issue #3125).
With this fix the node is also marked as modified so that
it will be checked for saving.

This means that changing the name of a node in the scene will
cause it to be saved to a new file on disk which is a slight change
in behavior and may cause people to use more disk space.  But in
general I think this is safer and more clear, since file names will
always match the name of the node in the scene and users will
prefer that I believe.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22260 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: Name SampleData internal widget for easy referencing by QtTesting

See #2808

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22261 3bd1e089-480b-0410-8dfb-8563597acbee
COMP: Always build qSlicerPersistentCookieJar

It is being used by qSlicerWebWidget which is not conditionally built by
Slicer_BUILD_EXTENSIONMANAGER_SUPPORT

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22262 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: 2487. Added new method: void vtkMRMLHierarchyNode::MoveInParent(int increment)
Added tests for this method in vtkMRMLHierarchyNodeTest3.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22263 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: 1395. Fixed drawing of DTI glyphs on 2D slices. Display manger responds to proper events now.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22264 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: PERF: fix the critical issue of multi volume scalar type always being initialized to double; this fix should ensure the multivolume scalar type matches that of the input frames.


git-svn-id: http://svn.slicer.org/Slicer4/trunk@22265 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: resolve issues related to multivolume initialization based on SeriesTime that prevented using those nodes in PkModeling; remove the FileList attribute after the multivolume is loaded: fixes issue #3213.


git-svn-id: http://svn.slicer.org/Slicer4/trunk@22266 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Select DICOM reader by default on drag&drop

Issue #3081

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22267 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: fix size of paint cursor on rotated acquisitions

Make sure to use a column of the rasToXY matrix that is in the plane
of the zoom.  This is needed because the slice node's field of view
in Z does not reflect the in-plane zoom.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22268 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Improve Dark style

Issue #3251

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22269 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: Fix inactive button color for dark style

Issue #3251

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22270 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: tmp files with extension .raw were not removed

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22271 3bd1e089-480b-0410-8dfb-8563597acbee
STYLE: remove some trailing spaces

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22272 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: #1832 #3140 #3209 avoid crashes by catching exceptions

Some libraries and systems throw exceptions, but Qt's default
event processing does not catch them[1].  For example, slicer
could crash when ctkDICOMItem is pointed to a file that does
not exist.  Wrapping event processing in try/catch should handle
other conditions, like out of memory exceptions thrown from
inside render operations (e.g. due to overly complex glyph
rendering).

[1] http://qt-project.org/doc/qt-4.8/exceptionsafety.html

http://stackoverflow.com/questions/10665655/how-to-log-uncatched-exceptions-of-a-qapplication

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22273 3bd1e089-480b-0410-8dfb-8563597acbee