def __init__(self, parent): self.dialog = qt.QDialog(parent) self.ui = _ui_LoadModulesDialog(self.dialog) self.ui.buttonBox.connect("accepted()", self.dialog, "accept()") self.ui.buttonBox.connect("rejected()", self.dialog, "reject()") self.ui.moduleList.connect("itemChanged(QListWidgetItem*)", self.validate)
def __init__(self, parent=None): self._window = qt.QDialog(parent) self._window.setIcon(getPixmap("smart")) self._window.setCaption(_("Package Priority")) self._window.setModal(True) #self._window.setMinimumSize(600, 400) vbox = qt.QVBox(self._window) vbox.setMargin(10) vbox.setSpacing(10) vbox.show() self._vbox = vbox self._table = qt.QGrid(2, vbox) self._table.setSpacing(10) self._table.show() bbox = qt.QHBox(vbox) bbox.setSpacing(10) bbox.layout().addStretch(1) bbox.show() button = qt.QPushButton(_("Close"), bbox) qt.QObject.connect(button, qt.SIGNAL("clicked()"), self._window, qt.SLOT("hide()")) self._vbox.adjustSize() self._window.adjustSize()
def open(self): # main dialog self.dialog = qt.QDialog(slicer.util.mainWindow()) self.dialog.setWindowTitle('Send DICOM Study') self.dialog.setWindowModality(1) layout = qt.QVBoxLayout() self.dialog.setLayout(layout) self.studyLabel = qt.QLabel('Send %d items to destination' % len(self.files)) layout.addWidget(self.studyLabel) # Send Parameters self.dicomFrame = qt.QFrame(self.dialog) self.dicomFormLayout = qt.QFormLayout() self.dicomFrame.setLayout(self.dicomFormLayout) self.dicomEntries = {} self.dicomParameters = { "Destination Address": self.sendAddress, "Destination Port": self.sendPort } for label in self.dicomParameters.keys(): self.dicomEntries[label] = qt.QLineEdit() self.dicomEntries[label].text = self.dicomParameters[label] self.dicomFormLayout.addRow(label+": ", self.dicomEntries[label]) layout.addWidget(self.dicomFrame) # button box bbox = qt.QDialogButtonBox(self.dialog) bbox.addButton(bbox.Ok) bbox.addButton(bbox.Cancel) bbox.connect('accepted()', self.onOk) bbox.connect('rejected()', self.onCancel) layout.addWidget(bbox) self.dialog.open()
def overwriteParFile(self, filename): d = qt.QDialog() resp = qt.QMessageBox.warning( d, "Overwrite File?", "File \"%s\" already exists, do you want to overwrite it? (Clicking Discard would exclude the file from the preset)" % filename, qt.QMessageBox.Save | qt.QMessageBox.Discard, qt.QMessageBox.Save) return resp == qt.QMessageBox.Save
def loadCheckedLoadables(self): """Invoke the load method on each plugin for the loadable (DICOMLoadable or qSlicerDICOMLoadable) instances that are selected""" if self.advancedViewButton.checkState() == 0: self.examineForLoading() self.loadableTable.updateSelectedFromCheckstate() # TODO: add check that disables all referenced stuff to be considered? # get all the references from the checked loadables referencedFileLists = [] for plugin in self.loadablesByPlugin: for loadable in self.loadablesByPlugin[plugin]: if hasattr(loadable,'referencedInstanceUIDs'): instanceFileList = [] for instance in loadable.referencedInstanceUIDs: instanceFile = slicer.dicomDatabase.fileForInstance(instance) if instanceFile != '': instanceFileList.append(instanceFile) if len(instanceFileList) and not self.isFileListInCheckedLoadables(instanceFileList): referencedFileLists.append(instanceFileList) # if applicable, find all loadables from the file lists loadEnabled = False if len(referencedFileLists): (self.referencedLoadables,loadEnabled) = self.getLoadablesFromFileLists(referencedFileLists) self.referencesDialog = None if loadEnabled: self.referencesDialog = qt.QDialog(self.window) self.referencesDialog.modal = True layout = qt.QFormLayout() layout.setSpacing(9) self.referencesDialog.setLayout(layout) windowTitle = "Referenced datasets found" self.referencesDialog.setWindowTitle(windowTitle) fm = qt.QFontMetrics(qt.QApplication.font(self.referencesDialog)) self.referencesDialog.setMinimumWidth(fm.width(windowTitle)+50) label = qt.QLabel("The loaded DICOM objects contain references to other " "datasets you did not select for loading. Please confirm if you would " "like to load the following referenced datasets.") label.wordWrap = True layout.addRow(label) for plugin in self.referencedLoadables: for loadable in self.referencedLoadables[plugin]: if loadable.selected: cb = qt.QCheckBox(loadable.name, self.referencesDialog) cb.checked = True layout.addRow(cb) okButton = qt.QPushButton('Proceed') okButton.connect("clicked()",self.proceedWithReferencedLoadablesSelection) layout.addRow(okButton) self.referencesDialog.show() self.referencesDialog.adjustSize() else: self.proceedWithReferencedLoadablesSelection() return
def __init__(self, componenttype, parent): self.dialog = qt.QDialog(parent) self.ui = _ui_CreateComponentDialog(self.dialog) self.ui.buttonBox.connect("accepted()", self.accept) self.ui.buttonBox.connect("rejected()", self.dialog, "reject()") self._typelc = componenttype.lower() self._typetc = componenttype.title()
def delayDisplay(self, message, msec=1000): print(message) self.info = qt.QDialog() self.infoLayout = qt.QVBoxLayout() self.info.setLayout(self.infoLayout) self.label = qt.QLabel(message, self.info) self.infoLayout.addWidget(self.label) qt.QTimer.singleShot(msec, self.info.close) self.info.exec_()
def __init__(self, parent=None): self._window = qt.QDialog(parent) self._window.setIcon(getPixmap("smart")) self._window.setCaption(_("New Package Priority")) self._window.setModal(True) #self._window.setMinimumSize(600, 400) vbox = qt.QVBox(self._window) vbox.setMargin(10) vbox.setSpacing(10) vbox.show() table = qt.QGrid(2, vbox) table.setSpacing(10) table.show() label = qt.QLabel(_("Package Name:"), table) self._name = qt.QLineEdit(table) self._name.show() label = qt.QLabel(_("Channel Alias:"), table) self._alias = qt.QLineEdit(table) self._alias.setText("*") self._alias.show() label = qt.QLabel(_("Priority:"), table) self._priority = qt.QSpinBox(table) self._priority.setSteps(1, 10) self._priority.setRange(-100000,+100000) self._priority.show() sep = qt.QFrame(vbox) sep.setFrameShape(qt.QFrame.HLine) sep.setFrameShadow(qt.QFrame.Sunken) sep.show() bbox = qt.QHBox(vbox) bbox.setSpacing(10) bbox.layout().addStretch(1) bbox.show() button = qt.QPushButton(_("Cancel"), bbox) qt.QObject.connect(button, qt.SIGNAL("clicked()"), self._window, qt.SLOT("reject()")) button = qt.QPushButton(_("OK"), bbox) qt.QObject.connect(button, qt.SIGNAL("clicked()"), self._window, qt.SLOT("accept()")) button.setDefault(True) vbox.adjustSize() self._window.adjustSize()
def __init__(self, parent=None): self._window = qt.QDialog(None) self._window.setIcon(getPixmap("smart")) self._window.setCaption(_("Priorities")) #self._window.setModal(True) self._window.setMinimumSize(600, 400) layout = qt.QVBoxLayout(self._window) layout.setResizeMode(qt.QLayout.FreeResize) vbox = qt.QVBox(self._window) vbox.setMargin(10) vbox.setSpacing(10) vbox.show() layout.addWidget(vbox) self._treeview = qt.QListView(vbox) self._treeview.setAllColumnsShowFocus(True) self._treeview.show() qt.QObject.connect(self._treeview, qt.SIGNAL("itemRenamed(QListViewItem *, int, const QString &)"), self.itemRenamed) qt.QObject.connect(self._treeview, qt.SIGNAL("selectionChanged()"), self.selectionChanged) self._treeview.addColumn(_("Package Name")) self._treeview.addColumn(_("Channel Alias")) self._treeview.addColumn(_("Priority")) bbox = qt.QHBox(vbox) bbox.setSpacing(10) bbox.layout().addStretch(1) bbox.show() button = qt.QPushButton(_("New"), bbox) button.setEnabled(True) button.setIconSet(qt.QIconSet(getPixmap("crystal-add"))) button.show() qt.QObject.connect(button, qt.SIGNAL("clicked()"), self.newPriority) self._newpriority = button button = qt.QPushButton(_("Delete"), bbox) button.setEnabled(False) button.setIconSet(qt.QIconSet(getPixmap("crystal-delete"))) button.show() qt.QObject.connect(button, qt.SIGNAL("clicked()"), self.delPriority) self._delpriority = button button = qt.QPushButton(_("Close"), bbox) qt.QObject.connect(button, qt.SIGNAL("clicked()"), self._window, qt.SLOT("accept()")) button.setDefault(True) vbox.adjustSize()
def logicDelayDisplay(self, message, msec=1000): """This utility method displays a small dialog and waits. """ print(message) self.info = qt.QDialog() self.infoLayout = qt.QVBoxLayout() self.info.setLayout(self.infoLayout) self.label = qt.QLabel(message, self.info) self.infoLayout.addWidget(self.label) qt.QTimer.singleShot(msec, self.info.close) self.info.exec_()
def __init__(self): self._window = qt.QDialog() self._window.setIcon(getPixmap("smart")) self._window.setCaption(_("Status")) self._window.setModal(True) self._vbox = qt.QVBox(self._window) self._vbox.setMargin(20) self._label = qt.QLabel(self._vbox) self._label.show() self._lastshown = 0
def __init__(self, parent=None): self._window = qt.QDialog(parent) self._window.setIcon(getPixmap("smart")) self._window.setCaption(_("New Target")) self._window.setModal(True) #self._window.setMinimumSize(600, 400) vbox = qt.QVBox(self._window) vbox.setMargin(10) vbox.setSpacing(10) vbox.show() table = qt.QGrid(2, vbox) table.setSpacing(10) table.show() label = qt.QLabel(_("Target:"), table) self._target = qt.QLineEdit(table) self._target.setMaxLength(40) self._target.show() blank = qt.QWidget(table) label = qt.QLabel( _("Examples: \"pkgname\", \"pkgname = 1.0\" or " "\"pkgname <= 1.0\""), table) sep = qt.QFrame(vbox) sep.setFrameShape(qt.QFrame.HLine) sep.setFrameShadow(qt.QFrame.Sunken) sep.show() bbox = qt.QHBox(vbox) bbox.setSpacing(10) bbox.layout().addStretch(1) bbox.show() button = qt.QPushButton(bbox.tr("OK"), bbox) qt.QObject.connect(button, qt.SIGNAL("clicked()"), self._window, qt.SLOT("accept()")) button = qt.QPushButton(bbox.tr("Cancel"), bbox) qt.QObject.connect(button, qt.SIGNAL("clicked()"), self._window, qt.SLOT("reject()")) vbox.adjustSize() self._window.adjustSize()
def openCreateNewImageClassWindow(self): self.createNewImageClassWidget = qt.QDialog() self.createNewImageClassWidget.setModal(True) self.createNewImageClassFrame = qt.QFrame( self.createNewImageClassWidget) self.createNewImageClassFrame.setFrameStyle(0x0006) self.createNewImageClassWidget.setWindowTitle('Create New Model') self.createNewImageClassPopupGeometry = qt.QRect() mainWindow = slicer.util.mainWindow() if mainWindow: mainWindowGeometry = mainWindow.geometry self.windowWidth = mainWindow.width * 0.35 self.windowHeight = mainWindow.height * 0.35 self.createNewImageClassPopupGeometry.setWidth(self.windowWidth) self.createNewImageClassPopupGeometry.setHeight(self.windowHeight) self.popupPositioned = False self.createNewImageClassWidget.setGeometry( self.createNewImageClassPopupGeometry) self.createNewImageClassFrame.setGeometry( self.createNewImageClassPopupGeometry) self.createNewImageClassWidget.move( mainWindow.width / 2.0 - self.windowWidth, mainWindow.height / 2 - self.windowHeight) self.createNewImageClassLayout = qt.QVBoxLayout() self.createNewImageClassLayout.setContentsMargins(12, 4, 4, 4) self.createNewImageClassLayout.setSpacing(4) self.createNewImageClassButtonLayout = qt.QFormLayout() self.createNewImageClassButtonLayout.setContentsMargins(12, 4, 4, 4) self.createNewImageClassButtonLayout.setSpacing(4) self.imageClassNameLineEdit = qt.QLineEdit("Image Class Name") self.createNewImageClassButtonLayout.addRow( self.imageClassNameLineEdit) self.createNewImageClassButton = qt.QPushButton("Add Image Class") self.createNewImageClassButtonLayout.addRow( self.createNewImageClassButton) self.imageErrorLabel = qt.QLabel("") self.createNewImageClassButtonLayout.addRow(self.imageErrorLabel) self.createNewImageClassButton.connect('clicked(bool)', self.onNewImageClassAdded) self.createNewImageClassLayout.addLayout( self.createNewImageClassButtonLayout) self.createNewImageClassFrame.setLayout(self.createNewImageClassLayout)
def delayDisplay(self, message, msec=1000): """This utility method displays a small dialog and waits. This does two things: 1) it lets the event loop catch up to the state of the test so that rendering and widget updates have all taken place before the test continues and 2) it shows the user/developer/tester the state of the test so that we'll know when it breaks. """ print(message) self.info = qt.QDialog() self.infoLayout = qt.QVBoxLayout() self.info.setLayout(self.infoLayout) self.label = qt.QLabel(message, self.info) self.infoLayout.addWidget(self.label) qt.QTimer.singleShot(msec, self.info.close) self.info.exec_()
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 __init__(self, parent, master, mergeVolumePostfix): self._master = master self._mergeVolumePostfix = mergeVolumePostfix self.dialog = qt.QDialog(parent) self.dialog.objectName = 'EditorLabelCreateDialog' self.ui = _ui_LabelCreateDialog(self.dialog) self.ui.colorPromptLabel.text = """ Create a merge label map or a segmentation for selected master volume %s. New volume will be %s. Select the color table node that will be used for segmentation labels. """ % (self._master.GetName(), self._master.GetName() + self._mergeVolumePostfix) self.ui.buttonBox.connect("accepted()", self.accept) self.ui.buttonBox.connect("rejected()", self.dialog, "reject()")
def __init__(self, parent=None): self._window = qt.QDialog(parent) self._window.setIcon(getPixmap("smart")) self._window.setCaption(_("New Channel")) self._window.setModal(True) vbox = qt.QVBox(self._window) vbox.setMargin(10) vbox.setSpacing(10) vbox.show() self._vbox = vbox table = qt.QGrid(2, vbox) table.setSpacing(10) table.show() self._table = table label = qt.QLabel(_("Type:"), table) self._typevbox = qt.QVButtonGroup(table) self._typevbox.setFrameStyle(qt.QFrame.NoFrame) self._typevbox.show() sep = qt.QFrame(vbox) sep.setFrameShape(qt.QFrame.HLine) sep.setFrameShadow(qt.QFrame.Sunken) sep.show() bbox = qt.QHBox(vbox) bbox.setSpacing(10) bbox.layout().addStretch(1) bbox.show() button = qt.QPushButton(_("Cancel"), bbox) qt.QObject.connect(button, qt.SIGNAL("clicked()"), self._window, qt.SLOT("reject()")) button = qt.QPushButton(_("OK"), bbox) qt.QObject.connect(button, qt.SIGNAL("clicked()"), self._window, qt.SLOT("accept()")) self._ok = button self._ok.setEnabled(False)
def __init__(self, parent=None): self._fields = {} self._fieldn = 0 self._window = qt.QDialog(parent) self._window.setIcon(getPixmap("smart")) self._window.setCaption(_("Edit Channel")) self._window.setModal(True) layout = qt.QVBoxLayout(self._window) layout.setResizeMode(qt.QLayout.FreeResize) vbox = qt.QVBox(self._window) vbox.setMargin(10) vbox.setSpacing(10) vbox.show() layout.addWidget(vbox) self._vbox = vbox self._table = qt.QGrid(2, vbox) self._table.setSpacing(10) self._table.show() sep = qt.QFrame(vbox) sep.setFrameShape(qt.QFrame.HLine) sep.setFrameShadow(qt.QFrame.Sunken) sep.show() bbox = qt.QHBox(vbox) bbox.setSpacing(10) bbox.layout().addStretch(1) bbox.show() button = qt.QPushButton(_("Cancel"), bbox) qt.QObject.connect(button, qt.SIGNAL("clicked()"), self._window, qt.SLOT("reject()")) button = qt.QPushButton(_("OK"), bbox) qt.QObject.connect(button, qt.SIGNAL("clicked()"), self._window, qt.SLOT("accept()")) button.setDefault(True)
def __init__(self, parent=None): self._window = qt.QDialog(parent) self._window.setIcon(getPixmap("smart")) self._window.setCaption(_("Select Channels")) self._window.setModal(True) self._window.setMinimumSize(600, 400) layout = qt.QVBoxLayout(self._window) layout.setResizeMode(qt.QLayout.FreeResize) vbox = qt.QVBox(self._window) vbox.setMargin(10) vbox.setSpacing(10) vbox.show() layout.addWidget(vbox) self._treeview = qt.QListView(vbox) self._treeview.setSizePolicy(qt.QSizePolicy.Expanding, qt.QSizePolicy.Expanding) self._treeview.setAllColumnsShowFocus(True) self._treeview.show() self._treeview.addColumn("") self._treeview.addColumn(_("Alias")) self._treeview.addColumn(_("Type")) self._treeview.addColumn(_("Name")) bbox = qt.QHBox(vbox) bbox.setSpacing(10) bbox.layout().addStretch(1) bbox.show() button = qt.QPushButton(_("Cancel"), bbox) qt.QObject.connect(button, qt.SIGNAL("clicked()"), self._window, qt.SLOT("reject()")) button = qt.QPushButton(_("OK"), bbox) qt.QObject.connect(button, qt.SIGNAL("clicked()"), self._window, qt.SLOT("accept()")) button.setDefault(True)
def delayDisplay(message, autoCloseMsec=1000): """Display an information message in a popup window for a short time. If autoCloseMsec>0 then the window is closed after waiting for autoCloseMsec milliseconds If autoCloseMsec=0 then the window is not closed until the user clicks on it. """ import qt, slicer import logging logging.info(message) messagePopup = qt.QDialog() layout = qt.QVBoxLayout() messagePopup.setLayout(layout) label = qt.QLabel(message, messagePopup) layout.addWidget(label) if autoCloseMsec > 0: qt.QTimer.singleShot(autoCloseMsec, messagePopup.close) else: okButton = qt.QPushButton("OK") layout.addWidget(okButton) okButton.connect('clicked()', messagePopup.close) messagePopup.exec_()
def onEdit(self, action): dialog = qt.QDialog(slicer.util.mainWindow()) layout = qt.QFormLayout(dialog) label = qt.QLabel(action['name']) layout.addRow("Edit properties of:", label ) self.actionInstance = slicer.modules.animatorActionPlugins[action['class']]() self.actionInstance.gui(action, layout) buttonBox = qt.QDialogButtonBox() buttonBox.setStandardButtons(qt.QDialogButtonBox.Ok | qt.QDialogButtonBox.Cancel) layout.addRow(buttonBox) buttonBox.button(qt.QDialogButtonBox.Ok).setToolTip("Use currently selected color node.") buttonBox.button(qt.QDialogButtonBox.Cancel).setToolTip("Cancel current operation.") buttonBox.connect("accepted()", lambda action=action : self.accept(dialog, action)) buttonBox.connect("rejected()", dialog, "reject()") dialog.exec_()
def confirmationPopup(self, message, autoCloseMsec=1000): """Display an information message in a popup window for a short time. If autoCloseMsec>0 then the window is closed after waiting for autoCloseMsec milliseconds If autoCloseMsec=0 then the window is not closed until the user clicks on it. """ messagePopup = qt.QDialog() layout = qt.QVBoxLayout() messagePopup.setLayout(layout) label = qt.QLabel(message, messagePopup) layout.addWidget(label) okButton = qt.QPushButton("Submit") layout.addWidget(okButton) okButton.connect('clicked()', self.onAgreeButton) okButton.connect('clicked()', messagePopup.close) stopButton = qt.QPushButton("Stop") layout.addWidget(stopButton) stopButton.connect('clicked()', messagePopup.close) messagePopup.exec_()
def dialogBoxFunction(self): self.deleteAllMsgBox = qt.QDialog(slicer.util.mainWindow()) # self.deleteAllMsgBox.setWindowTitle("Delete All Fiducials?") self.deleteAllMsgBox.setFixedSize(200, 100) self.deleteAllMsgBox.show() self.deleteAllMsgBox.setLayout(qt.QVBoxLayout()) messageLabel = qt.QLabel("Delete All Fiducials?") font = qt.QFont() font.setPointSize(10) messageLabel.setFont(font) self.deleteAllMsgBox.layout().addWidget(messageLabel, 0, 4) yesNoBox = qt.QFrame() yesNoBox.setLayout(qt.QHBoxLayout()) self.deleteAllMsgBox.layout().addWidget(yesNoBox, 0, 4) # # OK button # okButton = qt.QPushButton() okButton.setText("YES") okButton.enabled = True okIcon = qt.QIcon(":/Icons/AnnotationOkDone.png") okButton.setIcon(okIcon) yesNoBox.layout().addWidget(okButton) # # NO button # noButton = qt.QPushButton() noButton.setText("NO") noButton.enabled = True noIcon = qt.QIcon(":/Icons/AnnotationCancel.png") noButton.setIcon(noIcon) yesNoBox.layout().addWidget(noButton) # Connections okButton.connect("clicked()", self.onDeleteAllButton) noButton.connect("clicked()", self.deleteAllMsgBox.hide)
def __init__(self, parent=None): self._changed = False self._window = qt.QDialog(None) self._window.setIcon(getPixmap("smart")) self._window.setCaption(_("Channels")) self._window.setModal(True) self._window.setMinimumSize(600, 400) layout = qt.QVBoxLayout(self._window) layout.setResizeMode(qt.QLayout.FreeResize) vbox = qt.QVBox(self._window) vbox.setMargin(10) vbox.setSpacing(10) vbox.show() layout.addWidget(vbox) self._treeview = qt.QListView(vbox) self._treeview.setSizePolicy(qt.QSizePolicy.Expanding, qt.QSizePolicy.Expanding) self._treeview.setAllColumnsShowFocus(True) self._treeview.setSelectionMode(qt.QListView.Single) self._treeview.show() qt.QObject.connect(self._treeview, qt.SIGNAL("selectionChanged()"), self.selectionChanged) qt.QObject.connect( self._treeview, qt.SIGNAL("doubleClicked(QListViewItem *, const QPoint &, int)"), self.doubleClicked) self._treeview.addColumn("") self._treeview.addColumn(_("Pri")) self._treeview.addColumn(_("Alias")) self._treeview.addColumn(_("Type")) self._treeview.addColumn(_("Name")) bbox = qt.QHBox(vbox) bbox.setSpacing(10) bbox.layout().addStretch(1) bbox.show() button = qt.QPushButton(_("New"), bbox) button.setIconSet(qt.QIconSet(getPixmap("crystal-add"))) button.show() qt.QObject.connect(button, qt.SIGNAL("clicked()"), self.newChannel) self._newchannel = button button = qt.QPushButton(_("Delete"), bbox) button.setEnabled(False) button.setIconSet(qt.QIconSet(getPixmap("crystal-delete"))) button.show() qt.QObject.connect(button, qt.SIGNAL("clicked()"), self.delChannel) self._delchannel = button button = qt.QPushButton(_("Edit"), bbox) button.setEnabled(False) button.setIconSet(qt.QIconSet(getPixmap("crystal-edit"))) button.show() qt.QObject.connect(button, qt.SIGNAL("clicked()"), self.editChannel) self._editchannel = button button = qt.QPushButton(_("Close"), bbox) qt.QObject.connect(button, qt.SIGNAL("clicked()"), self._window, qt.SLOT("accept()")) button.setDefault(True) vbox.adjustSize()
def __init__(self, parent=None): self._window = qt.QDialog(parent) self._window.setIcon(getPixmap("smart")) self._window.setCaption(_("New Channel")) self._window.setModal(True) vbox = qt.QVBox(self._window) vbox.setMargin(10) vbox.setSpacing(10) vbox.show() table = qt.QGrid(1, vbox) table.setSpacing(10) table.show() label = qt.QLabel(_("Method:"), table) methodvbox = qt.QVButtonGroup(table) methodvbox.show() sep = qt.QFrame(vbox) sep.setFrameShape(qt.QFrame.HLine) sep.setFrameShadow(qt.QFrame.Sunken) sep.show() bbox = qt.QHBox(vbox) bbox.setSpacing(10) bbox.layout().addStretch(1) bbox.show() button = qt.QPushButton(_("Cancel"), bbox) qt.QObject.connect(button, qt.SIGNAL("clicked()"), self._window, qt.SLOT("reject()")) button = qt.QPushButton(_("OK"), bbox) qt.QObject.connect(button, qt.SIGNAL("clicked()"), self._window, qt.SLOT("accept()")) self._ok = button self._ok.setEnabled(False) self._method = None for method, descr in [ ("manual", _("Provide channel information")), ("descriptionpath", _("Read channel description from local path")), ("descriptionurl", _("Read channel description from URL")), ("detectmedia", _("Detect channel in media (CDROM, DVD, etc)")), ("detectpath", _("Detect channel in local path")) ]: if not self._method: self._method = method radio = qt.QRadioButton(descr, methodvbox, method) qt.QObject.connect(radio, qt.SIGNAL("clicked()"), self.ok) act = RadioAction(radio, method, descr) act.connect(self, "_method", method) radio.show() methodvbox.adjustSize() vbox.adjustSize() self._window.adjustSize()
def start_construction(self): self.win = qt.QDialog(self.master.win) self.win.setModal(1) ___qtsheet___.start_construction(self)
def __init__(self, parent): self.dialog = qt.QDialog(parent) self.ui = _ui_EditExtensionMetadataDialog(self.dialog) self.ui.buttonBox.connect("accepted()", self.accept) self.ui.buttonBox.connect("rejected()", self.dialog, "reject()")
def create(self,widgetType='window',showHeader=False,showPreview=False): """ main window is a frame with widgets from the app widget repacked into it along with slicer-specific extra widgets """ # find internals of widget for reference and repacking self.toolBar = slicer.util.findChildren(self.dicomBrowser, 'ToolBar')[0] self.databaseNameLabel = slicer.util.findChildren(self.dicomBrowser, 'DatabaseNameLabel')[0] self.databaseDirectoryButton = slicer.util.findChildren(self.dicomBrowser, 'DirectoryButton')[0] self.tableDensityLabel = qt.QLabel('Density: ') self.tableDensityLabel.objectName = 'tablesDensityLabel' self.tableDensityComboBox = slicer.util.findChildren(self.dicomBrowser, 'tableDensityComboBox')[0] self.tableDensityComboBox.connect('currentIndexChanged(QString)', self.onTableDensityComboBox) index = self.tableDensityComboBox.findText(self.tableDensity) if (index != -1) : self.tableDensityComboBox.setCurrentIndex(index) # # create and configure the Slicer browser widget - this involves # reaching inside and manipulating the widget hierarchy # - TODO: this configurability should be exposed more natively # in the CTK code to avoid the findChildren calls # self.tables = slicer.util.findChildren(self.dicomBrowser, 'dicomTableManager')[0] patientTable = slicer.util.findChildren(self.tables, 'patientsTable')[0] patientTableView = slicer.util.findChildren(patientTable, 'tblDicomDatabaseView')[0] patientSearchBox = slicer.util.findChildren(patientTable, 'leSearchBox')[0] studyTable = slicer.util.findChildren(self.tables, 'studiesTable')[0] studyTableView = slicer.util.findChildren(studyTable, 'tblDicomDatabaseView')[0] studySearchBox = slicer.util.findChildren(studyTable, 'leSearchBox')[0] seriesTable = slicer.util.findChildren(self.tables, 'seriesTable')[0] seriesTableView = slicer.util.findChildren(seriesTable, 'tblDicomDatabaseView')[0] seriesSearchBox = slicer.util.findChildren(seriesTable, 'leSearchBox')[0] self.tableSplitter = qt.QSplitter() self.tableSplitter.addWidget(patientTableView) self.tableSplitter.addWidget(studyTableView) self.tableSplitter.addWidget(seriesTableView) # TODO: Move to this part to CTK patientTableView.resizeColumnsToContents() studyTableView.resizeColumnsToContents() seriesTableView.resizeColumnsToContents() self.userFrame = qt.QWidget() self.preview = qt.QWidget() self.widgetType = widgetType if widgetType == 'dialog': self.window = qt.QDialog(self.dicomBrowser) elif widgetType == 'window': self.window = qt.QWidget() elif widgetType == 'popup': self.window = ctk.ctkPopupWidget(self.dicomBrowser) self.window.orientation = 1 self.window.horizontalDirection = 0 self.window.alignment = 0x82 elif widgetType == 'dock': self.dock = qt.QDockWidget(slicer.util.mainWindow()) self.dock.setFeatures( qt.QDockWidget.DockWidgetFloatable | qt.QDockWidget.DockWidgetMovable | qt.QDockWidget.DockWidgetClosable ) slicer.util.mainWindow().addDockWidget(0x15, self.dock) self.window = qt.QFrame() self.dock.setWidget(self.window) else: raise "Unknown widget type - should be dialog, window, dock or popup" self.window.objectName = 'SlicerDICOMBrowser' self.setModality(not self.browserPersistent) self.window.setWindowTitle('DICOM Browser') self.layout = qt.QVBoxLayout(self.window) # tool row at top, with commands and database self.toolFrame = qt.QWidget() self.toolFrame.setMaximumHeight(40) self.toolFrame.setContentsMargins(-5,-5,-5,-5) self.toolLayout = qt.QHBoxLayout(self.toolFrame) self.layout.addWidget(self.toolFrame) self.toolLayout.addWidget(self.toolBar) self.settingsButton = ctk.ctkExpandButton() self.toolLayout.addWidget(self.settingsButton) self.toolLayout.addWidget(self.databaseNameLabel) self.databaseNameLabel.visible = False self.toolLayout.addWidget(self.databaseDirectoryButton) self.databaseDirectoryButton.visible = False self.toolLayout.addWidget(self.tableDensityLabel) self.tableDensityLabel.visible = False self.toolLayout.addWidget(self.tableDensityComboBox) self.tableDensityComboBox.visible = False self.settingsButton.connect('toggled(bool)', self.onSettingsButton) # enable export button and make new connection self.actionExport = self.dicomBrowser.findChildren('QAction', 'ActionExport')[0] self.actionExport.enabled = 1 self.actionExport.connect('triggered()', self.onExportAction) # search row self.searchFrame = qt.QWidget() self.searchFrame.setMaximumHeight(40) self.searchLayout = qt.QHBoxLayout(self.searchFrame) self.layout.addWidget(self.searchFrame) patinetsLabel = qt.QLabel('Patients: ') self.searchLayout.addWidget(patinetsLabel) self.searchLayout.addWidget(patientSearchBox) studiesLabel = qt.QLabel('Studies: ') self.searchLayout.addWidget(studiesLabel) self.searchLayout.addWidget(studySearchBox) seriesLabel = qt.QLabel('Series: ') self.searchLayout.addWidget(seriesLabel) self.searchLayout.addWidget(seriesSearchBox) # tables goes next, spread across 1 row, 2 columns if self.horizontalTables: self.tableSplitter.setOrientation(1) else: self.tableSplitter.setOrientation(0) self.layout.addWidget(self.tableSplitter) # # preview related column # self.previewLayout = qt.QVBoxLayout() if showPreview: self.previewLayout.addWidget(self.preview) else: self.preview.hide() # # action related column (interacting with slicer) # self.loadableTableFrame = qt.QWidget() self.loadableTableFrame.setMaximumHeight(200) self.loadableTableLayout = qt.QFormLayout(self.loadableTableFrame) self.layout.addWidget(self.loadableTableFrame) self.loadableTableLayout.addWidget(self.userFrame) self.userFrame.hide() tableWidth = 350 if showHeader else 600 self.loadableTable = DICOMLoadableTable(self.userFrame,width=tableWidth) # # button row for action column # self.actionButtonsFrame = qt.QWidget() self.actionButtonsFrame.setMaximumHeight(40) self.actionButtonsFrame.objectName = 'ActionButtonsFrame' self.layout.addWidget(self.actionButtonsFrame) self.actionButtonLayout = qt.QHBoxLayout() self.actionButtonsFrame.setLayout(self.actionButtonLayout) self.loadButton = qt.QPushButton('Load') self.loadButton.enabled = True self.loadButton.toolTip = 'Load Selection to Slicer' self.actionButtonLayout.addWidget(self.loadButton) self.loadButton.connect('clicked()', self.loadCheckedLoadables) self.headerPopup = DICOMLib.DICOMHeaderPopup() self.viewMetadataButton = qt.QPushButton('Metadata') self.viewMetadataButton.objectName = 'ActionViewMetadata' self.viewMetadataButton.toolTip = 'Display Metadata of the Selected Series' self.viewMetadataButton.enabled = False self.actionButtonLayout.addWidget(self.viewMetadataButton) self.viewMetadataButton.connect('clicked()', self.onViewHeaderButton) self.viewMetadataButton.connect('clicked()', self.headerPopup.open) self.actionButtonLayout.addStretch(1) self.examineButton = qt.QPushButton('Examine') self.actionButtonLayout.addWidget(self.examineButton) self.examineButton.enabled = False self.examineButton.connect('clicked()', self.examineForLoading) self.uncheckAllButton = qt.QPushButton('Uncheck All') self.actionButtonLayout.addWidget(self.uncheckAllButton) self.uncheckAllButton.connect('clicked()', self.uncheckAllLoadables) self.actionButtonLayout.addStretch(1) self.advancedViewButton = qt.QCheckBox('Advanced') self.advancedViewButton.objectName = 'AdvancedViewCheckBox' self.actionButtonLayout.addWidget(self.advancedViewButton) self.advancedViewButton.enabled = True self.advancedViewButton.checked = self.advancedView self.advancedViewButton.connect('clicked()', self.onAdvanedViewButton) self.horizontalViewCheckBox = qt.QCheckBox('Horizontal') self.horizontalViewCheckBox.objectName = 'HorizontalViewCheckBox' self.horizontalViewCheckBox.checked = self.horizontalTables self.horizontalViewCheckBox.connect('clicked()', self.onHorizontalViewCheckBox) self.actionButtonLayout.addWidget(self.horizontalViewCheckBox) self.toolLayout.addStretch(1) self.browserPersistentButton = qt.QCheckBox('Browser Persistent') self.browserPersistentButton.objectName = 'BrowserPersistentCheckBox' self.browserPersistentButton.toolTip = 'When enabled, DICOM Browser remains open after loading data or switching to another module' self.browserPersistentButton.checked = self.browserPersistent self.actionButtonLayout.addWidget(self.browserPersistentButton) self.browserPersistentButton.connect('stateChanged(int)', self.setBrowserPersistence) if self.advancedView: self.loadableTableFrame.visible = True else: self.loadableTableFrame.visible = False self.examineButton.visible = False self.uncheckAllButton.visible = False # # header related column (more details about the selected file) # if showHeader: self.headerLayout = qt.QVBoxLayout() self.layout.addLayout(self.headerLayout,selectionRow,2) self.header = DICOMHeaderWidget(self.window) self.headerLayout.addWidget(self.header.widget) # # Series selection # self.tables.connect('seriesSelectionChanged(QStringList)', self.onSeriesSelected) # # Plugin selection widget # self.pluginSelector = DICOMPluginSelector(self.window) self.loadableTableLayout.addRow(self.pluginSelector.widget,self.loadableTable.widget) self.checkBoxByPlugins = [] for pluginClass in slicer.modules.dicomPlugins: self.checkBox = self.pluginSelector.checkBoxByPlugin[pluginClass] self.checkBox.connect('stateChanged(int)', self.onPluginStateChanged) self.checkBoxByPlugins.append(self.checkBox)
def __init__(self, parent=None): self._window = qt.QDialog(None) self._window.setIcon(getPixmap("smart")) self._window.setCaption(_("Flags")) self._window.setModal(True) self._window.setMinimumSize(600, 400) layout = qt.QVBoxLayout(self._window) layout.setResizeMode(qt.QLayout.FreeResize) topvbox = qt.QVBox(self._window) topvbox.setMargin(10) topvbox.setSpacing(10) topvbox.show() layout.addWidget(topvbox) tophbox = qt.QHBox(topvbox) tophbox.setSpacing(20) tophbox.show() # Left side vbox = qt.QVGroupBox(tophbox) vbox.setInsideSpacing(10) vbox.show() self._flagsview = qt.QListView(vbox) self._flagsview.show() qt.QObject.connect(self._flagsview, qt.SIGNAL("selectionChanged()"), self.flagSelectionChanged) self._flagsview.addColumn(_("Flags")) bbox = qt.QHBox(vbox) bbox.setMargin(5) bbox.setSpacing(10) bbox.show() button = qt.QPushButton(_("New"), bbox) button.setEnabled(True) button.setIconSet(qt.QIconSet(getPixmap("crystal-add"))) button.show() qt.QObject.connect(button, qt.SIGNAL("clicked()"), self.newFlag) self._newflag = button button = qt.QPushButton(_("Delete"), bbox) button.setEnabled(False) button.setIconSet(qt.QIconSet(getPixmap("crystal-delete"))) button.show() qt.QObject.connect(button, qt.SIGNAL("clicked()"), self.delFlag) self._delflag = button # Right side vbox = qt.QVGroupBox(tophbox) vbox.setInsideSpacing(10) vbox.show() self._targetsview = qt.QListView(vbox) self._targetsview.show() qt.QObject.connect(self._targetsview, qt.SIGNAL("selectionChanged()"), self.targetSelectionChanged) self._targetsview.addColumn(_("Targets")) bbox = qt.QHBox(vbox) bbox.setMargin(5) bbox.setSpacing(10) bbox.show() button = qt.QPushButton(_("New"), bbox) button.setEnabled(False) button.setIconSet(qt.QIconSet(getPixmap("crystal-add"))) button.show() qt.QObject.connect(button, qt.SIGNAL("clicked()"), self.newTarget) self._newtarget = button button = qt.QPushButton(_("Delete"), bbox) button.setEnabled(False) button.setIconSet(qt.QIconSet(getPixmap("crystal-delete"))) button.show() qt.QObject.connect(button, qt.SIGNAL("clicked()"), self.delTarget) self._deltarget = button # Bottom sep = qt.QFrame(topvbox) sep.setFrameShape(qt.QFrame.HLine) sep.setFrameShadow(qt.QFrame.Sunken) sep.show() bbox = qt.QHBox(topvbox) bbox.setSpacing(10) bbox.layout().addStretch(1) bbox.show() button = qt.QPushButton(_("Close"), bbox) button.show() qt.QObject.connect(button, qt.SIGNAL("clicked()"), self._window, qt.SLOT("accept()")) button.setDefault(True)