def buildGUI(self): self.scrollArea = qt.QScrollArea() self.widget = qt.QWidget() self.scrollArea.widgetResizable = True self.scrollArea.setVerticalScrollBarPolicy(qt.Qt.ScrollBarAsNeeded) self.layout = qt.QFormLayout() self.widget.setLayout(self.layout) self.scrollArea.setWidget(self.widget) actions = self.logic.getActions(self.animationNode) for action in actions.values(): actionRowLayout = qt.QHBoxLayout() actionLabel = qt.QLabel(action['name']) actionRowLayout.addWidget(actionLabel) editButton = qt.QPushButton('Edit') editButton.connect('clicked()', lambda action=action : self.onEdit(action)) actionRowLayout.addWidget(editButton) deleteButton = qt.QPushButton('Delete') deleteButton.connect('clicked()', lambda action=action : self.onDelete(action)) actionRowLayout.addWidget(deleteButton) self.layout.addRow(actionRowLayout) durationSlider = ctk.ctkDoubleRangeSlider() durationSlider.maximum = self.script['duration'] durationSlider.minimumValue = action['startTime'] durationSlider.maximumValue = action['endTime'] durationSlider.singleStep = 0.001 durationSlider.orientation = qt.Qt.Horizontal self.layout.addRow(durationSlider) def updateDuration(start, end, action): action['startTime'] = start action['endTime'] = end self.logic.setAction(self.animationNode, action) durationSlider.connect('valuesChanged(double,double)', lambda start, end, action=action: updateDuration(start, end, action)) return self.scrollArea
def setup(self): self.setLayout(qt.QVBoxLayout()) self.descriptionLabel = qt.QLabel( "Edit segment statistics plugin parameters:", 0) self.doneButton = qt.QPushButton("Done") self.doneButton.toolTip = "Finish editing." doneWidget = qt.QWidget(self) doneWidget.setLayout(qt.QHBoxLayout()) doneWidget.layout().addStretch(1) doneWidget.layout().addWidget(self.doneButton, 0) parametersScrollArea = qt.QScrollArea(self) self.parametersWidget = qt.QWidget(parametersScrollArea) self.parametersLayout = qt.QFormLayout(self.parametersWidget) self._addPluginOptionWidgets() parametersScrollArea.setWidget(self.parametersWidget) parametersScrollArea.widgetResizable = True parametersScrollArea.setVerticalScrollBarPolicy( qt.Qt.ScrollBarAsNeeded) parametersScrollArea.setHorizontalScrollBarPolicy( qt.Qt.ScrollBarAsNeeded) self.layout().addWidget(self.descriptionLabel, 0) self.layout().addWidget(parametersScrollArea, 1) self.layout().addWidget(doneWidget, 0) self.doneButton.connect('clicked()', lambda: self.done(1))
def __init__(self): qt.QWidget.__init__(self) self.mainWidget = qt.QWidget() self.mainWidget.objectName = "qSlicerAppMainWindow" self.mainWidget.setLayout(qt.QHBoxLayout()) self.setupLayoutWidget() self.moduleFrame = qt.QWidget() self.moduleFrame.setLayout(qt.QVBoxLayout()) self.widget = QuantitativeReportingWidget(self.moduleFrame) self.widget.setup() # TODO: resize self.widget.parent to minimum possible width self.scrollArea = qt.QScrollArea() self.scrollArea.setWidget(self.widget.parent) self.scrollArea.setWidgetResizable(True) self.scrollArea.setMinimumWidth(self.widget.parent.minimumSizeHint.width()) self.splitter = qt.QSplitter() self.splitter.setOrientation(qt.Qt.Horizontal) self.splitter.addWidget(self.scrollArea) self.splitter.addWidget(self.layoutWidget) self.splitter.splitterMoved.connect(self.onSplitterMoved) self.splitter.setStretchFactor(0,0) self.splitter.setStretchFactor(1,1) self.splitter.handle(1).installEventFilter(self) self.mainWidget.layout().addWidget(self.splitter) self.mainWidget.show()
def __init__(self, parent, dicomDatabase=None, browserWidget=None): """If browserWidget is specified (e.g., set to slicer.modules.DICOMInstance.browserWidget) then clicking on an item selects the series in that browserWidget. """ super().__init__(parent) if dicomDatabase: self.dicomDatabase = dicomDatabase else: self.dicomDatabase = slicer.dicomDatabase self.browserWidget = browserWidget self.recentSeries = [] self.name = 'recentActivityWidget' self.setLayout(qt.QVBoxLayout()) self.statusLabel = qt.QLabel() self.layout().addWidget(self.statusLabel) self.statusLabel.text = '' self.scrollArea = qt.QScrollArea() self.layout().addWidget(self.scrollArea) self.listWidget = qt.QListWidget() self.listWidget.name = 'recentActivityListWidget' self.scrollArea.setWidget(self.listWidget) self.scrollArea.setWidgetResizable(True) self.listWidget.setProperty('SH_ItemView_ActivateItemOnSingleClick', 1) self.listWidget.connect('activated(QModelIndex)', self.onActivated) self.refreshButton = qt.QPushButton() self.layout().addWidget(self.refreshButton) self.refreshButton.text = 'Refresh' self.refreshButton.connect('clicked()', self.update) self.tags = {} self.tags['seriesDescription'] = "0008,103e" self.tags['patientName'] = "0010,0010"
def __init__(self,parent,dicomDatabase=None,detailsPopup=None): if dicomDatabase: self.dicomDatabase = dicomDatabase else: self.dicomDatabase = slicer.dicomDatabase self.detailsPopup = detailsPopup self.recentSeries = [] self.widget = qt.QWidget(parent) self.widget.name = 'recentActivityWidget' self.layout = qt.QVBoxLayout() self.widget.setLayout(self.layout) self.statusLabel = qt.QLabel(self.widget) self.layout.addWidget(self.statusLabel) self.statusLabel.text = 'No inserts in the past hour' self.scrollArea = qt.QScrollArea() self.layout.addWidget(self.scrollArea) self.listWidget = qt.QListWidget() self.listWidget.name = 'recentActivityListWidget' self.scrollArea.setWidget(self.listWidget) self.scrollArea.setWidgetResizable(True) self.listWidget.setProperty('SH_ItemView_ActivateItemOnSingleClick', 1) self.listWidget.connect('activated(QModelIndex)', self.onActivated) self.refreshButton = qt.QPushButton(self.widget) self.layout.addWidget(self.refreshButton) self.refreshButton.text = 'Refresh' self.refreshButton.connect('clicked()', self.update) self.tags = {} self.tags['seriesDescription'] = "0008,103e" self.tags['patientName'] = "0010,0010"
def __init__(self): qt.QWidget.__init__(self) # print slicer.dicomDatabase self.mainWidget = ProstateAblationSlicelet.MainWindow() self.setupLayoutWidget() self.moduleFrame = qt.QWidget() self.moduleFrame.setLayout(qt.QVBoxLayout()) self.widget = ProstateAblationWidget(self.moduleFrame) self.widget.setup() # TODO: resize self.widget.parent to minimum possible width self.scrollArea = qt.QScrollArea() self.scrollArea.setWidget(self.widget.parent) self.scrollArea.setWidgetResizable(True) self.scrollArea.setMinimumWidth( self.widget.parent.minimumSizeHint.width()) self.splitter = qt.QSplitter() self.splitter.setOrientation(qt.Qt.Horizontal) self.splitter.addWidget(self.scrollArea) self.splitter.addWidget(self.layoutWidget) self.splitter.splitterMoved.connect(self.onSplitterMoved) self.splitter.setStretchFactor(0, 0) self.splitter.setStretchFactor(1, 1) self.splitter.handle(1).installEventFilter(self) self.mainWidget.mainFrame.layout().addWidget(self.splitter) self.mainWidget.show()
def __init__(self): qt.QWidget.__init__(self) self.setLayout(qt.QVBoxLayout()) self.mainWidget = qt.QWidget() self.mainWidget.objectName = "qSlicerAppMainWindow" self.mainWidget.setLayout(qt.QVBoxLayout()) self.setupLayoutWidget() self.moduleFrame = qt.QWidget() self.moduleFrameLayout = qt.QVBoxLayout() self.moduleFrame.setLayout(self.moduleFrameLayout) self.buttons = qt.QFrame() self.buttons.setLayout(qt.QHBoxLayout()) self.moduleFrameLayout.addWidget(self.buttons) self.addDataButton = qt.QPushButton("Add Data") self.buttons.layout().addWidget(self.addDataButton) self.addDataButton.connect("clicked()", slicer.app.ioManager().openAddDataDialog) self.loadSceneButton = qt.QPushButton("Load Scene") self.buttons.layout().addWidget(self.loadSceneButton) self.loadSceneButton.connect( "clicked()", slicer.app.ioManager().openLoadSceneDialog) self.zFrameRegistrationWidget = ZFrameRegistrationWithROIWidget( self.moduleFrame) self.zFrameRegistrationWidget.setup() self.zFrameRegistrationWidget.reloadCollapsibleButton.visible = False # TODO: resize self.widget.parent to minimum possible width self.scrollArea = qt.QScrollArea() self.scrollArea.setWidget(self.zFrameRegistrationWidget.parent) self.scrollArea.setWidgetResizable(True) self.scrollArea.setMinimumWidth( self.zFrameRegistrationWidget.parent.minimumSizeHint.width()) self.splitter = qt.QSplitter() self.splitter.setOrientation(qt.Qt.Horizontal) self.splitter.addWidget(self.scrollArea) self.splitter.addWidget(self.layoutWidget) self.splitter.splitterMoved.connect(self.onSplitterMoved) self.splitter.setStretchFactor(0, 0) self.splitter.setStretchFactor(1, 1) self.splitter.handle(1).installEventFilter(self) self.mainWidget.layout().addWidget(self.splitter) self.mainWidget.show()
def __init__(self, parent, width=50, height=100): super(DICOMPluginSelector, self).__init__(parent) self.setMinimumHeight(height) self.setMinimumWidth(width) verticalBox = qt.QVBoxLayout() self.checkBoxByPlugin = {} for pluginClass in slicer.modules.dicomPlugins: self.checkBoxByPlugin[pluginClass] = qt.QCheckBox(pluginClass) verticalBox.addWidget(self.checkBoxByPlugin[pluginClass]) # Pack vertical box with plugins into a scroll area widget verticalBoxWidget = qt.QWidget() scrollAreaBox = qt.QVBoxLayout() verticalBoxWidget.setLayout(verticalBox) scrollArea = qt.QScrollArea() scrollArea.setWidget(verticalBoxWidget) scrollAreaBox.addWidget(scrollArea) self.setLayout(scrollAreaBox) settings = qt.QSettings() if settings.contains('DICOM/disabledPlugins/size'): size = settings.beginReadArray('DICOM/disabledPlugins') disabledPlugins = [] for i in range(size): settings.setArrayIndex(i) disabledPlugins.append(str(settings.allKeys()[0])) settings.endArray() for pluginClass in slicer.modules.dicomPlugins: if pluginClass in disabledPlugins: self.checkBoxByPlugin[pluginClass].checked = False else: # Activate plugins for the ones who are not in the disabled list # and also plugins installed with extensions self.checkBoxByPlugin[pluginClass].checked = True else: # All DICOM plugins would be enabled by default for pluginClass in slicer.modules.dicomPlugins: self.checkBoxByPlugin[pluginClass].checked = True
def createUserInterface(self): layout = qt.QVBoxLayout(self) scrollArea = qt.QScrollArea() scrollArea.setWidget(self.qt_widget) layout.addWidget(scrollArea)
def createNodeInfoPopupWindow(self, node, returnPopupWindow=False): # Main frame mainWindow = slicer.util.mainWindow() nodeInfoDockWidget = qt.QDockWidget(node.GetName(), mainWindow) #nodeInfoDockWidget.setObjectName(node.GetID()) nodeInfoDockWidget.setFeatures(qt.QDockWidget.DockWidgetClosable + qt.QDockWidget.DockWidgetMovable + qt.QDockWidget.DockWidgetFloatable) nodeInfoMainFrame = qt.QFrame(nodeInfoDockWidget) nodeInfoMainFrameLayout = qt.QVBoxLayout(nodeInfoMainFrame) infoWidget = slicer.qMRMLNodeAttributeTableWidget(nodeInfoMainFrame) # Buttons buttonFrame = qt.QFrame(nodeInfoMainFrame) hbox = qt.QHBoxLayout() buttonFrame.setLayout(hbox) if hasattr(infoWidget, 'updateWidgetFromMRML'): forceRefreshButton = qt.QPushButton("Force refresh") forceRefreshButton.setToolTip( "Update window contents from node. Note that node modified event automatically refreshes the window." ) hbox.addWidget(forceRefreshButton) forceRefreshButton.connect('clicked()', infoWidget.updateWidgetFromMRML) forceModifiedButton = qt.QPushButton("Invoke modified") forceModifiedButton.setToolTip( "Calls Modified() on the node. Useful for triggering updates during debugging." ) hbox.addWidget(forceModifiedButton) forceModifiedButton.connect('clicked()', node.Modified) # Info area nodeInfoScrollArea = qt.QScrollArea(nodeInfoMainFrame) infoWidget.setMRMLNode(node) nodeInfoScrollArea.setWidget(infoWidget) nodeInfoScrollArea.setWidgetResizable(True) slicer.util.findChildren(infoWidget, 'MRMLNodeAttributeTableView')[0].hide() slicer.util.findChildren(infoWidget, 'AddAttributeButton')[0].hide() slicer.util.findChildren(infoWidget, 'RemoveAttributeButton')[0].hide() slicer.util.findChildren( infoWidget, 'NodeInformationGroupBox')[0].collapsed = False slicer.util.findChildren( infoWidget, 'NodeInformationGroupBox')[0].layout().addStretch(1) # Show main frame nodeInfoMainFrameLayout.addWidget(buttonFrame) nodeInfoMainFrameLayout.addWidget(nodeInfoScrollArea) nodeInfoDockWidget.setWidget(nodeInfoMainFrame) mainWindow.addDockWidget(qt.Qt.RightDockWidgetArea, nodeInfoDockWidget) if returnPopupWindow: return nodeInfoDockWidget