本文整理汇总了Python中widgets.Qt4_widget_utils.DataModelInputBinder.validate_all方法的典型用法代码示例。如果您正苦于以下问题:Python DataModelInputBinder.validate_all方法的具体用法?Python DataModelInputBinder.validate_all怎么用?Python DataModelInputBinder.validate_all使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类widgets.Qt4_widget_utils.DataModelInputBinder
的用法示例。
在下文中一共展示了DataModelInputBinder.validate_all方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: AcquisitionWidget
# 需要导入模块: from widgets.Qt4_widget_utils import DataModelInputBinder [as 别名]
# 或者: from widgets.Qt4_widget_utils.DataModelInputBinder import validate_all [as 别名]
#.........这里部分代码省略.........
#self.update_osc_total_range_limits()
#self.update_num_images_limits()
def osc_start_ledit_changed(self, osc_start):
"""Fixes osc start edit"""
if "osc_start" not in self.value_changed_list:
self.value_changed_list.append("osc_start")
self.update_osc_total_range_limits()
self.update_num_images_limits()
self.emit_acq_parameters_changed()
def update_osc_start_limits(self):
"""In the plate mode sets osc start limits"""
self.update_osc_total_range_limits()
self.update_num_images_limits()
def osc_range_per_frame_ledit_changed(self, new_value):
self.update_osc_total_range()
self.update_num_images_limits()
self.update_exp_time_limits()
self.emit_acq_parameters_changed()
def update_osc_range_per_frame_limits(self):
try:
max_osc_speed = self._diffractometer_hwobj.get_osc_max_speed()
top_limit = max_osc_speed * float(self.acq_widget_layout.exp_time_ledit.text())
self.osc_range_per_frame_validator.setTop(top_limit)
tool_tip = "Oscillation range per frame limits 0 : " +\
"%0.4f\n4 digits precision." % top_limit
self.acq_widget_layout.osc_range_ledit.setToolTip(tool_tip)
self._acquisition_mib.validate_all()
except:
pass
def update_osc_total_range(self):
self.acq_widget_layout.osc_total_range_ledit.blockSignals(True)
if not self.grid_mode:
try:
self.acq_widget_layout.osc_total_range_ledit.setText(str(\
float(self.acq_widget_layout.osc_range_ledit.text()) * \
float(self.acq_widget_layout.num_images_ledit.text())))
except:
pass
self.acq_widget_layout.osc_total_range_ledit.blockSignals(False)
def update_total_exp_time(self):
try:
self.acq_widget_layout.total_exp_time_ledit.setText("%.2f" % \
(float(self.acq_widget_layout.exp_time_ledit.text()) * \
float(self.acq_widget_layout.num_images_ledit.text())))
except:
pass
def osc_total_range_ledit_changed(self, new_value):
if not self.grid_mode:
try:
num_images = int(float(new_value) / \
float(self.acq_widget_layout.osc_range_ledit.text()))
self.acq_widget_layout.num_images_ledit.blockSignals(True)
self.acq_widget_layout.num_images_ledit.setText("%d" % num_images)
self._acquisition_parameters.num_images = num_images
self.acq_widget_layout.num_images_ledit.blockSignals(False)
except:
示例2: AdvancedParametersWidget
# 需要导入模块: from widgets.Qt4_widget_utils import DataModelInputBinder [as 别名]
# 或者: from widgets.Qt4_widget_utils.DataModelInputBinder import validate_all [as 别名]
#.........这里部分代码省略.........
# Signals -------------------------------------------------------------
# Slots ---------------------------------------------------------------
# Graphic elements ----------------------------------------------------
_dc_parameters_widget = QWidget(self)
self._data_path_widget = DataPathWidget(_dc_parameters_widget)
self._acq_widget = AcquisitionWidget(_dc_parameters_widget,
layout = 'horizontal')
# Layout --------------------------------------------------------------
_dc_parameters_widget_layout = QVBoxLayout(_dc_parameters_widget)
_dc_parameters_widget_layout.addWidget(self._data_path_widget)
_dc_parameters_widget_layout.addWidget(self._acq_widget)
_dc_parameters_widget_layout.setSpacing(2)
_dc_parameters_widget_layout.addStretch(10)
_dc_parameters_widget_layout.setContentsMargins(0, 0, 0, 0)
_main_hlayout = QHBoxLayout(self)
_main_hlayout.addWidget(_dc_parameters_widget)
_main_hlayout.setSpacing(2)
_main_hlayout.setContentsMargins(2, 2, 2, 2)
_main_hlayout.addStretch(0)
# Qt signal/slot connections ------------------------------------------
#self._acq_widget.acqParametersChangedSignal.\
# connect(self.acq_parameters_changed)
#self._data_path_widget.pathTemplateChangedSignal.\
# connect(self.acq_parameters_changed)
self._acq_widget.madEnergySelectedSignal.connect(\
self.mad_energy_selected)
# Ohter ---------------------------------------------------------------
self._acq_widget.use_osc_start(False)
self._acq_widget.acq_widget_layout.mad_cbox.hide()
self._acq_widget.acq_widget_layout.energies_combo.hide()
self._acq_widget.acq_widget_layout.shutterless_cbx.hide()
def set_beamline_setup(self, bl_setup):
self._beamline_setup_hwobj = bl_setup
self._acq_widget.set_beamline_setup(bl_setup)
def mad_energy_selected(self, name, energy, state):
path_template = self._data_collection.acquisitions[0].path_template
if state:
path_template.mad_prefix = name
else:
path_template.mad_prefix = ''
run_number = self._beamline_setup_hwobj.queue_model_hwobj.\
get_next_run_number(path_template)
self._data_path_widget.set_run_number(run_number)
self._data_path_widget.set_prefix(path_template.base_prefix)
model = self._tree_view_item.get_model()
model.set_name(path_template.get_prefix())
self._tree_view_item.setText(0, model.get_name())
def tab_changed(self):
if self._tree_view_item:
self.populate_widget(self._tree_view_item)
def populate_widget(self, tree_view_item, data_collection):
self._tree_view_item = tree_view_item
self._data_collection = data_collection
#if isinstance(tree_view_item, Qt4_queue_item.XrayCenteringQueueItem):
# self._data_collection = tree_view_item.get_model().reference_image_collection
#else:
# self._data_collection = tree_view_item.get_model()
executed = self._data_collection.is_executed()
self._acq_widget.setEnabled(not executed)
self._data_path_widget.setEnabled(not executed)
self._acquisition_mib = DataModelInputBinder(self._data_collection.\
acquisitions[0].acquisition_parameters)
# The acq_widget sends a signal to the path_widget, and it relies
# on that both models upto date, we need to refactor this part
# so that both models are set before taking ceratin actions.
# This workaround, works for the time beeing.
self._data_path_widget._data_model = self._data_collection.\
acquisitions[0].path_template
self._data_path_widget.update_data_model(self._data_collection.\
acquisitions[0].path_template)
self._acq_widget.update_data_model(\
self._data_collection.acquisitions[0].acquisition_parameters,
self._data_collection.acquisitions[0].path_template)
#self._acq_widget.use_osc_start(False)
self._acq_widget.acq_widget_layout.num_images_ledit.setDisabled(data_collection.is_mesh())
invalid = self._acquisition_mib.validate_all()
if invalid:
msg = "This data collection has one or more incorrect parameters,"+\
" correct the fields marked in red to solve the problem."
logging.getLogger("GUI").warning(msg)
示例3: AcquisitionWidgetSimple
# 需要导入模块: from widgets.Qt4_widget_utils import DataModelInputBinder [as 别名]
# 或者: from widgets.Qt4_widget_utils.DataModelInputBinder import validate_all [as 别名]
#.........这里部分代码省略.........
def set_energy(self, energy, wav):
"""
Descript. :
"""
if not self.acq_widget_layout.energy_ledit.hasFocus():
self.acq_widget_layout.energy_ledit.setText(\
"%.4f" % float(energy))
def update_transmission(self, transmission):
"""
Descript. :
"""
if self.acq_widget_layout.transmission_ledit.hasFocus():
self.acq_widget_layout.transmission_ledit.setText(\
"%.2f" % float(transmission))
def update_resolution(self, resolution):
"""
Descript. :
"""
if not self.acq_widget_layout.resolution_ledit.hasFocus():
self.acq_widget_layout.resolution_ledit.setText(\
"%.3f" % float(resolution))
def update_energy_limits(self, limits):
"""
Descript. :
"""
if limits:
self.energy_validator.setBottom(limits[0])
self.energy_validator.setTop(limits[1])
self.acq_widget_layout.energy_ledit.setToolTip(
"Energy limits %0.3f : %0.3f" %(limits[0], limits[1]))
self._acquisition_mib.validate_all()
def update_transmission_limits(self, limits):
"""
Descript. :
"""
if limits:
self.transmission_validator.setBottom(limits[0])
self.transmission_validator.setTop(limits[1])
self.acq_widget_layout.transmission_ledit.setToolTip(
"Transmission limits %0.3f : %0.3f" %(limits[0], limits[1]))
self._acquisition_mib.validate_all()
def update_resolution_limits(self, limits):
"""
Descript. :
"""
if limits:
self.resolution_validator.setBottom(limits[0])
self.resolution_validator.setTop(limits[1])
self.acq_widget_layout.resolution_ledit.setToolTip(
"Resolution limits %0.3f : %0.3f" %(limits[0], limits[1]))
self._acquisition_mib.validate_all()
def update_detector_exp_time_limits(self, limits):
"""
Descript. :
"""
if limits:
self.exp_time_validator.setBottom(limits[0])
self.exp_time_validator.setTop(limits[1])
self.acq_widget_layout.exp_time_ledit.setToolTip(
"Exposure time limits %0.3f : %0.3f" %(limits[0], limits[1]))
示例4: AcquisitionWidget
# 需要导入模块: from widgets.Qt4_widget_utils import DataModelInputBinder [as 别名]
# 或者: from widgets.Qt4_widget_utils.DataModelInputBinder import validate_all [as 别名]
#.........这里部分代码省略.........
if self.acq_widget_layout.mad_cbox.isChecked():
(name, energy) = self.get_mad_energy()
if energy != 0:
self.set_energy(energy, 0)
self.madEnergySelectedSignal.emit(name, energy, True)
def set_energy(self, energy, wav):
"""
Descript. :
"""
self.acq_widget_layout.energy_ledit.setText("%.4f" % float(energy))
def update_transmission(self, transmission):
"""
Descript. :
"""
if self.enable_parameter_update:
self.acq_widget_layout.transmission_ledit.setText("%.2f" % float(transmission))
def update_resolution(self, resolution):
"""
Descript. :
"""
if self.enable_parameter_update:
self.acq_widget_layout.resolution_ledit.setText("%.3f" % float(resolution))
def update_energy_limits(self, limits):
if limits:
self.energy_validator.setBottom(limits[0])
self.energy_validator.setTop(limits[1])
self.acq_widget_layout.energy_ledit.setToolTip(\
"Energy limits %0.3f : %0.3f" %(limits[0], limits[1]))
self._acquisition_mib.validate_all()
def update_transmission_limits(self, limits):
if limits:
self.transmission_validator.setBottom(limits[0])
self.transmission_validator.setTop(limits[1])
self.acq_widget_layout.transmission_ledit.setToolTip(\
"Transmission limits %0.3f : %0.3f" %(limits[0], limits[1]))
self._acquisition_mib.validate_all()
def update_resolution_limits(self, limits):
if limits:
self.resolution_validator.setBottom(limits[0])
self.resolution_validator.setTop(limits[1])
self.acq_widget_layout.resolution_ledit.setToolTip(
"Resolution limits %0.3f : %0.3f" %(limits[0], limits[1]))
self._acquisition_mib.validate_all()
def update_detector_exp_time_limits(self, limits):
if limits:
self.exp_time_validator.setRange(limits[0], limits[1], 4)
self.acq_widget_layout.exp_time_ledit.setToolTip(
"Exposure time limits %0.3f : %0.3f" %(limits[0], limits[1]))
self._acquisition_mib.validate_all()
def update_osc_range_limits(self, exp_time):
osc_range = 40.0 * exp_time
self.osc_range_validator.setRange(0, osc_range, 4)
self.acq_widget_layout.osc_range_ledit.setToolTip(
"Oscillation range limits %0.2f : %0.2f" %(0, osc_range))
self._acquisition_mib.validate_all()
def update_num_image_limits(self):
示例5: DCParametersWidget
# 需要导入模块: from widgets.Qt4_widget_utils import DataModelInputBinder [as 别名]
# 或者: from widgets.Qt4_widget_utils.DataModelInputBinder import validate_all [as 别名]
#.........这里部分代码省略.........
def _prefix_ledit_change(self, new_value):
prefix = self._data_collection.acquisitions[0].\
path_template.get_prefix()
self._data_collection.set_name(prefix)
self._tree_view_item.setText(0, self._data_collection.get_name())
def _run_number_ledit_change(self, new_value):
if str(new_value).isdigit():
self._data_collection.set_number(int(new_value))
self._tree_view_item.setText(0, self._data_collection.get_name())
def acq_parameters_changed(self):
if self._tree_view_item is None:
#TODO fix this
return
dc_tree_widget = self._tree_view_item.listView().parent()
dc_tree_widget.check_for_path_collisions()
path_template = self._data_collection.acquisitions[0].path_template
path_conflict = self.queue_model_hwobj.\
check_for_path_collisions(path_template)
if new_value != '':
if path_conflict:
logging.getLogger("user_level_log").\
error('The current path settings will overwrite data' +\
' from another task. Correct the problem before collecting')
widget.setPaletteBackgroundColor(widget_colors.LIGHT_RED)
else:
widget.setPaletteBackgroundColor(widget_colors.WHITE)
def __add_data_collection(self):
return self.add_dc_cb(self._data_collection, self.collection_type)
def mad_energy_selected(self, name, energy, state):
path_template = self._data_collection.acquisitions[0].path_template
if state:
path_template.mad_prefix = name
else:
path_template.mad_prefix = ''
run_number = self._beamline_setup_hwobj.queue_model_hwobj.\
get_next_run_number(path_template)
self._data_path_widget.set_run_number(run_number)
self._data_path_widget.set_prefix(path_template.base_prefix)
model = self._tree_view_item.get_model()
model.set_name(path_template.get_prefix())
self._tree_view_item.setText(0, model.get_name())
def tab_changed(self):
if self._tree_view_item:
self.populate_parameter_widget(self._tree_view_item)
def set_enabled(self, state):
self._acq_widget.setEnabled(state)
self._data_path_widget.setEnabled(state)
self._processing_widget.setEnabled(state)
def populate_widget(self, item):
data_collection = item.get_model()
self._tree_view_item = item
self._data_collection = data_collection
self._acquisition_mib = DataModelInputBinder(self._data_collection.\
acquisitions[0].acquisition_parameters)
# The acq_widget sends a signal to the path_widget, and it relies
# on that both models upto date, we need to refactor this part
# so that both models are set before taking ceratin actions.
# This workaround, works for the time beeing.
self._data_path_widget._data_model = data_collection.acquisitions[0].path_template
self._acq_widget.set_energies(data_collection.crystal.energy_scan_result)
self._acq_widget.update_data_model(data_collection.acquisitions[0].\
acquisition_parameters,
data_collection.acquisitions[0].\
path_template)
self._data_path_widget.update_data_model(data_collection.\
acquisitions[0].path_template)
self._processing_widget.update_data_model(data_collection.\
processing_parameters)
if data_collection.acquisitions[0].acquisition_parameters.\
centred_position.snapshot_image:
image = data_collection.acquisitions[0].\
acquisition_parameters.centred_position.snapshot_image
ration = image.height() / float(image.width())
image = image.scaled(400, 400 * ration, QtCore.Qt.KeepAspectRatio)
self.position_widget.svideo.setPixmap(QtGui.QPixmap(image))
invalid = self._acquisition_mib.validate_all()
if invalid:
msg = "This data collection has one or more incorrect parameters,"+\
" correct the fields marked in red to solve the problem."
logging.getLogger("user_level_log").\
warning(msg)
示例6: AdvancedParametersWidget
# 需要导入模块: from widgets.Qt4_widget_utils import DataModelInputBinder [as 别名]
# 或者: from widgets.Qt4_widget_utils.DataModelInputBinder import validate_all [as 别名]
#.........这里部分代码省略.........
self._acq_widget.use_osc_start(False)
self._acq_widget.acq_widget_layout.mad_cbox.hide()
self._acq_widget.acq_widget_layout.energies_combo.hide()
self._acq_widget.acq_widget_layout.num_images_ledit.setEnabled(False)
self._acq_widget.acq_widget_layout.inverse_beam_cbx.hide()
self._acq_widget.acq_widget_layout.shutterless_cbx.hide()
self._acq_widget.acq_widget_layout.subwedge_size_label.hide()
self._acq_widget.acq_widget_layout.subwedge_size_ledit.hide()
def set_beamline_setup(self, bl_setup):
self._beamline_setup_hwobj = bl_setup
self._acq_widget.set_beamline_setup(bl_setup)
def _prefix_ledit_change(self, new_value):
prefix = self._data_collection.acquisitions[0].\
path_template.get_prefix()
self._data_collection.set_name(prefix)
self._tree_view_item.setText(0, self._data_collection.get_name())
def _run_number_ledit_change(self, new_value):
if str(new_value).isdigit():
self._data_collection.set_number(int(new_value))
self._tree_view_item.setText(0, self._data_collection.get_name())
def handle_path_conflict(self):
if self._tree_view_item:
dc_tree_widget = self._tree_view_item.listView().parent()
dc_tree_widget.check_for_path_collisions()
path_template = self._data_collection.acquisitions[0].path_template
path_conflict = self.queue_model_hwobj.\
check_for_path_collisions(path_template)
if path_conflict:
logging.getLogger("user_level_log").\
error('The current path settings will overwrite data' +\
' from another task. Correct the problem before collecting')
Qt4_widget_colors.set_widget_color(widget, Qt4_widget_colors.LIGHT_RED)
else:
Qt4_widget_colors.set_widget_color(widget, Qt4_widget_colors.LIGHT_WHITE)
def mad_energy_selected(self, name, energy, state):
path_template = self._data_collection.acquisitions[0].path_template
if state:
path_template.mad_prefix = name
else:
path_template.mad_prefix = ''
run_number = self._beamline_setup_hwobj.queue_model_hwobj.\
get_next_run_number(path_template)
self._data_path_widget.set_run_number(run_number)
self._data_path_widget.set_prefix(path_template.base_prefix)
model = self._tree_view_item.get_model()
model.set_name(path_template.get_prefix())
self._tree_view_item.setText(0, model.get_name())
def tab_changed(self):
if self._tree_view_item:
self.populate_widget(self._tree_view_item)
def populate_widget(self, tree_view_item):
self._tree_view_item = tree_view_item
advanced_model = tree_view_item.get_model()
self._data_collection = advanced_model.reference_image_collection
executed = self._data_collection.is_executed()
self._acq_widget.setEnabled(not executed)
self._data_path_widget.setEnabled(not executed)
image = advanced_model.grid_object.get_snapshot()
try:
image = image.scaled(427, 320, QtCore.Qt.KeepAspectRatio)
self.position_widget.svideo.setPixmap(QtGui.QPixmap(image))
except:
pass
self._acquisition_mib = DataModelInputBinder(self._data_collection.\
acquisitions[0].acquisition_parameters)
# The acq_widget sends a signal to the path_widget, and it relies
# on that both models upto date, we need to refactor this part
# so that both models are set before taking ceratin actions.
# This workaround, works for the time beeing.
self._data_path_widget._data_model = self._data_collection.\
acquisitions[0].path_template
self._data_path_widget.update_data_model(self._data_collection.\
acquisitions[0].path_template)
self._acq_widget.update_data_model(\
self._data_collection.acquisitions[0].acquisition_parameters,
self._data_collection.acquisitions[0].path_template)
#self._acq_widget.use_osc_start(False)
invalid = self._acquisition_mib.validate_all()
if invalid:
msg = "This data collection has one or more incorrect parameters,"+\
" correct the fields marked in red to solve the problem."
logging.getLogger("user_level_log").\
warning(msg)
示例7: AcquisitionStillWidget
# 需要导入模块: from widgets.Qt4_widget_utils import DataModelInputBinder [as 别名]
# 或者: from widgets.Qt4_widget_utils.DataModelInputBinder import validate_all [as 别名]
#.........这里部分代码省略.........
not self.acq_widget_layout.energy_ledit.hasFocus():
self.acq_widget_layout.energy_ledit.setText(str(energy))
self.emit_acq_parameters_changed()
def transmission_ledit_changed(self, transmission):
if "transmission" not in self.value_changed_list:
self.value_changed_list.append("transmission")
self.emit_acq_parameters_changed()
def update_transmission(self, transmission):
if "transmission" not in self.value_changed_list:
self.acq_widget_layout.transmission_ledit.setText(str(transmission))
self.emit_acq_parameters_changed()
def resolution_ledit_changed(self, resolution):
if "resolution" not in self.value_changed_list:
self.value_changed_list.append("resolution")
self.emit_acq_parameters_changed()
def update_resolution(self, resolution):
if "resolution" not in self.value_changed_list and \
not self.acq_widget_layout.resolution_ledit.hasFocus():
self.acq_widget_layout.resolution_ledit.setText(str(resolution))
self.emit_acq_parameters_changed()
def update_energy_limits(self, limits):
if limits:
self.energy_validator.setBottom(limits[0])
self.energy_validator.setTop(limits[1])
self.acq_widget_layout.energy_ledit.setToolTip(\
"Energy limits %0.4f : %0.4f keV\n" % \
(limits[0], limits[1]) + \
"4 digits precision.")
self._acquisition_mib.validate_all()
def update_transmission_limits(self, limits):
if limits:
self.transmission_validator.setBottom(limits[0])
self.transmission_validator.setTop(limits[1])
self.acq_widget_layout.transmission_ledit.setToolTip(\
"Transmission limits %0.2f : %0.2f %%\n" % \
(limits[0], limits[1]) + \
"2 digits precision.")
self._acquisition_mib.validate_all()
def update_resolution_limits(self, limits):
if limits:
self.resolution_validator.setBottom(limits[0])
self.resolution_validator.setTop(limits[1])
self.acq_widget_layout.resolution_ledit.setToolTip(
"Resolution limits %0.4f : %0.4f %s\n" % \
(limits[0], limits[1], chr(197)) +
"4 digits precision.")
self._acquisition_mib.validate_all()
def update_detector_exp_time_limits(self, limits):
if limits:
self.exp_time_validator.setRange(limits[0], limits[1], 6)
self.acq_widget_layout.exp_time_ledit.setToolTip(
"Exposure time limits %0.6f s : %0.1f s\n" % \
(limits[0], limits[1]) + \
"6 digits precision.")
self._acquisition_mib.validate_all()
def init_detector_roi_modes(self):
if self._beamline_setup_hwobj is not None:
示例8: DCParametersWidget
# 需要导入模块: from widgets.Qt4_widget_utils import DataModelInputBinder [as 别名]
# 或者: from widgets.Qt4_widget_utils.DataModelInputBinder import validate_all [as 别名]
#.........这里部分代码省略.........
_main_hlayout.addStretch(0)
# SizePolicies --------------------------------------------------------
# Qt signal/slot connections ------------------------------------------
self._data_path_widget.data_path_layout.prefix_ledit.textChanged.\
connect(self._prefix_ledit_change)
self._data_path_widget.data_path_layout.run_number_ledit.textChanged.\
connect(self._run_number_ledit_change)
self._acq_widget.madEnergySelectedSignal.\
connect(self.mad_energy_selected)
self._acq_widget.acqParametersChangedSignal.\
connect(self.acq_parameters_changed)
# Other ---------------------------------------------------------------
def set_beamline_setup(self, bl_setup):
self._acq_widget.set_beamline_setup(bl_setup)
self._beamline_setup_hwobj = bl_setup
def _prefix_ledit_change(self, new_value):
prefix = self._data_collection.acquisitions[0].\
path_template.get_prefix()
self._data_collection.set_name(prefix)
self._tree_view_item.setText(0, self._data_collection.get_name())
def _run_number_ledit_change(self, new_value):
if str(new_value).isdigit():
self._data_collection.set_number(int(new_value))
self._tree_view_item.setText(0, self._data_collection.get_name())
def acq_parameters_changed(self):
if self._tree_view_item is None:
#TODO fix this
return
dc_tree_widget = self._tree_view_item.listView().parent()
dc_tree_widget.check_for_path_collisions()
path_template = self._data_collection.acquisitions[0].path_template
path_conflict = self.queue_model_hwobj.\
check_for_path_collisions(path_template)
def __add_data_collection(self):
return self.add_dc_cb(self._data_collection, self.collection_type)
def mad_energy_selected(self, name, energy, state):
path_template = self._data_collection.acquisitions[0].path_template
if state:
path_template.mad_prefix = name
else:
path_template.mad_prefix = ''
run_number = self._beamline_setup_hwobj.queue_model_hwobj.\
get_next_run_number(path_template)
self._data_path_widget.set_run_number(run_number)
self._data_path_widget.set_prefix(path_template.base_prefix)
model = self._tree_view_item.get_model()
model.set_name(path_template.get_prefix())
self._tree_view_item.setText(0, model.get_name())
def tab_changed(self):
if self._tree_view_item:
self.populate_parameter_widget(self._tree_view_item)
def set_enabled(self, state):
self._acq_widget.setEnabled(state)
self._data_path_widget.setEnabled(state)
self._processing_widget.setEnabled(state)
def populate_widget(self, item):
data_collection = item.get_model()
self._tree_view_item = item
self._data_collection = data_collection
self._acquisition_mib = DataModelInputBinder(self._data_collection.\
acquisitions[0].acquisition_parameters)
# The acq_widget sends a signal to the path_widget, and it relies
# on that both models upto date, we need to refactor this part
# so that both models are set before taking ceratin actions.
# This workaround, works for the time beeing.
self._data_path_widget._data_model = data_collection.acquisitions[0].path_template
self._acq_widget.set_energies(data_collection.crystal.energy_scan_result)
self._acq_widget.update_data_model(data_collection.acquisitions[0].\
acquisition_parameters,
data_collection.acquisitions[0].\
path_template)
self._data_path_widget.update_data_model(data_collection.\
acquisitions[0].path_template)
self._processing_widget.update_data_model(data_collection.\
processing_parameters)
invalid = self._acquisition_mib.validate_all()
if invalid:
msg = "This data collection has one or more incorrect parameters,"+\
" correct the fields marked in red to solve the problem."
logging.getLogger("GUI").warning(msg)