in src/open_vp_cal/widgets/project_settings_widget.py [0:0]
def __init__(self,
project_settings_view,
led_settings_view,
led_analysis_settings_view,
plate_settings_view, model, parent=None):
"""
Constructs all the necessary attributes for the Controller object.
Parameters
----------
project_settings_view: View
instance of the View class
model: Model
instance of the Model class
parent: QWidget, optional
parent widget (default is None)
"""
super().__init__(parent)
self.project_settings_view = project_settings_view
self.led_settings_view = led_settings_view
self.led_analysis_settings_view = led_analysis_settings_view
self.plate_settings_view = plate_settings_view
self.model = model
self.reference_wall_widget = self.plate_settings_view.reference_wall
self.match_reference_wall_widget = self.plate_settings_view.match_reference_wall
self.use_white_point_offset_widget = self.plate_settings_view.use_white_point_offset
self.white_point_offset_source_widget = self.plate_settings_view.white_point_offset_source
self.white_point_offset_source_button_widget = self.plate_settings_view.white_point_offset_source_button
self.reference_wall_widget.setEnabled(
self.match_reference_wall_widget.checkState() == Qt.Checked
)
# Connect view signals to model slots
self.led_settings_view.target_gamut.currentIndexChanged.connect(
lambda: self.model.set_data(
constants.LedWallSettingsKeys.TARGET_GAMUT, self.led_settings_view.target_gamut.currentText())
)
self.led_settings_view.target_eotf.currentIndexChanged.connect(
lambda: self.model.set_data(
constants.LedWallSettingsKeys.TARGET_EOTF, self.led_settings_view.target_eotf.currentText())
)
self.led_settings_view.target_max_lum_nits.valueChanged.connect(
lambda: self.model.set_data(
constants.LedWallSettingsKeys.TARGET_MAX_LUM_NITS, self.led_settings_view.target_max_lum_nits.value())
)
self.led_settings_view.primaries_saturation.valueChanged.connect(
lambda: self.model.set_data(
constants.LedWallSettingsKeys.PRIMARIES_SATURATION, self.led_settings_view.primaries_saturation.value())
)
self.led_settings_view.num_grey_patches.valueChanged.connect(
lambda: self.model.set_data(
constants.LedWallSettingsKeys.NUM_GREY_PATCHES, self.led_settings_view.num_grey_patches.value()))
self.project_settings_view.frames_per_patch.valueChanged.connect(
lambda: self.model.set_data(
constants.ProjectSettingsKeys.FRAMES_PER_PATCH, self.project_settings_view.frames_per_patch.value())
)
self.project_settings_view.frame_rate.currentIndexChanged.connect(
lambda: self.model.set_data(
constants.ProjectSettingsKeys.FRAME_RATE, float(self.project_settings_view.frame_rate.currentText()))
)
self.project_settings_view.export_lut_for_aces_cct.stateChanged.connect(
lambda: self.model.set_data(
constants.ProjectSettingsKeys.EXPORT_LUT_FOR_ACES_CCT,
self.project_settings_view.export_lut_for_aces_cct.isChecked())
)
self.project_settings_view.export_lut_for_aces_cct_in_target_out.stateChanged.connect(
lambda: self.model.set_data(
constants.ProjectSettingsKeys.EXPORT_LUT_FOR_ACES_CCT_IN_TARGET_OUT,
self.project_settings_view.export_lut_for_aces_cct_in_target_out.isChecked())
)
self.led_analysis_settings_view.export_lut_for_aces_cct.stateChanged.connect(
lambda: self.model.set_data(
constants.ProjectSettingsKeys.EXPORT_LUT_FOR_ACES_CCT,
self.led_analysis_settings_view.export_lut_for_aces_cct.isChecked())
)
self.led_analysis_settings_view.export_lut_for_aces_cct_in_target_out.stateChanged.connect(
lambda: self.model.set_data(
constants.ProjectSettingsKeys.EXPORT_LUT_FOR_ACES_CCT_IN_TARGET_OUT,
self.led_analysis_settings_view.export_lut_for_aces_cct_in_target_out.isChecked())
)
self.project_settings_view.output_folder.textChanged.connect(
lambda: self.model.set_data(
constants.ProjectSettingsKeys.OUTPUT_FOLDER, self.project_settings_view.output_folder.text()))
self.project_settings_view.file_format.currentIndexChanged.connect(
lambda: self.model.set_data(
constants.ProjectSettingsKeys.FILE_FORMAT, self.project_settings_view.file_format.currentText()))
self.project_settings_view.resolution_width.valueChanged.connect(
lambda: self.model.set_data(
constants.ProjectSettingsKeys.RESOLUTION_WIDTH, self.project_settings_view.resolution_width.value()))
self.project_settings_view.resolution_height.valueChanged.connect(
lambda: self.model.set_data(
constants.ProjectSettingsKeys.RESOLUTION_HEIGHT, self.project_settings_view.resolution_height.value()))
self.plate_settings_view.input_plate_gamut.currentIndexChanged.connect(
lambda: self.model.set_data(
constants.LedWallSettingsKeys.INPUT_PLATE_GAMUT, self.plate_settings_view.input_plate_gamut.currentText()))
self.plate_settings_view.native_camera_gamut.currentIndexChanged.connect(
lambda: self.model.set_data(constants.LedWallSettingsKeys.NATIVE_CAMERA_GAMUT,
self.plate_settings_view.native_camera_gamut.currentText()))
self.plate_settings_view.match_reference_wall.stateChanged.connect(
lambda: self.model.set_data(
constants.LedWallSettingsKeys.MATCH_REFERENCE_WALL,
self.plate_settings_view.match_reference_wall.isChecked()))
self.plate_settings_view.reference_wall.currentIndexChanged.connect(
lambda: self.model.set_data(
constants.LedWallSettingsKeys.REFERENCE_WALL, self.plate_settings_view.reference_wall.currentText()))
self.plate_settings_view.use_white_point_offset.stateChanged.connect(
lambda: self.model.set_data(
constants.LedWallSettingsKeys.USE_WHITE_POINT_OFFSET,
self.plate_settings_view.use_white_point_offset.isChecked()))
self.plate_settings_view.white_point_offset_source.textChanged.connect(
lambda: self.model.set_data(
constants.LedWallSettingsKeys.WHITE_POINT_OFFSET_SOURCE,
self.plate_settings_view.white_point_offset_source.text()))
self.led_analysis_settings_view.target_to_screen_cat.currentIndexChanged.connect(
lambda: self.model.set_data(constants.LedWallSettingsKeys.TARGET_TO_SCREEN_CAT,
self.led_analysis_settings_view.target_to_screen_cat.currentText()))
self.led_analysis_settings_view.reference_to_target_cat.currentIndexChanged.connect(
lambda: self.model.set_data(constants.LedWallSettingsKeys.REFERENCE_TO_TARGET_CAT,
self.led_analysis_settings_view.reference_to_target_cat.currentText()))
self.plate_settings_view.auto_wb_source.stateChanged.connect(
lambda: self.model.set_data(constants.LedWallSettingsKeys.AUTO_WB_SOURCE,
self.plate_settings_view.auto_wb_source.isChecked()))
self.led_analysis_settings_view.enable_gamut_compression.stateChanged.connect(
lambda: self.model.set_data(constants.LedWallSettingsKeys.ENABLE_GAMUT_COMPRESSION,
self.led_analysis_settings_view.enable_gamut_compression.isChecked()))
self.led_analysis_settings_view.avoid_clipping.stateChanged.connect(
lambda: self.model.set_data(constants.LedWallSettingsKeys.AVOID_CLIPPING,
self.led_analysis_settings_view.avoid_clipping.isChecked()))
self.led_analysis_settings_view.enable_eotf_correction.stateChanged.connect(
lambda: self.model.set_data(constants.LedWallSettingsKeys.ENABLE_EOTF_CORRECTION,
self.led_analysis_settings_view.enable_eotf_correction.isChecked()))
self.led_analysis_settings_view.calculation_order.currentIndexChanged.connect(
lambda: self.model.set_data(constants.LedWallSettingsKeys.CALCULATION_ORDER,
self.led_analysis_settings_view.calculation_order.currentText()))
self.project_settings_view.custom_logo_path.textChanged.connect(
lambda: self.model.set_data(constants.ProjectSettingsKeys.CUSTOM_LOGO_PATH,
self.project_settings_view.custom_logo_path.text()))
self.led_settings_view.gamut_dialog_button.clicked.connect(self.open_custom_gamut_dialog)
self.project_settings_view.output_folder_button.clicked.connect(self.open_folder_select_dialog)
self.project_settings_view.custom_logo_button.clicked.connect(self.open_logo_select_dialog)
self.plate_settings_view.white_point_offset_source_button.clicked.connect(
self.open_white_point_source_dialog)
self.match_reference_wall_widget.stateChanged.connect(self.on_match_reference_wall_changed)
self.model.led_wall_removed.connect(self.on_led_wall_removed)
self.model.led_wall_added.connect(self.on_led_wall_added)
self.model.register_custom_gamut_from_load.connect(self.add_custom_gamut_to_ui)
# Connect model signals to view slots
self.model.data_changed.connect(self.on_model_data_changed)
for view in self.get_views():
for key, widget in view.__dict__.items():
self.update_widgets(key, widget)
if not self.model.current_wall:
for view in self.get_views():
view.disable()