示例#1
0
    def setupTabBarNavigation(self):
        self.tabWidget = qt.QTabWidget()
        self.layout.addWidget(self.tabWidget)

        setupGroupBox = qt.QGroupBox()
        imageSelectionGroupBox = qt.QGroupBox()
        segmentationGroupBox = qt.QGroupBox()
        submissionGroupBox = qt.QGroupBox()

        self.setupGroupBoxLayout = qt.QFormLayout()
        self.imageSelectionGroupBoxLayout = qt.QFormLayout()
        self.segmentationGroupBoxLayout = qt.QGridLayout()
        self.submissionGroupBoxLayout = qt.QFormLayout()

        setupGroupBox.setLayout(self.setupGroupBoxLayout)
        imageSelectionGroupBox.setLayout(self.imageSelectionGroupBoxLayout)
        segmentationGroupBox.setLayout(self.segmentationGroupBoxLayout)
        submissionGroupBox.setLayout(self.submissionGroupBoxLayout)

        self.tabWidget.setIconSize(qt.QSize(85, 30))

        self.tabWidget.addTab(setupGroupBox, self.setupIcon, '')
        self.tabWidget.addTab(imageSelectionGroupBox, self.imageSelectionIcon,
                              '')
        self.tabWidget.addTab(segmentationGroupBox, self.segmentationIcon, '')
        self.tabWidget.addTab(submissionGroupBox, self.submissionIcon, '')
        self.tabWidget.connect('currentChanged(int)', self.onTabWidgetClicked)

        self.setTabsEnabled([1, 2, 3, 4], True)
    def createUserInterface(self):
        layout = qt.QFormLayout(self)
        layout.setVerticalSpacing(5)

        loadCaseGroupBox = qt.QGroupBox()
        loadCaseGroupBox.title = "Load Volume"
        loadCaseGroupBox.setToolTip("Select the volume to load.")

        loadCaseFormLayout = qt.QFormLayout(loadCaseGroupBox)
        loadCaseFormLayout.setContentsMargins(10, 10, 10, 10)

        self.loadCaseSelector = ctk.ctkPathLineEdit()
        self.loadCaseSelector.filters = ctk.ctkPathLineEdit.Files
        loadCaseFormLayout.addRow("NRRD Volume:", self.loadCaseSelector)
        self.loadCaseSelector.connect('currentPathChanged(const QString)',
                                      self.loadSavedCase)
        layout.addWidget(loadCaseGroupBox)

        activeVolumeGroupBox = qt.QGroupBox()
        activeVolumeGroupBox.title = "Active Volume Data"
        layout.addWidget(activeVolumeGroupBox)
        activeVolumeFormLayout = qt.QFormLayout(activeVolumeGroupBox)
        activeVolumeFormLayout.setContentsMargins(10, 10, 10, 10)

        self.__inputSelector = slicer.qMRMLNodeComboBox()
        self.__inputSelector.nodeTypes = (("vtkMRMLScalarVolumeNode"), "")
        self.__inputSelector.addEnabled = False
        self.__inputSelector.removeEnabled = False
        self.__inputSelector.setMRMLScene(slicer.mrmlScene)
        activeVolumeFormLayout.addRow(self.__inputSelector)
        qt.QTimer.singleShot(0, self.killButton)
 def setupGUIAndConnections(self):
     iconSize = qt.QSize(36, 36)
     self.inputVolumeGroupBox = qt.QGroupBox()
     self.inputVolumeGroupBoxLayout = qt.QFormLayout()
     self.inputVolumeGroupBox.setLayout(self.inputVolumeGroupBoxLayout)
     self.inputVolumeGroupBox.setFlat(True)
     self.zFrameTemplateVolumeSelector = self.createComboBox(
         nodeTypes=["vtkMRMLScalarVolumeNode", ""])
     self.inputVolumeGroupBoxLayout.addRow(
         "ZFrame template volume: ", self.zFrameTemplateVolumeSelector)
     self.layout.addWidget(self.inputVolumeGroupBox)
     self.layout.addStretch()
     self.zFrameRegistrationManualIndexesGroupBox = qt.QGroupBox(
         "Use manual start/end indexes")
     self.zFrameRegistrationManualIndexesGroupBox.setCheckable(True)
     self.zFrameRegistrationManualIndexesGroupBoxLayout = qt.QGridLayout()
     self.zFrameRegistrationManualIndexesGroupBox.setLayout(
         self.zFrameRegistrationManualIndexesGroupBoxLayout)
     self.zFrameRegistrationManualIndexesGroupBox.checked = False
     self.zFrameRegistrationStartIndex = qt.QSpinBox()
     self.zFrameRegistrationEndIndex = qt.QSpinBox()
     hBox = qt.QWidget()
     hBox.setLayout(qt.QHBoxLayout())
     hBox.layout().addWidget(qt.QLabel("start"))
     hBox.layout().addWidget(self.zFrameRegistrationStartIndex)
     hBox.layout().addWidget(qt.QLabel("end"))
     hBox.layout().addWidget(self.zFrameRegistrationEndIndex)
     self.zFrameRegistrationManualIndexesGroupBoxLayout.addWidget(
         hBox, 1, 1, qt.Qt.AlignRight)
     self.runZFrameRegistrationButton = self.createButton(
         "",
         enabled=False,
         icon=Icons.apply,
         iconSize=iconSize,
         toolTip="Run ZFrame Registration")
     self.retryZFrameRegistrationButton = self.createButton(
         "",
         enabled=False,
         icon=Icons.retry,
         iconSize=iconSize,
         toolTip="Reset")
     self.layout.addWidget(self.zFrameRegistrationManualIndexesGroupBox)
     widget = qt.QWidget()
     widget.setLayout(qt.QHBoxLayout())
     widget.layout().addWidget(self.runZFrameRegistrationButton)
     widget.layout().addWidget(self.retryZFrameRegistrationButton)
     self.layout.addWidget(widget)
     self.layout.addStretch(1)
     self.zFrameTemplateVolumeSelector.connect(
         'currentNodeChanged(bool)', self.loadVolumeAndEnableEditor)
     self.retryZFrameRegistrationButton.clicked.connect(
         self.onRetryZFrameRegistrationButtonClicked)
     self.runZFrameRegistrationButton.clicked.connect(
         self.onApplyZFrameRegistrationButtonClicked)
示例#4
0
    def __init__(self):
        qt.QMessageBox.__init__(self)
        #self.setSizeGripEnabled(True)
        self.setWindowTitle('SerialAssignTable')
        self.volumesCheckedDict = dict()
        self.volumesCheckedDictPre = dict(
        )  # Store the previous selected item. if the user click the cancel button. all value should be reset.
        self.serialCheckboxVenous = []
        self.serialCheckboxVentricle = []
        self.volumeNames = []
        self.importedVolumeIDs = []
        self.volumes = []
        self.mainGUILayout = self.layout()
        self.mainGUILayout.setAlignment(qt.Qt.AlignCenter)

        self.addTableWidget()
        #Create QPushButton in QMessageBox
        self.confirmButton = qt.QPushButton('Confirm')
        self.cancelButton = qt.QPushButton('Cancel')
        self.addButton(self.confirmButton, qt.QMessageBox.YesRole)
        self.addButton(self.cancelButton, qt.QMessageBox.RejectRole)
        self.confirmButton.setEnabled(False)

        self.buttonBox = qt.QGroupBox()
        buttonLayout = qt.QHBoxLayout()
        buttonLayout.setSizeConstraint(buttonLayout.SetMinAndMaxSize)
        self.buttonBox.setLayout(buttonLayout)
        self.buttonBox.setStyleSheet('QGroupBox{border:0;}')
        buttonLayout.addWidget(self.confirmButton)
        buttonLayout.addWidget(self.cancelButton)
        self.mainGUILayout.addWidget(self.buttonBox, 1, 0, 1, 1)
        self.tableHeight = 0
        self.tableWidth = 0
示例#5
0
  def setupUI(self):
    self.setWindowTitle("Case Number Selection")
    self.spinbox = qt.QSpinBox()
    self.spinbox.setRange(self.minimum, int("9" * self.CASE_NUMBER_OF_DIGITS))

    self.hideInvisibleUnneededComponents()

    self.textLabel = qt.QLabel("Please select a case number for the new case.")
    self.textLabel.setStyleSheet("font-weight: bold;")
    self.previewLabel = qt.QLabel("New case directory:")
    self.preview = qt.QLabel()
    self.notice = qt.QLabel()
    self.notice.setStyleSheet("color:red;")

    self.okButton = self.addButton(self.Ok)
    self.okButton.enabled = False
    self.cancelButton = self.addButton(self.Cancel)
    self.setDefaultButton(self.okButton)

    self.groupBox = qt.QGroupBox()
    self.groupBox.setLayout(qt.QGridLayout())
    self.groupBox.layout().addWidget(self.textLabel, 0, 0, 1, 2)
    self.groupBox.layout().addWidget(qt.QLabel("Proposed Case Number"), 1, 0)
    self.groupBox.layout().addWidget(self.spinbox, 1, 1)
    self.groupBox.layout().addWidget(self.previewLabel, 2, 0, 1, 2)
    self.groupBox.layout().addWidget(self.preview, 3, 0, 1, 2)
    self.groupBox.layout().addWidget(self.notice, 4, 0, 1, 2)

    self.groupBox.layout().addWidget(self.okButton, 5, 0)
    self.groupBox.layout().addWidget(self.cancelButton, 5, 1)

    self.layout().addWidget(self.groupBox, 1, 1)
示例#6
0
    def setupRunTab(self, runTabLayout):
        self.singleStepGroupBox = qt.QGroupBox("Run individual steps")
        self.singleStepGroupBoxLayout = qt.QVBoxLayout()
        self.singleStepGroupBoxLayout.setSpacing(5)
        self.singleStepGroupBox.setLayout(self.singleStepGroupBoxLayout)
        runTabLayout.addRow(self.singleStepGroupBox)

        self.subStepButton = qt.QPushButton("Subsample")
        self.subStepButton.toolTip = "Run subsample step of analysis, creating collections of subsampled points per mesh."
        self.subStepButton.connect('clicked(bool)', self.subStepButtonOnLoad)
        self.subStepButton.enabled = False
        self.singleStepGroupBoxLayout.addWidget(self.subStepButton)

        self.phase1StepButton = qt.QPushButton("Phase 1")
        self.phase1StepButton.toolTip = "Run the first analysis phase, aligning meshes based on low resolution subsampled points."
        self.phase1StepButton.connect('clicked(bool)',
                                      self.phase1StepButtonOnLoad)
        self.phase1StepButton.enabled = False
        self.singleStepGroupBoxLayout.addWidget(self.phase1StepButton)

        self.phase2StepButton = qt.QPushButton("Phase 2")
        self.phase2StepButton.toolTip = "Run the second analysis phase, aligning meshes based on high resolution subsampled points."
        self.phase2StepButton.connect('clicked(bool)',
                                      self.phase2StepButtonOnLoad)
        self.phase2StepButton.enabled = False
        self.singleStepGroupBoxLayout.addWidget(self.phase2StepButton)

        self.allStepsButton = qt.QPushButton("Run all steps")
        self.allStepsButton.toolTip = "Run all possible analysis steps and phases."
        self.allStepsButton.connect('clicked(bool)', self.allStepsButtonOnLoad)
        self.allStepsButton.enabled = False
        runTabLayout.addRow(self.allStepsButton)

        runTabLayout.setVerticalSpacing(15)
示例#7
0
 def _setupSelectorArea(self):
     self.imageVolumeLabel = self.createLabel("Image volume: ",
                                              objectName="imageVolumeLabel")
     self.imageVolumeSelector = self.createComboBox(
         nodeTypes=["vtkMRMLScalarVolumeNode", ""],
         showChildNodeTypes=False,
         selectNodeUponCreation=True,
         toolTip="Pick algorithm input.",
         objectName="imageVolumeSelector")
     self.labelMapLabel = self.createLabel("Output label: ",
                                           objectName="labelMapLabel")
     self.labelMapSelector = self.createComboBox(
         nodeTypes=["vtkMRMLLabelMapVolumeNode", ""],
         showChildNodeTypes=False,
         selectNodeUponCreation=True,
         toolTip="Output label node",
         addEnabled=True,
         removeEnabled=True,
         noneEnabled=True,
         objectName="outputLabelMapSelector")
     self.selectorsGroupBox = qt.QGroupBox()
     self.selectorsGroupBox.objectName = "selectorsGroupBox"
     self.selectorsGroupBoxLayout = qt.QGridLayout()
     self.selectorsGroupBox.setLayout(self.selectorsGroupBoxLayout)
     self.selectorsGroupBoxLayout.addWidget(self.imageVolumeLabel, 0, 0)
     self.selectorsGroupBoxLayout.addWidget(self.imageVolumeSelector, 0, 1)
     self.selectorsGroupBoxLayout.addWidget(self.labelMapLabel, 1, 0)
     self.selectorsGroupBoxLayout.addWidget(self.labelMapSelector, 1, 1)
     self.layout.addWidget(self.selectorsGroupBox)
示例#8
0
  def setupMeasurementsArea(self):
    self.measurementsGroupBox = qt.QGroupBox("Measurements")
    self.measurementsGroupBox.setLayout(qt.QGridLayout())
    self.tableView = slicer.qMRMLTableView()
    self.tableView.setMinimumHeight(150)
    self.tableView.setMaximumHeight(150)
    self.tableView.setSelectionBehavior(qt.QTableView.SelectRows)

    if ModuleWidgetMixin.isQtVersionOlder():
      self.tableView.horizontalHeader().setResizeMode(qt.QHeaderView.Stretch)
    else:
      self.tableView.horizontalHeader().setSectionResizeMode(qt.QHeaderView.Stretch)

    self.fourUpTableView = None
    self.segmentStatisticsConfigButton = self.createButton("Segment Statistics Parameters")

    self.calculateMeasurementsButton = self.createButton("Calculate Measurements", enabled=False)
    self.calculateAutomaticallyCheckbox = qt.QCheckBox("Auto Update")
    self.calculateAutomaticallyCheckbox.checked = True

    self.measurementsGroupBox.layout().addWidget(self.tableView, 0, 0, 1, 2)
    self.measurementsGroupBox.layout().addWidget(self.segmentStatisticsConfigButton, 1, 0, 1, 2)
    self.measurementsGroupBox.layout().addWidget(self.calculateMeasurementsButton, 2, 0)
    self.measurementsGroupBox.layout().addWidget(self.calculateAutomaticallyCheckbox, 2, 1)

    self.mainModuleWidgetLayout.addWidget(self.measurementsGroupBox)
    def setup(self):
        self.targetTablePlugin = TargetsDefinitionTable(self.session,
                                                        movingEnabled=True)
        self.addPlugin(self.targetTablePlugin)

        self.targetingGroupBox = qt.QGroupBox("Target Placement")
        self.targetingGroupBoxLayout = qt.QFormLayout()
        self.targetingGroupBox.setLayout(self.targetingGroupBoxLayout)
        self.fiducialsWidget = TargetCreationWidget(
            DEFAULT_FIDUCIAL_LIST_NAME="IntraOpTargets",
            ICON_SIZE=qt.QSize(36, 36))
        self.fiducialsWidget.addEventObserver(
            self.fiducialsWidget.StartedEvent, self.onTargetingStarted)
        self.fiducialsWidget.addEventObserver(
            self.fiducialsWidget.FinishedEvent, self.onTargetingFinished)
        self.fiducialsWidget.targetListSelector.connect(
            "currentNodeChanged(vtkMRMLNode*)", self.onFiducialListSelected)
        self.targetDistanceWidget = qt.QListWidget()
        self.targetDistanceWidget.setWindowTitle("Distances Between Targets")
        #self.showTargetDistanceIcon = self.createIcon('icon-distance.png')
        #self.showTargetDistanceButton = self.createButton("", enabled=True, icon=self.showTargetDistanceIcon, iconSize=qt.QSize(24, 24),
        #                                              toolTip="Start placing targets")
        self.targetingGroupBoxLayout.addRow(self.targetTablePlugin)
        self.targetingGroupBoxLayout.addRow(self.fiducialsWidget)
        self.targetingGroupBoxLayout.addRow(self.targetDistanceWidget)
        self.layout().addWidget(self.targetingGroupBox, 1, 0, 2, 2)
示例#10
0
 def __init__(self, ProstateAblationSession):
     super(ProstateAblationOverviewStep,
           self).__init__(ProstateAblationSession)
     self.notifyUserAboutNewData = True
     self.horizontalBox = qt.QGroupBox()
     self.horizontalLayout = qt.QHBoxLayout()
     self.horizontalBox.setLayout(self.horizontalLayout)
示例#11
0
  def updateLandmarkArray(self):
    """Rebuild the list of buttons based on current landmarks"""
    # reset the widget
    if self.landmarkGroupBox:
      self.landmarkGroupBox.setParent(None)
    self.landmarkGroupBox = qt.QGroupBox("Landmarks")
    self.landmarkGroupBox.setLayout(qt.QFormLayout())
    # add the action buttons at the top
    actionButtons = qt.QHBoxLayout()
    # add button - http://www.clipartbest.com/clipart-jTxpEM8Bc
    self.addButton = qt.QPushButton("Add")
    self.addButton.setIcon(qt.QIcon(os.path.join(os.path.dirname(slicer.modules.landmarkregistration.path), 'Resources/Icons/', "icon_Add.png")))
    self.addButton.connect('clicked()', self.addLandmark)
    actionButtons.addWidget(self.addButton)
    self.renameButton = qt.QPushButton("Rename")
    self.renameButton.connect('clicked()', self.renameLandmark)
    self.renameButton.enabled = False
    actionButtons.addWidget(self.renameButton)
    self.landmarkGroupBox.layout().addRow(actionButtons)

    # for now, hide
    self.renameButton.hide()

    # make a button for each current landmark
    self.labels = {}
    landmarks = self.logic.landmarksForVolumes(self.volumeNodes)
    keys = landmarks.keys()
    keys.sort()
    for landmarkName in keys:
      row = qt.QWidget()
      rowLayout = qt.QHBoxLayout()
      rowLayout.setMargin(0)

      label = qt.QLabel(landmarkName)
      rowLayout.addWidget(label, 8)

      # active button - https://thenounproject.com/term/crosshair/4434/
      activeButton = qt.QPushButton()
      activeButton.setIcon(qt.QIcon(os.path.join(os.path.dirname(slicer.modules.landmarkregistration.path), 'Resources/Icons/', "icon_Active.png")))
      activeButton.connect('clicked()', lambda l=landmarkName: self.pickLandmark(l))
      rowLayout.addWidget(activeButton, 1)

      if landmarkName == self.selectedLandmark:
        label.setStyleSheet("QWidget{font-weight: bold;}")
        activeButton.setEnabled(False)

      # remove button - http://findicons.com/icon/158288/trash_recyclebin_empty_closed_w
      removeButton = qt.QPushButton()
      removeButton.setIcon(qt.QIcon(os.path.join(os.path.dirname(slicer.modules.landmarkregistration.path), 'Resources/Icons/', "icon_Trash.png")))
      removeButton.connect('clicked()', lambda l=landmarkName: self.removeLandmark(l))
      rowLayout.addWidget(removeButton, 1)

      row.setLayout(rowLayout)

      self.landmarkGroupBox.layout().addRow( row )
      self.labels[landmarkName] = [label, activeButton]
    self.landmarkArrayHolder.layout().addWidget(self.landmarkGroupBox)

    # observe manipulation of the landmarks
    self.addLandmarkObservers()
示例#12
0
 def addTableWidget(self):
     self.tableWidgetBox = qt.QGroupBox()
     layout = qt.QHBoxLayout()
     self.tableWidgetBox.setLayout(layout)
     self.tableWidgetBox.setStyleSheet('QGroupBox{border:0;}')
     self.tableWidget = qt.QTableWidget()
     self.tableWidget.setStyleSheet('QGroupBox{border:0;}')
     self.tableWidget.horizontalScrollBar().setEnabled(True)
     self.tableWidget.setHorizontalScrollBarPolicy(1)
     self.tableWidget.setVerticalScrollBarPolicy(1)
     #layout.setColumnMinimumWidth(0,340)
     #layout.setRowMinimumHeight(0,100)
     #layout.setGeometry (qt.QRect(0, 0, 340, 100))
     layout.addWidget(self.tableWidget)
     #self.tableWidget.setGeometry (qt.QRect(0, 0, 400, 200))
     #self.tableWidget.setMinimumHeight(200)
     #self.tableWidget.setMinimumWidth(300)
     self.tableWidget.setObjectName('tableWidget')
     self.tableWidget.setColumnCount(2)
     self.tableWidget.setRowCount(2)
     #self.tableWidget.resizeRowsToContents()
     #self.tableWidget.resizeColumnsToContents()
     self.tableWidget.setHorizontalHeaderLabels(
         "Venous;Ventricle".split(";"))
     self.tableWidget.setVerticalHeaderLabels("Serial1;Serial2".split(";"))
示例#13
0
 def open_vbox(self, text=None):
     if text:
         hb = qt.QGroupBox(1, qt.QGroupBox.Horizontal, text,
                           self.group[-1][0])
     else:
         hb = qt.QVBox(self.group[-1][0])
     self.group.append([hb, -1])
     self.mode.append('v')
示例#14
0
 def open_hbox(self, text=None):
     if text:
         hb = qt.QGroupBox(1, qt.QGroupBox.Vertical, text,
                           self.group[-1][0])
     else:
         hb = qt.QHBox(self.group[-1][0])
     self.group.append([hb, -1])
     self.mode.append('h')
示例#15
0
  def setupTestArea(self):
    self.testArea = qt.QGroupBox("Test Area")
    self.testAreaLayout = qt.QFormLayout(self.testArea)
    self.retrieveTestDataButton = self.createButton("Retrieve and load test data")
    self.testAreaLayout.addWidget(self.retrieveTestDataButton)

    if self.developerMode:
      self.mainModuleWidgetLayout.addWidget(self.testArea)
示例#16
0
    def verticalGroupBox(*args, **kwargs):
        executionMode = kwargs.get('executionMode', False)

        groupbox = qt.QGroupBox(*args)
        groupbox.setColumnLayout(0, qt.Qt.Vertical)
        groupbox.setSizePolicy(qt.QSizePolicy.Expanding, qt.QSizePolicy.Expanding)

        return groupbox
示例#17
0
 def setupSegmentationsArea(self):
   self.segmentationGroupBox = qt.QGroupBox("Segmentations")
   self.segmentationGroupBoxLayout = qt.QFormLayout()
   self.segmentationGroupBox.setLayout(self.segmentationGroupBoxLayout)
   self.segmentEditorWidget = CustomSegmentEditorWidget(parent=self.segmentationGroupBox)
   self.segmentEditorWidget.setup()
   self.segmentEditorAlgorithmTracker = SegmentEditorAlgorithmTracker()
   self.segmentEditorAlgorithmTracker.setSegmentEditorWidget(self.segmentEditorWidget)
 def _setupCenterlineGroupbox(self):
   self.centerlineGroupBox = qt.QGroupBox("Centerline")
   self.centerlineGroupBox.setLayout(qt.QFormLayout())
   self._setupCenterlineNodeSelector()
   self._setupCenterlinePlaceWidget()
   self._setupCenterlinePositionButton()
   self._setupCenterlineFlipOrientationButton()
   self._setupCenterlineSliderWidget()
示例#19
0
    def horizontalGroupBox(*args, **kwargs):
        executionMode = kwargs.get('executionMode', False)

        groupbox = qt.QGroupBox(*args)
        groupbox.setColumnLayout(0, qt.Qt.Vertical)
        groupbox._preferred_layout = qt.QHBoxLayout(groupbox.layout())
        groupbox.setSizePolicy(qt.QSizePolicy.Expanding, qt.QSizePolicy.Expanding)

        return groupbox
示例#20
0
 def setupManualIndexesGroupBox(self):
   self.zFrameRegistrationManualIndexesGroupBox = qt.QGroupBox("Use manual start/end indexes")
   self.zFrameRegistrationManualIndexesGroupBox.setCheckable(True)
   self.zFrameRegistrationManualIndexesGroupBoxLayout = qt.QGridLayout()
   self.zFrameRegistrationManualIndexesGroupBox.setLayout(self.zFrameRegistrationManualIndexesGroupBoxLayout)
   self.zFrameRegistrationManualIndexesGroupBox.checked = False
   self.zFrameRegistrationStartIndex = qt.QSpinBox()
   self.zFrameRegistrationEndIndex = qt.QSpinBox()
   hBox = self.createHLayout([qt.QLabel("start"), self.zFrameRegistrationStartIndex,
                              qt.QLabel("end"), self.zFrameRegistrationEndIndex])
   self.zFrameRegistrationManualIndexesGroupBoxLayout.addWidget(hBox, 1, 1, qt.Qt.AlignRight)
示例#21
0
 def _addLoadableCheckboxes(self):
   self.checkBoxGroupBox = qt.QGroupBox("References")
   self.checkBoxGroupBox.setLayout(qt.QFormLayout())
   for plugin in self.loadables:
     for loadable in [l for l in self.loadables[plugin] if l.selected]:
       checkBoxText = loadable.name + ' (' + plugin.loadType + ') '
       cb = qt.QCheckBox(checkBoxText, self)
       cb.checked = True
       cb.setSizePolicy(qt.QSizePolicy(qt.QSizePolicy.Expanding, qt.QSizePolicy.Preferred))
       self.checkboxes[loadable] = cb
       self.checkBoxGroupBox.layout().addWidget(cb)
   self.layout().addWidget(self.checkBoxGroupBox, 1, 0, 1, 3)
示例#22
0
 def _createTargetTableGroupBox(self, title, additionalComponents=None):
     additionalComponents = additionalComponents if additionalComponents else []
     groupbox = qt.QGroupBox(title)
     groupbox.setAlignment(qt.Qt.AlignCenter)
     groupbox.setLayout(qt.QFormLayout())
     groupbox.setAlignment(qt.Qt.AlignCenter)
     targetTablePlugin = SliceTrackerTargetTablePlugin()
     self.addPlugin(targetTablePlugin)
     groupbox.layout().addRow(targetTablePlugin)
     for c in additionalComponents:
         groupbox.layout().addRow(c)
     return groupbox, targetTablePlugin
示例#23
0
  def setupVisualEffectsUIElements(self):
    self.setupOpacity()
    self.setupRock()
    self.setupFlicker()

    self.animaHolderLayout = self.createHLayout([self.rockCheckBox, self.flickerCheckBox])
    self.visualEffectsGroupBox = qt.QGroupBox("Visual Effects")
    self.visualEffectsGroupBoxLayout = qt.QFormLayout(self.visualEffectsGroupBox)
    self.revealCursorButton = self.createButton("", icon=self.revealCursorIcon, checkable=True,
                                                toolTip="Use reveal cursor")
    slider = self.createHLayout([self.opacitySpinBox, self.animaHolderLayout])
    self.visualEffectsGroupBoxLayout.addWidget(self.createVLayout([slider, self.revealCursorButton]))
示例#24
0
  def _setupColorFrame(self):
    self.colorGroupBox = qt.QGroupBox("Color")
    self.colorGroupBoxLayout = qt.QHBoxLayout()
    self.colorGroupBox.setLayout(self.colorGroupBoxLayout)

    self.colorSpin = qt.QSpinBox()
    self.colorSpin.objectName = 'ColorSpinBox'
    self.colorSpin.setMaximum(64000) # TODO: should be detected from colorNode maximum value
    self.colorSpin.setToolTip( "Click colored patch at right to bring up color selection pop up window." )
    self.colorGroupBoxLayout.addWidget(self.colorSpin)

    self.colorPatch = self.createButton("", objectName="ColorPatchButton")
    self.colorGroupBoxLayout.addWidget(self.colorPatch)
    self.layout.addWidget(self.colorGroupBox)
示例#25
0
  def setupRegistrationResultButtons(self):
    self.rigidResultButton = self.createButton('Rigid', checkable=True, name='rigid')
    self.affineResultButton = self.createButton('Affine', checkable=True, name='affine')
    self.bSplineResultButton = self.createButton('BSpline', checkable=True, name='bSpline')
    self.registrationButtonGroup = qt.QButtonGroup()
    self.registrationButtonGroup.addButton(self.rigidResultButton, 1)
    self.registrationButtonGroup.addButton(self.affineResultButton, 2)
    self.registrationButtonGroup.addButton(self.bSplineResultButton, 3)

    self.registrationTypesGroupBox = qt.QGroupBox("Type")
    self.registrationTypesGroupBoxLayout = qt.QFormLayout(self.registrationTypesGroupBox)
    self.registrationTypesGroupBoxLayout.addWidget(self.createVLayout([self.rigidResultButton,
                                                                       self.affineResultButton,
                                                                       self.bSplineResultButton]))
示例#26
0
  def setup(self):
    super(SliceTrackerRegistrationResultsPlugin, self).setup()
    self.registrationResultsGroupBox = qt.QGroupBox("Registration Results")
    self.registrationResultsGroupBoxLayout = qt.QGridLayout()
    self.registrationResultsGroupBox.setLayout(self.registrationResultsGroupBoxLayout)

    self.resultSelector = ctk.ctkComboBox()
    self.registrationResultsGroupBoxLayout.addWidget(self.resultSelector)

    self.setupRegistrationResultButtons()
    self.setupVisualEffectsUIElements()

    self.registrationResultsGroupBoxLayout.addWidget(self.createHLayout([self.registrationTypesGroupBox,
                                                                         self.visualEffectsGroupBox]))
    self.layout().addWidget(self.registrationResultsGroupBox)
示例#27
0
    def setup(self):
        ScriptedLoadableModuleWidget.setup(self)

        #
        # Parameters Area
        #
        parametersCollapsibleButton = ctk.ctkCollapsibleButton()
        parametersCollapsibleButton.text = "Parameters"
        self.layout.addWidget(parametersCollapsibleButton)
        parametersFormLayout = qt.QFormLayout(parametersCollapsibleButton)

        self.maximumRunningProcessesSpinBox = ctk.ctkDoubleSpinBox()
        self.maximumRunningProcessesSpinBox.minimum = 1
        self.maximumRunningProcessesSpinBox.decimals = 0
        self.maximumRunningProcessesSpinBox.value = self.logic.maximumRunningProcesses
        parametersFormLayout.addRow("Maximum running processes",
                                    self.maximumRunningProcessesSpinBox)

        processesCollapsibleButton = ctk.ctkCollapsibleButton()
        processesCollapsibleButton.text = "Processes"
        self.layout.addWidget(processesCollapsibleButton)
        processesFormLayout = qt.QFormLayout(processesCollapsibleButton)

        self.statusLabel = qt.QLabel("No processes running")
        processesFormLayout.addRow(self.statusLabel)

        self.processBoxes = {}
        self.processLabels = {}
        for processState in self.logic.processStates:
            processBox = qt.QGroupBox()
            processBoxLayout = qt.QVBoxLayout(processBox)
            processBox.setTitle(processState)
            processesFormLayout.addRow(processBox)
            processLabel = qt.QLabel(processBox)
            processLabel.text = "None"
            processBoxLayout.addWidget(processLabel)
            self.processBoxes[processState] = processBox
            self.processLabels[processState] = processLabel

        self.maximumRunningProcessesSpinBox.connect("valueChanged(double)",
                                                    self.onMaximumChanged)

        node = self.logic.getParameterNode()
        self.nodeObserverTag = node.AddObserver(vtk.vtkCommand.ModifiedEvent,
                                                self.onNodeModified)

        # Add vertical spacer
        self.layout.addStretch(1)
示例#28
0
    def setup(self):
        self.setupIcons()
        iconSize = qt.QSize(36, 36)
        self.createNewCaseButton = self.createButton(
            "",
            icon=self.newIcon,
            iconSize=iconSize,
            toolTip="Start a new case")
        self.openCaseButton = self.createButton("",
                                                icon=self.openIcon,
                                                iconSize=iconSize,
                                                toolTip="Open case")
        self.closeCaseButton = self.createButton(
            "",
            icon=self.closeIcon,
            iconSize=iconSize,
            toolTip="Close case with resume support",
            enabled=False)
        self.setupCaseWatchBox()
        self.casesRootDirectoryButton = self.createDirectoryButton(
            text="Choose cases root location",
            caption="Choose cases root location",
            directory=self.getSetting('CasesRootLocation', self.MODULE_NAME))
        self.caseRootDir = self.getSetting('CasesRootLocation',
                                           self.MODULE_NAME)
        self.caseDirectoryInformationArea = ctk.ctkCollapsibleButton()
        self.caseDirectoryInformationArea.collapsed = True
        self.caseDirectoryInformationArea.text = "Directory Settings"
        self.directoryConfigurationLayout = qt.QGridLayout(
            self.caseDirectoryInformationArea)
        self.directoryConfigurationLayout.addWidget(
            qt.QLabel("Cases Root Directory"), 1, 0, 1, 1)
        self.directoryConfigurationLayout.addWidget(
            self.casesRootDirectoryButton, 1, 1, 1, 1)
        self.directoryConfigurationLayout.addWidget(self.caseWatchBox, 2, 0, 1,
                                                    qt.QSizePolicy.ExpandFlag)

        self.caseGroupBox = qt.QGroupBox("Case")
        self.caseGroupBoxLayout = qt.QFormLayout(self.caseGroupBox)
        self.caseGroupBoxLayout.addWidget(
            self.createHLayout([
                self.createNewCaseButton, self.openCaseButton,
                self.closeCaseButton
            ]))
        self.caseGroupBoxLayout.addWidget(self.caseDirectoryInformationArea)
        self.layout().addWidget(self.caseGroupBox)
        super(ProstateAblationCaseManagerPlugin, self).setup()
示例#29
0
    def onCreatePresetPressed(self):
        if self.registrationPresetSelector.currentIndex != self.newPresetIndex:
            return

        self.newPresetBox = qt.QDialog()
        self.customPresetLayout = qt.QVBoxLayout()

        self.addParameterFile()

        addPresetButton = qt.QPushButton("Add more presets...")
        addPresetButton.connect("clicked(bool)", self.addParameterFile)
        self.customPresetLayout.addWidget(addPresetButton)
        self.newPresetBox.setLayout(self.customPresetLayout)

        # Add fields to specify descriptions, etc... for that preset (to be included in the XML file)

        groupBox = qt.QGroupBox()
        formLayout = qt.QFormLayout()

        self.contentBox = qt.QLineEdit()
        formLayout.addRow("Content: ", self.contentBox)
        self.descriptionBox = qt.QLineEdit()
        formLayout.addRow("Description: ", self.descriptionBox)
        self.idBox = qt.QLineEdit()
        formLayout.addRow("Id: ", self.idBox)
        self.modalityBox = qt.QLineEdit()
        formLayout.addRow("Modality: ", self.modalityBox)
        self.publicationsBox = qt.QPlainTextEdit()
        formLayout.addRow("Publications: ", self.publicationsBox)

        groupBox.setLayout(formLayout)
        self.customPresetLayout.addWidget(groupBox)

        # Add Ok/Cancel buttons and connect them to the main dialog
        buttonBox = qt.QDialogButtonBox()
        buttonBox.setStandardButtons(qt.QDialogButtonBox.Ok
                                     | qt.QDialogButtonBox.Cancel)
        buttonBox.setCenterButtons(True)
        buttonBox.connect("accepted()", self.newPresetBox.accept)
        buttonBox.connect("rejected()", self.newPresetBox.reject)

        self.customPresetLayout.addWidget(buttonBox)

        response = self.newPresetBox.exec_()

        if response:
            self.createPreset()
示例#30
0
    def setup(self):
        super(SliceTrackerTargetingPlugin, self).setup()

        self._setupTargetCreationWidget()

        self.preopTargetTableGroupBox, self.preopTargetTablePlugin = \
          self._createTargetTableGroupBox("Pre-operative Targets")
        self.intraopTargetTableGroupBox, self.intraopTargetTablePlugin = \
          self._createTargetTableGroupBox("Intra-operative Targets",
                                          additionalComponents=[self.targetCreationWidget,
                                                                self.targetCreationWidget.buttons])

        self.targetingGroupBox = qt.QGroupBox("Target Placement")
        self.targetingGroupBox.setLayout(qt.QFormLayout())
        self.targetingGroupBox.layout().addRow(self.preopTargetTableGroupBox)
        self.targetingGroupBox.layout().addRow(self.intraopTargetTableGroupBox)
        self.layout().addWidget(self.targetingGroupBox, 1, 0, 2, 2)