COMP: Refactor DWIConvert and improve scanner support

// ------------------
From Kent Williams
Source: http://slicer-devel.65872.n3.nabble.com/ANNOUNCE-New-DWIConvert-version-td4028665.html

I'm sure the thronging multitudes who live or die by Diffusion Tensor
Imaging will be dancing in the streets.
DWIConvert, the program for convertion Diffusion Weighted Image datasets
from DICOM to NRRD and FSL image formats has been extensively refactored.

My primary goal was to make the program easier to enhance and maintain.
What was a very long and convoluted single function is now split out into
a set of classes, one per Scanner Manufacturer.  All the
scanner-independent code is isolated from the scanner-specific code.

Along the way it has been enhanced in a couple of ways:

1. Some fixes to accomodate the surprisingly varied output of Siemens and
GE scanners.
2. Addition of a HITACHI scanner type.

The HITACHI scanner code has only been tested on one example dataset; I
don't know how many scanners they make or if different models/software
versions encode Gradient Vectors differently.  From some web
documentation, it seems they follow the Supplement 49 standard for
diffusion data, and the user who requested Hitachi scanner support said
that the code worked fine for him.

If you happen to run across another scanner that is not yet supported, the
HITACHI converter would be a good starting point for adding a new device.

In the course of debugging this new version, I first verified that it
passed the included regression tests.  Then, I did an exhaustive
comparison of the new version's output with the over 3700 DWI DICOM
datasets we have already converted for the PredictHD Research project. So
I have high confidence that the new version is reliable enough for
production work.
// ----------------

Updating BRAINSTools also fixes various bugs and issues. For a complete
list, see https://github.com/BRAINSia/BRAINSTools/compare/bc4adf7465300b7553a64e35035d05ee8a6407da...8fa5dd3c6d898461df184546faa165baeacbf0aa

From: Kent Williams <norman-k-williams@uiowa.edu>

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22104 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: Update ModuleWizard to support *.cmake file

This will allow to successfully use the wizard against the
SuperBuild extension template.

Co-authored-by: Marine Clogenson <marine.clogenson@epfl.ch>

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22105 3bd1e089-480b-0410-8dfb-8563597acbee
STYLE: Update ModuleWizard help message to consider template renaming

Following r21776, the superbuild extension template has been renamed. This
commit fixes the Wizard accordingly.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22106 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Update BRAINSTools to remove outdated DWIConvertOld

Old code was conflicting in Slicer, so it was removed.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22107 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: Fix crash when saving data

Commit r22095[1] intended to disable "unit" functionality by
preventing the associated logic from being loaded.

This commit comments the "unit" code associated with the selection node
to fix crash happening when saving data.

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

[1] http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&revision=22095

Co-authored-by: Marine Clogenson <marine.clogenson@epfl.ch>

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22108 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Add loadedNodes return in qSlicerIOManager::openDialog

* loadedNodes: It can be useful to know which nodes have been loaded
by the dialog.
* qSlicerStandardFileDialog supports "defaultFileName" property

Conflicts:
	Base/QTGUI/qSlicerFileDialog.cxx
	Base/QTGUI/qSlicerFileDialog.h

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22109 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Make a Qt Designer plugin for qSlicerCLIProgressBar

* Add qSlicerCLIProgressBar::statusVisibility
* Add qSlicerCLIProgressBar::progressVisibility

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22110 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: Zombie display node when turning a volume into labelmap

When the current display node was removed, the slicer layer logic was
creating a new node and adding it into the scene.
Such node was not being removed of the scene when the new display node
was set.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22111 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Add vtkSlicerVolumesLogic::CenterVolume()

Note that the code is from qMRMLVolumeInfoWidget

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22112 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: Improve vtkMRMLCommandLineModuleNode python wrapping

Python doesn't wrap enum type, making the SetStatus method unavailable
in the scripted module. Using an int instead fixes this.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22113 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Expose _CPACK_PACKAGE_ICON for icns icon on mac packaging

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22114 3bd1e089-480b-0410-8dfb-8563597acbee
COMP: Allow multiple configure with "ConfigurePrerequisites" component

Following commit r22038 [1], the use of CMAKE_OSX_* variables set
by Slicer has been simplified with the introduction of the
"ConfigurePrerequisites" components.

It turns out that the associated CMake logic was flawed and wasn't
working as expected when the project was configured twice.

This commit ensures the "Slicer_USE_*" variables associated with the
components are reset before checking the variable "Slicer_FIND_COMPONENTS".

It also ensures that the execution return if component "ConfigurePrerequisites"
is defined and "Slicer_PREREQUISITES_CONFIGURED" is already set.

Co-authored-by: Marine Clogenson <marine.clogenson@epfl.ch>

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22115 3bd1e089-480b-0410-8dfb-8563597acbee
COMP: Make sure extension fixup considers extension "support libraries"

Before this commit, libraries that were not (python, cli or loadable module)
 related were systematically fixed with "@fixup_path@/@Slicer_LIB_DIR@".

This commit changes this so that "support libraries" provided by
an extension are properly fixed up.

Note that the approach considered here will have to be revisited to ensure
that extension depends on support libraries provided by other extension
are properly fixed up.

Co-authored-by: Francois Budin <fbudin@unc.edu>
Signed-off-by: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22116 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Adding function to create a new WidgetRepresentation for a module

This can allow the user to "import" a module's GUI into another.
This is particularly interesting for work-flow modules.
The function getModuleGui can grab the existing GUI for the given module,
but the widget representation can only exist in one place. So when using
the GUI in another module with getModuleGui would cause one of the modules
to be empty.

From: Guillaume Sala <guillaume.sala@kitware.com>

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22117 3bd1e089-480b-0410-8dfb-8563597acbee
COMP: Pass Slicer_PLATFORM_CHECK to inner build

Otherwise, if Slicer_PLATFORM_CHECK is OFF at the superbuild level,
the variable is not defined in the inner build, and automatically set to
ON by SlicerBlockPlatformCheck.cmake

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22118 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Adding new editor effect to perform WatershedFromMarker

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

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22119 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: gracefully handle case where SimpleITK is not available

On continuous builds and local developer builds SimpleITK is not
enabled by default, so we need to test for it and avoid raising
an error that prevents the module from loading.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22120 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: refer to mandatory parameters by index, no with flags (fixes 3184)


git-svn-id: http://svn.slicer.org/Slicer4/trunk@22121 3bd1e089-480b-0410-8dfb-8563597acbee
COMP: Build SlicerBaseCLI only if VTK is found.

This CMakeLists can be configured by projects others than Slicer
(e.g. TubeTK) that may not have VTK.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22122 3bd1e089-480b-0410-8dfb-8563597acbee
PERF: try to import SimpleITK at file scope

Repeatedly importing a library at function scope is less efficient
then  at the module level.

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

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