BUG: fix slice intersection display

Rearranges vtkMRMLModelSliceDisplayableManager to listen to events through
DisplayableNode only. Corrects handling of scene updates and large changes
by watching Scene Start/EndClose and EndBatchProcess events.

Closes #1384 #1536 #1632 #1650

git-svn-id: http://svn.slicer.org/Slicer4/trunk@20455 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: Ensure generic loadable module test compiled externally can be executed

There are two cases:
 1) Test compiled within Slicer build tree: located along with SlicerApp-real
 2) Test compiled outside of Slicer build tree

In the second case, when qSlicer(Core)Application is instantiated within
a test, the applicationDirPath resolved to the test executable itself.
The method "QCoreApplication::applicationDirPath" being used, it was NOT
returning the SlicerApp-real path.
This was causing problem and the SlicerBin could NOT be computed adequately:

1: ASSERT: "qSlicerUtils::pathEndsWith(this->SlicerBin, Slicer_BIN_DIR)" in file /Users/millerjv/Projects/Slicer4-git/Slicer4/Base/QTCore/qSlicerCoreApplication.cxx, line 414


The implemented solution attempts to compute the SlicerBin only if SLICER_HOME
hasn't been set. The launcher taking care of setting this environment
variable, test instantiating a qSlicer(Core)Application will work
as expected.

See http://www.na-mic.org/Bug/view.php?id=2248

Fixes #2248

git-svn-id: http://svn.slicer.org/Slicer4/trunk@20456 3bd1e089-480b-0410-8dfb-8563597acbee
COMP: Extensions build using the build system are configured with a boolean option

If it applies, this boolean option (named "<EXTENSION_NAME>_BUILD_SLICER_EXTENSION")
being passed when the extension is configured by the extension build system
allows the extension to conditionally build code.

See http://www.na-mic.org/Bug/view.php?id=2243

Fixes #2243

git-svn-id: http://svn.slicer.org/Slicer4/trunk@20457 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: add helper utilities to control Window/Level of the background volume

Helpers are used by new interaction mode in vtkSliceViewInteractorStyle
to change window/level. Will allow removing this functionality from tcl.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@20458 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: remove volume window/level control from tcl interactor

git-svn-id: http://svn.slicer.org/Slicer4/trunk@20459 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: add window/level interaction mode to vtkSliceViewInteractorStyle

This replaces the current VolumeDisplaySWidget Tcl code.
New mode AdjustWindowLevel is added to enum and corresponding
Start/End-AdjustWindowLevel methods are implemented.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@20460 3bd1e089-480b-0410-8dfb-8563597acbee
COMP: Turn off the BRAINSSurface tools

The BRAINSSurface Tools are not yet ready for
public deployment.  They are currently turned
off by default.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@20461 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Update to latest ITK version.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@20462 3bd1e089-480b-0410-8dfb-8563597acbee
COMP: Remove deprecated functions from use

In ITKv4 the itkLegacyMacro allows deprecated
functions to be easily identified.  These functions
have been replaced with their modern equivalents.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@20463 3bd1e089-480b-0410-8dfb-8563597acbee
COMP: The compiler options must be propogated

Compiler options selected in the main Slicer4
Superbuild harness needs to be propogated to
each of the subsequent External_project builds.

This was tested by setting
export CC=/dev/null
export CXX=/dev/null
cmake -DCMAKE_C_COMPILER:PATH=/usr/bin/gcc -DCMAKE_CXX_COMPILER:PATH=/usr/bin/g++
and then compiling all of Slicer.

Propogate the necessary compiler flags to each
external package consistently.  Additionally,
only propogate the flags that are explicitly needed
for that external project.  In many cases, only the
C compiler options need to be propogated.

Slicer compiler options needed by Extensions as well.
The extension need to have the same compiler used
as the primary Slicer build.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@20464 3bd1e089-480b-0410-8dfb-8563597acbee
COMP: Update python mac build parameters

Commented out the --with-tcl option for Python, because it is not valid
--with-tcl is not a valid option for either Python 2.6 or Python 2.7

http://bugs.python.org/issue11334 indicates that dynamic_lookup
causes build issues for unix based python installation on Mac.
This was confirmed on 10.7.4

git-svn-id: http://svn.slicer.org/Slicer4/trunk@20465 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: adding more image types to node selectors, specifically to support DCE-MRI

git-svn-id: http://svn.slicer.org/Slicer4/trunk@20466 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: added default storage node

git-svn-id: http://svn.slicer.org/Slicer4/trunk@20467 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Added ConfigureForDataExchange() method

This method allows a storage node to set a default set of parameters to use when storing data for the purposes of communicating with another process.

E.g. turn off compression when communicating to CLIs

git-svn-id: http://svn.slicer.org/Slicer4/trunk@20468 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: simplified staging data by operating at a more abstract level.

Removed special case handling of many node types and operating at a more
abstract level.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@20469 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: Corrected bug 2241 introduced in r20283

git-svn-id: http://svn.slicer.org/Slicer4/trunk@20470 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: adding test for AddArchetypeVolume()


git-svn-id: http://svn.slicer.org/Slicer4/trunk@20471 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: pass first file name, not path


git-svn-id: http://svn.slicer.org/Slicer4/trunk@20472 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: make sure test fails if volume or image is invalid


git-svn-id: http://svn.slicer.org/Slicer4/trunk@20473 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Redesign Volume Rendering module to support additional mappers

To add a volume rendering:
 create a new vtkMRMLVolumeRenderingDisplayNode
 create a new vtkMRMLVolumeRenderingDisplayableManager
 register your display node into vtkSlicerVolumeRenderingLogic
 register your optional widget into qSlicerVolumeRenderingModuleWidget

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