COMP: handle case where TCL is disabled but EM is set to ON.

If you have first configured with TCL on, then EMSegment is on
by default too.  But turning off TCL does not turn off EMSegment,
so the linker was failing to find the EMSegment logic library.

This patch is consistent with the rest of the logic in the
CMakeLists, but longer term EMSegment should be explicitly
disabled if it doesn't have the right prerequisites.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22793 3bd1e089-480b-0410-8dfb-8563597acbee
COMP: fix warnings in cmake/ctk/python

See:
https://github.com/commontk/CTK/pull/430

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22794 3bd1e089-480b-0410-8dfb-8563597acbee
STYLE: Simplify code using "vtkNew" to create "vtkSlicerTask" in CLI logic

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22795 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Kill CLI executable process on Slicer exit.

The use of a MutexLock is required because the process have been
initiated from a thread and they are killed by calling "itksysProcess_Kill()"
from the main thread.

In "ApplyTask()", the MutexLock is Locked/Unlocked at the position:

1) After calling "itksysProcess_Kill()" in "KillProcesses()", the call to
"itksysProcess_WaitForExit()" in "ApplyTask()" leads to a call
"kwsysProcessCleanup". Since calling "kwsysProcessCleanup" frees the memory
(i.e free ForkPIDs, RealWorkingDirectory and also cleanup descriptor)
 and that "kwsysProcess_Kill" expects the ForkPIDs array to be available,
it is required to use a mutex to make sure the call to "kwsysProcess_Kill"
completes before "itksysProcess_WaitForExit" is executed.

2) When calling "itksysProcess_Delete()" and updating the vector of
"Processes" that is accessed from both the main thread and the ApplyTask
thread.

Fixes #3395

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22796 3bd1e089-480b-0410-8dfb-8563597acbee
COMP: Pass CMAKE_BUILD_TYPE to external project for all configurations

Thanks to Hans Johnson <hans-johnson@uiowa.edu> for reporting the problem.

Before this commit, CMAKE_BUILD_TYPE was passed to external project only
the first configuration if it wasn't already defined (by passing -D option).

Co-authored-by: Hans Johnson <hans-johnson@uiowa.edu>

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22797 3bd1e089-480b-0410-8dfb-8563597acbee
COMP: Ensure python is forced to Release when built on single config system

Following previous commit (r22797), since CMAKE_BUILD_TYPE is now properly
passed to all projects, it is important to force the value associated to
python to Release.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22798 3bd1e089-480b-0410-8dfb-8563597acbee
COMP: Fix error when building against Qt not having SSL support.

Commit r22782 was done under the assumption that Qt would be built with SSL
support. This commit ensures Qt with/without SSL support is supported.

Note that the build system could be improved to detect with Qt has
OpenSSL support, if this is the case, the OpenSSL project could be
automatically enabled unless explicitly disabled.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22799 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: fix updating fiducials after scene load

After loading a scene, changing the display properties of
a fiducial list was not being reflected in the 2d and 3d
views. There was a missing event observation in the
Markups displayable managers, adding in 
vtkMRMLDisplayableNode::DisplayModifiedEvent
to the list of events observed on a markups node
fixed the problem.

Issue #3480



git-svn-id: http://svn.slicer.org/Slicer4/trunk@22800 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: Fix reading of DWI files. Fixes #3545

This commit fixes regression introduced by commit r22753 fixing issue #3511
that was preventing "vtkNRRDReader::CanReadFile" from returning the correct
value.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22801 3bd1e089-480b-0410-8dfb-8563597acbee
STYLE: Consistently report error in vtkMRMLNRRDStorageNode read/write method

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22802 3bd1e089-480b-0410-8dfb-8563597acbee
STYLE: Cleanup ROI widget and representation

Add vtkMRMLDisplayNode::GetBounds() utility method.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22803 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: Cleanup ROI widget and representation

This reverts commit r22803 inadvertently pushed.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22804 3bd1e089-480b-0410-8dfb-8563597acbee
STYLE: Add X,O,M and S documentation for VolumeRendering module

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22805 3bd1e089-480b-0410-8dfb-8563597acbee
COMP: Ensure Slicer_RemoteModule_Add worked when source directory is passed

Configuring Slicer with -D<projectname>_SOURCE_DIR:PATH=/path/to/projectname
is now supported.

Thanks to Bradley Lowekamp <blowekamp@mail.nih.gov> for reporting the issue.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22806 3bd1e089-480b-0410-8dfb-8563597acbee
COMP: Modern gcc compilers have a reasonable template depth limit

Current gcc compilers have a reasonable max default template
depth. The -ftemplate-depth-50 flag was removed. This limited any
application which used ITK to only a template depth of 50.

Based on InsightSoftwareConsortium/ITK@5bcca741

From: Bradley Lowekamp <blowekamp@mail.nih.gov>

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22807 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: check for color transfer functions first

Procedural color nodes may have color look up tables defined,
check for that node class first and if it has a color transfer
function, use it on the model instead.



git-svn-id: http://svn.slicer.org/Slicer4/trunk@22808 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: Allow assigning procedural color nodes to map scalars

Previously the GUI assumed that color table nodes only were used to
map scalars to colors onto model geometry. This change generalises
the color node selector to allow both color table nodes as well
as procedural color nodes.
Renamed the widget and methods to reflect the generalisation.
Only set the scalar widgets if they don't match the model
display node settings.
Added a label displaying the scalar range.



git-svn-id: http://svn.slicer.org/Slicer4/trunk@22809 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: use vtkNew for copied look up tables

Use vtkNew to define new color look up table and
color transfer function for copying to the actor's
mapper for models.



git-svn-id: http://svn.slicer.org/Slicer4/trunk@22810 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: add a new color node, continous around 0.0

Add a method to create a new procedural color node that's useful for
visualizing error statistics centered around 0, called RedGreenBlue.
Rename AddRandomNode to AddDefaultProceduralNodes and add the RandomIntegers as
well as the new RedGreenBlue node in it. This will provide a space to add
new default procedural color nodes.
Create a new color node category, Continuous, and place the new node
in it.



git-svn-id: http://svn.slicer.org/Slicer4/trunk@22811 3bd1e089-480b-0410-8dfb-8563597acbee
COMP: Fix loading of external "loadable module" providing python script

Thanks to "Wang, Kevin" <kevin.wang@rmp.uhn.on.ca> for his help
identifying and testing the changes.

Co-authored-by: Wang, Kevin" <kevin.wang@rmp.uhn.on.ca>

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