Beispiel #1
0
 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))
Beispiel #3
0
  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()
Beispiel #4
0
    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"
Beispiel #5
0
  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()
Beispiel #8
0
    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)
Beispiel #10
0
    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