Example #1
0
 def delayDisplay(self, message, msec=1000):
     """This utility method displays a small dialog and waits.
 This does two things: 1) it lets the event loop catch up
 to the state of the test so that rendering and widget updates
 have all taken place before the test continues and 2) it
 shows the user/developer/tester the state of the test
 so that we'll know when it breaks.
 """
     print(message)
     self.info = qt.QDialog()
     self.infoLayout = qt.QVBoxLayout()
     self.info.setLayout(self.infoLayout)
     self.label = qt.QLabel(message, self.info)
     self.infoLayout.addWidget(self.label)
     qt.QTimer.singleShot(msec, self.info.close)
     self.info.exec_()
Example #2
0
    def setup(self):
        self.clp, self.formLayout, self.formFrame = self.createClp(
                            'Warp Contour', self.layout, qt.QVBoxLayout())
        
        # Objects to hold the widgets
        self.labels = {}
        self.buttons = {}

        # Paths
        self.topFolder = topFolder
        self.cmtkPath = os.path.realpath(os.path.join(self.topFolder, 
                                            r'Tools/CMTK-2.3.0-Windows-x86/bin'))
        self.bashPath = os.path.realpath(os.path.join(self.topFolder, 
                                     r'Tools/cmder/vendor/git-for-windows/bin/bash.exe'))

        config = [
            ['lCnt', 'sCnt', 'findF1', 'file', '1. The contour (for in_3d) file'],
            ['lTfm', 'sTfm', 'findF2', 'file', '2. (in_3d)_to_(ex_xd).tfm'],
            ['lWrp', 'sWrp', 'findF3', 'folder', '3. The warp_output_transform folder'],
            ['lEx3', 'sEx3', 'findF4', 'file', '4. ex_3d_cropped.nii'],
            ['lCmt', 'sCmt', 'findF5', 'folder', '5. CMTK path'],
            ['lOut', 'sOut', 'findF6', 'folder', '6. Output folder']
        ]

        # Create widgets
        for (lab1, lab2, labBtn, _type, desc) in config:
            self.labels[lab1] = self.createLabel(desc, 
                                    self.formFrame.layout(), 
                                    desc)
            self.labels[lab2] = self.createLabel("", 
                                    self.formFrame.layout(), 
                                    desc)
            self.buttons[labBtn] = self.createBtn('Locate / Change', 
                                        self.findFileFact(lab2, _type), 
                                        self.formFrame.layout())

        # Set the default CMTK path
        self.labels['sCmt'].text = self.cmtkPath
        
        # Apply button
        self.labels['lApp'] = self.createLabel('7. Apply',
                                    self.formFrame.layout(),
                                    'Apply')
        self.buttons['apply'] = self.createBtn('Apply', 
                                        self.warpCnt, 
                                        self.formFrame.layout())
Example #3
0
    def __init__(self,
                 parent=0,
                 optionsFrame=None,
                 embedded=False,
                 suppliedEffects=[]):
        self.effects = []
        self.effectButtons = {}
        self.effectMapper = qt.QSignalMapper()
        self.effectMapper.connect('mapped(const QString&)', self.selectEffect)
        self.editUtil = EditUtil.EditUtil()

        # check for extensions - if none have been registered, just create the empty dictionary
        try:
            slicer.modules.editorExtensions
        except AttributeError:
            slicer.modules.editorExtensions = {}

        # embedded boolean specifies whether or not this edit box is to be embedded
        # into another moduleWidget
        # - if it is, all effect buttons will be displayed in a single row
        self.embedded = embedded

        # save the list of supplied effects that the caller wants to use
        # (should be a subset of EditBox.availableMouseTools + EditBox.availableOperations)
        self.suppliedEffects = suppliedEffects

        if parent == 0:
            self.parent = qt.QFrame()
            self.parent.setLayout(qt.QVBoxLayout())
            self.create()
            self.parent.show()
        else:
            self.parent = parent
            self.create()

        # frame that holds widgets specific for each effect
        if not optionsFrame:
            self.optionsFrame = qt.QFrame(self.parent)
        else:
            self.optionsFrame = optionsFrame

        # state variables for selected effect in the box
        # - currentOption is an instance of an option GUI
        # - currentTools is a list of EffectTool instances
        self.currentOption = None
        self.currentTools = []
    def __init__(self, parent=None):

        # To avoid the overhead of importing SimpleITK during application
        # startup, the import of SimpleITK is delayed until it is needed.
        global sitk
        import SimpleITK as sitk
        global sitkUtils
        import sitkUtils

        if not parent:
            self.parent = slicer.qMRMLWidget()
            self.parent.setLayout(qt.QVBoxLayout())
            self.parent.setMRMLScene(slicer.mrmlScene)
        else:
            self.parent = parent
        self.layout = self.parent.layout()
        if not parent:
            self.setup()
            self.parent.show()

        jsonFiles = glob(SimpleFilters.JSON_DIR + "*.json")
        jsonFiles.sort(key=lambda x: os.path.basename(x))

        self.jsonFilters = []

        for fname in jsonFiles:
            try:
                with open(fname, "r") as fp:
                    j = json.load(fp, object_pairs_hook=OrderedDict)
                    if j["name"] in dir(sitk):
                        self.jsonFilters.append(j)
                    else:
                        if j["itk_module"] in sitk.Version().ITKModulesEnabled(
                        ):
                            import sys
                            sys.stderr.write(
                                "Unknown SimpleITK class \"{0}\".\n".format(
                                    j["name"]))
            except Exception as e:
                import sys
                sys.stderr.write(
                    "Error while reading \"{0}\". Exception: {1}\n".format(
                        fname, e))

        self.filterParameters = None
        self.logic = None
Example #5
0
 def __init__(self, parent = None):
   # Get module name by stripping 'Widget' from the class name
   self.moduleName = self.__class__.__name__
   if self.moduleName.endswith('Widget'):
     self.moduleName = self.moduleName[:-6]
   settings = qt.QSettings()
   self.developerMode = settings.value('Developer/DeveloperMode').lower() == 'true'
   if not parent:
     self.parent = slicer.qMRMLWidget()
     self.parent.setLayout(qt.QVBoxLayout())
     self.parent.setMRMLScene(slicer.mrmlScene)
   else:
     self.parent = parent
   self.layout = self.parent.layout()
   if not parent:
     self.setup()
     self.parent.show()
Example #6
0
 def __init__(self, parent=None):
     if not parent:
         self.parent = slicer.qMRMLWidget()
         self.parent.setLayout(qt.QVBoxLayout())
         self.parent.setMRMLScene(slicer.mrmlScene)
     else:
         self.parent = parent
     self.logic = None
     self.grayscaleNode = None
     self.labelNode = None
     self.fileName = None
     self.fileDialog = None
     if not parent:
         self.setup()
         self.grayscaleSelector.setMRMLScene(slicer.mrmlScene)
         self.labelSelector.setMRMLScene(slicer.mrmlScene)
         self.parent.show()
Example #7
0
    def setup(self):
        """This is called one time when the module GUI is initialized
        """
        ScriptedLoadableModuleWidget.setup(self)

        # Just create a container for the widget
        mainAreaCollapsibleButton = ctk.ctkCollapsibleButton()
        mainAreaCollapsibleButton.text = "Main parameters"
        self.layout.addWidget(mainAreaCollapsibleButton)
        self.mainAreaLayout = qt.QVBoxLayout(mainAreaCollapsibleButton)

        # self.viewer = MIPViewerWidget(mainAreaCollapsibleButton)
        self.viewer = MIPViewerWidget(mainAreaCollapsibleButton,
                                      MIPViewerWidget.CONTEXT_UNKNOWN)
        self.viewer.setup()
        # self.viewer.activateEnhacedVisualization(True)
        self.layout.addStretch(1)
    def __init__(self, parent=None):
        if not parent:
            self.parent = slicer.qMRMLWidget()
            self.parent.setLayout(qt.QVBoxLayout())
            self.parent.setMRMLScene(slicer.mrmlScene)
        else:
            self.parent = parent
        self.layout = self.parent.layout()

        if not parent:
            self.setup()

            self.parent.show()

        if slicer.mrmlScene.GetTagByClassName(
                "vtkMRMLScriptedModuleNode") != 'ScriptedModule':
            slicer.mrmlScene.RegisterNodeClass(vtkMRMLScriptedModuleNode())
Example #9
0
    def __init__(self, moduleName, columnNames, parentWidget = None, filePreffix=""):
        """Widget constructor (existing module)"""
        EventsTrigger.__init__(self)
        
        if not parentWidget:
            self.parent = slicer.qMRMLWidget()
            self.parent.setLayout(qt.QVBoxLayout())
            self.parent.setMRMLScene(slicer.mrmlScene)
        else:
            self.parent = parentWidget
        self.layout = self.parent.layout()

        self.__showWarningWhenIncompleteColumns__ = True
        self.logic = CaseReportsLogic(moduleName, columnNames, filePreffix)
        self.__initEvents__()
        self.reportWindow = CaseReportsWindow(self)
        self.reportWindow.objectName = "caseReportsWindow"
    def __init__(self, parent=None):  #constructor
        if not parent:
            self.parent = slicer.qMRMLWidget()
            self.parent.setLayout(qt.QVBoxLayout())
            self.parent.setMRMLScene(slicer.mrmlScene)
        else:
            self.parent = parent
        self.layout = self.parent.layout()
        if not parent:
            self.setup()
            self.parent.show()

        self.logic = ParsePathJsonLogic()
        self.verbose = True
        self.idxMask = None

        self.advancedOptions = None
    def __init__(self, parent=None):
        try:
            #Load Test Cases
            imageFile = 'C:\\Users\\Vivek Narayan\\Desktop\\Breast DCE-MRI\\TestPatient1\\StudyDate1\\Reconstructions\\Pre.nrrd'
            labelFile = 'C:\\Users\\Vivek Narayan\\Desktop\\Breast DCE-MRI\\TestPatient1\\StudyDate1\\Segmentations\\Pre_labelMap.nrrd'
            properties = {}
            properties['labelmap'] = True
            imageLoad = list(slicer.util.loadVolume(imageFile,
                                                    returnNode=True))
            labelLoad = list(
                slicer.util.loadVolume(labelFile, properties, returnNode=True))
        except:
            pass

        self.selImageNode = None  # Currently selected image node for feature extraction
        self.selLabelNode = None  # Currently selected label node for feature extraction
        self.fileDialog = None

        # Data of database
        self.mainPatientdir = ''
        self.DBpatientNames = []
        self.DatabaseHierarchyDict = collections.OrderedDict()

        self.outputDir = None
        self.outputDirName = "_RadiomicsData"

        self.datafile = None
        self.datafileName = ''

        # Feature Data
        self.FeatureVectors = []
        self.AdvancedSettings = {}
        self.KeywordMatchSettings = {}

        if not parent:
            self.parent = slicer.qMRMLWidget()
            self.parent.setLayout(qt.QVBoxLayout())
            self.parent.setMRMLScene(slicer.mrmlScene)
        else:
            self.parent = parent
        self.layout = self.parent.layout()
        if not parent:
            self.setup()
            self.input1Selector.setMRMLScene(slicer.mrmlScene)
            self.input2Selector.setMRMLScene(slicer.mrmlScene)
            self.parent.show()
Example #12
0
    def __init__(self,
                 parent,
                 logic,
                 configurationName='Default',
                 sliceletDockWidgetPosition=qt.Qt.LeftDockWidgetArea):
        logging.debug('Guidelet.__init__')
        self.sliceletDockWidgetPosition = sliceletDockWidgetPosition
        self.parent = parent
        self.logic = logic
        self.configurationName = configurationName
        self.parameterNodeObserver = None
        self.parameterNode = self.logic.getParameterNode()
        self.layoutManager = slicer.app.layoutManager()
        self.layoutNameToIdMap = {}
        self.layoutNameToSelectCallbackMap = {}
        self.defaultLayoutName = self.VIEW_ULTRASOUND

        self.logic.updateParameterNodeFromSettings(self.parameterNode,
                                                   self.configurationName)
        self.setAndObserveParameterNode(self.parameterNode)

        self.ultrasound = self.getUltrasoundClass()
        self.fitUltrasoundImageToViewOnConnect = True
        self.setupConnectorNode()

        self.sliceletDockWidget = qt.QDockWidget(self.parent)
        self.mainWindow = slicer.util.mainWindow()
        self.sliceletDockWidget.setParent(self.mainWindow)
        self.mainWindow.addDockWidget(self.sliceletDockWidgetPosition,
                                      self.sliceletDockWidget)
        self.sliceletPanel = qt.QFrame(self.sliceletDockWidget)
        self.sliceletPanelLayout = qt.QVBoxLayout(self.sliceletPanel)
        self.sliceletDockWidget.setWidget(self.sliceletPanel)

        self.topPanelLayout = qt.QGridLayout(self.sliceletPanel)
        self.sliceletPanelLayout.addLayout(self.topPanelLayout)
        self.setupTopPanel()

        self.setupFeaturePanelList()
        self.setupAdvancedPanel()
        self.setupAdditionalPanel()

        self.addConnectorObservers()
        self.setupConnections()

        self.sliceletDockWidget.setStyleSheet(self.loadStyleSheet())
Example #13
0
    def __init__(self, parent=None):
        self.currentRegistrationInterface = None
        self.changeIslandTool = None
        self.editUtil = EditorLib.EditUtil.EditUtil()
        self.inputImageNode = None
        self.localCardiacEditorWidget = None

        if not parent:
            self.parent = slicer.qMRMLWidget()
            self.parent.setLayout(qt.QVBoxLayout())
            self.parent.setMRMLScene(slicer.mrmlScene)
        else:
            self.parent = parent
        self.layout = self.parent.layout()
        if not parent:
            self.setup()
            self.parent.show()
Example #14
0
    def createUserInterface(self):
        '''
    '''
        self.__layout = super(EMSegmentDefinePreprocessingStep,
                              self).createUserInterface()

        #
        # dynamic frame
        #
        dynamicFrame = qt.QGroupBox()
        dynamicFrame.setTitle('Check List')
        dynamicFrame.toolTip = 'Please check anything applicable.'
        self.__layout.addWidget(dynamicFrame)
        dynamicFrameLayout = qt.QVBoxLayout(dynamicFrame)

        # .. now pass the layout to the dynamicFrame
        self.dynamicFrame().setLayout(dynamicFrameLayout)
    def connect(self):

        self.updatePydevdPath()
        import pydevd

        # Return if already connected
        if pydevd.connected:
            qt.QMessageBox.warning(
                slicer.util.mainWindow(),
                "Connect to PyDev remote debug server",
                'You are already connected to the remote debugger. If the connection is broken (e.g., because the server terminated the connection) then you need to restart Slicer to be able to connect again.'
            )
            return

        # Show a dialog that explains that Slicer will hang
        self.info = qt.QDialog()
        self.info.setModal(False)
        self.infoLayout = qt.QVBoxLayout()
        self.info.setLayout(self.infoLayout)
        self.label = qt.QLabel(
            "Connecting to remote debug server at port {0}...\nSlicer is paused until {1} accepts the connection."
            .format(self.portNumber, self.getDebugger()), self.info)
        self.infoLayout.addWidget(self.label)
        self.info.show()
        self.info.repaint()
        qt.QTimer.singleShot(2000, self.onConnectionComplete)

        # Connect to the debugger
        try:
            pydevd.settrace('localhost',
                            port=self.portNumber,
                            stdoutToServer=True,
                            stderrToServer=True,
                            suspend=False)
        except Exception, e:
            self.info.hide()
            import traceback
            traceback.print_exc()
            qt.QMessageBox.warning(
                slicer.util.mainWindow(),
                "Connect to PyDev remote debug server",
                'An error occurred while trying to connect to PyDev remote debugger. Make sure he pydev server is started.\n\n'
                + str(e))
            if self.connectionCompleteCallback:
                self.connectionCompleteCallback(False)
            return
Example #16
0
 def __init__(self, parent=0, parameter='label', colorNode=None):
     self.observerTags = []
     self.parameterNode = None
     self.parameterNodeTag = None
     self.parameter = parameter
     self.editUtil = EditUtil.EditUtil()
     self.colorBox = None
     self.colorNode = colorNode
     if parent == 0:
         self.parent = slicer.qMRMLWidget()
         self.parent.setLayout(qt.QVBoxLayout())
         self.parent.setMRMLScene(slicer.mrmlScene)
         self.create()
         self.parent.show()
     else:
         self.parent = parent
         self.create()
Example #17
0
    def create(self):
        """Overriden from the parent. Called in init method. Similar to parent's one but restricting the available options"""
        # the buttons
        self.rowFrames = []
        self.actions = {}
        self.buttons = {}
        self.icons = {}
        self.callbacks = {}

        self.findEffects()

        self.mainFrame = qt.QFrame(self.parent)
        self.mainFrame.objectName = 'MainFrame'
        vbox = qt.QVBoxLayout()
        self.mainFrame.setLayout(vbox)
        self.parent.layout().addWidget(self.mainFrame)

        # create all of the buttons that are going to be used
        #self.createButtonRow( ("DefaultTool", "PaintEffect", "DrawEffect", "LevelTracingEffect", "RectangleEffect", "EraseLabel", "PreviousCheckPoint", "NextCheckPoint") )
        self.createButtonRow(self.activeTools)

        #self.createButtonRow( ("PreviousCheckPoint", "NextCheckPoint"), rowLabel="Undo/Redo: " )

        #
        # the labels
        #
        self.toolsActiveToolFrame = qt.QFrame(self.parent)
        self.toolsActiveToolFrame.setLayout(qt.QHBoxLayout())
        self.parent.layout().addWidget(self.toolsActiveToolFrame)
        self.toolsActiveTool = qt.QLabel(self.toolsActiveToolFrame)
        self.toolsActiveTool.setText('Active Tool:')
        self.toolsActiveTool.setStyleSheet(
            "background-color: rgb(232,230,235)")
        self.toolsActiveToolFrame.layout().addWidget(self.toolsActiveTool)
        self.toolsActiveToolName = qt.QLabel(self.toolsActiveToolFrame)
        self.toolsActiveToolName.setText('')
        self.toolsActiveToolName.setStyleSheet(
            "background-color: rgb(232,230,235)")
        self.toolsActiveToolFrame.layout().addWidget(self.toolsActiveToolName)

        #vbox.addStretch(1)

        self.updateUndoRedoButtons()

        self.setDefaultParams()
Example #18
0
    def __init__(self, logic):
        super(LandmarksWidget, self).__init__()
        self.logic = logic
        self.volumeNodes = []
        self.selectedLandmark = None  # a landmark name
        self.landmarkGroupBox = None  # a QGroupBox
        self.buttons = {}  # the current buttons in the group box
        self.pendingUpdate = False  # update on new scene nodes
        self.updatingFiducials = False  # don't update while update in process
        self.observerTags = []  # for monitoring fiducial changes
        self.movingView = None  # layoutName of slice node where fiducial is being moved

        self.widget = qt.QWidget()
        self.layout = qt.QFormLayout(self.widget)
        self.landmarkArrayHolder = qt.QWidget()
        self.landmarkArrayHolder.setLayout(qt.QVBoxLayout())
        self.layout.addRow(self.landmarkArrayHolder)
        self.updateLandmarkArray()
Example #19
0
 def __init__(self, parent=None):
   self.chartOptions = ("Count", "Volume mm^3", "Volume cc", "Min", "Max", "Mean", "StdDev")
   if not parent:
     self.parent = slicer.qMRMLWidget()
     self.parent.setLayout(qt.QVBoxLayout())
     self.parent.setMRMLScene(slicer.mrmlScene)
   else:
     self.parent = parent
   self.logic = None
   self.grayscaleNode = None
   self.labelNode = None
   self.fileName = None
   self.fileDialog = None
   if not parent:
     self.setup()
     self.grayscaleSelector.setMRMLScene(slicer.mrmlScene)
     self.labelSelector.setMRMLScene(slicer.mrmlScene)
     self.parent.show()
Example #20
0
  def __init__(self):
    settings = qt.QSettings()
    directory = settings.value('DatabaseDirectory')
    self.db = qt.QSqlDatabase.addDatabase("QSQLITE")
    self.db.setDatabaseName('%s/ctkDICOM.sql' % directory)
    self.db.open()

    self.dialog = qt.QDialog()
    self.dialog.setWindowTitle('Study Browser')
    self.dialog.setLayout(qt.QVBoxLayout())
    self.studyTable = DICOMStudyTable(self.dialog,self.db)
    self.dialog.layout().addWidget(self.studyTable.view)
    self.seriesTable = DICOMSeriesTable(self.dialog,self.db)
    self.dialog.layout().addWidget(self.seriesTable.view)

    self.studyTable.view.connect('clicked(QModelIndex)',self.onStudyClicked)

    self.dialog.show()
Example #21
0
    def __init__(self,
                 parent=None,
                 width=400,
                 height=400,
                 showWidget=False,
                 scale=False):
        super(LayerReveal, self).__init__()
        self.width = width
        self.height = height
        self.showWidget = showWidget
        self.scale = scale
        self.renderer = None

        # utility Qt instances for use in methods
        self.gray = qt.QColor()
        self.gray.setRedF(0.5)
        self.gray.setGreenF(0.5)
        self.gray.setBlueF(0.5)
        # a painter to use for various jobs
        self.painter = qt.QPainter()

        # make a qwidget display
        if self.showWidget:
            self.frame = qt.QFrame(parent)
            mw = slicer.util.mainWindow()
            self.frame.setGeometry(mw.x, mw.y, self.width, self.height)
            self.frameLayout = qt.QVBoxLayout(self.frame)
            self.label = qt.QLabel()
            self.frameLayout.addWidget(self.label)
            self.frame.show()

        # make an image actor in the slice view
        self.vtkImage = vtk.vtkImageData()

        self.mrmlUtils = slicer.qMRMLUtils()
        self.imageMapper = vtk.vtkImageMapper()
        self.imageMapper.SetColorLevel(128)
        self.imageMapper.SetColorWindow(255)
        if vtk.VTK_MAJOR_VERSION <= 5:
            self.imageMapper.SetInput(self.vtkImage)
        else:
            self.imageMapper.SetInputData(self.vtkImage)
        self.actor2D = vtk.vtkActor2D()
        self.actor2D.SetMapper(self.imageMapper)
Example #22
0
    def __init__(self, parentWidget=None):
        """Widget constructor.
        :param parentWidget: widget that will contain the LoadSaveDataWidget"""
        if not parentWidget:
            self.parent = slicer.qMRMLWidget()
            self.parent.setLayout(qt.QVBoxLayout())
            self.parent.setMRMLScene(slicer.mrmlScene)
        else:
            self.parent = parentWidget
        self.layout = self.parent.layout()

        # Init variables
        self.currentVolumeDisplayed = None
        self.currentLabelMapDispayed = None
        self.__saveVolumes__ = False
        self.__saveLabelMaps__ = True
        self.__disabledSave__ = False

        self.initEvents()
Example #23
0
    def __init__(self, parent=None):
        if not parent:
            self.parent = slicer.qMRMLWidget()
            self.parent.setLayout(qt.QVBoxLayout())
        else:
            self.parent = parent

        self.layout = self.parent.layout()

        # this flag is 1 if there is an update in progress
        self.__updating = 1

        self.__mvNode = None
        self.extractFrame = False

        # image play setup
        self.timer = qt.QTimer()
        self.timer.setInterval(50)
        self.timer.connect('timeout()', self.goToNext)
Example #24
0
  def __init__( self, widgetClass=None ):
    self.parent = qt.QFrame()
    self.parent.setLayout( qt.QVBoxLayout() )

    # TODO: should have way to pop up python interactor
    self.buttons = qt.QFrame()
    self.buttons.setLayout( qt.QHBoxLayout() )
    self.parent.layout().addWidget( self.buttons )
    self.addDataButton = qt.QPushButton( "Add Data" )
    self.buttons.layout().addWidget( self.addDataButton )
    self.addDataButton.connect( "clicked()", slicer.app.ioManager().openAddDataDialog )
    self.loadSceneButton = qt.QPushButton( "Load Scene" )
    self.buttons.layout().addWidget( self.loadSceneButton )
    self.loadSceneButton.connect( "clicked()", slicer.app.ioManager().openLoadSceneDialog )

    if widgetClass:
      self.widget = widgetClass( self.parent )
      self.widget.setup()
    self.parent.show()
    def __init__(self, parent=None):
        if not parent:
            self.parent = slicer.qMRMLWidget()
            self.parent.setLayout(qt.QVBoxLayout())
            self.parent.setMRMLScene(slicer.mrmlScene)
        else:
            self.parent = parent
        self.layout = self.parent.layout()
        if not parent:
            self.setup()
            self.parent.show()

        self.inputPatientDir = self.outputPatientDir = {}
        self.converterSettings = {}
        self.converterSettings['convertcontours'] = 'None'
        self.converterSettings["fileformat"] = ".nrrd"
        self.converterSettings["inferpatientid"] = "metadata"
        self.converterSettings["centerimages"] = False
        self.converterSettings["centerlabels"] = False
Example #26
0
  def __init__(self, parent=None):

    self.editUtil = EditUtil.EditUtil()

    # mrml volume node instances
    self.master = None
    self.merge = None
    self.masterWhenMergeWasSet = None
    # string
    self.createMergeOptions = ""
    # pairs of (node instance, observer tag number)
    self.observerTags = []
    # instance of a ColorBox
    self.colorBox = None
    # slicer helper class
    self.applicationLogic = slicer.app.applicationLogic()
    self.volumesLogic = slicer.modules.volumes.logic()
    self.colorLogic = slicer.modules.colors.logic()
    # qt model/view classes to track per-structure volumes
    self.structures = qt.QStandardItemModel()
    self.items = []
    self.brushes = []
    # widgets that are dynamically created on demand
    self.colorSelect = None
    self.labelSelect = None
    self.labelSelector = None
    # pseudo signals 
    # - python callable that gets True or False
    self.mergeValidCommand = None
    self.selectCommand = None
    # mrml node for invoking command line modules
    self.CLINode = None

    if not parent:
      self.parent = slicer.qMRMLWidget()
      self.parent.setLayout(qt.QVBoxLayout())
      self.parent.setMRMLScene(slicer.mrmlScene)
      self.create()
      self.parent.show()
    else:
      self.parent = parent
      self.create()
Example #27
0
    def __init__(self, parent=None):
        self.testingServer = None

        # TODO: are these wrapped so we can avoid magic numbers?
        self.dicomModelUIDRole = 32
        self.dicomModelTypeRole = self.dicomModelUIDRole + 1
        self.dicomModelTypes = ('Root', 'Patient', 'Study', 'Series', 'Image')

        if not parent:
            self.parent = slicer.qMRMLWidget()
            self.parent.setLayout(qt.QVBoxLayout())
            self.parent.setMRMLScene(slicer.mrmlScene)
            self.layout = self.parent.layout()
            self.setup()
            self.parent.show()
        else:
            self.parent = parent
            self.layout = parent.layout()

        globals()['d'] = self
Example #28
0
 def __init__(self, parent=None):
     if parent is None:
         self.fixed = None
         self.moving = None
         self.fixedVolumeSelector = None
         self.movingVolumeSelector = None
         self.interactor = None
         self.selector = None
         self.slicerVersion = None
         # Boilerplate code
         self.parent = slicer.qMRMLWidget()
         self.parent.setLayout(qt.QVBoxLayout())
         self.parent.setMRMLScene(slicer.mrmlScene)
         self.layout = self.parent.layout()
         self.setup()
         self.parent.show()
     else:
         self.parent = parent
         self.layout = self.parent.layout()
     self.logic = FastFiducialLogic()
Example #29
0
    def __init__(self, parent=None):
        if not parent:
            self.parent = qt.QWidget()
            self.parent.setLayout(qt.QVBoxLayout())

        else:
            self.parent = parent

        self.layout = self.parent.layout()

        if not parent:
            self.setup()
            self.parent.show()

        self.extensionProject = None
        self.extensionDescription = None
        self.extensionLocation = None

        self.templateManager = None
        self.setupTemplates()
Example #30
0
def delayDisplay(message,autoCloseMsec=1000):
  """Display an information message in a popup window for a short time.
  If autoCloseMsec>0 then the window is closed after waiting for autoCloseMsec milliseconds
  If autoCloseMsec=0 then the window is not closed until the user clicks on it.
  """
  from __main__ import qt, slicer
  import logging
  logging.info(message)
  messagePopup = qt.QDialog()
  layout = qt.QVBoxLayout()
  messagePopup.setLayout(layout)
  label = qt.QLabel(message,messagePopup)
  layout.addWidget(label)
  if autoCloseMsec>0:
    qt.QTimer.singleShot(autoCloseMsec, messagePopup.close)
  else:
    okButton = qt.QPushButton("OK")
    layout.addWidget(okButton)
    okButton.connect('clicked()', messagePopup.close)
  messagePopup.exec_()