def _initUI(self): # Widgets self._rb_delimited = QRadioButton('Delimited') self._rb_delimited.setChecked(False) self._lbl_elevation = QLabel("Elevation") self._lbl_elevation.setStyleSheet("color: blue") self._txt_elevation = _AngleRangeWidget(_DelimitedDetector.elevation_rad) self._txt_elevation.setEnabled(False) self._txt_elevation.setRequired(False) self._lbl_azimuth = QLabel('Azimuth') self._lbl_azimuth.setStyleSheet("color: blue") self._txt_azimuth = _AngleRangeWidget(_DelimitedDetector.azimuth_rad) self._txt_azimuth.setEnabled(False) self._txt_azimuth.setRequired(False) self._rb_annular = QRadioButton('Annular') self._rb_annular.setChecked(True) self._lbl_takeoffangle = QLabel('Take-off angle') self._lbl_takeoffangle.setStyleSheet("color: blue") param_takeoffangle = \ AngleParameter(validators=range_validator(0.0, HALFPI), doc='Take-off angle from the x-y plane') param_takeoffangle._name = 'takeoffangle' self._txt_takeoffangle = AngleParameterWidget(param_takeoffangle) self._lbl_opening = QLabel('Opening') self._lbl_opening.setStyleSheet("color: blue") param_opening = \ AngleParameter(validators=range_validator(0.0, HALFPI, False), doc='Opening angle from the take-off angle (above and below)') param_opening._name = 'opening' self._txt_opening = AngleParameterWidget(param_opening) # Layouts layout = _DetectorWidget._initUI(self) layout.addRow(self._rb_delimited) sublayout = QFormLayout() sublayout.setContentsMargins(10, 0, 0, 0) if sys.platform == 'darwin': # Fix for Mac OS sublayout.setFieldGrowthPolicy(QFormLayout.FieldGrowthPolicy.ExpandingFieldsGrow) sublayout.addRow(self._lbl_elevation, self._txt_elevation) sublayout.addRow(self._lbl_azimuth, self._txt_azimuth) layout.addRow(sublayout) layout.addRow(self._rb_annular) sublayout = QFormLayout() sublayout.setContentsMargins(10, 0, 0, 0) if sys.platform == 'darwin': # Fix for Mac OS sublayout.setFieldGrowthPolicy(QFormLayout.FieldGrowthPolicy.ExpandingFieldsGrow) sublayout.addRow(self._lbl_takeoffangle, self._txt_takeoffangle) sublayout.addRow(self._lbl_opening, self._txt_opening) layout.addRow(sublayout) # Signals self._rb_delimited.toggled.connect(self._onToggle) self._rb_annular.toggled.connect(self._onToggle) return layout
def _elevation_validator(value): if value[0] >= value[1]: raise ValueError("Lower value '%s' greater or equal to upper value '%s'" % \ (value[0], value[1])) range_validator(-HALFPI - TOLERANCE, HALFPI + TOLERANCE)(value[0]) range_validator(-HALFPI - TOLERANCE, HALFPI + TOLERANCE)(value[1])
def _azimuth_validator(value): if value[0] >= value[1]: raise ValueError("Lower value '%s' greater or equal to upper value '%s'" % \ (value[0], value[1])) range_validator(0, TWOPI + TOLERANCE)(value[0]) range_validator(0, TWOPI + TOLERANCE)(value[1])
def _energy_limit_validator(value): if value[0] >= value[1]: raise ValueError("Lower value '%s' greater or equal to upper value '%s'" % \ (value[0], value[1])) range_validator(0.0)(value[0]) range_validator(0.0)(value[1])