def __init__(self, parent=None, plot=None, rois=None): qt.QDialog.__init__(self, parent=parent) assert plot is not None assert rois is not None self._plot = plot self._rois = rois self.setLayout(qt.QVBoxLayout()) # define the selection widget self._selection_widget = qt.QWidget() self._selection_widget.setLayout(qt.QHBoxLayout()) self._kindCB = qt.QComboBox(parent=self) self._selection_widget.layout().addWidget(self._kindCB) self._itemCB = qt.QComboBox(parent=self) self._selection_widget.layout().addWidget(self._itemCB) self._roiCB = qt.QComboBox(parent=self) self._selection_widget.layout().addWidget(self._roiCB) self.layout().addWidget(self._selection_widget) # define modal buttons types = qt.QDialogButtonBox.Ok | qt.QDialogButtonBox.Cancel self._buttonsModal = qt.QDialogButtonBox(parent=self) self._buttonsModal.setStandardButtons(types) self.layout().addWidget(self._buttonsModal) self._buttonsModal.accepted.connect(self.accept) self._buttonsModal.rejected.connect(self.reject) # connect signal / slot self._kindCB.currentIndexChanged.connect(self._updateValidItemAndRoi)
def __createLayout(self): layout = qt.QVBoxLayout(self) layout.setContentsMargins(24, 15, 24, 20) layout.setSpacing(8) self.__label = qt.QLabel(self) self.__label.setWordWrap(True) flags = self.__label.textInteractionFlags() flags = flags | qt.Qt.TextSelectableByKeyboard flags = flags | qt.Qt.TextSelectableByMouse self.__label.setTextInteractionFlags(flags) self.__label.setOpenExternalLinks(True) self.__label.setSizePolicy(qt.QSizePolicy.Minimum, qt.QSizePolicy.Preferred) licenseButton = qt.QPushButton(self) licenseButton.setText("License...") licenseButton.clicked.connect(self.__displayLicense) licenseButton.setAutoDefault(False) self.__options = qt.QDialogButtonBox() self.__options.addButton(licenseButton, qt.QDialogButtonBox.ActionRole) okButton = self.__options.addButton(qt.QDialogButtonBox.Ok) okButton.setDefault(True) okButton.clicked.connect(self.accept) layout.addWidget(self.__label) layout.addWidget(self.__options) layout.setStretch(0, 100) layout.setStretch(1, 0)
def setupUi(self): # form layout for grid scan inputs layout = qt.QFormLayout() self.noChangeBox = qt.QRadioButton() layout.addRow(qt.QLabel("Export flat list of points:"), self.noChangeBox) self.reshapeBox = qt.QRadioButton() self.reshapeBox.setChecked(True) layout.addRow(qt.QLabel("Try reshaping the data:"), self.reshapeBox) self.shapeBox = qt.QLineEdit('auto') layout.addRow(qt.QLabel(" shape:"), self.shapeBox) self.resampleBox = qt.QRadioButton() layout.addRow(qt.QLabel("Resample the data on a grid:"), self.resampleBox) self.oversamplingBox = qt.QSpinBox() self.oversamplingBox.setValue(1) layout.addRow(qt.QLabel(" oversampling relative to typical step size:"), self.oversamplingBox) self.equalBox = qt.QCheckBox() self.equalBox.setChecked(True) layout.addRow(qt.QLabel(" equal horizontal and vertical steps"), self.equalBox) self.formGroupBox = qt.QGroupBox("PyMCA needs data layed out on a regular grid.") self.formGroupBox.setLayout(layout) # ok/cancel buttons buttonBox = qt.QDialogButtonBox(qt.QDialogButtonBox.Ok | qt.QDialogButtonBox.Cancel) buttonBox.accepted.connect(self.accept) buttonBox.rejected.connect(self.reject) # put everything together mainLayout = qt.QVBoxLayout() mainLayout.addWidget(self.formGroupBox) mainLayout.addWidget(buttonBox) self.setLayout(mainLayout) self.setWindowTitle("Export for PyMCA...")
def __init__(self, merger, **kwargs): super(_MergeProcessDialog, self).__init__(**kwargs) layout = Qt.QVBoxLayout(self) files = merger.summary() output_dir = merger.output_dir label = Qt.QLabel('<html><head/><body><p align="center">' '<span style=" font-size:16pt; font-weight:600;">' 'Merge process</span></p></body></html>') label.setTextFormat(Qt.Qt.RichText) layout.addWidget(label, stretch=0, alignment=Qt.Qt.AlignHCenter) grp_box = GroupBox('Output directory :') grp_box.setLayout(Qt.QVBoxLayout()) outdir_edit = Qt.QLineEdit(output_dir) fm = outdir_edit.fontMetrics() outdir_edit.setMinimumWidth(fm.width(' ' * 100)) grp_box.layout().addWidget(outdir_edit) layout.addWidget(grp_box, stretch=0) grp_box = GroupBox('Files :') grp_box.setLayout(Qt.QVBoxLayout()) tree_widget = Qt.QTreeWidget() tree_widget.setColumnCount(3) tree_widget.setColumnHidden(2, True) # TODO improve master_item = Qt.QTreeWidgetItem([files['master'], '', 'master']) for scan_id in sorted(files.keys()): if scan_id != 'master': master_item.addChild( Qt.QTreeWidgetItem([files[scan_id], '', scan_id])) tree_widget.addTopLevelItem(master_item) tree_widget.setItemWidget(master_item, 1, Qt.QProgressBar()) for i_child in range(master_item.childCount()): tree_widget.setItemWidget(master_item.child(i_child), 1, Qt.QProgressBar()) master_item.setExpanded(True) tree_widget.resizeColumnToContents(0) tree_widget.resizeColumnToContents(1) width = (tree_widget.sizeHintForColumn(0) + tree_widget.sizeHintForColumn(1) + 10) tree_widget.setMinimumWidth(width) layout.addWidget(tree_widget, stretch=1, alignment=Qt.Qt.AlignHCenter) bn_box = Qt.QDialogButtonBox(Qt.QDialogButtonBox.Ok | Qt.QDialogButtonBox.Cancel) bn_box.button(Qt.QDialogButtonBox.Ok).setText('Merge') layout.addWidget(bn_box) bn_box.accepted.connect(self.__onAccept) bn_box.rejected.connect(self.reject) self.__sigMergeDone.connect(self.__mergeDone) self.__tree_widget = tree_widget self.__bn_box = bn_box self.__abort_diag = None self.__merger = merger self.__status = False
def __customDetector(self): settings = self.model().experimentSettingsModel() detector = settings.detectorModel().detector() popup = DetectorSelectorDrop(self) popupParent = self._customDetector pos = popupParent.mapToGlobal(popupParent.rect().bottomRight()) pos = pos + popup.rect().topLeft() - popup.rect().topRight() popup.move(pos) popup.show() dialog = qt.QDialog(self) dialog.setWindowTitle("Detector selection") layout = qt.QVBoxLayout(dialog) layout.addWidget(popup) buttonBox = qt.QDialogButtonBox(qt.QDialogButtonBox.Ok | qt.QDialogButtonBox.Cancel) buttonBox.accepted.connect(dialog.accept) buttonBox.rejected.connect(dialog.reject) layout.addWidget(buttonBox) # It have to be here to set the focus on the right widget popup.setDetector(detector) result = dialog.exec_() if result: newDetector = popup.detector() settings.detectorModel().setDetector(newDetector)
def __init__(self, parent=None): qt.QDialog.__init__(self, parent) self.setWindowTitle("HDF5 group selection") self._tree = Hdf5TreeView(self) self._tree.setSelectionMode(qt.QAbstractItemView.SingleSelection) self._tree.activated.connect(self._onActivation) self._tree.selectionModel().selectionChanged.connect( self._onSelectionChange) self._model = self._tree.findHdf5TreeModel() self._header = self._tree.header() self._header.setSections([ self._model.NAME_COLUMN, self._model.NODE_COLUMN, self._model.LINK_COLUMN ]) _labelSubgroup = qt.QLabel(self) _labelSubgroup.setText("Subgroup name (optional)") self._lineEditSubgroup = qt.QLineEdit(self) self._lineEditSubgroup.setToolTip( "Specify the name of a new subgroup " "to be created in the selected group.") self._lineEditSubgroup.textChanged.connect(self._onSubgroupNameChange) _labelSelectionTitle = qt.QLabel(self) _labelSelectionTitle.setText("Current selection") self._labelSelection = qt.QLabel(self) self._labelSelection.setStyleSheet("color: gray") self._labelSelection.setWordWrap(True) self._labelSelection.setText("Select a group") buttonBox = qt.QDialogButtonBox() self._okButton = buttonBox.addButton(qt.QDialogButtonBox.Ok) self._okButton.setEnabled(False) buttonBox.addButton(qt.QDialogButtonBox.Cancel) buttonBox.accepted.connect(self.accept) buttonBox.rejected.connect(self.reject) vlayout = qt.QVBoxLayout(self) vlayout.addWidget(self._tree) vlayout.addWidget(_labelSubgroup) vlayout.addWidget(self._lineEditSubgroup) vlayout.addWidget(_labelSelectionTitle) vlayout.addWidget(self._labelSelection) vlayout.addWidget(buttonBox) self.setLayout(vlayout) self.setMinimumWidth(400) self._selectedUrl = None
def __init__(self, parent=None): qt.QDialog.__init__(self, parent) self.setWindowTitle("HDF5 item selection") self._tree = Hdf5TreeView(self) self._tree.setSelectionMode(qt.QAbstractItemView.SingleSelection) self._tree.activated.connect(self._onActivation) self._tree.selectionModel().selectionChanged.connect( self._onSelectionChange) self._model = self._tree.findHdf5TreeModel() self._header = self._tree.header() self._newItemWidget = qt.QWidget(self) newItemLayout = qt.QVBoxLayout(self._newItemWidget) self._labelNewItem = qt.QLabel(self._newItemWidget) self._labelNewItem.setText( "Create new item in selected group (optional):") self._lineEditNewItem = qt.QLineEdit(self._newItemWidget) self._lineEditNewItem.setToolTip( "Specify the name of a new item " "to be created in the selected group.") self._lineEditNewItem.textChanged.connect(self._onNewItemNameChange) newItemLayout.addWidget(self._labelNewItem) newItemLayout.addWidget(self._lineEditNewItem) _labelSelectionTitle = qt.QLabel(self) _labelSelectionTitle.setText("Current selection") self._labelSelection = qt.QLabel(self) self._labelSelection.setStyleSheet("color: gray") self._labelSelection.setWordWrap(True) self._labelSelection.setText("Select an item") buttonBox = qt.QDialogButtonBox() self._okButton = buttonBox.addButton(qt.QDialogButtonBox.Ok) self._okButton.setEnabled(False) buttonBox.addButton(qt.QDialogButtonBox.Cancel) buttonBox.accepted.connect(self.accept) buttonBox.rejected.connect(self.reject) vlayout = qt.QVBoxLayout(self) vlayout.addWidget(self._tree) vlayout.addWidget(self._newItemWidget) vlayout.addWidget(_labelSelectionTitle) vlayout.addWidget(self._labelSelection) vlayout.addWidget(buttonBox) self.setLayout(vlayout) self.setMinimumWidth(400) self._selectedUrl = None
def __init__(self, parent=None): qt.QDialog.__init__(self) self.widget = WorkerConfigurator(self) self.widget.set1dIntegrationOnly(True) layout = qt.QVBoxLayout(self) layout.addWidget(self.widget) buttons = qt.QDialogButtonBox(self) buttons.setStandardButtons(qt.QDialogButtonBox.Cancel | qt.QDialogButtonBox.Ok) layout.addWidget(buttons) buttons.accepted.connect(self.accept) buttons.rejected.connect(self.reject)
def __init__(self, parent=None): super(IntegrationMethodDialog, self).__init__(parent=parent) self.setWindowTitle("Method selection") self.__content = IntegrationMethodWidget(self) layout = qt.QVBoxLayout(self) layout.addWidget(self.__content) buttonBox = qt.QDialogButtonBox(qt.QDialogButtonBox.Ok | qt.QDialogButtonBox.Cancel) buttonBox.accepted.connect(self.accept) buttonBox.rejected.connect(self.reject) layout.addWidget(buttonBox)
def __init__(self, parent=None): super(DetectorSelectorDialog, self).__init__(parent=parent) self.setWindowTitle("Detector selection") self.__content = DetectorSelectorDrop(self) layout = qt.QVBoxLayout(self) layout.addWidget(self.__content) buttonBox = qt.QDialogButtonBox(qt.QDialogButtonBox.Ok | qt.QDialogButtonBox.Cancel) buttonBox.accepted.connect(self.accept) buttonBox.rejected.connect(self.reject) layout.addWidget(buttonBox)
def __init__(self, parent=None): super(Detector3dDialog, self).__init__(parent=parent) self.setWindowTitle("Display sample stage") self.__plot = SceneWindow(self) self.__plot.setVisible(False) self.__process = qt.QProgressBar(self) self.__process.setFormat("Processing data") self.__process.setRange(0, 100) self.__buttons = qt.QDialogButtonBox(self) self.__buttons.addButton(qt.QDialogButtonBox.Cancel) self.__buttons.accepted.connect(self.accept) self.__buttons.rejected.connect(self.reject) layout = qt.QVBoxLayout(self) layout.addWidget(self.__plot) layout.addWidget(self.__process) layout.addWidget(self.__buttons)
def __init__(self, parent=None): super(ProjectChooserDialog, self).__init__(parent) self.__projectFile = None layout = Qt.QVBoxLayout(self) prjChooser = ProjectChooser() layout.addWidget(prjChooser) prjChooser.sigProjectPicked.connect(self.__prjPicked) self.__bnBox = bnBox = Qt.QDialogButtonBox( Qt.QDialogButtonBox.Open | Qt.QDialogButtonBox.Cancel) bnBox.rejected.connect(self.reject) bnBox.accepted.connect(self.accept) bnBox.button(Qt.QDialogButtonBox.Open).setEnabled(False) layout.addWidget(bnBox)
def _video360(self, nbFrames): """Run the video and provides the images :param int nbFrames: The number of frames to generate for :return: Iterator of QImage of the video sequence """ plot3d = self.getPlot3DWidget() assert plot3d is not None angleStep = 360. / nbFrames # Create progress bar dialog dialog = qt.QDialog(plot3d) dialog.setWindowTitle('Record Video') layout = qt.QVBoxLayout(dialog) progress = qt.QProgressBar() progress.setRange(0, nbFrames) layout.addWidget(progress) btnBox = qt.QDialogButtonBox(qt.QDialogButtonBox.Abort) btnBox.rejected.connect(dialog.reject) layout.addWidget(btnBox) dialog.setModal(True) dialog.show() qapp = qt.QApplication.instance() for frame in range(nbFrames): progress.setValue(frame) image = plot3d.grabGL() yield image plot3d.viewport.orbitCamera('left', angleStep) qapp.processEvents() if not dialog.isVisible(): break # It as been rejected by the abort button else: dialog.accept() if dialog.result() == qt.QDialog.Rejected: raise GeneratorExit('Aborted')
def __init__(self, converter, parent=None, **kwargs): """ Simple widget displaying a progress bar and a info label during the conversion process. :param converter: :param parent: :param kwargs: """ super(_ConversionProcessDialog, self).__init__(parent) layout = Qt.QVBoxLayout(self) progress_bar = Qt.QProgressBar() layout.addWidget(progress_bar) status_lab = Qt.QLabel('<font color="blue">Conversion ' 'in progress</font>') status_lab.setFrameStyle(Qt.QFrame.Panel | Qt.QFrame.Sunken) layout.addWidget(status_lab) bn_box = Qt.QDialogButtonBox(Qt.QDialogButtonBox.Abort) layout.addWidget(bn_box) bn_box.accepted.connect(self.accept) bn_box.rejected.connect(self.__onAbort) self.__sigConvertDone.connect(self.__convertDone) self.__bn_box = bn_box self.__progress_bar = progress_bar self.__status_lab = status_lab self.__converter = converter self.__aborted = False self.__qtimer = Qt.QTimer() self.__qtimer.timeout.connect(self.__onProgress) converter.convert(blocking=False, overwrite=True, callback=self.__sigConvertDone.emit, **kwargs) self.__qtimer.start(1000)
def __init__(self, merger, **kwargs): super(_ScansInfoDialog, self).__init__(**kwargs) layout = Qt.QVBoxLayout(self) no_match = merger.no_match_ids no_img = merger.no_img_ids table_widget = Qt.QTableWidget(len(no_match) + len(no_img), 2) for num, scan_id in enumerate(no_match): item = Qt.QTableWidgetItem(scan_id) table_widget.setItem(num, 0, item) item = Qt.QTableWidgetItem('Image file not found.') item.setFlags(item.flags() ^ Qt.Qt.ItemIsEditable) table_widget.setItem(num, 1, item) offset = len(no_match) for num, scan_id in enumerate(no_img): item = Qt.QTableWidgetItem(scan_id) item.setFlags(item.flags() ^ Qt.Qt.ItemIsEditable) table_widget.setItem(num + offset, 0, item) item = Qt.QTableWidgetItem('No image info in header.') item.setFlags(item.flags() ^ Qt.Qt.ItemIsEditable) table_widget.setItem(num + offset, 1, item) table_widget.resizeColumnsToContents() table_widget.resizeRowsToContents() table_widget.sortByColumn(0, Qt.Qt.AscendingOrder) layout.addWidget(table_widget) bn_box = Qt.QDialogButtonBox(Qt.QDialogButtonBox.Close) layout.addWidget(bn_box) bn_box.rejected.connect(self.reject)
def __init__(self, merger, **kwargs): super(_ScansSelectDialog, self).__init__(**kwargs) layout = Qt.QGridLayout(self) matched = merger.matched_ids selected = merger.selected_ids table_widget = Qt.QTableWidget(len(matched), self.COL_COUNT) table_widget.setHorizontalHeaderLabels([ '', 'ID', 'M0', 'start', 'end', 'step', 'M1', 'start', 'end', 'step', 'Image File' ]) def _sizeHint(self): width = ( sum([self.columnWidth(i) for i in range(self.columnCount())]) + self.verticalHeader().width() + 20) return Qt.QSize(width, self.height()) table_widget.sizeHint = MethodType(_sizeHint, table_widget) table_widget.minimumSize = MethodType(_sizeHint, table_widget) table_widget.maximumSize = MethodType(_sizeHint, table_widget) self.setSizePolicy( Qt.QSizePolicy(Qt.QSizePolicy.Fixed, Qt.QSizePolicy.Minimum)) for num, scan_id in enumerate(matched): command = merger.get_scan_command(scan_id) item = Qt.QTableWidgetItem() item.setFlags(Qt.Qt.ItemIsUserCheckable | Qt.Qt.ItemIsEditable | Qt.Qt.ItemIsSelectable | Qt.Qt.ItemIsEnabled) state = Qt.Qt.Checked if scan_id in selected else Qt.Qt.Unchecked item.setCheckState(state) table_widget.setItem(num, self.SEL_COL, item) def _add_col(value, col_idx): item = Qt.QTableWidgetItem(value) item.setFlags(item.flags() ^ Qt.Qt.ItemIsEditable) item.setTextAlignment(Qt.Qt.AlignRight) table_widget.setItem(num, col_idx, item) _add_col(str(scan_id), self.ID_COL) _add_col(command['motor_0'], self.M0_COL) _add_col(command['motor_0_start'], self.M0_START_COL) _add_col(command['motor_0_end'], self.M0_END_COL) _add_col(command['motor_0_steps'], self.M0_STEP_COL) _add_col(command['motor_1'], self.M1_COL) _add_col(command['motor_1_start'], self.M1_START_COL) _add_col(command['motor_1_end'], self.M1_END_COL) _add_col(command['motor_1_steps'], self.M1_STEP_COL) img_file = merger.get_scan_image(scan_id) item = Qt.QTableWidgetItem(os.path.basename(img_file)) item.setFlags(item.flags() ^ Qt.Qt.ItemIsEditable) item.setToolTip(img_file) table_widget.setItem(num, self.IMG_FILE_COL, item) table_widget.resizeColumnsToContents() table_widget.resizeRowsToContents() layout.addWidget(table_widget, 0, 0, Qt.Qt.AlignLeft) table_widget.setColumnHidden(self.M0_COL, True) table_widget.setColumnHidden(self.M0_START_COL, True) table_widget.setColumnHidden(self.M0_END_COL, True) table_widget.setColumnHidden(self.M0_STEP_COL, True) table_widget.setColumnHidden(self.M1_COL, True) table_widget.setColumnHidden(self.M1_START_COL, True) table_widget.setColumnHidden(self.M1_END_COL, True) table_widget.setColumnHidden(self.M1_STEP_COL, True) bnLayout = Qt.QGridLayout() layout.addLayout(bnLayout, 1, 0) selBn = Qt.QPushButton('Select') unselBn = Qt.QPushButton('Unselect') bnLayout.addWidget(selBn, 0, 0, Qt.Qt.AlignLeft) bnLayout.addWidget(unselBn, 0, 1, Qt.Qt.AlignLeft) selBn.clicked.connect(self.__selectClicked) unselBn.clicked.connect(self.__unselectClicked) bnLayout.setColumnStretch(2, 1) more_bn = FixedSizePushButon('More') bnLayout.addWidget(more_bn, 0, 3, Qt.Qt.AlignRight) bn_box = Qt.QDialogButtonBox(Qt.QDialogButtonBox.Ok | Qt.QDialogButtonBox.Cancel) bn_box.button(Qt.QDialogButtonBox.Ok).setText('Apply') layout.addWidget(bn_box, 2, 0) bn_box.accepted.connect(self.__onAccept) bn_box.rejected.connect(self.reject) more_bn.clicked.connect(self.__showMore) self.__table_widget = table_widget self.__more_bn = more_bn self.__merger = merger
def __init__(self, parent, node, activeTab=None): super(LineProps, self).__init__(parent) self.setWindowTitle("Line properties of...") self.isGroupSelected = False self.isTopGroupSelected = False for topItem in csi.selectedTopItems: if topItem.child_count() == 0: break else: self.isGroupSelected = True # all selected items are groups lsi = len(csi.selectedTopItems) if self.isGroupSelected: if lsi == 1: group = csi.selectedTopItems[0] txt = '...group <b>{0}</b> with {1} item{2}'.format( group.alias, group.child_count(), 's' if group.child_count() > 1 else '') elif lsi > 1: txt = "...{0} selected groups".format(lsi) else: txt = '' else: if csi.selectedTopItems == csi.dataRootItem.get_nongroups(): self.isTopGroupSelected = True txt = "...all top level data" elif len(csi.allLoadedItems) == len(csi.selectedItems): txt = "...all data" else: if lsi == 1: txt = "...1 selected item ({0})".format( csi.selectedItems[0].alias) else: txt = "...{0} selected items".format(lsi) nSpectraLabel = qt.QLabel(txt) self.color = self.color1 = self.color2 = 'k' self.colorSeq = 0 # controls which color to edit 1 or 2 for Gradient self.colorPolicy = gco.COLOR_POLICY_LOOP1 groupColor = self.makeColorGroup() self.tabWidget = qt.QTabWidget(parent=self) self.tabs = [] self.node = node yNs = node.getPropList('qLabel', role='y') for yN in yNs: tab = self.makeTab() self.tabWidget.addTab(tab, yN) self.tabs.append(tab) if activeTab is not None: self.tabWidget.setCurrentIndex(activeTab) mainLayout = qt.QVBoxLayout() mainLayout.addWidget(nSpectraLabel) mainLayout.addWidget(groupColor) mainLayout.addWidget(self.tabWidget) buttonBox = qt.QDialogButtonBox(qt.QDialogButtonBox.Ok | qt.QDialogButtonBox.Cancel) buttonBox.accepted.connect(self.accept) # OK button buttonBox.rejected.connect(self.reject) # Cancel button mainLayout.addStretch() mainLayout.addWidget(buttonBox) self.setLayout(mainLayout) self.setSizePolicy(qt.QSizePolicy.Minimum, qt.QSizePolicy.Minimum) self.setUIFromData()
def __init__(self, plot, curve, **kwargs): super(XsocsPlot2DColorDialog, self).__init__(plot, **kwargs) colormap = plot.getPlotColormap(curve) self.__plot = weakref.ref(plot) self.__curve = curve self.__histogram = histo = plot.getHistogram(curve, colormap.nColors) if colormap is None: minVal = histo.edges[0][0] maxVal = histo.edges[0][-1] cmap = cm.jet nColors = _defaultNColors else: minVal = colormap.minVal maxVal = colormap.maxVal cmap = colormap.colormap if cmap not in self.colormaps: self.colormaps[cmap.name] = cmap nColors = colormap.nColors if minVal is None: minVal = histo.edges[0][0] if maxVal is None: maxVal = histo.edges[0][-1] index = self.colormaps.keys().index(cmap.name) self.__colormap = XsocsPlot2DColormap(colormap=cmap, minVal=minVal, maxVal=maxVal, nColors=nColors) layout = Qt.QGridLayout(self) grpBox = GroupBox('Colormap') grpBoxLayout = Qt.QGridLayout(grpBox) self.__cmapCBox = cmapCBox = Qt.QComboBox() for key, value in self.colormaps.items(): cmapCBox.addItem(key, userData=value) cmapCBox.setCurrentIndex(index) grpBoxLayout.addWidget(cmapCBox, 0, 0, Qt.Qt.AlignCenter) cmapCBox.currentIndexChanged.connect(self.__cmapCBoxChanged) self.__colorLabel = colorLabel = Qt.QLabel() colorLabel.setFrameStyle(Qt.QFrame.Panel | Qt.QFrame.Sunken) colorLabel.setLineWidth(2) colorLabel.setMidLineWidth(2) grpBoxLayout.addWidget(colorLabel, 1, 0) grpBox.setSizePolicy(Qt.QSizePolicy.Fixed, Qt.QSizePolicy.Fixed) layout.addWidget(grpBox, 0, 0) grpBox = GroupBox('Range') grpBoxLayout = Qt.QGridLayout(grpBox) self.__rngSlider = rngSlider = RangeSlider() grpBoxLayout.addWidget(rngSlider, 0, 0, 1, 2) self.__filledProfile = filledProfile = ColorFilledProfile() filledProfile.setFixedHeight(100) grpBoxLayout.addWidget(filledProfile, 1, 0, 1, 2) self.__minEdit = minEdit = StyledLineEdit(nChar=6) self.__maxEdit = maxEdit = StyledLineEdit(nChar=6) minEdit.setValidator(Qt.QDoubleValidator()) maxEdit.setValidator(Qt.QDoubleValidator()) minEdit.editingFinished.connect(self.__lineEditFinished) maxEdit.editingFinished.connect(self.__lineEditFinished) grpBoxLayout.addWidget(minEdit, 2, 0) grpBoxLayout.addWidget(maxEdit, 2, 1) grpBox.setSizePolicy(Qt.QSizePolicy.Fixed, Qt.QSizePolicy.Fixed) layout.addWidget(grpBox, 1, 0, Qt.Qt.AlignCenter) bnBox = Qt.QDialogButtonBox(Qt.QDialogButtonBox.Close) bnBox.button(Qt.QDialogButtonBox.Close).clicked.connect(self.accept) layout.addWidget(bnBox, 2, 0) self.__setupWidgets() rngSlider.sigSliderMoved.connect(self.__rngSliderMoved)