class IntensityIDWidget(_ConditionWidget): def __init__(self, parent=None): _ConditionWidget.__init__(self, IntensityID, parent) def _init_ui(self): print("TEST HUHU") # Controls self._cb_type = QComboBox() self._cb_type.addItems([None] + list(_INTENSITY_TYPES)) self._cb_measure = QComboBox() self._cb_measure.addItems([None] + list(_INTENSITY_MEASURES)) # Layouts layout = _ConditionWidget._init_ui(self) layout.addRow("<i>Type</i>", self._cb_type) layout.addRow("<i>Measure</i>", self._cb_measure) # Signals self._cb_type.currentIndexChanged.connect(self.edited) self._cb_measure.currentIndexChanged.connect(self.edited) return layout def _create_parameter(self): return self.CLASS(None, None) def parameter(self, parameter=None): parameter = _ConditionWidget.parameter(self, parameter) parameter.type = self._cb_type parameter.measure = self._cb_measure return parameter def setParameter(self, condition): _ConditionWidget.setParameter(self, condition) self._cb_type.setCurrentIndex(self._cb_type.findText(condition.type)) self._cb_measure.setCurrentIndex(self._cb_measure.findText(condition.measure)) def setReadOnly(self, state): _ConditionWidget.setReadOnly(self, state) self._cb_type.setEnabled(not state) self._cb_measure.setEnabled(not state) def isReadOnly(self): return _ConditionWidget.isReadOnly(self) and \ not self._cb_type.isEnabled() and \ not self._cb_measure.isEnabled() def hasAcceptableInput(self): return _ConditionWidget.hasAcceptableInput(self)
class _AcquisitionRasterWidget(_AcquisitionWidget): def _init_ui(self): # Widgets self._cb_raster_mode = QComboBox() self._cb_raster_mode.addItems([None] + list(_RASTER_MODES)) # Layouts layout = _AcquisitionWidget._init_ui(self) layout.addRow('Raster mode', self._cb_raster_mode) # Singals self._cb_raster_mode.currentIndexChanged.connect(self.edited) return layout def parameter(self, parameter=None): parameter = _AcquisitionWidget.parameter(self, parameter) parameter.raster_mode = self._cb_raster_mode.currentText() return parameter def setParameter(self, condition): _AcquisitionWidget.setParameter(self, condition) self._cb_raster_mode.setCurrentIndex(self._cb_raster_mode.findText(condition.raster_mode)) def setReadOnly(self, state): _AcquisitionWidget.setReadOnly(self, state) self._cb_raster_mode.setEnabled(not state) def isReadOnly(self): return _AcquisitionWidget.isReadOnly(self) and \ not self._cb_raster_mode.isEnabled()
class _CompositionWidget(_ConditionWidget): def _init_ui(self): # Widgets self._cb_unit = QComboBox() self._cb_unit.addItems(list(_COMPOSITION_UNITS)) # Layouts layout = _ConditionWidget._init_ui(self) layout.addRow('<i>Unit</i>', self._cb_unit) # Signals self._cb_unit.currentIndexChanged.connect(self.edited) return layout def parameter(self, parameter=None): parameter = _ConditionWidget.parameter(self, parameter) parameter.unit = self._cb_unit.currentText() return parameter def setParameter(self, condition): _ConditionWidget.setParameter(self, condition) self._cb_unit.setCurrentIndex(self._cb_unit.findText(condition.unit)) def setReadOnly(self, state): _ConditionWidget.setReadOnly(self, state) self._cb_unit.setEnabled(not state) def isReadOnly(self): return _ConditionWidget.isReadOnly(self) and \ not self._cb_unit.isEnabled()
class DetectorSpectrometerWidget(_DetectorWidget): def __init__(self, parent=None): _DetectorWidget.__init__(self, DetectorSpectrometer, parent) def _init_ui(self): # Widgets self._txt_channel_count = NumericalAttributeLineEdit(self.CLASS.channel_count) self._txt_channel_count.setFormat('{0:d}') self._wdg_calibration = CalibrationWidget() self._cb_collection_mode = QComboBox() self._cb_collection_mode.addItems([None] + list(_COLLECTION_MODES)) # Layout layout = _DetectorWidget._init_ui(self) layout.insertRow(0, '<i>Channel count</i>', self._txt_channel_count) layout.insertRow(1, '<i>Calibration</i>', self._wdg_calibration) layout.addRow('Collection mode', self._cb_collection_mode) # Signals self._txt_channel_count.textEdited.connect(self.edited) self._wdg_calibration.edited.connect(self.edited) self._cb_collection_mode.currentIndexChanged.connect(self.edited) return layout def _create_parameter(self): return self.CLASS(1, CalibrationConstant('Quantity', 'm', 0.0)) def parameter(self, parameter=None): parameter = _DetectorWidget.parameter(self, parameter) parameter.channel_count = self._txt_channel_count.text() parameter.calibration = self._wdg_calibration.calibration() parameter.collection_mode = self._cb_collection_mode.currentText() return parameter def setParameter(self, condition): _DetectorWidget.setParameter(self, condition) self._txt_channel_count.setText(condition.channel_count) self._wdg_calibration.setCalibration(condition.calibration) self._cb_collection_mode.setCurrentIndex(self._cb_collection_mode.findText(condition.collection_mode)) def setReadOnly(self, state): _DetectorWidget.setReadOnly(self, state) self._txt_channel_count.setReadOnly(state) self._wdg_calibration.setReadOnly(state) self._cb_collection_mode.setEnabled(not state) def isReadOnly(self): return _DetectorWidget.isReadOnly(self) and \ self._txt_channel_count.isReadOnly() and \ self._wdg_calibration.isReadOnly() and \ not self._cb_collection_mode.isEnabled() def hasAcceptableInput(self): return _DetectorWidget.hasAcceptableInput(self) and \ self._txt_channel_count.hasAcceptableInput() and \ self._wdg_calibration.hasAcceptableInput()
class BackgroundIDWidget(_ConditionWidget): def __init__(self, parent=None): _ConditionWidget.__init__(self, BackgroundID, parent) def _init_ui(self): # Controls self._cb_interpolation = QComboBox() self._cb_interpolation.addItems([None] + list(_BACKGROUND_INTERPOLATIONS)) # Layouts layout = _ConditionWidget._init_ui(self) layout.addRow("<i>Interpolation</i>", self._cb_interpolation) # Signals self._cb_interpolation.currentIndexChanged.connect(self.edited) return layout def _create_parameter(self): return self.CLASS(None) def parameter(self, parameter=None): parameter = _ConditionWidget.parameter(self, parameter) parameter.interpolation = self._cb_interpolation return parameter def setParameter(self, condition): _ConditionWidget.setParameter(self, condition) self._cb_interpolation.setCurrentIndex(self._cb_interpolation.findText(condition.interpolation)) def setReadOnly(self, state): _ConditionWidget.setReadOnly(self, state) self._cb_interpolation.setEnabled(not state) def isReadOnly(self): return _ConditionWidget.isReadOnly(self) and \ not self._cb_interpolation.isEnabled() def hasAcceptableInput(self): return _ConditionWidget.hasAcceptableInput(self)
class AcquisitionRasterXYZWidget(_AcquisitionRasterWidget): def __init__(self, parent=None): _AcquisitionRasterWidget.__init__(self, AcquisitionRasterXYZ, parent) def _init_ui(self): # Widgets self._txt_step_count_x = NumericalAttributeLineEdit(self.CLASS.step_count_x) self._txt_step_count_x.setFormat('{0:d}') self._txt_step_count_y = NumericalAttributeLineEdit(self.CLASS.step_count_y) self._txt_step_count_y.setFormat('{0:d}') self._txt_step_count_z = NumericalAttributeLineEdit(self.CLASS.step_count_z) self._txt_step_count_z.setFormat('{0:d}') self._txt_step_size_x = NumericalAttributeLineEdit(self.CLASS.step_size_x) self._txt_step_size_y = NumericalAttributeLineEdit(self.CLASS.step_size_y) self._txt_step_size_z = NumericalAttributeLineEdit(self.CLASS.step_size_z) self._cb_raster_mode_z = QComboBox() self._cb_raster_mode_z.addItems([None] + list(_RASTER_MODES_Z)) self._cb_location = QComboBox() self._cb_location.addItems(list(_POSITION_LOCATIONS)) self._wdg_position = SpecimenPositionWidget(inline=True) # Layouts layout = _AcquisitionRasterWidget._init_ui(self) layout.insertRow(0, '<i>Step count (x)</i>', self._txt_step_count_x) layout.insertRow(1, '<i>Step count (y)</i>', self._txt_step_count_y) layout.insertRow(2, '<i>Step count (z)</i>', self._txt_step_count_z) layout.insertRow(3, 'Step size (x)', self._txt_step_size_x) layout.insertRow(4, 'Step size (y)', self._txt_step_size_y) layout.insertRow(5, 'Step size (z)', self._txt_step_size_z) layout.addRow('Raster mode (z)', self._cb_raster_mode_z) layout.addRow('Position', self._cb_location) layout.addWidget(self._wdg_position) # Signals self._txt_step_count_x.textEdited.connect(self.edited) self._txt_step_count_y.textEdited.connect(self.edited) self._txt_step_count_z.textEdited.connect(self.edited) self._txt_step_size_x.textEdited.connect(self.edited) self._txt_step_size_y.textEdited.connect(self.edited) self._txt_step_size_z.textEdited.connect(self.edited) self._cb_raster_mode_z.currentIndexChanged.connect(self.edited) self._cb_location.currentIndexChanged.connect(self.edited) self._wdg_position.edited.connect(self.edited) return layout def _create_parameter(self): return self.CLASS(1, 1, 1) def parameter(self, parameter=None): parameter = _AcquisitionRasterWidget.parameter(self, parameter) parameter.step_count_x = self._txt_step_count_x.text() parameter.step_count_y = self._txt_step_count_y.text() parameter.step_count_z = self._txt_step_count_z.text() parameter.step_size_x = self._txt_step_size_x.text() parameter.step_size_y = self._txt_step_size_y.text() parameter.step_size_z = self._txt_step_size_z.text() parameter.raster_mode_z = self._cb_raster_mode_z.currentText() parameter.position = (self._wdg_position.condition(), self._cb_location.currentText()) return parameter def setParameter(self, condition): _AcquisitionRasterWidget.setParameter(self, condition) self._txt_step_count_x.setText(condition.step_count_x) self._txt_step_count_y.setText(condition.step_count_y) self._txt_step_count_z.setText(condition.step_count_z) self._txt_step_size_x.setText(condition.step_size_x) self._txt_step_size_y.setText(condition.step_size_y) self._txt_step_size_z.setText(condition.step_size_z) self._cb_raster_mode_z.setCurrentIndex(self._cb_raster_mode_z.findText(condition.raster_mode_z)) position, location = condition.get_position(True) self._cb_location.setCurrentIndex(self._cb_location.findText(location)) if position is not None: self._wdg_position.setParameter(position) def setReadOnly(self, state): _AcquisitionRasterWidget.setReadOnly(self, state) self._txt_step_count_x.setReadOnly(state) self._txt_step_count_y.setReadOnly(state) self._txt_step_count_z.setReadOnly(state) self._txt_step_size_x.setReadOnly(state) self._txt_step_size_y.setReadOnly(state) self._txt_step_size_z.setReadOnly(state) self._cb_raster_mode_z.setEnabled(not state) self._cb_location.setEnabled(not state) self._wdg_position.setReadOnly(state) def isReadOnly(self): return _AcquisitionRasterWidget.isReadOnly(self) and \ self._txt_step_count_x.isReadOnly() and \ self._txt_step_count_y.isReadOnly() and \ self._txt_step_count_z.isReadOnly() and \ self._txt_step_size_x.isReadOnly() and \ self._txt_step_size_y.isReadOnly() and \ self._txt_step_size_z.isReadOnly() and \ not self._cb_raster_mode_z.isEnabled() and \ not self._cb_location.isEnabled() and \ self._wdg_position.isReadOnly() def hasAcceptableInput(self): return _AcquisitionRasterWidget.hasAcceptableInput(self) and \ self._txt_step_count_x.hasAcceptableInput() and \ self._txt_step_count_y.hasAcceptableInput() and \ self._txt_step_count_z.hasAcceptableInput() and \ self._txt_step_size_x.hasAcceptableInput() and \ self._txt_step_size_y.hasAcceptableInput() and \ self._txt_step_size_z.hasAcceptableInput() and \ self._wdg_position.hasAcceptableInput()
class CalibrationWidget(ParameterWidget): def __init__(self, parent=None): ParameterWidget.__init__(self, _Calibration, parent) def _init_ui(self): # Widgets self._combobox = QComboBox() self._stack = QStackedWidget() # Layouts layout = ParameterWidget._init_ui(self) layout.addRow(self._combobox) layout.addRow(self._stack) # Register classes self._widget_indexes = {} for entry_point in iter_entry_points('pyhmsa_gui.spec.condition.calibration'): widget_class = entry_point.load(require=False) widget = widget_class() self._combobox.addItem(widget.accessibleName().title()) self._widget_indexes[widget.CLASS] = self._stack.addWidget(widget) widget.edited.connect(self.edited) # Signals self._combobox.currentIndexChanged.connect(self._on_combo_box) self._combobox.currentIndexChanged.connect(self.edited) return layout def _on_combo_box(self): # Old values oldwidget = self._stack.currentWidget() try: quantity = oldwidget._txt_quantity.text() except: quantity = None try: unit = oldwidget._txt_unit.text() except: unit = None # Change widget current_index = self._combobox.currentIndex() self._stack.setCurrentIndex(current_index) # Update values widget = self._stack.currentWidget() widget._txt_quantity.setText(quantity) widget._txt_unit.setText(unit) def parameter(self): return self._stack.currentWidget().calibration() def setParameter(self, calibration): index = self._widget_indexes[type(calibration)] self._combobox.setCurrentIndex(index) self._stack.setCurrentIndex(index) self._stack.currentWidget().setParameter(calibration) def calibration(self): return self.parameter() def setCalibration(self, calibration): self.setParameter(calibration) def setReadOnly(self, state): ParameterWidget.setReadOnly(self, state) self._combobox.setEnabled(not state) self._stack.currentWidget().setReadOnly(state) def isReadOnly(self): return ParameterWidget.isReadOnly(self) and \ not self._combobox.isEnabled() and \ self._stack.currentWidget().isReadOnly() def hasAcceptableInput(self): return ParameterWidget.hasAcceptableInput(self) and \ self._stack.currentWidget().hasAcceptableInput()
class DetectorSpectrometerXEDSWidget(DetectorSpectrometerWidget): def __init__(self, parent=None): _DetectorWidget.__init__(self, DetectorSpectrometerXEDS, parent) def _init_ui(self): # Widgets self._cb_technology = QComboBox() self._cb_technology.addItems([None] + list(_XEDS_TECHNOLOGIES)) self._txt_nominal_throughput = NumericalAttributeLineEdit(self.CLASS.nominal_throughput) self._txt_time_constant = NumericalAttributeLineEdit(self.CLASS.time_constant) self._txt_strobe_rate = NumericalAttributeLineEdit(self.CLASS.strobe_rate) self._wdg_window = WindowWidget() # Layout form = DetectorSpectrometerWidget._init_ui(self) form.addRow('Technology', self._cb_technology) form.addRow('Nominal throughput', self._txt_nominal_throughput) form.addRow('Time constant', self._txt_time_constant) form.addRow('Strobe rate', self._txt_strobe_rate) form.addRow('Window', self._wdg_window) # Signals self._cb_technology.currentIndexChanged.connect(self.edited) self._txt_nominal_throughput.textEdited.connect(self.edited) self._txt_time_constant.textEdited.connect(self.edited) self._txt_strobe_rate.textEdited.connect(self.edited) self._wdg_window.edited.connect(self.edited) return form def _create_parameter(self): return self.CLASS(1, CalibrationConstant('Quantity', 'm', 0.0)) def parameter(self, parameter=None): parameter = DetectorSpectrometerWidget.parameter(self, parameter) parameter.technology = self._cb_technology.currentText() parameter.nominal_throughput = self._txt_nominal_throughput.text() parameter.time_constant = self._txt_time_constant.text() parameter.strobe_rate = self._txt_strobe_rate.text() parameter.window = self._wdg_window.window() return parameter def setParameter(self, condition): DetectorSpectrometerWidget.setParameter(self, condition) self._cb_technology.setCurrentIndex(self._cb_technology.findText(condition.technology)) self._txt_nominal_throughput.setText(condition.nominal_throughput) self._txt_time_constant.setText(condition.time_constant) self._txt_strobe_rate.setText(condition.strobe_rate) self._wdg_window.setWindow(condition.window) def setReadOnly(self, state): DetectorSpectrometerWidget.setReadOnly(self, state) self._cb_technology.setEnabled(not state) self._txt_nominal_throughput.setReadOnly(state) self._txt_time_constant.setReadOnly(state) self._txt_strobe_rate.setReadOnly(state) self._wdg_window.setReadOnly(state) def isReadOnly(self): return DetectorSpectrometerWidget.isReadOnly(self) and \ not self._cb_technology.isEnabled() and \ self._txt_nominal_throughput.isReadOnly() and \ self._txt_time_constant.isReadOnly() and \ self._txt_strobe_rate.isReadOnly() and \ self._wdg_window.isReadOnly() def hasAcceptableInput(self): return DetectorSpectrometerWidget.hasAcceptableInput(self) and \ self._txt_nominal_throughput.hasAcceptableInput() and \ self._txt_time_constant.hasAcceptableInput() and \ self._txt_strobe_rate.hasAcceptableInput() and \ self._wdg_window.hasAcceptableInput()
class _DetectorWidget(_ConditionWidget): def _init_ui(self): # Widgets self._cb_signal_type = QComboBox() self._cb_signal_type.addItems([None] + list(_SIGNAL_TYPES)) self._txt_manufacturer = TextAttributeLineEdit(self.CLASS.manufacturer) self._txt_model = TextAttributeLineEdit(self.CLASS.model) self._txt_serial_number = TextAttributeLineEdit(self.CLASS.serial_number) self._txt_measurement_unit = UnitAttributeLineEdit(self.CLASS.measurement_unit) self._txt_elevation = NumericalAttributeLineEdit(self.CLASS.elevation) self._txt_azimuth = NumericalAttributeLineEdit(self.CLASS.azimuth) self._txt_distance = NumericalAttributeLineEdit(self.CLASS.distance) self._txt_area = NumericalAttributeLineEdit(self.CLASS.area) self._txt_solid_angle = NumericalAttributeLineEdit(self.CLASS.solid_angle) self._txt_semi_angle = NumericalAttributeLineEdit(self.CLASS.semi_angle) self._txt_temperature = NumericalAttributeLineEdit(self.CLASS.temperature) # Layout layout = _ConditionWidget._init_ui(self) layout.addRow('Type of signal', self._cb_signal_type) layout.addRow('Manufacturer', self._txt_manufacturer) layout.addRow('Model', self._txt_model) layout.addRow('Serial number', self._txt_serial_number) layout.addRow('Measurement unit', self._txt_measurement_unit) layout.addRow('Elevation', self._txt_elevation) layout.addRow('Azimuth', self._txt_azimuth) layout.addRow('Distance', self._txt_distance) layout.addRow('Area', self._txt_area) layout.addRow('Solid angle', self._txt_solid_angle) layout.addRow('Semi angle', self._txt_semi_angle) layout.addRow('Temperature', self._txt_temperature) # Signals self._cb_signal_type.currentIndexChanged.connect(self.edited) self._txt_manufacturer.textEdited.connect(self.edited) self._txt_model.textEdited.connect(self.edited) self._txt_serial_number.textEdited.connect(self.edited) self._txt_measurement_unit.textEdited.connect(self.edited) self._txt_elevation.textEdited.connect(self.edited) self._txt_azimuth.textEdited.connect(self.edited) self._txt_distance.textEdited.connect(self.edited) self._txt_area.textEdited.connect(self.edited) self._txt_solid_angle.textEdited.connect(self.edited) self._txt_semi_angle.textEdited.connect(self.edited) self._txt_temperature.textEdited.connect(self.edited) return layout def parameter(self, parameter=None): parameter = _ConditionWidget.parameter(self, parameter) parameter.signal_type = self._cb_signal_type.currentText() parameter.manufacturer = self._txt_manufacturer.text() parameter.model = self._txt_model.text() parameter.serial_number = self._txt_serial_number.text() parameter.measurement_unit = self._txt_measurement_unit.text() parameter.elevation = self._txt_elevation.text() parameter.azimuth = self._txt_azimuth.text() parameter.distance = self._txt_distance.text() parameter.area = self._txt_area.text() parameter.solid_angle = self._txt_solid_angle.text() parameter.semi_angle = self._txt_semi_angle.text() parameter.temperature = self._txt_temperature.text() return parameter def setParameter(self, condition): _ConditionWidget.setParameter(self, condition) self._cb_signal_type.setCurrentIndex(self._cb_signal_type.findText(condition.signal_type)) self._txt_manufacturer.setText(condition.manufacturer) self._txt_model.setText(condition.model) self._txt_serial_number.setText(condition.serial_number) self._txt_measurement_unit.setText(condition.measurement_unit) self._txt_elevation.setText(condition.elevation) self._txt_azimuth.setText(condition.azimuth) self._txt_distance.setText(condition.distance) self._txt_area.setText(condition.area) self._txt_solid_angle.setText(condition.solid_angle) self._txt_semi_angle.setText(condition.semi_angle) self._txt_temperature.setText(condition.temperature) def setReadOnly(self, state): _ConditionWidget.setReadOnly(self, state) self._cb_signal_type.setEnabled(not state) self._txt_manufacturer.setReadOnly(state) self._txt_model.setReadOnly(state) self._txt_serial_number.setReadOnly(state) self._txt_measurement_unit.setReadOnly(state) self._txt_elevation.setReadOnly(state) self._txt_azimuth.setReadOnly(state) self._txt_distance.setReadOnly(state) self._txt_area.setReadOnly(state) self._txt_solid_angle.setReadOnly(state) self._txt_semi_angle.setReadOnly(state) self._txt_temperature.setReadOnly(state) def isReadOnly(self): return _ConditionWidget.isReadOnly(self) and \ not self._cb_signal_type.isEnabled() and \ self._txt_manufacturer.isReadOnly() and \ self._txt_model.isReadOnly() and \ self._txt_serial_number.isReadOnly() and \ self._txt_measurement_unit.isReadOnly() and \ self._txt_elevation.isReadOnly() and \ self._txt_azimuth.isReadOnly() and \ self._txt_distance.isReadOnly() and \ self._txt_area.isReadOnly() and \ self._txt_solid_angle.isReadOnly() and \ self._txt_semi_angle.isReadOnly() and \ self._txt_temperature.isReadOnly() def hasAcceptableInput(self): return _ConditionWidget.hasAcceptableInput(self) and \ self._txt_manufacturer.hasAcceptableInput() and \ self._txt_model.hasAcceptableInput() and \ self._txt_serial_number.hasAcceptableInput() and \ self._txt_measurement_unit.hasAcceptableInput() and \ self._txt_elevation.hasAcceptableInput() and \ self._txt_azimuth.hasAcceptableInput() and \ self._txt_distance.hasAcceptableInput() and \ self._txt_area.hasAcceptableInput() and \ self._txt_solid_angle.hasAcceptableInput() and \ self._txt_semi_angle.hasAcceptableInput() and \ self._txt_temperature.hasAcceptableInput()
class PulseHeightAnalyserWidget(ParameterWidget): def __init__(self, parent=None): ParameterWidget.__init__(self, PulseHeightAnalyser, parent) def _init_ui(self): # Widgets self._txt_bias = NumericalAttributeLineEdit(self.CLASS.bias) self._txt_gain = NumericalAttributeLineEdit(self.CLASS.gain) self._txt_base_level = NumericalAttributeLineEdit(self.CLASS.base_level) self._txt_window = NumericalAttributeLineEdit(self.CLASS.window) self._cb_mode = QComboBox() self._cb_mode.addItems([None] + list(_PHA_MODES)) # Layouts layout = ParameterWidget._init_ui(self) layout.addRow('Bias', self._txt_bias) layout.addRow('Gain', self._txt_gain) layout.addRow('Base level', self._txt_base_level) layout.addRow('Window', self._txt_window) layout.addRow('Mode', self._cb_mode) # Signals self._txt_bias.textEdited.connect(self.edited) self._txt_gain.textEdited.connect(self.edited) self._txt_base_level.textEdited.connect(self.edited) self._txt_window.textEdited.connect(self.edited) self._cb_mode.currentIndexChanged.connect(self.edited) return layout def parameter(self, parameter=None): parameter = ParameterWidget.parameter(self, parameter) parameter.bias = self._txt_bias.text() parameter.gain = self._txt_gain.text() parameter.base_level = self._txt_base_level.text() parameter.window = self._txt_window.text() parameter.mode = self._cb_mode.currentText() return parameter def setParameter(self, parameter): ParameterWidget.setParameter(self, parameter) self._txt_bias.setText(parameter.bias) self._txt_gain.setText(parameter.gain) self._txt_base_level.setText(parameter.base_level) self._txt_window.setText(parameter.window) self._cb_mode.setCurrentIndex(self._cb_mode.findText(parameter.mode)) def pulseHeightAnalyser(self): return self.parameter() def setPulseHeightAnalyser(self, pha): self.setParameter(pha) pha = pulseHeightAnalyser setPha = setPulseHeightAnalyser def setReadOnly(self, state): ParameterWidget.setReadOnly(self, state) self._txt_bias.setReadOnly(state) self._txt_gain.setReadOnly(state) self._txt_base_level.setReadOnly(state) self._txt_window.setReadOnly(state) self._cb_mode.setEnabled(not state) def isReadOnly(self): return ParameterWidget.isReadOnly(self) and \ self._txt_bias.isReadOnly() and \ self._txt_gain.isReadOnly() and \ self._txt_base_level.isReadOnly() and \ self._txt_window.isReadOnly() and \ not self._cb_mode.isEnabled() def hasAcceptableInput(self): return ParameterWidget.hasAcceptableInput(self) and \ self._txt_bias.hasAcceptableInput() and \ self._txt_gain.hasAcceptableInput() and \ self._txt_base_level.hasAcceptableInput() and \ self._txt_window.hasAcceptableInput()