def init_models(self): CreateTaskBase.init_models(self) self.xrf_spectrum_model = queue_model_objects.XRFSpectrum() self._path_template.start_num = 1 self._path_template.num_files = 1 self._path_template.suffix = "raw" self._path_template.compression = False
def single_item_selection(self, tree_item): CreateTaskBase.single_item_selection(self, tree_item) self.setDisabled(True) if isinstance(tree_item, queue_item.SampleQueueItem): self._xray_imaging_parameters = copy.deepcopy( self._xray_imaging_parameters) self._xray_imaging_parameters_widget.update_data_model( self._xray_imaging_parameters) self._xray_imaging_parameters_widget.set_detector_distance( HWR.beamline.detector.distance.get_value()) self.setDisabled(False) self._xray_imaging_parameters_widget.enable_distance_tools(True) elif isinstance(tree_item, queue_item.BasketQueueItem): self.setDisabled(False) self._xray_imaging_parameters_widget.enable_distance_tools(True) elif isinstance(tree_item, queue_item.XrayImagingQueueItem): data_model = tree_item.get_model() self._path_template = data_model.get_path_template() self._data_path_widget.update_data_model(self._path_template) self._acquisition_parameters = data_model.acquisitions[ 0].acquisition_parameters self._acq_widget.update_data_model(self._acquisition_parameters, self._path_template) self._xray_imaging_parameters = data_model.xray_imaging_parameters self._xray_imaging_parameters_widget.update_data_model( self._xray_imaging_parameters) self.setDisabled(False) self._xray_imaging_parameters_widget.enable_distance_tools(False)
def init_models(self): CreateTaskBase.init_models(self) self.enery_scan = queue_model_objects.EnergyScan() self._path_template.start_num = 1 self._path_template.num_files = 1 self._path_template.suffix = "raw" self._path_template.compression = False
def init_models(self): CreateTaskBase.init_models(self) self._xray_imaging_parameters = queue_model_objects.XrayImagingParameters( ) self._acquisition_parameters = ( HWR.beamline.get_default_acquisition_parameters("imaging")) self._path_template.suffix = "tiff"
def __init__(self, parent=None, name=None, fl=0): CreateTaskBase.__init__( self, parent, name, qt_import.Qt.WindowFlags(fl), "Standard" ) if not name: self.setObjectName("create_discrete_widget") # Internal variables -------------------------------------------------- self.init_models() # Graphic elements ---------------------------------------------------- self._acq_widget = AcquisitionWidget( self, "acquisition_widget", layout="vertical", acq_params=self._acquisition_parameters, path_template=self._path_template, ) self._data_path_widget = DataPathWidget( self, "create_dc_path_widget", data_model=self._path_template, layout="vertical", ) self._processing_widget = ProcessingWidget( self, data_model=self._processing_parameters ) # Layout -------------------------------------------------------------- _main_vlayout = qt_import.QVBoxLayout(self) _main_vlayout.addWidget(self._acq_widget) _main_vlayout.addWidget(self._data_path_widget) _main_vlayout.addWidget(self._processing_widget) _main_vlayout.addStretch(0) _main_vlayout.setSpacing(6) _main_vlayout.setContentsMargins(2, 2, 2, 2) # SizePolicies -------------------------------------------------------- # Qt signal/slot connections ------------------------------------------ self._acq_widget.acqParametersChangedSignal.connect(self.acq_parameters_changed) self._data_path_widget.pathTemplateChangedSignal.connect( self.path_template_changed ) self._acq_widget.madEnergySelectedSignal.connect(self.mad_energy_selected) self._processing_widget.enableProcessingSignal.connect( self._run_processing_toggled ) # Other --------------------------------------------------------------- self._processing_widget.processing_widget.run_online_processing_cbox.\ setChecked(HWR.beamline.run_online_processing)
def init_models(self): CreateTaskBase.init_models(self) self._processing_parameters = queue_model_objects.ProcessingParameters() has_shutter_less = HWR.beamline.detector.has_shutterless() self._acquisition_parameters.shutterless = has_shutter_less self._acquisition_parameters = \ HWR.beamline.get_default_acquisition_parameters()
def init_models(self): CreateTaskBase.init_models(self) self._energy_scan_result = queue_model_objects.EnergyScanResult() self._processing_parameters = queue_model_objects.ProcessingParameters( ) has_shutter_less = HWR.beamline.detector.has_shutterless() self._acquisition_parameters.shutterless = has_shutter_less self._acquisition_parameters = ( HWR.beamline.get_default_acquisition_parameters("helical"))
def single_item_selection(self, tree_item): """ Method called when a queue item in the tree is selected :param tree_item: queue_item :return: None """ CreateTaskBase.single_item_selection(self, tree_item) if isinstance(tree_item, queue_item.SampleQueueItem): sample_model = tree_item.get_model() # self._processing_parameters = copy.deepcopy(self._processing_parameters) self._processing_parameters = sample_model.processing_parameters self._processing_widget.update_data_model( self._processing_parameters) elif isinstance(tree_item, queue_item.BasketQueueItem): self.setDisabled(False) elif isinstance(tree_item, queue_item.DataCollectionQueueItem): dc_model = tree_item.get_model() self._acq_widget.use_kappa(False) if not dc_model.is_helical(): if dc_model.is_executed(): self.setDisabled(True) else: self.setDisabled(False) sample_data_model = self.get_sample_item(tree_item).get_model() energy_scan_result = sample_data_model.crystals[ 0].energy_scan_result self._acq_widget.set_energies(energy_scan_result) # self._acq_widget.disable_inverse_beam(True) self._path_template = dc_model.get_path_template() self._data_path_widget.update_data_model(self._path_template) self._acquisition_parameters = dc_model.acquisitions[ 0].acquisition_parameters self._acq_widget.update_data_model( self._acquisition_parameters, self._path_template) # self.get_acquisition_widget().use_osc_start(True) if len(dc_model.acquisitions) == 1: HWR.beamline.sample_view.select_shape_with_cpos( self._acquisition_parameters.centred_position) self._processing_parameters = dc_model.processing_parameters self._processing_widget.update_data_model( self._processing_parameters) else: self.setDisabled(True) else: self.setDisabled(True)
def single_item_selection(self, tree_item): CreateTaskBase.single_item_selection(self, tree_item) if isinstance(tree_item, queue_item.SampleQueueItem): sample_model = tree_item.get_model() self._processing_parameters = sample_model.processing_parameters # self._processing_parameters = copy.deepcopy(self._processing_parameters) self._processing_widget.update_data_model( self._processing_parameters) elif isinstance(tree_item, queue_item.BasketQueueItem): self.setDisabled(False) elif isinstance(tree_item, queue_item.DataCollectionQueueItem): data_collection = tree_item.get_model() if data_collection.is_helical(): self.setDisabled(tree_item.get_model().is_executed()) self._path_template = data_collection.get_path_template() self._data_path_widget.update_data_model(self._path_template) self._acquisition_parameters = data_collection.acquisitions[ 0].acquisition_parameters if len(data_collection.acquisitions) == 2: start_cpos = data_collection.acquisitions[ 0].acquisition_parameters.centred_position end_cpos = data_collection.acquisitions[ 1].acquisition_parameters.centred_position num_images = data_collection.acquisitions[ 0].acquisition_parameters.num_images self.select_line_with_cpos(start_cpos, end_cpos, num_images) self._acq_widget.update_data_model( self._acquisition_parameters, self._path_template) # self.get_acquisition_widget().use_osc_start(True) self._processing_parameters = data_collection.processing_parameters self._processing_widget.update_data_model( self._processing_parameters) else: self.setDisabled(True) else: self.setDisabled(True) if (isinstance(tree_item, queue_item.SampleQueueItem) or isinstance( tree_item, queue_item.DataCollectionGroupQueueItem) or isinstance(tree_item, queue_item.DataCollectionQueueItem)): self._processing_widget.update_data_model( self._processing_parameters) self._acq_widget.update_data_model(self._acquisition_parameters, self._path_template)
def __init__(self, parent=None, name=None, fl=0): CreateTaskBase.__init__(self, parent, name, qt_import.Qt.WindowFlags(fl), "GphlWorkflow") if not name: self.setObjectName("create_gphl_workflow_widget") # Hardware objects ---------------------------------------------------- # Internal variables -------------------------------------------------- self.current_prefix = None self.init_models()
def approve_creation(self): """ Descript. : """ result = CreateTaskBase.approve_creation(self) selected_grid = self.get_selected_shapes()[0] if not selected_grid: msg = "No grid selected. Please select a grid to continue!" logging.getLogger("GUI").warning(msg) result = False # selected_grid = HWR.beamline.sample_view.get_auto_grid() else: grid_properties = selected_grid.get_properties() exp_time = float(self._acq_widget.acq_widget_layout.exp_time_ledit.text()) speed = grid_properties["yOffset"] / exp_time if speed >= 2.25: logging.getLogger("GUI").error( "Translation speed %.3f is above the limit 2.25" % speed ) return False osc_range_per_frame = float( self._acq_widget.acq_widget_layout.osc_range_ledit.text() ) speed = osc_range_per_frame / exp_time if speed >= 300: logging.getLogger("GUI").error( "Rotation speed per frame %.3f is above the limit 300" % speed ) return False return result
def init_models(self): """ Inits data model :return: None """ CreateTaskBase.init_models(self) self._processing_parameters = queue_model_objects.ProcessingParameters( ) has_shutter_less = HWR.beamline.detector.has_shutterless() self._acquisition_parameters.shutterless = has_shutter_less self._acquisition_parameters = ( HWR.beamline.get_default_acquisition_parameters()) self._acquisition_parameters.num_triggers = 1 self._acquisition_parameters.num_images_per_trigger = 1
def single_item_selection(self, tree_item): """ Descript. : """ CreateTaskBase.single_item_selection(self, tree_item) self.dc_selected = False if isinstance(tree_item, queue_item.SampleQueueItem): pass elif isinstance(tree_item, queue_item.BasketQueueItem): pass # self.setDisabled(False) elif isinstance(tree_item, queue_item.DataCollectionQueueItem) or isinstance( tree_item, queue_item.XrayCenteringQueueItem ): if isinstance(tree_item, queue_item.XrayCenteringQueueItem): data_collection = tree_item.get_model().mesh_dc else: data_collection = tree_item.get_model() if tree_item.get_model().is_executed(): self.setDisabled(True) else: self.setDisabled(False) if data_collection.is_mesh(): HWR.beamline.sample_view.select_shape(data_collection.grid) self._advanced_methods_widget.grid_treewidget.setCurrentItem( self._grid_map[data_collection.grid] ) self._path_template = data_collection.get_path_template() self._data_path_widget.update_data_model(self._path_template) self._acquisition_parameters = data_collection.acquisitions[ 0 ].acquisition_parameters self._acq_widget.update_data_model( self._acquisition_parameters, self._path_template ) # self.get_acquisition_widget().use_osc_start(True) self.dc_selected = True else: self.setDisabled(True) self.grid_treewidget_item_selection_changed()
def approve_creation(self): result = CreateTaskBase.approve_creation(self) selected_shapes = HWR.beamline.sample_view.get_selected_shapes() for shape in selected_shapes: if isinstance(shape, GraphicsItemPoint): result = True return result
def approve_creation(self): base_result = CreateTaskBase.approve_creation(self) selected_element, selected_edge = ( self._periodic_table_widget.get_selected_element_edge()) if not selected_element: logging.getLogger("GUI").warning( "No element selected, please select an element.") return base_result and selected_element
def approve_creation(self): base_result = CreateTaskBase.approve_creation(self) if len(self._lines_widget.lines_treewidget.selectedItems()) == 0: logging.getLogger("GUI").warning( "No lines selected, please select one or more lines.") return False else: return base_result
def single_item_selection(self, tree_item): CreateTaskBase.single_item_selection(self, tree_item) escan_model = tree_item.get_model() if isinstance(tree_item, queue_item.EnergyScanQueueItem): if tree_item.get_model().is_executed(): self.setDisabled(True) else: self.setDisabled(False) if escan_model.get_path_template(): self._path_template = escan_model.get_path_template() self._data_path_widget.update_data_model(self._path_template) elif not (isinstance(tree_item, queue_item.SampleQueueItem) or isinstance(tree_item, queue_item.DataCollectionGroupQueueItem)): self.setDisabled(True)
def single_item_selection(self, tree_item): CreateTaskBase.single_item_selection(self, tree_item) if isinstance(tree_item, queue_item.SampleQueueItem): if self._char_params.space_group == "": sample_model = tree_item.get_model() self._set_space_group( sample_model.processing_parameters.space_group) elif isinstance(tree_item, queue_item.BasketQueueItem): self.setDisabled(False) elif isinstance(tree_item, queue_item.CharacterisationQueueItem): if tree_item.get_model().is_executed(): self.setDisabled(True) else: self.setDisabled(False) self._char = tree_item.get_model() if self._char.get_path_template(): self._path_template = self._char.get_path_template() self._data_path_widget.update_data_model(self._path_template) data_collection = self._char.reference_image_collection self._char_params = self._char.characterisation_parameters self._char_params_mib.set_model(self._char_params) self._acquisition_parameters = data_collection.acquisitions[ 0].acquisition_parameters self._acq_widget.update_data_model(self._acquisition_parameters, self._path_template) # self.get_acquisition_widget().use_osc_start(True) if len(data_collection.acquisitions) == 1: HWR.beamline.sample_view.select_shape_with_cpos( self._acquisition_parameters.centred_position) self._processing_parameters = data_collection.processing_parameters else: self.setDisabled(True)
def single_item_selection(self, tree_item): CreateTaskBase.single_item_selection(self, tree_item) wf_model = tree_item.get_model() if isinstance(tree_item, queue_item.SampleQueueItem): self.init_models() else: if isinstance(tree_item, queue_item.GphlWorkflowQueueItem): if tree_item.get_model().is_executed(): self.setDisabled(True) else: self.setDisabled(False) if wf_model.get_path_template(): self._path_template = wf_model.get_path_template() self._data_path_widget.update_data_model(self._path_template) elif isinstance(tree_item, queue_item.BasketQueueItem): self.setDisabled(False) elif not isinstance(tree_item, queue_item.DataCollectionGroupQueueItem): self.setDisabled(True)
def __init__(self, parent=None, name=None, fl=0): CreateTaskBase.__init__( self, parent, name, qt_import.Qt.WindowFlags(fl), "XRF spectrum" ) if name is not None: self.setObjectName(name) # Hardware objects ---------------------------------------------------- # Internal variables -------------------------------------------------- self.count_time = None self.xrf_spectrum_model = None self.init_models() # Graphic elements ---------------------------------------------------- self._data_path_widget = DataPathWidget( self, data_model=self._path_template, layout="vertical" ) _parameters_gbox = qt_import.QGroupBox("Parameters", self) _count_time_label = qt_import.QLabel("Count time (sec.):", _parameters_gbox) self.count_time_ledit = qt_import.QLineEdit("1", _parameters_gbox) # self.count_time_ledit.setMaximumWidth(75) self.adjust_transmission_cbox = qt_import.QCheckBox( "Adjust transmission", _parameters_gbox ) self.adjust_transmission_cbox.setChecked(True) self._comments_widget = CommentsWidget(self) # Layout -------------------------------------------------------------- _parameters_gbox_hlayout = qt_import.QHBoxLayout(_parameters_gbox) _parameters_gbox_hlayout.addWidget(_count_time_label) _parameters_gbox_hlayout.addWidget(self.count_time_ledit) _parameters_gbox_hlayout.addWidget(self.adjust_transmission_cbox) _parameters_gbox_hlayout.addStretch(0) _parameters_gbox_hlayout.setSpacing(2) _parameters_gbox_hlayout.setContentsMargins(0, 0, 0, 0) _main_vlayout = qt_import.QVBoxLayout(self) _main_vlayout.addWidget(self._data_path_widget) _main_vlayout.addWidget(_parameters_gbox) _main_vlayout.addWidget(self._comments_widget) _main_vlayout.setSpacing(6) _main_vlayout.setContentsMargins(2, 2, 2, 2) _main_vlayout.addStretch(0) # SizePolicies -------------------------------------------------------- self._comments_widget.setFixedHeight(100) # Qt signal/slot connections ------------------------------------------ self._data_path_widget.pathTemplateChangedSignal.connect( self.path_template_changed ) self.adjust_transmission_cbox.stateChanged.connect( self.adjust_transmission_state_changed ) # Other --------------------------------------------------------------- self._data_path_widget.data_path_layout.compression_cbox.setVisible(False)
def enable_compression(self, state): CreateTaskBase.enable_compression(self, False)
def __init__(self, parent=None, name=None, fl=0): CreateTaskBase.__init__(self, parent, name, fl, "Energy scan") if not name: self.setObjectName("create_energy_scan_widget") # Hardware objects ---------------------------------------------------- # Internal variables -------------------------------------------------- self.init_models() # Graphic elements ---------------------------------------------------- self._periodic_table_widget = PeriodicTableWidget(self) self._data_path_widget = DataPathWidget(self, data_model=self._path_template, layout="vertical") _parameters_gbox = qt_import.QGroupBox("Parameters", self) self._adjust_transmission_cbox = qt_import.QCheckBox( "Adjust transmission", _parameters_gbox) self._adjust_transmission_cbox.setChecked(False) self._adjust_transmission_cbox.setEnabled(True) self._max_transmission_label = qt_import.QLabel( "Maximum transmission:") self._max_transmission_ledit = qt_import.QLineEdit( "20", _parameters_gbox) self._max_transmission_ledit.setFixedWidth(80) self._max_transmission_ledit.setEnabled(False) self._comments_widget = CommentsWidget(self) # Layout -------------------------------------------------------------- _parameters_gbox_hlayout = qt_import.QGridLayout(_parameters_gbox) _parameters_gbox_hlayout.addWidget(self._adjust_transmission_cbox, 0, 0) _parameters_gbox_hlayout.addWidget(self._max_transmission_label, 1, 0) _parameters_gbox_hlayout.addWidget(self._max_transmission_ledit, 1, 1) _parameters_gbox_hlayout.setColumnStretch(2, 1) _parameters_gbox_hlayout.setSpacing(2) _main_vlayout = qt_import.QVBoxLayout(self) _main_vlayout.addWidget(self._periodic_table_widget) _main_vlayout.addWidget(self._data_path_widget) _main_vlayout.addWidget(_parameters_gbox) _main_vlayout.addWidget(self._comments_widget) _main_vlayout.setContentsMargins(2, 2, 2, 2) _main_vlayout.setSpacing(6) _main_vlayout.addStretch(10) # SizePolicies -------------------------------------------------------- self._comments_widget.setFixedHeight(100) # Qt signal/slot connections ------------------------------------------ # self._periodic_table_widget.elementEdgeSelectedSignal.connect(\ # self.acq_parameters_changed) self._data_path_widget.pathTemplateChangedSignal.connect( self.path_template_changed) self._adjust_transmission_cbox.stateChanged.connect( self.adjust_transmission_state_changed) self._max_transmission_ledit.textEdited.connect( self.max_transmission_value_changed) self._data_path_widget.data_path_layout.compression_cbox.setVisible( False) try: self._periodic_table_widget.set_elements( HWR.beamline.energy_scan.get_elements()) max_transmission_value = ( HWR.beamline.energy_scan.get_max_transmission_value()) self._adjust_transmission_cbox.setEnabled(True) self._adjust_transmission_cbox.setChecked(True) HWR.beamline.energy_scan.adjust_transmission(True) if max_transmission_value: self._max_transmission_ledit.setText("%.2f" % max_transmission_value) except BaseException: pass
def __init__(self, parent=None, name=None, fl=0): CreateTaskBase.__init__(self, parent, name, fl, "Characterisation") self.setObjectName("create_char_widget") # Hardware objects ---------------------------------------------------- # Internal variables -------------------------------------------------- self._vertical_dimension_widget = None self._current_selected_item = None self._char = None self._char_params = None self.init_models() self._char_params_mib = DataModelInputBinder(self._char_params) # Graphic elements ---------------------------------------------------- self._acq_widget = AcquisitionWidgetSimple( self, acq_params=self._acquisition_parameters, path_template=self._path_template, ) self._data_path_widget = DataPathWidget(self, data_model=self._path_template, layout="vertical") self._vertical_dimension_widget = qt_import.load_ui_file( "vertical_crystal_dimension_widget_layout.ui") self._char_widget = qt_import.load_ui_file( "characterise_simple_widget_vertical_layout.ui") # Layout -------------------------------------------------------------- _main_vlayout = qt_import.QVBoxLayout(self) _main_vlayout.addWidget(self._acq_widget) _main_vlayout.addWidget(self._data_path_widget) _main_vlayout.addWidget(self._char_widget) _main_vlayout.addWidget(self._vertical_dimension_widget) _main_vlayout.setContentsMargins(2, 2, 2, 2) _main_vlayout.setSpacing(6) _main_vlayout.addStretch(0) # SizePolicies -------------------------------------------------------- # Qt signal/slot connections ------------------------------------------ self._data_path_widget.pathTemplateChangedSignal.connect( self.path_template_changed) self._acq_widget.acqParametersChangedSignal.connect( self.acq_parameters_changed) self._vertical_dimension_widget.space_group_ledit.activated.connect( self._space_group_change) self._char_widget.characterisation_gbox.toggled.connect( self.characterisation_gbox_toggled) self._char_widget.wait_result_cbx.toggled.connect( self.wait_results_cbx_toggled) self._char_widget.execute_plan_cbx.toggled.connect( self.run_diffraction_plan_cbx_toggled) # Other --------------------------------------------------------------- if True: self._char_params_mib.bind_value_update( "opt_sad", self._char_widget.optimised_sad_cbx, bool, None) self._char_params_mib.bind_value_update( "account_rad_damage", self._char_widget.account_rad_dmg_cbx, bool, None) self._char_params_mib.bind_value_update( "strategy_complexity", self._char_widget.start_comp_cbox, int, None) self._char_params_mib.bind_value_update( "max_crystal_vdim", self._vertical_dimension_widget.max_vdim_ledit, float, qt_import.QDoubleValidator(0.0, 1000, 2, self), ) self._char_params_mib.bind_value_update( "min_crystal_vdim", self._vertical_dimension_widget.min_vdim_ledit, float, qt_import.QDoubleValidator(0.0, 1000, 2, self), ) self._char_params_mib.bind_value_update( "min_crystal_vphi", self._vertical_dimension_widget.min_vphi_ledit, float, qt_import.QDoubleValidator(0.0, 1000, 2, self), ) self._char_params_mib.bind_value_update( "max_crystal_vphi", self._vertical_dimension_widget.max_vphi_ledit, float, qt_import.QDoubleValidator(0.0, 1000, 2, self), ) self._vertical_dimension_widget.space_group_ledit.addItems( XTAL_SPACEGROUPS) self._data_path_widget.data_path_layout.compression_cbox.setVisible( False)
def __init__(self, parent=None, name=None, fl=0): CreateTaskBase.__init__(self, parent, name, fl, "Helical") if not name: self.setObjectName("create_helical_widget") self.init_models() # Hardware objects ---------------------------------------------------- # Internal variables -------------------------------------------------- self._lines_map = {} # Graphic elements ---------------------------------------------------- self._lines_widget = qt_import.load_ui_file( "helical_line_widget_layout.ui") self._acq_widget = AcquisitionWidget( self, "acquisition_widget", layout="vertical", acq_params=self._acquisition_parameters, path_template=self._path_template, ) self._data_path_widget = DataPathWidget( self, "create_dc_path_widget", data_model=self._path_template, layout="vertical", ) self._processing_widget = ProcessingWidget( self, data_model=self._processing_parameters) self._comments_widget = CommentsWidget(self) # Layout -------------------------------------------------------------- _main_vlayout = qt_import.QVBoxLayout(self) _main_vlayout.addWidget(self._lines_widget) _main_vlayout.addWidget(self._acq_widget) _main_vlayout.addWidget(self._data_path_widget) _main_vlayout.addWidget(self._processing_widget) _main_vlayout.addWidget(self._comments_widget) _main_vlayout.addStretch(0) _main_vlayout.setSpacing(6) _main_vlayout.setContentsMargins(2, 2, 2, 2) # SizePolicies -------------------------------------------------------- self._comments_widget.setFixedHeight(100) # Qt signal/slot connections ------------------------------------------ self._lines_widget.lines_treewidget.itemSelectionChanged.connect( self.lines_treewidget_selection_changed) self._lines_widget.create_line_button.clicked.connect( self.create_line_button_clicked) self._lines_widget.create_auto_line_button.clicked.connect( self.create_auto_line_button_clicked) self._lines_widget.remove_line_button.clicked.connect( self.remove_line_button_clicked) self._lines_widget.overlay_cbox.stateChanged.connect( self.overlay_toggled) self._lines_widget.overlay_slider.valueChanged.connect( self.overlay_alpha_changed) self._lines_widget.swap_points_button.clicked.connect( self.swap_points_clicked) self._acq_widget.acqParametersChangedSignal.connect( self.acq_parameters_changed) self._acq_widget.madEnergySelectedSignal.connect( self.mad_energy_selected) self._data_path_widget.pathTemplateChangedSignal.connect( self.path_template_changed) self._processing_widget.enableProcessingSignal.connect( self._run_processing_toggled) # Other --------------------------------------------------------------- for col in range(self._lines_widget.lines_treewidget.columnCount()): self._lines_widget.lines_treewidget.resizeColumnToContents(col) # self._processing_widget.processing_widget.\ # run_online_processing_cbox.setChecked(False) self._processing_widget.processing_widget.run_online_processing_cbox.setChecked( HWR.beamline.run_online_processing) self.enable_widgets(False) shapes = HWR.beamline.sample_view.get_shapes() for shape in shapes: if isinstance(shape, GraphicsItemLine): self.shape_created(shape, "Line") HWR.beamline.sample_view.connect("shapeCreated", self.shape_created) HWR.beamline.sample_view.connect("shapeChanged", self.shape_changed) HWR.beamline.sample_view.connect("shapeDeleted", self.shape_deleted) self._comments_widget.setHidden(True)
def set_osc_total_range(self, num_images=None, mesh=False): grid_properties = self.get_selected_grid_properties() if grid_properties: CreateTaskBase.set_osc_total_range( self, grid_properties["num_images_per_line"], mesh=True )
def __init__(self, parent=None, name=None, fl=0): CreateTaskBase.__init__( self, parent, name, qt_import.Qt.WindowFlags(fl), "Advanced" ) if not name: self.setObjectName("create_advanced_widget") # Hardware objects ---------------------------------------------------- # Internal variables -------------------------------------------------- self._advanced_methods = None self._grid_map = {} self.spacing = [0, 0] self.dc_selected = False self.init_models() # Graphic elements ---------------------------------------------------- self._advanced_methods_widget = qt_import.load_ui_file( "advanced_methods_layout.ui" ) self._acq_widget = AcquisitionWidget( self, "acquisition_widget", layout="vertical", acq_params=self._acquisition_parameters, path_template=self._path_template, ) self._acq_widget.grid_mode = True self._data_path_widget = DataPathWidget( self, "create_dc_path_widget", data_model=self._path_template, layout="vertical", ) self._comments_widget = CommentsWidget(self) # Layout -------------------------------------------------------------- _main_vlayout = qt_import.QVBoxLayout(self) _main_vlayout.addWidget(self._advanced_methods_widget) _main_vlayout.addWidget(self._acq_widget) _main_vlayout.addWidget(self._data_path_widget) _main_vlayout.addWidget(self._comments_widget) _main_vlayout.addStretch(0) _main_vlayout.setSpacing(6) _main_vlayout.setContentsMargins(2, 2, 2, 2) # SizePolicies -------------------------------------------------------- # Qt signal/slot connections ------------------------------------------ self._acq_widget.acqParametersChangedSignal.connect(self.acq_parameters_changed) self._acq_widget.madEnergySelectedSignal.connect(self.mad_energy_selected) self._acq_widget.acq_widget_layout.osc_range_ledit.textEdited.connect( self.grid_osc_range_ledit_changed ) self._acq_widget.acq_widget_layout.osc_total_range_ledit.textEdited.connect( self.grid_osc_total_range_ledit_changed ) self._data_path_widget.pathTemplateChangedSignal.connect( self.path_template_changed ) self._advanced_methods_widget.grid_treewidget.itemSelectionChanged.connect( self.grid_treewidget_item_selection_changed ) self._advanced_methods_widget.draw_grid_button.clicked.connect( self.draw_grid_button_clicked ) self._advanced_methods_widget.remove_grid_button.clicked.connect( self.remove_grid_button_clicked ) self._advanced_methods_widget.hor_spacing_ledit.textEdited.connect( self.hor_spacing_changed ) self._advanced_methods_widget.ver_spacing_ledit.textEdited.connect( self.ver_spacing_changed ) self._advanced_methods_widget.move_right_button.clicked.connect( lambda: self.move_grid("right") ) self._advanced_methods_widget.move_left_button.clicked.connect( lambda: self.move_grid("left") ) self._advanced_methods_widget.move_up_button.clicked.connect( lambda: self.move_grid("up") ) self._advanced_methods_widget.move_down_button.clicked.connect( lambda: self.move_grid("down") ) self._advanced_methods_widget.overlay_cbox.toggled.connect(self.overlay_toggled) self._advanced_methods_widget.overlay_slider.valueChanged.connect( self.overlay_alpha_changed ) self._advanced_methods_widget.overlay_color_button.clicked.connect( self.overlay_change_color ) self._advanced_methods_widget.move_to_grid_button.clicked.connect( self.move_to_grid ) self._advanced_methods_widget.method_combo.activated.connect( self.method_combo_activated ) # Other --------------------------------------------------------------- self._acq_widget.use_osc_start(False) self._acq_widget.use_kappa(False) self._acq_widget.acq_widget_layout.num_images_label.setEnabled(False) self._acq_widget.acq_widget_layout.num_images_ledit.setEnabled(False) for col in range(self._advanced_methods_widget.grid_treewidget.columnCount()): self._advanced_methods_widget.grid_treewidget.resizeColumnToContents(col) self._acq_widget.acq_widget_layout.osc_total_range_label.setText( "Total osc. range per line" ) self._advanced_methods = list(HWR.beamline.advanced_methods) if self._advanced_methods: for method in self._advanced_methods: self._advanced_methods_widget.method_combo.addItem(method) else: self.setEnabled(False) self._acq_widget.acq_widget_layout.osc_start_label.setText( "Oscillation middle:" ) hor_size, ver_size = HWR.beamline.beam.get_beam_size() self.spacing[0] = hor_size self.spacing[1] = ver_size self._advanced_methods_widget.hor_spacing_ledit.setText( "%.1f" % (hor_size * 1000) ) self._advanced_methods_widget.ver_spacing_ledit.setText( "%.1f" % (ver_size * 1000) ) HWR.beamline.sample_view.connect("shapeCreated", self.shape_created) HWR.beamline.sample_view.connect("shapeChanged", self.shape_changed) HWR.beamline.sample_view.connect("shapeDeleted", self.shape_deleted) self._comments_widget.setHidden(True)
def init_models(self): CreateTaskBase.init_models(self) self._init_models()
def __init__(self, parent=None, name=None, flags=0): CreateTaskBase.__init__(self, parent, name, qt_import.Qt.WindowFlags(flags), "SSX") if not name: self.setObjectName("create_ssx_widget") # Hardware objects ---------------------------------------------------- # Internal variables -------------------------------------------------- self.init_models() # Graphic elements ---------------------------------------------------- self._acq_widget = AcquisitionSsxWidget( self, "acquisition_widget", layout="vertical", acq_params=self._acquisition_parameters, path_template=self._path_template, ) self._data_path_widget = DataPathWidget( self, "create_dc_path_widget", data_model=self._path_template, layout="vertical", ) self._col_seq_widget = SSXSequenceWidget(self) self._processing_widget = ProcessingWidget( self, data_model=self._processing_parameters) #self._comment_widget = CommentWidget(self) # Layout -------------------------------------------------------------- _main_vlayout = qt_import.QVBoxLayout(self) _main_vlayout.addWidget(self._acq_widget) _main_vlayout.addWidget(self._data_path_widget) _main_vlayout.addWidget(self._col_seq_widget) _main_vlayout.addWidget(self._processing_widget) #_main_vlayout.addWidget(self._comment_widget) _main_vlayout.addStretch(0) _main_vlayout.setSpacing(6) _main_vlayout.setContentsMargins(2, 2, 2, 2) # SizePolicies -------------------------------------------------------- # Qt signal/slot connections ------------------------------------------ self._acq_widget.acqParametersChangedSignal.connect( self.acq_parameters_changed) self._data_path_widget.pathTemplateChangedSignal.connect( self.path_template_changed) self._processing_widget.enableProcessingSignal.connect( self._run_processing_toggled) # Other --------------------------------------------------------------- self._processing_widget.processing_widget.run_online_processing_cbox.setChecked( HWR.beamline.run_online_processing) #Rename to self._processing_widget.layout self._processing_widget.processing_widget.resolution_cutoff_label.setHidden( False) self._processing_widget.processing_widget.resolution_cutoff_ledit.setHidden( False) self._processing_widget.processing_widget.pdb_file_label.setHidden( False) self._processing_widget.processing_widget.pdb_file_ledit.setHidden( False) self._processing_widget.processing_widget.pdb_file_browse_button.setHidden( False)
def __init__(self, parent=None, name=None, fl=0): CreateTaskBase.__init__(self, parent, name, qt_import.Qt.WindowFlags(fl), "XrayImaging") if not name: self.setObjectName("create_xray_imaging_widget") # Hardware objects ---------------------------------------------------- # Internal variables -------------------------------------------------- self._xray_imaging_parameters = None self._processing_parameters = None self.init_models() # Graphic elements ---------------------------------------------------- self._acq_widget = AcquisitionWidget( self, "acquisition_widget", layout="vertical", acq_params=self._acquisition_parameters, path_template=self._path_template, ) self._acq_widget.grid_mode = False self._xray_imaging_parameters_widget = XrayImagingParametersWidget( self, "xray_imaging_widget", xray_imaging_params=self._xray_imaging_parameters, ) self._data_path_widget = DataPathWidget( self, "create_dc_path_widget", data_model=self._path_template, layout="vertical", ) # Layout -------------------------------------------------------------- _main_vlayout = qt_import.QVBoxLayout(self) _main_vlayout.addWidget(self._acq_widget) _main_vlayout.addWidget(self._xray_imaging_parameters_widget) _main_vlayout.addWidget(self._data_path_widget) _main_vlayout.addStretch(0) _main_vlayout.setSpacing(6) _main_vlayout.setContentsMargins(2, 2, 2, 2) # SizePolicies -------------------------------------------------------- # Qt signal/slot connections ------------------------------------------ self._acq_widget.acqParametersChangedSignal.connect( self.acq_parameters_changed) self._data_path_widget.pathTemplateChangedSignal.connect( self.path_template_changed) # Other --------------------------------------------------------------- self._acq_widget.use_osc_start(False) self._acq_widget.use_kappa(False) self._acq_widget.acq_widget_layout.max_osc_range_cbx.setVisible(False) self._acq_widget.acq_widget_layout.first_image_label.setVisible(False) self._acq_widget.acq_widget_layout.first_image_ledit.setVisible(False) self._acq_widget.acq_widget_layout.detector_roi_mode_label.setVisible( False) self._acq_widget.acq_widget_layout.detector_roi_mode_combo.setVisible( False) self._acq_widget.acq_widget_layout.energies_combo.setVisible(False) self._acq_widget.acq_widget_layout.mad_cbox.setVisible(False) self._acq_widget.acq_widget_layout.energy_label.setVisible(False) self._acq_widget.acq_widget_layout.energy_ledit.setVisible(False) self._acq_widget.acq_widget_layout.transmission_label.setVisible(False) self._acq_widget.acq_widget_layout.transmission_ledit.setVisible(False) self._acq_widget.acq_widget_layout.resolution_label.setVisible(False) self._acq_widget.acq_widget_layout.resolution_ledit.setVisible(False) self._acq_widget.acq_widget_layout.kappa_label.setVisible(False) self._acq_widget.acq_widget_layout.kappa_ledit.setVisible(False) self._acq_widget.acq_widget_layout.kappa_phi_label.setVisible(False) self._acq_widget.acq_widget_layout.kappa_phi_ledit.setVisible(False) self._acq_widget.acq_widget_layout.shutterless_cbx.setVisible(False) self.distance_listwidget = self._xray_imaging_parameters_widget._parameters_widget.detector_distance_listwidget HWR.beamline.detector.distance.connect( "valueChanged", self._xray_imaging_parameters_widget.set_detector_distance, )
def approve_creation(self): result = CreateTaskBase.approve_creation(self) return result