def __init__(self, preferences: Preferences): self._master_combine_method: int = preferences.get_master_combine_method( ) self._min_max_number_clipped_per_end: int = preferences.get_min_max_number_clipped_per_end( ) self._sigma_clip_threshold: float = preferences.get_sigma_clip_threshold( ) self._input_file_disposition: int = preferences.get_input_file_disposition( ) self._disposition_subfolder_name: str = preferences.get_disposition_subfolder_name( ) self._precalibration_type: int = preferences.get_precalibration_type() self._precalibration_pedestal: int = preferences.get_precalibration_pedestal( ) self._precalibration_fixed_path: str = preferences.get_precalibration_fixed_path( ) self._precalibration_auto_directory: str = preferences.get_precalibration_auto_directory( ) self._auto_directory_recursive: bool = preferences.get_auto_directory_recursive( ) self._auto_directory_bias_only: bool = preferences.get_auto_directory_bias_only( ) self._group_by_size: bool = preferences.get_group_by_size() self._group_by_exposure: bool = preferences.get_group_by_exposure() self._group_by_temperature: bool = preferences.get_group_by_temperature( ) self._exposure_group_bandwidth: float = preferences.get_exposure_group_bandwidth( ) self._temperature_group_bandwidth: float = preferences.get_temperature_group_bandwidth( ) self._ignore_file_type: bool = False self._ignore_groups_fewer_than: bool = preferences.get_ignore_groups_fewer_than( ) self._minimum_group_size: int = preferences.get_minimum_group_size()
def __init__(self, preferences: Preferences): """ Create data model from given preferences object. This also lists all the fetch/settable values :param preferences: Program preferences to establish model's default values """ self._master_combine_method: int = preferences.get_master_combine_method( ) self._min_max_number_clipped_per_end: int = preferences.get_min_max_number_clipped_per_end( ) self._sigma_clip_threshold: float = preferences.get_sigma_clip_threshold( ) self._input_file_disposition: int = preferences.get_input_file_disposition( ) self._disposition_subfolder_name: str = preferences.get_disposition_subfolder_name( ) self._precalibration_type: int = preferences.get_precalibration_type() self._precalibration_pedestal: int = preferences.get_precalibration_pedestal( ) self._precalibration_fixed_path: str = preferences.get_precalibration_fixed_path( ) self._precalibration_auto_directory: str = preferences.get_precalibration_auto_directory( ) self._auto_directory_recursive: bool = preferences.get_auto_directory_recursive( ) self._auto_directory_bias_only: bool = preferences.get_auto_directory_bias_only( ) self._group_by_size: bool = preferences.get_group_by_size() self._group_by_temperature: bool = preferences.get_group_by_temperature( ) self._group_by_filter: bool = preferences.get_group_by_filter() self._temperature_group_bandwidth: float = preferences.get_temperature_group_bandwidth( ) self._ignore_file_type: bool = False self._ignore_groups_fewer_than: bool = preferences.get_ignore_groups_fewer_than( ) self._minimum_group_size: int = preferences.get_minimum_group_size() self._display_average_adus: bool = preferences.get_display_average_adus( ) self._display_auto_select_results: bool = preferences.get_display_auto_select_results( )
def set_up_ui(self, preferences: Preferences): """Set UI fields in the dialog from the given preferences settings""" self._preferences = preferences # Fill in the UI fields from the preferences object # Disable algorithm text fields, then re-enable with the corresponding radio button self.ui.minMaxNumDropped.setEnabled(False) self.ui.sigmaThreshold.setEnabled(False) # Combination algorithm radio buttons algorithm = preferences.get_master_combine_method() if algorithm == Constants.COMBINE_MEAN: self.ui.combineMeanRB.setChecked(True) elif algorithm == Constants.COMBINE_MEDIAN: self.ui.combineMedianRB.setChecked(True) elif algorithm == Constants.COMBINE_MINMAX: self.ui.combineMinMaxRB.setChecked(True) else: assert (algorithm == Constants.COMBINE_SIGMA_CLIP) self.ui.combineSigmaRB.setChecked(True) self.ui.minMaxNumDropped.setText( str(preferences.get_min_max_number_clipped_per_end())) self.ui.sigmaThreshold.setText( str(preferences.get_sigma_clip_threshold())) # Disposition of input files disposition = preferences.get_input_file_disposition() if disposition == Constants.INPUT_DISPOSITION_SUBFOLDER: self.ui.dispositionSubFolderRB.setChecked(True) else: assert (disposition == Constants.INPUT_DISPOSITION_NOTHING) self.ui.dispositionNothingRB.setChecked(True) self.ui.subFolderName.setText( preferences.get_disposition_subfolder_name()) # Precalibration information precalibration_option = preferences.get_precalibration_type() if precalibration_option == Constants.CALIBRATION_FIXED_FILE: self.ui.FixedPreCalFileRB.setChecked(True) elif precalibration_option == Constants.CALIBRATION_NONE: self.ui.noPreClalibrationRB.setChecked(True) elif precalibration_option == Constants.CALIBRATION_AUTO_DIRECTORY: self.ui.autoPreCalibrationRB.setChecked(True) else: assert precalibration_option == Constants.CALIBRATION_PEDESTAL self.ui.fixedPedestalRB.setChecked(True) self.ui.fixedPedestalAmount.setText( str(preferences.get_precalibration_pedestal())) self.ui.precalibrationPathDisplay.setText( os.path.basename(preferences.get_precalibration_fixed_path())) self.ui.autoDirectoryName.setText( os.path.basename(preferences.get_precalibration_auto_directory())) self.ui.autoRecursive.setChecked( preferences.get_auto_directory_recursive()) self.ui.autoBiasOnly.setChecked( preferences.get_auto_directory_bias_only()) # Grouping information self.ui.groupBySizeCB.setChecked(preferences.get_group_by_size()) self.ui.groupByExposureCB.setChecked( preferences.get_group_by_exposure()) self.ui.groupByTemperatureCB.setChecked( preferences.get_group_by_temperature()) self.ui.ignoreSmallGroupsCB.setChecked( preferences.get_ignore_groups_fewer_than()) self.ui.exposureGroupBandwidth.setText( f"{preferences.get_exposure_group_bandwidth()}") self.ui.temperatureGroupBandwidth.setText( f"{preferences.get_temperature_group_bandwidth()}") self.ui.minimumGroupSize.setText( str(preferences.get_minimum_group_size())) # Set up responders for buttons and fields self.ui.combineMeanRB.clicked.connect(self.combine_mean_button_clicked) self.ui.combineMedianRB.clicked.connect( self.combine_median_button_clicked) self.ui.combineMinMaxRB.clicked.connect( self.combine_minmax_button_clicked) self.ui.combineSigmaRB.clicked.connect( self.combine_sigma_button_clicked) self.ui.dispositionNothingRB.clicked.connect( self.disposition_nothing_clicked) self.ui.dispositionSubFolderRB.clicked.connect( self.disposition_sub_folder_clicked) self.ui.noPreClalibrationRB.clicked.connect( self.precalibration_none_clicked) self.ui.fixedPedestalRB.clicked.connect( self.precalibration_pedestal_clicked) self.ui.FixedPreCalFileRB.clicked.connect( self.precalibration_file_clicked) self.ui.autoPreCalibrationRB.clicked.connect( self.precalibration_auto_clicked) self.ui.selectPreCalFile.clicked.connect( self.select_precalibration_file_clicked) self.ui.setAutoDirectory.clicked.connect( self.select_auto_calibration_directory_clicked) self.ui.groupBySizeCB.clicked.connect(self.group_by_size_clicked) self.ui.groupByExposureCB.clicked.connect( self.group_by_exposure_clicked) self.ui.groupByTemperatureCB.clicked.connect( self.group_by_temperature_clicked) self.ui.ignoreSmallGroupsCB.clicked.connect( self.ignore_small_groups_clicked) self.ui.autoRecursive.clicked.connect(self.auto_recursive_clicked) self.ui.autoBiasOnly.clicked.connect(self.auto_bias_only_clicked) self.ui.closeButton.clicked.connect(self.close_button_clicked) # Input fields self.ui.minMaxNumDropped.editingFinished.connect( self.min_max_drop_changed) self.ui.sigmaThreshold.editingFinished.connect( self.sigma_threshold_changed) self.ui.subFolderName.editingFinished.connect( self.sub_folder_name_changed) self.ui.fixedPedestalAmount.editingFinished.connect( self.pedestal_amount_changed) self.ui.exposureGroupBandwidth.editingFinished.connect( self.exposure_group_bandwidth_changed) self.ui.temperatureGroupBandwidth.editingFinished.connect( self.temperature_group_bandwidth_changed) self.ui.minimumGroupSize.editingFinished.connect( self.minimum_group_size_changed) # Tiny fonts in path display fields tiny_font = self.ui.precalibrationPathDisplay.font() tiny_font.setPointSize(10) self.ui.precalibrationPathDisplay.setFont(tiny_font) self.ui.autoDirectoryName.setFont(tiny_font) self.enableFields()