def setup(self): ScriptedLoadableModuleWidget.setup(self) # Add margin to the sides self.layout.setContentsMargins(4,0,4,0) # # Segment editor widget # import qSlicerSegmentationsModuleWidgetsPythonQt self.editor = qSlicerSegmentationsModuleWidgetsPythonQt.qMRMLSegmentEditorWidget() self.editor.setMaximumNumberOfUndoStates(10) # Set parameter node first so that the automatic selections made when the scene is set are saved self.selectParameterNode() self.editor.setMRMLScene(slicer.mrmlScene) self.layout.addWidget(self.editor) # Observe editor effect registrations to make sure that any effects that are registered # later will show up in the segment editor widget. For example, if Segment Editor is set # as startup module, additional effects are registered after the segment editor widget is created. import qSlicerSegmentationsEditorEffectsPythonQt #TODO: For some reason the instance() function cannot be called as a class function although it's static factory = qSlicerSegmentationsEditorEffectsPythonQt.qSlicerSegmentEditorEffectFactory() self.effectFactorySingleton = factory.instance() self.effectFactorySingleton.connect('effectRegistered(QString)', self.editorEffectRegistered) # Connect observers to scene events self.addObserver(slicer.mrmlScene, slicer.mrmlScene.StartCloseEvent, self.onSceneStartClose) self.addObserver(slicer.mrmlScene, slicer.mrmlScene.EndCloseEvent, self.onSceneEndClose) self.addObserver(slicer.mrmlScene, slicer.mrmlScene.EndImportEvent, self.onSceneEndImport)
def setup(self): ScriptedLoadableModuleWidget.setup(self) # Add margin to the sides self.layout.setContentsMargins(4,0,4,0) # # Segment editor widget # import qSlicerSegmentationsModuleWidgetsPythonQt self.editor = qSlicerSegmentationsModuleWidgetsPythonQt.qMRMLSegmentEditorWidget() self.editor.setMaximumNumberOfUndoStates(10) # Set parameter node first so that the automatic selections made when the scene is set are saved self.selectParameterNode() self.editor.setMRMLScene(slicer.mrmlScene) self.layout.addWidget(self.editor) # Observe editor effect registrations to make sure that any effects that are registered # later will show up in the segment editor widget. For example, if Segment Editor is set # as startup module, additional effects are registered after the segment editor widget is created. import qSlicerSegmentationsEditorEffectsPythonQt #TODO: For some reason the instance() function cannot be called as a class function although it's static factory = qSlicerSegmentationsEditorEffectsPythonQt.qSlicerSegmentEditorEffectFactory() self.effectFactorySingleton = factory.instance() self.effectFactorySingleton.connect('effectRegistered(QString)', self.editorEffectRegistered) # Connect observers to scene events self.addObserver(slicer.mrmlScene, slicer.mrmlScene.StartCloseEvent, self.onSceneStartClose) self.addObserver(slicer.mrmlScene, slicer.mrmlScene.EndCloseEvent, self.onSceneEndClose) self.addObserver(slicer.mrmlScene, slicer.mrmlScene.EndImportEvent, self.onSceneEndImport)
def register(self): import qSlicerSegmentationsEditorEffectsPythonQt #TODO: For some reason the instance() function cannot be called as a class function although it's static factory = qSlicerSegmentationsEditorEffectsPythonQt.qSlicerSegmentEditorEffectFactory() effectFactorySingleton = factory.instance() effectFactorySingleton.registerEffect(self.scriptedEffect) logging.debug('Scripted segment editor effects registered: ' + self.scriptedEffect.name)
def register(self): import qSlicerSegmentationsEditorEffectsPythonQt #TODO: For some reason the instance() function cannot be called as a class function although it's static factory = qSlicerSegmentationsEditorEffectsPythonQt.qSlicerSegmentEditorEffectFactory( ) effectFactorySingleton = factory.instance() effectFactorySingleton.registerEffect(self.scriptedEffect)
def setup(self): ScriptedLoadableModuleWidget.setup(self) # Load widget from .ui file (created by Qt Designer) uiWidget = slicer.util.loadUI( self.resourcePath('UI/SingleSliceSegmentation.ui')) self.layout.addWidget(uiWidget) self.ui = slicer.util.childWidgetVariables(uiWidget) # Set up widgets self.ui.inputSequenceBrowserSelector.setMRMLScene(slicer.mrmlScene) self.ui.inputVolumeSelector.setMRMLScene(slicer.mrmlScene) self.ui.inputSegmentationSelector.setMRMLScene(slicer.mrmlScene) self.ui.segmentationBrowserSelector.setMRMLScene(slicer.mrmlScene) # connections self.ui.inputSequenceBrowserSelector.connect( "currentNodeChanged(vtkMRMLNode*)", self.onInputBrowserChanged) self.ui.inputVolumeSelector.connect("currentNodeChanged(vtkMRMLNode*)", self.onInputVolumeChanged) self.ui.inputSegmentationSelector.connect( "currentNodeChanged(vtkMRMLNode*)", self.onSegmentationChanged) self.ui.segmentationBrowserSelector.connect( "currentNodeChanged(vtkMRMLNode*)", self.onSegmentationBrowserChanged) self.ui.skipImagesSpinBox.connect("valueChanged(int)", self.onSkipImagesNumChanged) self.ui.captureButton.connect('clicked(bool)', self.onCaptureButton) self.ui.clearSegmentationButton.connect('clicked(bool)', self.onClearButton) self.ui.skipImageButton.connect('clicked(bool)', self.onSkipButton) self.ui.exportButton.connect('clicked(bool)', self.onExportButton) self.ui.editor.setMRMLScene(slicer.mrmlScene) import qSlicerSegmentationsEditorEffectsPythonQt # TODO: For some reason the instance() function cannot be called as a class function although it's static factory = qSlicerSegmentationsEditorEffectsPythonQt.qSlicerSegmentEditorEffectFactory( ) self.effectFactorySingleton = factory.instance() self.effectFactorySingleton.connect('effectRegistered(QString)', self.editorEffectRegistered)
def setupSegmentEditor(self): self.ui.segmentEditorWidget.setMRMLScene(slicer.mrmlScene) segmentEditorSingletonTag = "LiverRFA.SegmentEditor" segmentEditorNode = slicer.mrmlScene.GetSingletonNode( segmentEditorSingletonTag, "vtkMRMLSegmentEditorNode") if segmentEditorNode is None: segmentEditorNode = slicer.vtkMRMLSegmentEditorNode() segmentEditorNode.SetSingletonTag(segmentEditorSingletonTag) segmentEditorNode = slicer.mrmlScene.AddNode(segmentEditorNode) if self.ui.segmentEditorWidget.mrmlSegmentEditorNode( ) == segmentEditorNode: # nothing changed return self.ui.segmentEditorWidget.setMRMLSegmentEditorNode(segmentEditorNode) # Observe editor effect registrations to make sure that any effects that are registered # later will show up in the segment editor widget. For example, if Segment Editor is set # as startup module, additional effects are registered after the segment editor widget is created. import qSlicerSegmentationsEditorEffectsPythonQt #TODO: For some reason the instance() function cannot be called as a class function although it's static factory = qSlicerSegmentationsEditorEffectsPythonQt.qSlicerSegmentEditorEffectFactory( ) self.effectFactorySingleton = factory.instance()
def setup(self): ScriptedLoadableModuleWidget.setup(self) # Load widget from .ui file (created by Qt Designer) uiWidget = slicer.util.loadUI( self.resourcePath('UI/SingleSliceSegmentation.ui')) self.layout.addWidget(uiWidget) self.ui = slicer.util.childWidgetVariables(uiWidget) # Set up widgets self.ui.inputSequenceBrowserSelector.setMRMLScene(slicer.mrmlScene) self.ui.inputVolumeSelector.setMRMLScene(slicer.mrmlScene) self.ui.inputSegmentationSelector.setMRMLScene(slicer.mrmlScene) self.ui.segmentationBrowserSelector.setMRMLScene(slicer.mrmlScene) # connections self.ui.inputSequenceBrowserSelector.connect( "currentNodeChanged(vtkMRMLNode*)", self.onInputBrowserChanged) self.ui.inputVolumeSelector.connect("currentNodeChanged(vtkMRMLNode*)", self.onInputVolumeChanged) self.ui.inputSegmentationSelector.connect( "currentNodeChanged(vtkMRMLNode*)", self.onSegmentationChanged) self.ui.segmentationBrowserSelector.connect( "currentNodeChanged(vtkMRMLNode*)", self.onSegmentationBrowserChanged) self.ui.skipImagesSpinBox.connect("valueChanged(int)", self.onSkipImagesNumChanged) self.ui.captureButton.connect('clicked(bool)', self.onCaptureButton) self.ui.clearSegmentationButton.connect('clicked(bool)', self.onClearButton) self.ui.skipImageButton.connect('clicked(bool)', self.onSkipButton) self.ui.exportButton.connect('clicked(bool)', self.onExportButton) self.ui.layoutSelectButton.connect('clicked(bool)', self.onLayoutSelectButton) self.ui.editor.setMRMLScene(slicer.mrmlScene) import qSlicerSegmentationsEditorEffectsPythonQt # TODO: For some reason the instance() function cannot be called as a class function although it's static factory = qSlicerSegmentationsEditorEffectsPythonQt.qSlicerSegmentEditorEffectFactory( ) self.effectFactorySingleton = factory.instance() self.effectFactorySingleton.connect('effectRegistered(QString)', self.editorEffectRegistered) # Add custom layout to layout selection menu customLayout = """ <layout type="horizontal" split="true"> <item> <view class="vtkMRMLSliceNode" singletontag="Red"> <property name="orientation" action="default">Axial</property> <property name="viewlabel" action="default">R</property> <property name="viewcolor" action="default">#F34A33</property> </view> </item> <item> <view class="vtkMRMLViewNode" singletontag="1"> <property name="viewlabel" action="default">1</property> </view> </item> </layout> """ customLayoutId = 501 layoutManager = slicer.app.layoutManager() layoutManager.layoutLogic().GetLayoutNode().AddLayoutDescription( customLayoutId, customLayout) viewToolBar = slicer.util.mainWindow().findChild( 'QToolBar', 'ViewToolBar') layoutMenu = viewToolBar.widgetForAction( viewToolBar.actions()[0]).menu() layoutSwitchActionParent = layoutMenu layoutSwitchAction = layoutSwitchActionParent.addAction( "red + 3D side by side") # add inside layout list layoutSwitchAction.setData(customLayoutId) # layoutSwitchAction.setIcon(qt.QIcon(':Icons/Go.png')) layoutSwitchAction.setToolTip('3D and slice view') layoutSwitchAction.connect('triggered()', lambda layoutId=customLayoutId: slicer.app. layoutManager().setLayout(layoutId)) customLayout = """ <layout type="horizontal" split="true"> <item> <view class="vtkMRMLSliceNode" singletontag="Red"> <property name="orientation" action="default">Axial</property> <property name="viewlabel" action="default">R</property> <property name="viewcolor" action="default">#F34A33</property> </view> </item> <item> <layout type=\"horizontal\"> <item> <view class="vtkMRMLViewNode" singletontag="1"> <property name="viewlabel" action="default">1</property> </view> </item> <item> <view class="vtkMRMLViewNode" singletontag="2" type="secondary"> <property name="viewlabel" action="default">2</property> </view> </item> </layout> </item> </layout> """ customLayoutId = 502 layoutManager.layoutLogic().GetLayoutNode().AddLayoutDescription( customLayoutId, customLayout) layoutSwitchActionParent = layoutMenu layoutSwitchAction = layoutSwitchActionParent.addAction( "red + stacked dual 3D") # add inside layout list layoutSwitchAction.setData(customLayoutId) # layoutSwitchAction.setIcon(qt.QIcon(':Icons/Go.png')) layoutSwitchAction.setToolTip('Dual 3D and slice view') layoutSwitchAction.connect('triggered()', lambda layoutId=customLayoutId: slicer.app. layoutManager().setLayout(layoutId))