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)
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
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)
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)
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)
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)
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)
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()
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(";"))
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')
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')
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)
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
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()
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
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)
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)
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
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]))
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)
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]))
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)
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)
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()
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()
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)