BUG: stop the annotation tree view from auto expanding lists 

Don't use calling setMRMLScene on the tree view to refresh the tree, 
as it resets the expand level on the tree view, only call it when 
the scene is different.
This stopped the auto added top level all annotations list and the fiducials/ruler
list nodes from expanding, so invoke an event from the logic when those default
hierarchy nodes are added to trigger the tree to expand them (using the
Expanded value on the hierarchy node).
Also expand the hierarchy node when it's added by the user via the add
hierarchy button.

Fixes issue #1735


git-svn-id: http://svn.slicer.org/Slicer4/trunk@21531 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: track/restore DICOM popup geometry

git-svn-id: http://svn.slicer.org/Slicer4/trunk@21532 3bd1e089-480b-0410-8dfb-8563597acbee
BUG 2838. Observe only models that have display nodes, since their polydata is used in the slice models pipeline

git-svn-id: http://svn.slicer.org/Slicer4/trunk@21533 3bd1e089-480b-0410-8dfb-8563597acbee
STYLE: Minor style changes in qSlicerMouseModeToolBar

Improve readability.

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

Displayable managers should test both GetVisiblity() and IsDisplayableInView(),
therefore we add a convenient method.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@21535 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Add qMRMLTreeView::showScene and qMRMLTreeView::showRootNode

Give more flexibility to decide what item is root.
A root index for QTreeView is the invisible index that is the parent of all
the top level indexes.
showScene or showRootNode give the option to decide if the root scene/node
is visible, which implies that its parent becomes the root index for QTreeView.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@21536 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Add utility method vtkMRMLDisplayableNode::GetNthDisplayNodeByClass

This new method can be handy because displayable nodes can have multiple
display nodes (e.g. vtkMRMLScalarVolumeNode can have
vtkMRMLScalarVolumeDisplayNode and
vtkMRMLGPURayCastVolumeRenderingDisplayNode at the same time. Annotations
have also typically more than 1 display node: textDisplayNode,
controlPointsDisplayNode...).

git-svn-id: http://svn.slicer.org/Slicer4/trunk@21537 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Speedup Annotations: remove unnecessary scene browsing

Checking if there is at least 1 node of type m_Focus in the scene is
costly.
When there is at least 1 node, the scene was getting browsed twice, once
in that step and once again later in the code.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@21538 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Add methods to derive Annotations displayable manager

git-svn-id: http://svn.slicer.org/Slicer4/trunk@21539 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Add support for parent/child annotations

Some annotations (e.g. bones) can have direct parent/child relationship
in the tree view.
It shouldn't impact the existing annotations.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@21540 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Make qMRMLSceneAnnotationModel columns configurable

Note: Annotation hierarchies have an unclickable visibility icon

Issue #2606

git-svn-id: http://svn.slicer.org/Slicer4/trunk@21541 3bd1e089-480b-0410-8dfb-8563597acbee
BUG: Delete unnecessary re-declaration of signal

git-svn-id: http://svn.slicer.org/Slicer4/trunk@21542 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Add Logics observation from vtkMRMLAbstractLogic

vtkMRMLAbstractLogic can now observe other logics.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@21543 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Add support for parentable annotations

Sometimes we want the annotations to be parent of other annotations.

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

Similarly to qMRMLTreeView::currentNode(), setCurrentNode abstracts
setCurrentIndex().

git-svn-id: http://svn.slicer.org/Slicer4/trunk@21545 3bd1e089-480b-0410-8dfb-8563597acbee
STYLE: Minor indentation and factorization changes in Annotations module

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

HasEnoughClicks doesn't provide enough flexibility when dealing with
annotations.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@21547 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Make the applications to build customizable

By passing Slicer_APPLICATIONS_DIR, the applications to build can be
changed.

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

Controls whether Diffusion related modules are built or not.
It concernes all the DWI, DTI and Tractography modules.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@21549 3bd1e089-480b-0410-8dfb-8563597acbee
ENH: Add support for external projects passed as configuration parameter

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