Beispiel #1
0
  def makeDeleteApiDialoge(self):
    
    okButton = qt.QPushButton("OK")
    cancelButton = qt.QPushButton("Cancel")

    messageLabel = qt.QTextEdit()
    messageLabel.setReadOnly(True)
    messageLabel.insertPlainText("Are you sure you want to delete the selected API?") 
    messageLabel.setFontWeight(100)    
    messageLabel.setFixedHeight(40)
    messageLabel.setFrameShape(0)

    currLayout = qt.QVBoxLayout()
    currLayout.addWidget(messageLabel)
    #currLayout.addStretch(1)
    
    buttonLayout = qt.QHBoxLayout()
    buttonLayout.addStretch(1)
    buttonLayout.addWidget(cancelButton)
    buttonLayout.addWidget(okButton)
    
    masterForm = qt.QFormLayout()    
    masterForm.addRow(currLayout)
    masterForm.addRow(buttonLayout)

    deleteApiDialog = qt.QDialog(self.apiTable)
    deleteApiDialog.setWindowTitle("Delete API")
    deleteApiDialog.setLayout(masterForm)
    deleteApiDialog.setWindowModality(1)

    cancelButton.connect("clicked()", deleteApiDialog.hide)
    okButton.connect("clicked()", self.deleteApi) 
    
    return deleteApiDialog
    def __init__(self, parent):
        vLayout = qt.QVBoxLayout(parent)
        formLayout = qt.QFormLayout()

        self.nameEdit = qt.QLineEdit()
        formLayout.addRow("Name:", self.nameEdit)

        self.categoryEdit = qt.QLineEdit()
        formLayout.addRow("Category:", self.categoryEdit)

        self.descriptionEdit = qt.QTextEdit()
        self.descriptionEdit.acceptRichText = False
        formLayout.addRow("Description:", self.descriptionEdit)

        self.contributorsList = EditableTreeWidget()
        self.contributorsList.rootIsDecorated = False
        self.contributorsList.selectionBehavior = qt.QAbstractItemView.SelectRows
        self.contributorsList.selectionMode = qt.QAbstractItemView.ExtendedSelection
        self.contributorsList.setHeaderLabels(["Name", "Organization"])
        formLayout.addRow("Contributors:", self.contributorsList)

        vLayout.addLayout(formLayout)
        vLayout.addStretch(1)

        self.buttonBox = qt.QDialogButtonBox()
        self.buttonBox.setStandardButtons(qt.QDialogButtonBox.Ok
                                          | qt.QDialogButtonBox.Cancel)
        vLayout.addWidget(self.buttonBox)
Beispiel #3
0
    def setup(self):
        tests = (
            ('Get Sample Data', self.downloadMRHead),
            ('Reslicing', self.reslicing),
            # ( 'timeProbe', self.timeProbe ),
            # ( 'sizeProbe', self.sizeProbe),
            # ( 'fakewin', self.fakewin ),
        )

        for test in tests:
            b = qt.QPushButton(test[0])
            self.layout.addWidget(b)
            b.connect('clicked()', test[1])

        self.tclEnabled = qt.QCheckBox("Tcl Enabled")
        self.layout.addWidget(self.tclEnabled)
        self.tclEnabled.setToolTip(
            "Toggles processing of tcl events - disables tcl-based functionality including pan/zoom, window/level, and Editor module."
        )
        self.tclEnabled.setChecked(
            not bool(int(tcl('set ::SWidget::DISABLE_CALLBACKS'))))
        self.tclEnabled.connect("clicked()", self.onTclEnabled)

        self.log = qt.QTextEdit()
        self.log.readOnly = True
        self.layout.addWidget(self.log)
        self.log.insertHtml('<p>Status: <i>Idle</i>\n')
        self.log.insertPlainText('\n')
        self.log.ensureCursorVisible()

        # Add spacer to layout
        self.layout.addStretch(1)
Beispiel #4
0
    def __init__(self, Setting=None):
        """ 
        @param Setting: The Setting to associate with the widget 
            (i.e. Setting_Details)
        @type Setting: Setting
        """

        super(NodeDetails, self).__init__()

        self.storedDetailsDict = None
        self.Setting = Setting
        self.currFont = NodeDetails.DEFAULT_FONT

        self._layout = qt.QFormLayout()
        self._layout.setContentsMargins(0, 0, 0, 0)

        self.numColumns = 2

        self.__textViewer = qt.QTextEdit(self)
        self.__textViewer.setReadOnly(True)
        self.__textViewer.setObjectName('nodeDetails')
        self.__textViewer.setStyleSheet('#nodeDetails{border: none;}')
        self.__textViewer.verticalScrollBar().setFixedWidth(15)

        self._layout.addWidget(self.__textViewer)
        self.setLayout(self._layout)

        self.__showEmptyMetadata = True

        self.Setting.Events.onEvent('SHOWEMPTY', self.__toggleEmptyMetadata)
        #--------------------
        # NOTE: We call this so that the callback above will sync before load.
        #--------------------
        self.Setting.syncToFile()
        self.updateFromSettings()
    def setup(self):
        # Instantiate and connect widgets ...

        # Collapsible button
        parametersCollapsibleButton = ctk.ctkCollapsibleButton()
        parametersCollapsibleButton.text = "Parameters"
        self.layout.addWidget(parametersCollapsibleButton)

        # Layout within the parameters collapsible button
        parametersFormLayout = qt.QFormLayout(parametersCollapsibleButton)

        # fiber
        self.fiberSelector = slicer.qMRMLNodeComboBox(
            parametersCollapsibleButton)
        self.fiberSelector.nodeTypes = (("vtkMRMLFiberBundleNode"), "")
        self.fiberSelector.selectNodeUponCreation = False
        self.fiberSelector.addEnabled = False
        self.fiberSelector.removeEnabled = False
        self.fiberSelector.noneEnabled = True
        self.fiberSelector.showHidden = False
        self.fiberSelector.showChildNodeTypes = False
        self.fiberSelector.setMRMLScene(slicer.mrmlScene)
        self.fiberSelector.setToolTip(
            "Pick the full-brain tractography in VTK format: It must be a vtkPolyData object where all the cells are lines."
        )
        parametersFormLayout.addRow("Fiber Bundle", self.fiberSelector)

        # label map
        self.labelSelector = slicer.qMRMLNodeComboBox(
            parametersCollapsibleButton)
        self.labelSelector.nodeTypes = (("vtkMRMLScalarVolumeNode"), "")
        #self.labelSelector.addAttribute( "vtkMRMLScalarVolumeNode", "LabelMap", 1 )
        self.labelSelector.selectNodeUponCreation = False
        self.labelSelector.addEnabled = False
        self.labelSelector.removeEnabled = False
        self.labelSelector.noneEnabled = True
        self.labelSelector.showHidden = False
        self.labelSelector.showChildNodeTypes = False
        self.labelSelector.setMRMLScene(slicer.mrmlScene)
        self.labelSelector.setToolTip(
            "Pick A brain parcellation, obtained from freesurfer in the same space as the full-brain tractography."
        )
        parametersFormLayout.addRow("Brain Parcellation ", self.labelSelector)

        # query script
        self.queryScript = qt.QTextEdit()
        self.queryScript.setToolTip("WMQL query text.")
        #self.labelValue.setValue(1)
        parametersFormLayout.addWidget(self.queryScript)

        # apply
        self.applyButton = qt.QPushButton(parametersCollapsibleButton)
        self.applyButton.text = "Apply"
        parametersFormLayout.addWidget(self.applyButton)

        self.applyButton.connect('clicked()', self.onApply)

        # Add vertical spacer
        self.layout.addStretch(1)
Beispiel #6
0
    def setup(self):

        # reload button
        self.reloadButton = qt.QPushButton("Reload")
        self.reloadButton.name = "WebServer Reload"
        self.reloadButton.toolTip = "Reload this module."
        self.layout.addWidget(self.reloadButton)
        self.reloadButton.connect('clicked(bool)', self.onReload)

        self.log = qt.QTextEdit()
        self.log.readOnly = True
        self.layout.addWidget(self.log)
        self.logMessage('<p>Status: <i>Idle</i>\n')

        # log to console
        self.logToConsole = qt.QCheckBox('Log to Console')
        self.logToConsole.setChecked(self.consoleMessages)
        self.logToConsole.toolTip = "Copy log messages to the python console and parent terminal"
        self.layout.addWidget(self.logToConsole)
        self.logToConsole.connect('clicked()', self.setLogging)

        # log to GUI
        self.logToGUI = qt.QCheckBox('Log to GUI')
        self.logToGUI.setChecked(self.guiMessages)
        self.logToGUI.toolTip = "Copy log messages to the log widget"
        self.layout.addWidget(self.logToGUI)
        self.logToGUI.connect('clicked()', self.setLogging)

        # clear log button
        self.clearLogButton = qt.QPushButton("Clear Log")
        self.clearLogButton.toolTip = "Clear the log window."
        self.layout.addWidget(self.clearLogButton)
        self.clearLogButton.connect('clicked()', self.log.clear)

        # TODO: button to start/stop server
        # TODO: warning dialog on first connect
        # TODO: config option for port

        # open local connection button
        self.localConnectionButton = qt.QPushButton("Open Page")
        self.localConnectionButton.toolTip = "Open a connection to the server on the local machine."
        self.layout.addWidget(self.localConnectionButton)
        self.localConnectionButton.connect('clicked()',
                                           self.openLocalConnection)

        self.logic = WebServerLogic(logMessage=self.logMessage)
        self.logic.start()

        # Add spacer to layout
        self.layout.addStretch(1)
Beispiel #7
0
    def __init__(self, text='Empty Text', title=''):
        """
        @param text: The rich text value to display.
        @type text: string

        @param title: The window title.
        @type title: string
        """
        super(XnatTextPopup, self).__init__(title=title)

        self.setFixedHeight(70)
        self.textEdit = qt.QTextEdit(text)
        self.textEdit.setAlignment(0x0084)
        self.textEdit.setStyleSheet('border: none')

        emptyRow = qt.QLabel('')
        self.masterLayout.addRow(emptyRow)
        self.masterLayout.addRow(self.textEdit)
Beispiel #8
0
    def setup(self):
        collapsibleButton = ctk.ctkCollapsibleButton()
        collapsibleButton.text = "Robex Brain Extraction"
        self.layout.addWidget(collapsibleButton)
        self.formLayout = qt.QFormLayout(collapsibleButton)
        self.formFrame = qt.QFrame(collapsibleButton)
        self.formFrame.setLayout(qt.QHBoxLayout())
        self.formLayout.addWidget(self.formFrame)

        # folder text field
        # will search under this folder and 1 level below this folder
        self.textfield = qt.QTextEdit()
        self.formLayout.addRow("folder", self.textfield)

        # input file name text field
        # will search for files matching this name
        self.brainfileTextfield = qt.QTextEdit()
        self.formLayout.addRow("input files", self.brainfileTextfield)

        button = qt.QPushButton("Generate brain.obj and brainmask.nii")
        button.connect("clicked(bool)", self.robexBrainExtractionButtonClicked)
        self.formLayout.addRow(button)

        # output file name
        # input file names and output file names will match line by line
        self.brainOutputTextfield = qt.QTextEdit()
        self.formLayout.addRow("output files", self.brainOutputTextfield)

        collapsibleButtonB = ctk.ctkCollapsibleButton()
        collapsibleButtonB.text = "Tumor Segmentation"
        self.layout.addWidget(collapsibleButtonB)
        self.formLayoutB = qt.QFormLayout(collapsibleButtonB)
        self.formFrameB = qt.QFrame(collapsibleButtonB)
        self.formFrameB.setLayout(qt.QHBoxLayout())
        self.formLayoutB.addWidget(self.formFrameB)

        self.textfieldB = qt.QTextEdit()
        self.formLayoutB.addRow("folder", self.textfieldB)

        self.segmentationfileTextfield = qt.QTextEdit()
        self.formLayoutB.addRow("input files", self.segmentationfileTextfield)

        buttonB = qt.QPushButton("Generate segmentation.obj")
        buttonB.connect("clicked(bool)", self.informationButtonClicked)
        self.formLayoutB.addRow(buttonB)

        self.segmentationOutputTextfield = qt.QTextEdit()
        self.formLayoutB.addRow("output files",
                                self.segmentationOutputTextfield)
Beispiel #9
0
    def setup(self):
        # Instantiate and connect widgets ...

        # Collapsible button
        sampleCollapsibleButton = ctk.ctkCollapsibleButton()
        sampleCollapsibleButton.text = "Directory to Monitor"
        self.layout.addWidget(sampleCollapsibleButton)

        # Layout within the sample collapsible button
        sampleFormLayout = qt.QFormLayout(sampleCollapsibleButton)

        #directory selector
        self.outputDirSelector = ctk.ctkPathLineEdit()
        self.outputDirSelector.filters = ctk.ctkPathLineEdit.Dirs
        self.outputDirSelector.settingKey = 'BlenderMonitorDir'
        sampleFormLayout.addRow("Blender tmp directory:",
                                self.outputDirSelector)

        if not self.outputDirSelector.currentPath:
            self_dir = os.path.dirname(os.path.abspath(__file__))
            defaultOutputPath = os.path.join(self_dir, "tmp")

            if not os.path.exists(defaultOutputPath):
                print(defaultOutputPath)
                defaultOutputPath = slicer.app.defaultScenePath

            self.outputDirSelector.setCurrentPath(defaultOutputPath)

        # Play button
        playButton = qt.QPushButton("Start")
        playButton.toolTip = "Start Monitoring Directory."
        playButton.checkable = True
        sampleFormLayout.addRow(playButton)
        playButton.connect('toggled(bool)', self.onPlayButtonToggled)
        self.playButton = playButton

        #Report Window
        self.text_report = qt.QTextEdit()
        self.text_report.setText('Report file changes here')
        sampleFormLayout.addRow('Dir Status:', self.text_report)
Beispiel #10
0
    def __init__(self, MODULE=None):
        """ Init function.
        """

        #--------------------
        # Call parent init.
        #--------------------
        super(XnatNodeDetails, self).__init__()

        self.MODULE = MODULE

        #self.settingsButton = self.MODULE.utils.makeSettingsButton(self.MODULE.XnatDetailsSettings)

        self.textEdit = qt.QTextEdit(self)

        self.currFont = self.MODULE.GLOBALS.LABEL_FONT
        self.textEdit.setFont(self.currFont)
        self.textEdit.setReadOnly(True)

        self._layout = qt.QGridLayout()
        self._layout.setContentsMargins(0, 0, 0, 0)

        #--------------------
        # Call parent init.
        #--------------------
        self.numColumns = 2

        self.textEdit.setStyleSheet(
            'border: none; padding: 0px; margin-left: 0px; margin-right: 0px')

        #--------------------
        # NOTE: fixes a scaling error that occurs with the scroll
        # bar.  Have yet to pinpoint why this happens.
        #--------------------
        self.textEdit.verticalScrollBar().setStyleSheet('width: 15px;')

        self._layout.addWidget(self.textEdit, 0, 0)

        self.setLayout(self._layout)
Beispiel #11
0
    def setup(self):
        tests = (
            ('Get Sample Data', self.downloadMRHead),
            ('Reslicing', self.reslicing),
            ('Chart Test', self.chartTest),
            ('Web View Test', self.webViewTest),
            ('Memory Check', self.memoryCheck),
        )

        for test in tests:
            b = qt.QPushButton(test[0])
            self.layout.addWidget(b)
            b.connect('clicked()', test[1])

        self.log = qt.QTextEdit()
        self.log.readOnly = True
        self.layout.addWidget(self.log)
        self.log.insertHtml('<p>Status: <i>Idle</i>\n')
        self.log.insertPlainText('\n')
        self.log.ensureCursorVisible()

        # Add spacer to layout
        self.layout.addStretch(1)
Beispiel #12
0
    def addDownloadRow(self, uri, size=-1):
        """ Constructs a download row object based
            on the URI
        """

        #-------------------
        # Cancel button row
        #-------------------
        rowWidget = qt.QWidget()
        rowWidget.setObjectName('downloadRowWidget')
        rowWidget.setStyleSheet(
            '#downloadRowWidget {border: 1px ' +
            ' solid rgb(160,160,160); border-radius: 2px; width: 100%;}')
        #rowWidget.setFixedHeight(self.rowWidgetHeight)
        #rowWidget.setSizePolicy(qt.QSizePolicy.MinimumExpanding,
        #                        qt.QSizePolicy.MinimumExpanding)
        layout = qt.QVBoxLayout()
        rowWidget.setLayout(layout)

        #-------------------
        # Text Edit
        #-------------------
        textEdit = qt.QTextEdit()
        textEdit.setStyleSheet("border: none")
        textEdit.setFixedHeight(55)
        textEdit.verticalScrollBar().hide()
        textEdit.setFont(
            qt.QFont(XnatDownloadPopup.FONT_NAME, XnatDownloadPopup.FONT_SIZE,
                     10, False))
        layout.addWidget(textEdit)

        #-------------------
        # Progress Bar
        #-------------------
        progressBar = qt.QProgressBar(rowWidget)
        progressBar.setFixedHeight(17)
        progressBar.setFixedWidth(600)
        progressBar.setMinimum(0)
        progressBar.setMaximum(100)
        progressBar.setAlignment(0x0084)

        #-------------------
        # Cancel button row
        #-------------------
        cancelButton = qt.QPushButton()
        cancelButton.setText("Cancel")
        cancelButton.setFont(XnatDownloadPopup.LABEL_FONT)
        cancelButton.setFixedWidth(60)
        cancelButton.setFixedHeight(19)

        #-------------------
        # Progress bar row
        #-------------------
        progressRow = qt.QHBoxLayout()
        progressRow.addWidget(progressBar)
        progressRow.addStretch()
        progressRow.addWidget(cancelButton)
        layout.addLayout(progressRow)

        #-------------------
        # Row dict
        #-------------------
        downloadRow = {
            'queuePosition': len(self.downloadRows),
            'size': 0,
            'downloaded': 0,
            'textEdit': textEdit,
            'pathDict': XnatSlicerUtils.getXnatPathDict(uri),
            'progressBar': progressBar,
            'widget': rowWidget,
            'cancelButton': cancelButton
        }

        #-------------------
        # default text
        #-------------------
        dlStr = self.makeDownloadPath(downloadRow['pathDict'])
        textEdit.setText("QUEUED<br>%s<br>Please wait...<br>" % (dlStr))

        #-------------------
        # Cancel callback
        #-------------------
        def cancelClick():
            rowWidget.setEnabled(False)
            #print "Cancelling download '%s'"%(dlStr)
            textEdit.setText(textEdit.toHtml().replace('DOWNLOADING',
                                                       'CANCELLED'))
            for key, item in self.downloadRows.iteritems():
                if item['progressBar'] == progressBar:
                    item['progressBar'].setEnabled(False)
                    item['progressBar'].setMaximum(100)
                    self.cancelCallback(key)

        cancelButton.connect('pressed()', cancelClick)

        self.downloadRows[uri] = downloadRow
        self.remakeWidget()
Beispiel #13
0
def makeDeleteHostModal(hostEditor):
    """ As stated.
    """

    #--------------------
    # get selected strings from host list
    #--------------------
    selHost = hostEditor.hostTable.currentRowItems


    
    #--------------------
    # Buttons
    #--------------------
    okButton = qt.QPushButton("OK")
    cancelButton = qt.QPushButton("Cancel")



    #--------------------
    # Labels
    #--------------------
    messageLabel = qt.QTextEdit()
    messageLabel.setReadOnly(True)
    messageLabel.insertPlainText("Are you sure you want to delete the host ") 
    messageLabel.setFontItalic(True)
    messageLabel.setFontWeight(100)    
    messageLabel.insertPlainText(selHost['name'])

    messageLabel.setFontWeight(0)   
    messageLabel.insertPlainText(" ?")
    messageLabel.setFixedHeight(40)
    messageLabel.setFrameShape(0)


    
    #--------------------
    # Layouts
    #--------------------
    currLayout = qt.QVBoxLayout()
    currLayout.addWidget(messageLabel)
    currLayout.addStretch(1)
    
    buttonLayout = qt.QHBoxLayout()
    buttonLayout.addStretch(1)
    buttonLayout.addWidget(cancelButton)
    buttonLayout.addWidget(okButton)
    
    masterForm = qt.QFormLayout()    
    masterForm.addRow(currLayout)
    masterForm.addRow(buttonLayout)



    #--------------------
    # Window
    #--------------------
    deleteHostModal = qt.QDialog(hostEditor.addButton)
    deleteHostModal.setWindowTitle("Delete Host")
    deleteHostModal.setLayout(masterForm)
    deleteHostModal.setWindowModality(2)



    #--------------------
    # Button Connectors
    #--------------------
    cancelButton.connect("clicked()", deleteHostModal.close)
    okButton.connect("clicked()", hostEditor.deleteHost) 
    
    return deleteHostModal
    def onEntry(self, comingFrom, transitionType):
        Helper.Info('Report step: entering onEntry()')
        super(ChangeTrackerReportROIStep,
              self).onEntry(comingFrom, transitionType)

        pNode = self.parameterNode()
        Helper.Info('Report step: onEntry')
        # create the tabs
        self.__metricsTabs.clear()
        metrics = pNode.GetParameter('metrics')
        self.__metricTabsList = {}
        self.__metricsVolumes = {}

        print 'Metrics list: ', metrics
        metricsReports = string.split(pNode.GetParameter('resultReports'), ',')
        metricsVolumesIDs = string.split(pNode.GetParameter('resultVolumes'),
                                         ',')

        i = 0

        metricsList = string.split(metrics, ',')

        if len(metricsVolumesIDs) != len(metricsList):
            Helper.Error('Missing metric processing results!')

        for m in metricsList:
            metricWidget = qt.QWidget()
            metricLayout = qt.QFormLayout(metricWidget)
            textWidget = qt.QTextEdit()
            textWidget.setReadOnly(1)

            self.__metricsVolumes[m] = metricsVolumesIDs[i]
            currentVolume = Helper.getNodeByID(metricsVolumesIDs[i])

            textWidget.setText(currentVolume.GetDescription())
            metricLayout.addRow(textWidget)
            self.__metricsTabs.addTab(metricWidget, m)
            self.__metricTabsList[m] = textWidget
            i = i + 1

        self.__metricsTabs.connect("currentChanged(int)", self.onTabChanged)

        # change the layout to Compare
        lm = slicer.app.layoutManager()
        lm.setLayout(12)
        lm.setLayoutNumberOfCompareViewRows(2)

        pNode = self.parameterNode()

        # use GetLayoutName() to identify the corresponding slice node and slice
        # composite node

        # find the compare nodes and initialize them as we wish
        sliceNodes = slicer.mrmlScene.GetNodesByClass('vtkMRMLSliceNode')
        sliceNodes.SetReferenceCount(sliceNodes.GetReferenceCount() - 1)
        sliceCompositeNodes = slicer.mrmlScene.GetNodesByClass(
            'vtkMRMLSliceCompositeNode')
        sliceCompositeNodes.SetReferenceCount(
            sliceCompositeNodes.GetReferenceCount() - 1)

        # setup slice nodes
        for s in range(0, sliceNodes.GetNumberOfItems()):
            sNode = sliceNodes.GetItemAsObject(s)
            thisLayoutName = sNode.GetLayoutName()
            # TODO: check they should have the same layout name!
            if thisLayoutName.find('Compare') == 0:
                sNode.SetLayoutGrid(1, 6)

        # setup slice composite nodes
        for s in range(0, sliceCompositeNodes.GetNumberOfItems()):
            scNode = sliceCompositeNodes.GetItemAsObject(s)
            thisLayoutName = scNode.GetLayoutName()
            if thisLayoutName == 'Compare1':
                scNode.SetBackgroundVolumeID(
                    pNode.GetParameter('croppedBaselineVolumeID'))
                scNode.SetForegroundVolumeID('')
                scNode.SetLabelVolumeID('')
                scNode.SetLinkedControl(1)
            if thisLayoutName == 'Compare2':
                scNode.SetBackgroundVolumeID(
                    pNode.GetParameter('croppedFollowupVolumeID'))
                scNode.SetForegroundVolumeID('')
                scNode.SetLabelVolumeID('')
                scNode.SetLinkedControl(1)

        qt.QTimer.singleShot(0, self.fitSlices)

        # Enable crosshairs
        # Is there only one crosshair node?
        xnodes = slicer.mrmlScene.GetNodesByClass('vtkMRMLCrosshairNode')
        xnodes.SetReferenceCount(xnodes.GetReferenceCount() - 1)
        self.__xnode = xnodes.GetItemAsObject(0)
        if self.__xnode != None:
            self.__xnode.SetCrosshairMode(5)
        else:
            print 'Failed to find crosshair node!'
        '''
    setup for volume rendering
    '''
        if self.__vrDisplayNode == None:
            # self.__vrDisplayNode = self.__vrLogic.CreateVolumeRenderingDisplayNode()
            # reuse existing node
            vrDisplayNodeID = pNode.GetParameter('vrDisplayNodeID')
            self.__vrDisplayNode = slicer.mrmlScene.GetNodeByID(
                vrDisplayNodeID)
            #viewNode = slicer.util.getNode('vtkMRMLViewNode1')
            #self.__vrDisplayNode.SetCurrentVolumeMapper(0)
            #self.__vrDisplayNode.AddViewNodeID(viewNode.GetID())
        '''
    trigger volume rendering and label update
    '''
        self.onTabChanged(0)

        pNode.SetParameter('currentStep', self.stepid)

        Helper.Info('Report step: leaving onEntry()')

        qt.QTimer.singleShot(0, self.killButton)
Beispiel #15
0
 def createTextarea(self, parentLayout):
     # self.textNote = qt.QTextEdit()
     # self.formFrame.layout().addWidget(self.textNote)
     textarea = qt.QTextEdit()
     parentLayout.addWidget(textarea)
     return textarea
Beispiel #16
0
    def setup(self):
        # clpStart
        self.clpStart, self.formLyout, self.formFrame = self.createClp('Start', 
                                                self.layout, qt.QVBoxLayout())

        # labPrjpath
        self.labPath = self.createLabel('Project Path: ', self.formFrame.layout())
        self.labPrjpath = self.createLabel('', self.formFrame.layout())

        # btnGetpath
        # self.btnGetpath = self.createBtn('Choose Project Folder', self.getPath, 
        #                     self.formFrame.layout(), 
        #                     'Choose the top level folder')
        
        # winMain
        self.winMain, self.pLayout = self.createWin((100, 50, 500, 700), 
                                'Python Assisted Registration Pipeline', 
                                qt.QVBoxLayout(), maxW=500, minW=400,
                                maxH=750, minH=650)
        self.pInitiated = False

        # winFilePanel
        self.winFilePanel, self.treeVol, self.treeTfm = self.createFilePanel()

        # Note area
        self.labNote = self.createLabel('Note', self.formFrame.layout())
        self.textNote = qt.QTextEdit()
        self.formFrame.layout().addWidget(self.textNote)

        # btnShowmain
        self.btnShowmain = self.createBtn('Main Panel', self.showMain, 
                            self.layout, 
                            'Start the registration process and show the panel')
        
        # btnFiles
        self.btnFiles = self.createBtn('File List', self.showFilePanel, self.layout, 
                                        'Open the file list')
        
        # btnShowCopyHeader
        self.btnShowCopyHeader = self.createBtn('Copy Header', 
                                            lambda: self.winCopyHeader.show(), 
                                            self.layout, 'Copy the header from a reference image')
        self.btnShowCopyHeader.enabled = False
        
        # btnShowFlipImage
        self.btnShowFlipImage = self.createBtn('Flip Image', 
                                            lambda: self.winFlipImage.show(), 
                                            self.layout, 'Flip an image along an axis')
        self.btnShowFlipImage.enabled = False

        # btnSaveSetting
        self.btnSaveSetting = self.createBtn('Save', self.saveSetting, 
                            self.layout, 'Save the current progress.')
        self.btnSaveSetting.enabled = False
        # # btnLoadSetting
        # self.btnLoadSetting = self.createBtn('Load', lambda: (self.addtoFilePanel(self.inFilePanel), self.refreshStatus()), 
        #                     self.layout, 'Load the progress from setting.')
        # self.btnLoadSetting.enabled = False

        
        # Other settings
        self.prjPath = None
        # self.bPathchosen = False
        self.patient_number = None
        self.outputs = {}       # {'step1_1': {fullpath: True/False}}
        self.statusLight = {}   # {'step1_1', the_label_obj}
        self.completed = {}     # {'step1_1', True}
        self.volumes = {}       # {filename: fullpath} for .nii
        self.transfms = {}      # {filename: fullpath} for .tfm
        self.sessFrames = {}    # {'step1_1': ref_to_widget}
        self.inFilePanel = []
        
        self.imagej_path = path.join(topFolder, r'Tools/ImageJ/ImageJ.exe')
        self.cmtk_path = path.join(topFolder, r'Tools/CMTK-2.3.0-Windows-x86/bin')
        self.bash_path = path.join(topFolder, r'Tools/cmder/vendor/git-for-windows/bin/bash.exe')

        self.cmtkOutput = [
            '(in_3d_log_masked)_into_(ex_3d_cropped)_deformable.nii',
            '(in_3d)_into_(ex_3d_cropped)_deformable.nii']

        self.pkMaps = ['in_dce_gd.nii',
                        'in_dce_auc.nii',
                        'in_dce_ire.nii',
                        'in_dce_irw.nii',
                        'in_dce_me.nii',
                        'in_dce_tonset.nii',
                        'in_dce_twashout.nii',
                        'in_dce_ttp.nii',
                        'in_ktrans_left_femoral.nii',
                        'in_ktrans_right_femoral.nii',
                        'in_ktrans_weinmann.nii',
                        'in_ktrans_parker.nii',
                        'in_ve_left_femoral.nii',
                        'in_ve_right_femoral.nii',
                        'in_ve_weinmann.nii',
                        'in_ve_parker.nii',
                        'in_iaugc60.nii']