def set_validators(self): """ Set all validators for text entries """ npt_validator = qt.QIntValidator() npt_validator.setBottom(1) self.nbpt_rad.setValidator(npt_validator) self.nbpt_azim.setValidator(npt_validator) wl_validator = qt.QDoubleValidator(self) wl_validator.setBottom(1e-15) wl_validator.setTop(1e-6) self.wavelength.setValidator(wl_validator) distance_validator = qt.QDoubleValidator(self) distance_validator.setBottom(0) self.pixel1.setValidator(distance_validator) self.pixel2.setValidator(distance_validator) self.poni1.setValidator(distance_validator) self.poni2.setValidator(distance_validator) angle_validator = qt.QDoubleValidator(self) distance_validator.setBottom(-math.pi) distance_validator.setTop(math.pi) self.rot1.setValidator(angle_validator) self.rot2.setValidator(angle_validator) self.rot3.setValidator(angle_validator)
def set_validator(self): validator = qt.QIntValidator(0, 999999, self) self.fastMotorPts.setValidator(validator) self.slowMotorPts.setValidator(validator) self.offset.setValidator(validator) float_valid = qt.QDoubleValidator(self) self.rMin.setValidator(float_valid) self.rMax.setValidator(float_valid)
def makeHeaderTab(self): self.headerNRB = qt.QRadioButton("has") self.headerNEdit = QLineEditSelectRB(rb=self.headerNRB) self.headerNEdit.setFixedWidth(28) self.headerNEdit.setValidator( qt.QIntValidator(0, cco.MAX_HEADER_LINES, self)) self.headerNLabel2 = qt.QLabel("lines") self.headerSRB = qt.QRadioButton("has lines beginning with") self.headerSEdit = QLineEditSelectRB(rb=self.headerSRB) self.headerSEdit.setFixedWidth(16) self.headerERB = qt.QRadioButton("ends with line containing") self.headerEEdit = QLineEditSelectRB(rb=self.headerERB) self.headerEEdit.setMinimumWidth(30) self.headerSRB.setChecked(True) headerLayoutN = qt.QHBoxLayout() headerLayoutN.addWidget(self.headerNRB) headerLayoutN.addWidget(self.headerNEdit) headerLayoutN.addWidget(self.headerNLabel2) headerLayoutN.addStretch() headerLayoutS = qt.QHBoxLayout() headerLayoutS.addWidget(self.headerSRB) headerLayoutS.addWidget(self.headerSEdit) headerLayoutS.addStretch() headerLayoutE = qt.QHBoxLayout() headerLayoutE.addWidget(self.headerERB) headerLayoutE.addWidget(self.headerEEdit, 1) headerLayoutE.addStretch() headerLayout = qt.QVBoxLayout() headerLayout.setContentsMargins(2, 0, 0, 0) headerLayout.addLayout(headerLayoutN) headerLayout.addLayout(headerLayoutS) headerLayout.addLayout(headerLayoutE) headerLayout.addStretch() tab = qt.QWidget(self) tab.setLayout(headerLayout) tab.setSizePolicy(qt.QSizePolicy.Expanding, qt.QSizePolicy.Fixed) self.headerKW = 'skiprows', 'comments', 'lastSkipRowContains' self.fullHeaderKW = ['dataFormat.' + kw for kw in self.headerKW] self.radioButtons = self.headerNRB, self.headerSRB, self.headerERB self.edits = self.headerNEdit, self.headerSEdit, self.headerEEdit self.registerExclusivePropGroup( tab, [self.radioButtons, self.edits], 'header', props=self.fullHeaderKW, convertTypes=[int, None, None]) return tab
def __init__(self, parent=None): super().__init__(parent) self.__value = None self.setAlignment(qt.Qt.AlignRight) validator = qt.QIntValidator() self.setValidator(validator) validator.bottomChanged.connect(self.__updateSize) validator.topChanged.connect(self.__updateSize) self.__updateSize() self.textEdited.connect(self.__textEdited)
def __init__(self, parent=None, n=None): qt.QWidget.__init__(self, parent) # Use the font size as the icon size to avoid to create bigger buttons fontMetric = self.fontMetrics() iconSize = qt.QSize(fontMetric.height(), fontMetric.height()) self.mainLayout = qt.QHBoxLayout(self) self.mainLayout.setContentsMargins(0, 0, 0, 0) self.mainLayout.setSpacing(0) self.firstButton = qt.QPushButton(self) self.firstButton.setIcon(icons.getQIcon("first")) self.firstButton.setIconSize(iconSize) self.previousButton = qt.QPushButton(self) self.previousButton.setIcon(icons.getQIcon("previous")) self.previousButton.setIconSize(iconSize) self._lineEdit = qt.QLineEdit(self) self._label = qt.QLabel(self) self.nextButton = qt.QPushButton(self) self.nextButton.setIcon(icons.getQIcon("next")) self.nextButton.setIconSize(iconSize) self.lastButton = qt.QPushButton(self) self.lastButton.setIcon(icons.getQIcon("last")) self.lastButton.setIconSize(iconSize) self.mainLayout.addWidget(self.firstButton) self.mainLayout.addWidget(self.previousButton) self.mainLayout.addWidget(self._lineEdit) self.mainLayout.addWidget(self._label) self.mainLayout.addWidget(self.nextButton) self.mainLayout.addWidget(self.lastButton) if n is None: first = qt.QSlider().minimum() last = qt.QSlider().maximum() else: first, last = 0, n self._lineEdit.setFixedWidth(self._lineEdit.fontMetrics().width( '%05d' % last)) validator = qt.QIntValidator(first, last, self._lineEdit) self._lineEdit.setValidator(validator) self._lineEdit.setText("%d" % first) self._label.setText("of %d" % last) self._index = first """0-based index""" self.firstButton.clicked.connect(self._firstClicked) self.previousButton.clicked.connect(self._previousClicked) self.nextButton.clicked.connect(self._nextClicked) self.lastButton.clicked.connect(self._lastClicked) self._lineEdit.editingFinished.connect(self._textChangedSlot)
def __init__(self, parent=None): qt.QWidget.__init__(self, parent) filename = get_ui_file("worker-configurator.ui") qt.loadUi(filename, self) self.__openclDevice = None self.__method = None self.__geometryModel = GeometryModel() self.__detector = None self.__only1dIntegration = False self.geometry_label.setGeometryModel(self.__geometryModel) # Connect widget to edit the wavelength wavelengthUnit = DataModel() wavelengthUnit.setValue(units.Unit.ENERGY) self.wavelengthEdit.setModel(self.__geometryModel.wavelength()) self.wavelengthEdit.setDisplayedUnitModel(wavelengthUnit) self.wavelengthEdit.setModelUnit(units.Unit.METER_WL) self.wavelengthUnit.setUnitModel(wavelengthUnit) self.wavelengthUnit.setUnitEditable(True) self.load_detector.clicked.connect(self.selectDetector) self.opencl_config_button.clicked.connect(self.selectOpenclDevice) self.method_config_button.clicked.connect(self.selectMethod) self.show_geometry.clicked.connect(self.showGeometry) # connect file selection windows self.file_import.clicked.connect(self.__selectFile) self.file_mask_file.clicked.connect(self.__selectMaskFile) self.file_dark_current.clicked.connect(self.__selectDarkCurrent) self.file_flat_field.clicked.connect(self.__selectFlatField) self.do_2D.toggled.connect(self.__dimChanged) npt_validator = qt.QIntValidator() npt_validator.setBottom(1) self.nbpt_rad.setValidator(npt_validator) self.nbpt_azim.setValidator(npt_validator) self.radial_unit.setUnits(RADIAL_UNITS.values()) self.radial_unit.model().setValue(RADIAL_UNITS["2th_deg"]) self.radial_unit.setShortNameDisplay(True) self.radial_unit.model().changed.connect(self.__radialUnitUpdated) self.__radialUnitUpdated() doubleOrEmptyValidator = validators.DoubleAndEmptyValidator() self.normalization_factor.setValidator(doubleOrEmptyValidator) self.normalization_factor.setText("1.0") self.__configureDisabledStates() self.setDetector(None) self.__setMethod(None)
def __init__(self, **kwargs): super(ConversionParamsWidget, self).__init__(**kwargs) layout = Qt.QGridLayout(self) layout.setContentsMargins(0, 0, 0, 0) # =========== # image binning # =========== row = 0 layout.addWidget(Qt.QLabel('Img binning :'), row, 0) h_layout = Qt.QHBoxLayout() layout.addLayout(h_layout, row, 1, alignment=Qt.Qt.AlignLeft | Qt.Qt.AlignTop) imgbin_h_edit = StyledLineEdit(nChar=5) imgbin_h_edit.setValidator(Qt.QIntValidator(imgbin_h_edit)) imgbin_h_edit.setAlignment(Qt.Qt.AlignRight) imgbin_h_edit.setText(str(_DEFAULT_IMG_BIN[0])) h_layout.addWidget(imgbin_h_edit, alignment=Qt.Qt.AlignLeft) h_layout.addWidget(Qt.QLabel(' x ')) imgbin_v_edit = StyledLineEdit(nChar=5) imgbin_v_edit.setValidator(Qt.QIntValidator(imgbin_v_edit)) imgbin_v_edit.setAlignment(Qt.Qt.AlignRight) imgbin_v_edit.setText(str(_DEFAULT_IMG_BIN[1])) h_layout.addWidget(imgbin_v_edit, alignment=Qt.Qt.AlignLeft) h_layout.addWidget(Qt.QLabel('px')) h_layout.addStretch(1) # =========== # qspace size # =========== row += 1 layout.addWidget(Qt.QLabel('Q space size :'), row, 0) h_layout = Qt.QHBoxLayout() layout.addLayout(h_layout, row, 1, alignment=Qt.Qt.AlignLeft | Qt.Qt.AlignTop) qsize_x_edit = StyledLineEdit(nChar=5) qsize_x_edit.setValidator(Qt.QDoubleValidator(qsize_x_edit)) qsize_x_edit.setAlignment(Qt.Qt.AlignRight) h_layout.addWidget(qsize_x_edit) h_layout.addWidget(Qt.QLabel(' x ')) qsize_y_edit = StyledLineEdit(nChar=5) qsize_y_edit.setValidator(Qt.QDoubleValidator(qsize_y_edit)) qsize_y_edit.setAlignment(Qt.Qt.AlignRight) h_layout.addWidget(qsize_y_edit) h_layout.addWidget(Qt.QLabel(' x ')) qsize_z_edit = StyledLineEdit(nChar=5) qsize_z_edit.setValidator(Qt.QDoubleValidator(qsize_z_edit)) qsize_z_edit.setAlignment(Qt.Qt.AlignRight) h_layout.addWidget(qsize_z_edit) h_layout.addWidget(Qt.QLabel('bins')) h_layout.addStretch(1) self.__imgbin_h_edit = imgbin_h_edit self.__imgbin_v_edit = imgbin_v_edit self.__qsize_x_edit = qsize_x_edit self.__qsize_y_edit = qsize_y_edit self.__qsize_z_edit = qsize_z_edit # =========== # size constraints # =========== self.setSizePolicy( Qt.QSizePolicy(Qt.QSizePolicy.Fixed, Qt.QSizePolicy.Fixed))
def __init__(self, parent=None): qt.QWidget.__init__(self, parent) self.mainLayout = qt.QGridLayout(self) self.mainLayout.setColumnStretch(1, 1) # Algorithm choice --------------------------------------------------- self.algorithmComboLabel = qt.QLabel(self) self.algorithmComboLabel.setText("Background algorithm") self.algorithmCombo = qt.QComboBox(self) self.algorithmCombo.addItem("Strip") self.algorithmCombo.addItem("Snip") self.algorithmCombo.activated[int].connect( self._algorithmComboActivated) # Strip parameters --------------------------------------------------- self.stripWidthLabel = qt.QLabel(self) self.stripWidthLabel.setText("Strip Width") self.stripWidthSpin = qt.QSpinBox(self) self.stripWidthSpin.setMaximum(100) self.stripWidthSpin.setMinimum(1) self.stripWidthSpin.valueChanged[int].connect(self._emitSignal) self.stripIterLabel = qt.QLabel(self) self.stripIterLabel.setText("Strip Iterations") self.stripIterValue = qt.QLineEdit(self) validator = qt.QIntValidator(self.stripIterValue) self.stripIterValue._v = validator self.stripIterValue.setText("0") self.stripIterValue.editingFinished[()].connect(self._emitSignal) self.stripIterValue.setToolTip( "Number of iterations for strip algorithm.\n" + "If greater than 999, an 2nd pass of strip filter is " + "applied to remove artifacts created by first pass.") # Snip parameters ---------------------------------------------------- self.snipWidthLabel = qt.QLabel(self) self.snipWidthLabel.setText("Snip Width") self.snipWidthSpin = qt.QSpinBox(self) self.snipWidthSpin.setMaximum(300) self.snipWidthSpin.setMinimum(0) self.snipWidthSpin.valueChanged[int].connect(self._emitSignal) # Smoothing parameters ----------------------------------------------- self.smoothingFlagCheck = qt.QCheckBox(self) self.smoothingFlagCheck.setText("Smoothing Width (Savitsky-Golay)") self.smoothingFlagCheck.toggled.connect(self._smoothingToggled) self.smoothingSpin = qt.QSpinBox(self) self.smoothingSpin.setMinimum(3) #self.smoothingSpin.setMaximum(40) self.smoothingSpin.setSingleStep(2) self.smoothingSpin.valueChanged[int].connect(self._emitSignal) # Anchors ------------------------------------------------------------ self.anchorsGroup = qt.QWidget(self) anchorsLayout = qt.QHBoxLayout(self.anchorsGroup) anchorsLayout.setSpacing(2) anchorsLayout.setContentsMargins(0, 0, 0, 0) self.anchorsFlagCheck = qt.QCheckBox(self.anchorsGroup) self.anchorsFlagCheck.setText("Use anchors") self.anchorsFlagCheck.setToolTip( "Define X coordinates of points that must remain fixed") self.anchorsFlagCheck.stateChanged[int].connect( self._anchorsToggled) anchorsLayout.addWidget(self.anchorsFlagCheck) maxnchannel = 16384 * 4 # Fixme ? self.anchorsList = [] num_anchors = 4 for i in range(num_anchors): anchorSpin = qt.QSpinBox(self.anchorsGroup) anchorSpin.setMinimum(0) anchorSpin.setMaximum(maxnchannel) anchorSpin.valueChanged[int].connect(self._emitSignal) anchorsLayout.addWidget(anchorSpin) self.anchorsList.append(anchorSpin) # Layout ------------------------------------------------------------ self.mainLayout.addWidget(self.algorithmComboLabel, 0, 0) self.mainLayout.addWidget(self.algorithmCombo, 0, 2) self.mainLayout.addWidget(self.stripWidthLabel, 1, 0) self.mainLayout.addWidget(self.stripWidthSpin, 1, 2) self.mainLayout.addWidget(self.stripIterLabel, 2, 0) self.mainLayout.addWidget(self.stripIterValue, 2, 2) self.mainLayout.addWidget(self.snipWidthLabel, 3, 0) self.mainLayout.addWidget(self.snipWidthSpin, 3, 2) self.mainLayout.addWidget(self.smoothingFlagCheck, 4, 0) self.mainLayout.addWidget(self.smoothingSpin, 4, 2) self.mainLayout.addWidget(self.anchorsGroup, 5, 0, 1, 4) # Initialize interface ----------------------------------------------- self._setAlgorithm("strip") self.smoothingFlagCheck.setChecked(False) self._smoothingToggled(is_checked=False) self.anchorsFlagCheck.setChecked(False) self._anchorsToggled(is_checked=False)
def __init__(self, parent=None): qt.QWidget.__init__(self, parent) filename = get_ui_file("worker-configurator.ui") qt.loadUi(filename, self) self.__model = _WorkerModel() self.__openclDevice = None self.__method = None self.__geometryModel = GeometryModel() self.__detector = None self.__only1dIntegration = False self.geometry_label.setGeometryModel(self.__geometryModel) # Connect widget to edit the wavelength wavelengthUnit = DataModel() wavelengthUnit.setValue(units.Unit.ENERGY) self.wavelengthEdit.setModel(self.__geometryModel.wavelength()) self.wavelengthEdit.setDisplayedUnitModel(wavelengthUnit) self.wavelengthEdit.setModelUnit(units.Unit.METER_WL) self.wavelengthUnit.setUnitModel(wavelengthUnit) self.wavelengthUnit.setUnitEditable(True) self.load_detector.clicked.connect(self.selectDetector) self.opencl_config_button.clicked.connect(self.selectOpenclDevice) self.method_config_button.clicked.connect(self.selectMethod) self.show_geometry.clicked.connect(self.selectGeometry) # Connect file selection windows self.file_import.clicked.connect(self.__selectFile) self.poni_save.clicked.connect(self.__savePoni) # Connect mask/dark/flat self.mask_file.setModel(self.__model.maskFileModel) self.file_mask_file.setDialogTitle("Open a mask image") self.file_mask_file.setModel(self.__model.maskFileModel) self.__model.maskFileModel.changed.connect(self.__maskFileChanged) self.dark_current.setModel(self.__model.darkFileModel) self.file_dark_current.setDialogTitle("Open a dark image") self.file_dark_current.setModel(self.__model.darkFileModel) self.__model.darkFileModel.changed.connect(self.__darkFileChanged) self.flat_field.setModel(self.__model.flatFileModel) self.file_flat_field.setDialogTitle("Open a flatfield image") self.file_flat_field.setModel(self.__model.flatFileModel) self.__model.flatFileModel.changed.connect(self.__flatFileChanged) self.do_2D.toggled.connect(self.__dimChanged) npt_validator = qt.QIntValidator() npt_validator.setBottom(1) self.nbpt_rad.setValidator(npt_validator) self.nbpt_azim.setValidator(npt_validator) self.radial_unit.setUnits(RADIAL_UNITS.values()) self.radial_unit.model().setValue(RADIAL_UNITS["2th_deg"]) self.radial_unit.setShortNameDisplay(True) self.radial_unit.model().changed.connect(self.__radialUnitUpdated) self.__radialUnitUpdated() doubleOrEmptyValidator = validators.AdvancedDoubleValidator(self) doubleOrEmptyValidator.setAllowEmpty(True) self.normalization_factor.setValidator(doubleOrEmptyValidator) self.normalization_factor.setText("1.0") for value in [None, "poisson", "azimuthal"]: if value: text = value.capitalize() else: text = "" self.error_model.addItem(text, value) self.error_model.setCurrentIndex(0) self.__configureDisabledStates() self.setDetector(None) self.__setMethod(None)