Import 2017-06-07 23:51:09: master 3e94490f

Author Committer Branch Timestamp Parent
jcfr jcfr master 2015-03-27 10:32:59 master a34a04bd
Changeset

ENH: Added support in vtkMRMLNode for multiple references to the same node

Fixed limitations of node references:

  • Node reference modification request (SetAndObserveNthNodeReferenceID)
    was ignored if only events were different. This caused an issue in
    OpenIGTLinkIF, because different nodes in the same role required
    different event observations and so the role-default events that were
    restored from the scene were not correct.

  • One node could only be referenced a single time only, otherwise the
    most recently added/removed/modified reference overwrote all the
    previous event observations. This limitation was not acceptable,
    because even a temporarily created reference (the user selects a node
    as input that is already selected as an input in another node selector)
    could remove event observations. This caused an issue in Fiducial
    registration wizard, which has two input fiducial lists, and when the
    user selected one input fiducial list it often removed the observer
    from the other input fiducial list.

Other related changes:

  • Simplified node references implementation: all reference
    add/remove/modification operations go through a single method
    (SetAndObserveNthNodeReferenceID), previously there were many potential
    execution path for these operations, which made it difficult to make
    changes consistently.

  • Fixed ObserverManager to update the observation even if only events or
    priorities are changed.

  • Made vtkMRMLNodeReference data members ReferencingNode, ReferencedNode,
    Events accessible only by get/set functions to allow consistency checks.

  • Renamed vtkMRMLNode::RemoveAllNodeReferenceIDs to RemoveNodeReferenceIDs
    to be consistent with similar method names

From: Andras Lasso <lasso@queensu.ca>

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

mod - Libs/MRML/Core/Testing/vtkMRMLNodeTest1.cxx Diff File
mod - Libs/MRML/Core/Testing/vtkMRMLTransformableNodeOnNodeReferenceAddTest.cxx Diff File
mod - Libs/MRML/Core/vtkMRMLDisplayableNode.cxx Diff File
mod - Libs/MRML/Core/vtkMRMLModelNode.cxx Diff File
mod - Libs/MRML/Core/vtkMRMLNode.cxx Diff File
mod - Libs/MRML/Core/vtkMRMLNode.h Diff File
mod - Libs/MRML/Core/vtkMRMLSelectionNode.cxx Diff File
mod - Libs/MRML/Core/vtkMRMLTransformableNode.h Diff File
mod - Libs/MRML/Core/vtkMRMLVolumeNode.cxx Diff File
mod - Libs/MRML/Core/vtkObserverManager.cxx Diff File
mod - Libs/MRML/Core/vtkObserverManager.h Diff File