STYLE: Update doxygen comment of vtkMRMLScene::AddReferencedNodeID

The comment document the changes introduced by commit r22669

From: Andras Lasso <lasso@queensu.ca>

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22790 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Fix module history to keep most recent selected module last

The current implementation is a dysfunctional mix between
a "module history navigator" and "fixed workflow navigator".

This commit implements "module history navigator" behavior,
which is useful for generic Slicer use.

A "fixed workflow navigator" is a very special case, it is only
applicable when all the modules are part of the workflow,
there are no loops, skipping of steps, auxiliary modules, etc.

Considering the following convention, the update is illustrated
below.

Legend:

  -> X : Go to module X
  P    : List of module in the "previous stack"
  N    : List of module in the "next stack"

Current behaviour:

   A     P: -    |  N: -
-> B     P: A    |  N: -
-> C     P: BA   |  N: -
-> D     P: CBA  |  N: -
-> A     P: -    |  N: BCD
-> E     P: A    |  N: -

After integrating this commit, the behaviour is then:

   A     P: -    |  N: -
-> B     P: A    |  N: -
-> C     P: BA   |  N: -
-> D     P: CBA  |  N: -
-> A     P: DCB  |  N: -
-> E     P: ADCB |  N: -

where

A: Welcome module
B: Annotations
C: Data
D: DataStore
E: SampleData

Fixes #3533

From: Andras Lasso <lasso@queensu.ca>

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22791 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: update LandmarkRegistration to support RegistrationPlugins

Still some work to do on the built-in plugins, but the framework
is now in place for extensions (like SlicerRT/Plastimatch) to provide
registration plugins.

Affine registration is now a plugin and it works like the previous
version of LandmarkRegistration which supported only Affine.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22792 3bd1e089-480b-0410-8dfb-8563597acbee
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