COMP: Update CTK / PythonQt - Fix msvc 2010/2012 build error

See commontk/CTK@2c24951c9

Thanks to @ihnorton for testing the patch.

See #2002

Complete list of associated CTK changes: https://github.com/commontk/CTK/compare/bedf1712d4...1c0977af174

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22046 3bd1e089-480b-0410-8dfb-8563597acbee
COMP: Fix msvc 2012 build error in vtkMRMLAbstractDisplayableManager

From: Isaiah Norton <isaiah.norton@gmail.com>

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22047 3bd1e089-480b-0410-8dfb-8563597acbee
COMP: Update CTestCustom to exclude "HEAD is now" git warning.

Despite the fact the git client on the different Slicer dashboard
client has been setup with "advice.detachedHead" warning disabled [1]

The "HEAD is now ..." output still show up as a warning on CDash.
See http://slicer.cdash.org/viewBuildError.php?type=1&buildid=103147

This commit attempts to suppress it.

[1] http://www.slicer.org/slicerWiki/index.php/Documentation/Nightly/Developers/Tutorials/DashboardSetup#Setup

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22048 3bd1e089-480b-0410-8dfb-8563597acbee
COMP: Remove Log4qt CTest warning suppression

Since commontk/CTK@247c9ad3a, Log4Qt is not built as part of
CTK core.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22049 3bd1e089-480b-0410-8dfb-8563597acbee
COMP: Restore CTest driven build of extension

Following commit r22038 [1], UseSlicer.cmake file has been updated to
NOT call "project()". This didn't cause problems when manually
configuring and building the extension. Problems arise when the
extension build is driven using ctest.

More particularly, calling "ctest_build()" [2] on a build tree
configured without an explicit call to "project()" failed on
windows. In that specific case, the command line generated to
drive the build is expecting a solution file named
after <CTEST_PROJECT_NAME>.sln. In our case, only the
file "MyProject.sln" was existing.

This commit ensure that a properly named solution file will be
created by calling "project(${EXTENSION_NAME})" when appropriate.

Thanks to Csaba Pinter for reporting the issue.

Discussion: http://slicer-devel.65872.n3.nabble.com/Extensions-failed-to-build-on-windows-last-night-tt4028763.html

[1] http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&revision=22038
[2] https://github.com/Slicer/Slicer/blob/cd985077aec48b3981bf114eba7f707c0eb55299/Extensions/CMake/SlicerBlockBuildPackageAndUploadExtension.cmake#L155

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22050 3bd1e089-480b-0410-8dfb-8563597acbee
COMP: typo in patch provided for 22047, should be greater-or-equal

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22051 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Harmonize qMRMLNodeComboBox properties

Previously, the property currentNodeId of the node combobox was set with an
id (QString) and sent a signal with a node (vtkMRMLNode*) which can be
confusing in the widgets using it. Now, the node combobox as an id
property or a node property.

See Issue #1694

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22052 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Add Units module

The unit module handle the unit in slicer. The units are singleton in the
scene that belong to a quantity. So far the only quantity available are
length and time. The units are settings saved with the application.

See Issue #1694

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22053 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Add Unit compatible widget

Added new widgets that can observes the MRML scene to deduce the
current unit for a quantity type (the singleton vtkMRMLSelectionNode is
used for storage in this case).

See Issue #1694

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22054 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Apply units widget to slicer

Modified:
- Volume info widget: Made it a qMRMLWidget so it can propagate the
mrml scene.
- Annotations: Add to vtk widget and GUI
- Tractography Interactive seeding: Add units to GUI
- Slice controller: add units in spinboxes
- Volumes: add units to GUI
- Editor: add units to paint and island effects

See Issue #1694

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22055 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Only one unit per quantity accessible to the user

Now only one unit per quantity is accessible to the user. This unit can
be customized and it's logged in the settings so it can be restored
when opening the application.
On the implementation side of things:
- Add access method to all the referenced unit nodes in the selection node
- Remove the unit widget
- Hide module
- Create the unit widget to easily customize units (add the plugins with
it)
- Create the unit settings widget using the unit widget. This widget
is tailored to be used in the setting panel (no plugin)
- Refactorize the setting panel to use the setting unit widget and
log the unit node properties
- Create only node for each quantity exposed to the user. The preset nodes
are kept in a special scene in the logic.

See Issue #1694

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22056 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: Rename forgotten currentNodeId to currentNodeID

Following Revision 22052, the signal was renamed currentNodeID. Fixing
forgotten python script.

See Issue #1694

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22057 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: fix build error on mac (can't return false for pointer)

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22058 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Add currentNodeId() as a deprecated method

This will falicitate the transition for extensions and projects depending
on Slicer.

See Issue #1694

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22059 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: Fix compile error related to "WrapValue" unit methods

Following commit r22055 [1], three new methods have been introduced:
- WrapValueWithPrefix
- WrapValueWithSuffix
- WrapValueWithPrefixAndSuffix

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

This was causing a build error on linux:

 In member function ‘std::string vtkMRMLUnitNode::WrapValueWithPrefixAndSuffix(std::string&)’:
 ../vtkMRMLUnitNode.cxx:183: error: no matching function for call to ‘vtkMRMLUnitNode::WrapValueWithPrefix(std::string)’
 ../vtkMRMLUnitNode.cxx:159: note: candidates are: std::string vtkMRMLUnitNode::WrapValueWithPrefix(std::string&)

Making the method const correct fixed the problem.

More details about the error are reported here: http://stackoverflow.com/questions/1565600/how-come-a-non-const-reference-cannot-bind-to-a-temporary-object

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22060 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: vtkMRMLUnitNodeTest1 use size_t instead of int

This fixes the warnings for linux brought by r22053

  /Slicer-TR/Libs/MRML/Core/Testing/vtkMRMLUnitNodeTest1.cxx: In function ‘bool TestScenesUnitNodeID(vtkMRMLScene*)’:
  /Slicer-TR/Libs/MRML/Core/Testing/vtkMRMLUnitNodeTest1.cxx:86: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  /Slicer-TR/Libs/MRML/Core/Testing/vtkMRMLUnitNodeTest1.cxx:92: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  /Slicer-TR/Libs/MRML/Core/Testing/vtkMRMLUnitNodeTest1.cxx: In function ‘bool TestUnitNodeAttribute(vtkMRMLScene*)’:
  /Slicer-TR/Libs/MRML/Core/Testing/vtkMRMLUnitNodeTest1.cxx:121: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]

And the same kind of warning in the logic test.

See Issue #1694

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22061 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: Fix annotation logic build error

Two things here:
1 - Unused variable warning:
  Slicer4/Modules/Loadable/Annotations/Logic/vtkSlicerAnnotationModuleLogic.cxx:1998: warning: unused variable 'lengthUnit' [-Wunused-variable]

This is fixed by deleting the unused pointer

2 - ostringstream error:
  /Slicer4/Modules/Loadable/Annotations/Logic/vtkSlicerAnnotationModuleLogic.cxx:2018: error: no matching function for call to 'std::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::basic_ostringstream(double)'
  /Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/sstream:433: note: candidates are: std::basic_ostringstream<_CharT, _Traits, _Alloc>::basic_ostringstream(const std::basic_string<_CharT, _Traits, _Alloc>&, std::_Ios_Openmode) [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]
  /Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/sstream:412: note:                 std::basic_ostringstream<_CharT, _Traits, _Alloc>::basic_ostringstream(std::_Ios_Openmode) [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]
  /Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/iosfwd:79: note:                 std::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::basic_ostringstream(const std::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >&)
  /Slicer4/Modules/Loadable/Annotations/Logic/vtkSlicerAnnotationModuleLogic.cxx:2107: error: no matching function for call to 'vtkMRMLUnitNode::WrapValueWithPrefixAndSuffix(std::string)'
  /Slicer4/Libs/MRML/Core/vtkMRMLUnitNode.h:73: note: candidates are: std::string vtkMRMLUnitNode::WrapValueWithPrefixAndSuffix(std::string&)
  /Slicer4/Modules/Loadable/Annotations/Logic/vtkSlicerAnnotationModuleLogic.cxx:2128: error: no matching function for call to 'vtkMRMLUnitNode::WrapValueWithPrefixAndSuffix(std::string)'
  /Slicer4/Libs/MRML/Core/vtkMRMLUnitNode.h:73: note: candidates are: std::string vtkMRMLUnitNode::WrapValueWithPrefixAndSuffix(std::string&)

This is fized by using the ostringstream more properly.

See Issue #1694

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22062 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Do not require "if(NOT Slicer_SOURCE_DIR)" in extension

Before this commit, to allow extension or module to be bundled
directly within Slicer by setting the variable
Slicer_EXTENSION_SOURCE_DIRS, it was required to explicitly exclude
the call to:
 find_package(Slicer ...)
 include(${Slicer_USE_FILE})
 include(${Slicer_EXTENSION_CPACK})
by check if Slicer_SOURCE_DIR was set .

This commit improves the build system so that making this
call is a no-op when bundling modules or extensions.

This will allow extension developer to write simpler CMakeLists.txt



Before:

cmake_minimum_required(VERSION 2.8.9)

if(NOT Slicer_SOURCE_DIR)
  find_package(Slicer COMPONENTS ConfigurePrerequisites)
endif()

if(NOT Slicer_SOURCE_DIR)
  set(EXTENSION_NAME EmptyExtensionTemplate)
  set(EXTENSION_HOMEPAGE "http://www.slicer.org/slicerWiki/index.php/Documentation/Nightly/Extensions/EmptyExtensionTemplate")
  set(EXTENSION_CATEGORY "Examples")
  set(EXTENSION_CONTRIBUTORS "Jean-Christophe Fillion-Robin (Kitware)")
  set(EXTENSION_DESCRIPTION "This is an example of extension bundling N module(s)")
  set(EXTENSION_ICONURL "http://viewvc.slicer.org/viewvc.cgi/Slicer4/trunk/Extensions/Testing/EmptyExtensionTemplate/EmptyExtensionTemplate.png?revision=21746&view=co")
  set(EXTENSION_SCREENSHOTURLS "http://wiki.slicer.org/slicerWiki/images/4/42/Slicer-r19441-EmptyExtensionTemplate-screenshot.png")
endif()

if(NOT Slicer_SOURCE_DIR)
  find_package(Slicer REQUIRED)
  include(${Slicer_USE_FILE})
endif()


add_subdirectory(ModuleA)

if(NOT Slicer_SOURCE_DIR)
  include(${Slicer_EXTENSION_CPACK})
endif()




After:

cmake_minimum_required(VERSION 2.8.9)

find_package(Slicer COMPONENTS ConfigurePrerequisites)

project(EmptyExtensionTemplate)

set(EXTENSION_HOMEPAGE "http://www.slicer.org/slicerWiki/index.php/Documentation/Nightly/Extensions/EmptyExtensionTemplate")
set(EXTENSION_CATEGORY "Examples")
set(EXTENSION_CONTRIBUTORS "Jean-Christophe Fillion-Robin (Kitware)")
set(EXTENSION_DESCRIPTION "This is an example of empty extension")
set(EXTENSION_ICONURL "http://viewvc.slicer.org/viewvc.cgi/Slicer4/trunk/Extensions/Testing/EmptyExtensionTemplate/EmptyExtensionTemplate.png?revision=21746&view=co")
set(EXTENSION_SCREENSHOTURLS "http://wiki.slicer.org/slicerWiki/images/4/42/Slicer-r19441-EmptyExtensionTemplate-screenshot.png")

find_package(Slicer REQUIRED)
include(${Slicer_USE_FILE})

add_subdirectory(ModuleA)

include(${Slicer_EXTENSION_CPACK})

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22063 3bd1e089-480b-0410-8dfb-8563597acbee
STYLE: UseSlicer - Check variable only if required

Before this commit all three variables
 - EXTENSION_NAME
 - MODULE_NAME
 - PROJECT_NAME
where checked even if EXTENSION_NAME was already set. In case
no "project()" call was done in the extension/module CMakeLists.txt,
the associated output was confusing.

For example:

[...]
-- Checking EXTENSION_NAME variable
-- Checking EXTENSION_NAME variable - SkullStripper
-- Checking MODULE_NAME variable
-- Checking MODULE_NAME variable - SkullStripper
-- Checking PROJECT_NAME variable
-- Checking PROJECT_NAME variable - Project
[...]

This commit change the logic so that the "checking" message is
displayed only if the associated variable is either empty or not
defined.

For example, the output is now:

[...]
-- Checking EXTENSION_NAME variable
-- Checking EXTENSION_NAME variable - SkullStripper
[...]

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22064 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Accept trailing "/" for path passed using extension source dirs

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