Esempio n. 1
0
    def section_CloneNode(self):
        self.delayDisplay("Clone node", self.delayMs)

        shNode = slicer.vtkMRMLSubjectHierarchyNode.GetSubjectHierarchyNode(
            slicer.mrmlScene)
        self.assertIsNotNone(shNode)

        markupsNode = slicer.util.getNode(self.sampleMarkupName)
        markupsShItemID = shNode.GetItemByDataNode(markupsNode)

        self.assertIsNotNone(markupsShItemID)
        self.assertIsNotNone(shNode.GetItemDataNode(markupsShItemID))

        # Add storage node for markups node to test cloning those
        markupsStorageNode = slicer.vtkMRMLMarkupsFiducialStorageNode()
        slicer.mrmlScene.AddNode(markupsStorageNode)
        markupsNode.SetAndObserveStorageNodeID(markupsStorageNode.GetID())

        # Get clone node plugin
        pluginHandler = slicer.qSlicerSubjectHierarchyPluginHandler().instance(
        )
        self.assertIsNotNone(pluginHandler)

        cloneNodePlugin = pluginHandler.pluginByName('CloneNode')
        self.assertIsNotNone(cloneNodePlugin)

        # Set markup node as current (i.e. selected in the tree) for clone
        pluginHandler.setCurrentItem(markupsShItemID)

        # Get clone node context menu action and trigger
        cloneNodePlugin.itemContextMenuActions()[0].activate(
            qt.QAction.Trigger)

        self.assertEqual(
            slicer.mrmlScene.GetNumberOfNodesByClass(
                'vtkMRMLMarkupsFiducialNode'), 2)
        self.assertEqual(
            slicer.mrmlScene.GetNumberOfNodesByClass(
                'vtkMRMLMarkupsDisplayNode'), 2)
        self.assertEqual(
            slicer.mrmlScene.GetNumberOfNodesByClass(
                'vtkMRMLMarkupsFiducialStorageNode'), 2)

        clonedMarkupsName = self.sampleMarkupName + self.cloneNodeNamePostfix
        clonedMarkupsNode = slicer.util.getNode(clonedMarkupsName)
        self.assertIsNotNone(clonedMarkupsNode)
        clonedMarkupsShItemID = shNode.GetItemChildWithName(
            self.studyItemID, clonedMarkupsName)
        self.assertIsNotNone(clonedMarkupsShItemID)
        self.assertIsNotNone(clonedMarkupsNode.GetDisplayNode())
        self.assertIsNotNone(clonedMarkupsNode.GetStorageNode())

        inSameStudy = slicer.vtkSlicerSubjectHierarchyModuleLogic.AreItemsInSameBranch(
            shNode, markupsShItemID, clonedMarkupsShItemID,
            slicer.vtkMRMLSubjectHierarchyConstants.GetDICOMLevelStudy())
        self.assertTrue(inSameStudy)
Esempio n. 2
0
  def section_SetupPathsAndNames(self):
    # Set constants
    self.invalidItemID = slicer.vtkMRMLSubjectHierarchyNode.GetInvalidItemID()
    self.sampleMarkupName = 'SampleMarkup'
    self.studyItemID = self.invalidItemID
    self.cloneNodeNamePostfix = slicer.qSlicerSubjectHierarchyCloneNodePlugin().getCloneNodeNamePostfix()

    # Test printing of all context menu actions and their section numbers
    pluginHandler = slicer.qSlicerSubjectHierarchyPluginHandler().instance();
    print(pluginHandler.dumpContextMenuActions())
    def TestSection_InitializeTest(self):
        #
        # Define variables
        #

        # A certain model to test that is both in the brain and the midbrain folders
        self.testModelNodeName = 'Model_79_left_red_nucleus'
        self.testModelNode = None
        self.overrideColor = [255, 255, 0]

        # Get subject hierarchy node
        self.shNode = slicer.vtkMRMLSubjectHierarchyNode.GetSubjectHierarchyNode(
            slicer.mrmlScene)
        self.assertIsNotNone(self.shNode)
        # Get folder plugin
        pluginHandler = slicer.qSlicerSubjectHierarchyPluginHandler().instance(
        )
        self.assertIsNotNone(pluginHandler)
        self.folderPlugin = pluginHandler.pluginByName('Folder')
        self.assertIsNotNone(self.folderPlugin)

        #
        # Initialize test
        #

        # Create 3D view
        self.layoutName = "Test3DView"
        # ownerNode manages this view instead of the layout manager (it can be any node in the scene)
        self.viewOwnerNode = slicer.mrmlScene.AddNewNodeByClass(
            "vtkMRMLScriptedModuleNode")
        self.viewNode = slicer.vtkMRMLViewNode()
        self.viewNode.SetName(self.layoutName)
        self.viewNode.SetLayoutName(self.layoutName)
        self.viewNode.SetLayoutColor(1, 1, 0)
        self.viewNode.SetAndObserveParentLayoutNodeID(
            self.viewOwnerNode.GetID())
        self.viewNode = slicer.mrmlScene.AddNode(self.viewNode)
        self.viewWidget = slicer.qMRMLThreeDWidget()
        self.viewWidget.setMRMLScene(slicer.mrmlScene)
        self.viewWidget.setMRMLViewNode(self.viewNode)
        self.viewWidget.show()

        # Get model displayable manager for the 3D view
        self.modelDisplayableManager = self.getModelDisplayableManager()
        self.assertIsNotNone(self.modelDisplayableManager)
  def section_CloneNode(self):
    self.delayDisplay("Clone node",self.delayMs)

    shNode = slicer.vtkMRMLSubjectHierarchyNode.GetSubjectHierarchyNode(slicer.mrmlScene)
    self.assertIsNotNone( shNode )

    markupsNode = slicer.util.getNode(self.sampleMarkupName)
    markupsShItemID = shNode.GetItemByDataNode(markupsNode)

    self.assertIsNotNone( markupsShItemID )
    self.assertIsNotNone( shNode.GetItemDataNode(markupsShItemID) )

    # Add storage node for markups node to test cloning those
    markupsStorageNode = slicer.vtkMRMLMarkupsFiducialStorageNode()
    slicer.mrmlScene.AddNode(markupsStorageNode)
    markupsNode.SetAndObserveStorageNodeID(markupsStorageNode.GetID())

    # Get clone node plugin
    pluginHandler = slicer.qSlicerSubjectHierarchyPluginHandler().instance()
    self.assertIsNotNone( pluginHandler )

    cloneNodePlugin = pluginHandler.pluginByName('CloneNode')
    self.assertIsNotNone( cloneNodePlugin )

    # Set markup node as current (i.e. selected in the tree) for clone
    pluginHandler.setCurrentItem(markupsShItemID)

    # Get clone node context menu action and trigger
    cloneNodePlugin.itemContextMenuActions()[0].activate(qt.QAction.Trigger)

    self.assertEqual( slicer.mrmlScene.GetNumberOfNodesByClass('vtkMRMLMarkupsFiducialNode'), 2 )
    self.assertEqual( slicer.mrmlScene.GetNumberOfNodesByClass('vtkMRMLMarkupsDisplayNode'), 2 )
    self.assertEqual( slicer.mrmlScene.GetNumberOfNodesByClass('vtkMRMLMarkupsFiducialStorageNode'), 2 )

    clonedMarkupsName = self.sampleMarkupName + self.cloneNodeNamePostfix
    clonedMarkupsNode = slicer.util.getNode(clonedMarkupsName)
    self.assertIsNotNone( clonedMarkupsNode )
    clonedMarkupsShItemID = shNode.GetItemChildWithName(self.studyItemID, clonedMarkupsName)
    self.assertIsNotNone( clonedMarkupsShItemID )
    self.assertIsNotNone( clonedMarkupsNode.GetDisplayNode() )
    self.assertIsNotNone( clonedMarkupsNode.GetStorageNode() )

    inSameStudy = slicer.vtkSlicerSubjectHierarchyModuleLogic.AreItemsInSameBranch(
      shNode, markupsShItemID, clonedMarkupsShItemID, slicer.vtkMRMLSubjectHierarchyConstants.GetDICOMLevelStudy())
    self.assertTrue( inSameStudy )