本文整理汇总了Python中widgets.Qt4_widget_utils.DataModelInputBinder.set_model方法的典型用法代码示例。如果您正苦于以下问题:Python DataModelInputBinder.set_model方法的具体用法?Python DataModelInputBinder.set_model怎么用?Python DataModelInputBinder.set_model使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类widgets.Qt4_widget_utils.DataModelInputBinder
的用法示例。
在下文中一共展示了DataModelInputBinder.set_model方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: CreateCharWidget
# 需要导入模块: from widgets.Qt4_widget_utils import DataModelInputBinder [as 别名]
# 或者: from widgets.Qt4_widget_utils.DataModelInputBinder import set_model [as 别名]
#.........这里部分代码省略.........
def single_item_selection(self, tree_item):
"""
Descript. :
"""
CreateTaskBase.single_item_selection(self, tree_item)
if isinstance(tree_item, Qt4_queue_item.SampleQueueItem):
#self._init_models()
if self._char_params.space_group == "":
sample_model = tree_item.get_model()
self._set_space_group(sample_model.processing_parameters.space_group)
#self._acq_widget.update_data_model(self._acquisition_parameters,
# self._path_template)
#self._char_params_mib.set_model(self._char_params)
elif isinstance(tree_item, Qt4_queue_item.BasketQueueItem):
self.setDisabled(False)
elif isinstance(tree_item, Qt4_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:
self.select_shape_with_cpos(self._acquisition_parameters.\
centred_position)
self._processing_parameters = data_collection.processing_parameters
else:
self.setDisabled(True)
def update_processing_parameters(self, crystal):
"""
Descript. :
"""
self._processing_parameters.space_group = crystal.space_group
self._char_params.space_group = crystal.space_group
self._processing_parameters.cell_a = crystal.cell_a
self._processing_parameters.cell_alpha = crystal.cell_alpha
self._processing_parameters.cell_b = crystal.cell_b
self._processing_parameters.cell_beta = crystal.cell_beta
self._processing_parameters.cell_c = crystal.cell_c
self._processing_parameters.cell_gamma = crystal.cell_gamma
def approve_creation(self):
"""
Descript. :
示例2: Qt4_SampleDetailsBrick
# 需要导入模块: from widgets.Qt4_widget_utils import DataModelInputBinder [as 别名]
# 或者: from widgets.Qt4_widget_utils.DataModelInputBinder import set_model [as 别名]
#.........这里部分代码省略.........
self.sample_info_widget = uic.loadUi(
os.path.join(os.path.dirname(__file__),
"widgets/ui_files/Qt4_sample_info_widget_layout.ui"))
# Layout --------------------------------------------------------------
_info_widget_hlayout = QtGui.QHBoxLayout(_info_widget)
_info_widget_hlayout.addWidget(self.sample_info_widget)
_info_widget_hlayout.addWidget(self.crystal_widget)
_info_widget_hlayout.addStretch(0)
_main_hlayout = QtGui.QVBoxLayout(self)
_main_hlayout.addWidget(_info_widget)
_main_hlayout.addStretch(0)
_main_hlayout.setSpacing(0)
_main_hlayout.setContentsMargins(2, 2, 2, 2)
# SizePolicies --------------------------------------------------------
# Qt signal/slot connections ------------------------------------------
# Other ---------------------------------------------------------------
self.crystal_mib.bind_value_update('space_group',
self.crystal_widget.space_group_value_label,
str,
None)
self.crystal_mib.bind_value_update('protein_acronym',
self.crystal_widget.protein_acronym_value_label,
str,
None)
self.crystal_mib.bind_value_update('cell_a',
self.crystal_widget.a_value_label,
str,
None)
self.crystal_mib.bind_value_update('cell_alpha',
self.crystal_widget.alpha_value_label,
str,
None)
self.crystal_mib.bind_value_update('cell_b',
self.crystal_widget.b_value_label,
str,
None)
self.crystal_mib.bind_value_update('cell_beta',
self.crystal_widget.beta_value_label,
str,
None)
self.crystal_mib.bind_value_update('cell_c',
self.crystal_widget.c_value_label,
str,
None)
self.crystal_mib.bind_value_update('cell_gamma',
self.crystal_widget.gamma_value_label,
str,
None)
self.sample_mib.bind_value_update('name',
self.sample_info_widget.name_value_label,
str,
None)
self.sample_mib.bind_value_update('code',
self.sample_info_widget.data_matrix_value_label,
str,
None)
self.sample_mib.bind_value_update('holder_length',
self.sample_info_widget.holder_length_value_label,
str,
None)
self.sample_mib.bind_value_update('lims_sample_location',
self.sample_info_widget.sample_location_value_label,
str,
None)
self.sample_mib.bind_value_update('lims_container_location',
self.sample_info_widget.basket_location_value_label,
str,
None)
def populate_sample_details(self, sample):
"""
Descript. :
"""
self.sample = sample
self.crystal = sample.crystals[0]
self.crystal_mib.set_model(self.crystal)
self.sample_mib.set_model(sample)
示例3: CharParametersWidget
# 需要导入模块: from widgets.Qt4_widget_utils import DataModelInputBinder [as 别名]
# 或者: from widgets.Qt4_widget_utils.DataModelInputBinder import set_model [as 别名]
#.........这里部分代码省略.........
"""
Descript. :
"""
self.opt_parameters_widget.opt_param_widget.aimed_mult_ledit.setEnabled(state)
def enable_maximum_res_ledit(self, state):
"""
Descript. :
"""
self.opt_parameters_widget.opt_param_widget.maximum_res_ledit.setEnabled(state)
def update_char_type(self, index):
"""
Descript. :
"""
self._char_params.experiment_type = index
def toggle_permitted_range(self, status):
"""
Descript. :
"""
self.opt_parameters_widget.opt_param_widget.phi_start_ledit.setEnabled(status)
self.opt_parameters_widget.opt_param_widget.phi_end_ledit.setEnabled(status)
def enable_opt_parameters_widget(self, state):
"""
Descript. :
"""
if not self._char.is_executed():
self.opt_parameters_widget.setEnabled(not state)
else:
self.opt_parameters_widget.setEnabled(False)
def tab_changed(self):
"""
Descript. :
"""
if self._tree_view_item:
self.populate_parameter_widget(self._tree_view_item)
def set_enabled(self, state):
"""
Descript. :
"""
self.char_type_widget.setEnabled(state)
self.routine_dc_widget.setEnabled(state)
self.sad_widget.setEnabled(state)
self.rad_dmg_char_widget.setEnabled(state)
self.reference_img_widget.setEnabled(state)
self.acq_widget.setEnabled(state)
self.path_widget.setEnabled(state)
self.opt_parameters_widget.setEnabled(state)
self.rad_dmg_widget.setEnabled(state)
self.vertical_dimension_widget.setEnabled(state)
def populate_parameter_widget(self, tree_view_item):
"""
Descript. :
"""
self._tree_view_item = tree_view_item
self._char = tree_view_item.get_model()
self._data_collection = self._char.reference_image_collection
self._char_params = self._char.characterisation_parameters
self._char_params_mib.set_model(self._char.characterisation_parameters)
self._set_space_group(self._char_params.space_group)
self.acq_widget.update_data_model(self._char.reference_image_collection.\
acquisitions[0].acquisition_parameters,
self._char.reference_image_collection.\
acquisitions[0].path_template)
self.path_widget.update_data_model(self._char.reference_image_collection.\
acquisitions[0].path_template)
if self._data_collection.acquisitions[0].acquisition_parameters.\
centred_position.snapshot_image:
image = self._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))
self.toggle_permitted_range(self._char_params.use_permitted_rotation)
self.enable_opt_parameters_widget(self._char_params.determine_rad_params)
self.enable_maximum_res_ledit(self._char_params.use_aimed_resolution)
self.enable_aimed_mult_ledit(self._char_params.use_aimed_multiplicity)
item = self.char_type_widget.charact_type_tbox.\
widget(self._char_params.experiment_type)
self.char_type_widget.charact_type_tbox.setCurrentWidget(item)
self.char_type_widget.toggle_time_dose()
crystal = self._char.reference_image_collection.crystal
self.acq_widget.set_energies(crystal.energy_scan_result)
def set_beamline_setup(self, bl_setup):
"""
Descript. :
"""
self.acq_widget.set_beamline_setup(bl_setup)
示例4: AcquisitionWidgetSimple
# 需要导入模块: from widgets.Qt4_widget_utils import DataModelInputBinder [as 别名]
# 或者: from widgets.Qt4_widget_utils.DataModelInputBinder import set_model [as 别名]
#.........这里部分代码省略.........
"""
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]))
self._acquisition_mib.validate_all()
def init_detector_roi_modes(self):
"""
Descript. :
"""
if self._beamline_setup_hwobj is not None:
roi_modes = self._beamline_setup_hwobj._get_roi_modes()
if (len(roi_modes) > 0 and
self.acq_widget_layout.detector_roi_mode_combo.count() == 0):
for roi_mode in roi_modes:
self.acq_widget_layout.detector_roi_mode_combo.\
addItem(roi_mode)
self.acq_widget_layout.detector_roi_mode_label.setEnabled(True)
self.acq_widget_layout.detector_roi_mode_combo.setEnabled(True)
#self._acquisition_mib.bind_value_update('detector_roi_mode',
# self.acq_widget_layout.detector_roi_mode_combo,
# str,
# None)
def update_detector_roi_mode(self, roi_mode_index):
"""
Descript. :
"""
if self.acq_widget_layout.detector_roi_mode_combo.count() > 0:
self.acq_widget_layout.detector_roi_mode_combo.\
setCurrentIndex(roi_mode_index)
def detector_roi_mode_changed(self, roi_mode_index):
"""
Descript. :
"""
if self._beamline_setup_hwobj is not None:
self._beamline_setup_hwobj.detector_hwobj.set_roi_mode(roi_mode_index)
def update_data_model(self, acquisition_parameters, path_template):
"""
Descript. :
"""
self._acquisition_parameters = acquisition_parameters
self._acquisition_mib.set_model(acquisition_parameters)
self._path_template = path_template
self.update_num_images(None, acquisition_parameters.num_images)
def set_tunable_energy(self, state):
"""
Descript. :
"""
self.acq_widget_layout.energy_ledit.setEnabled(state)
def use_osc_start(self, state):
"""
Descript. :
"""
self.acq_widget_layout.osc_start_ledit.setEnabled(state)
def check_parameter_conflict(self):
"""
Descript. :
"""
return len(self._acquisition_mib.validate_all()) > 0
示例5: AcquisitionWidget
# 需要导入模块: from widgets.Qt4_widget_utils import DataModelInputBinder [as 别名]
# 或者: from widgets.Qt4_widget_utils.DataModelInputBinder import set_model [as 别名]
#.........这里部分代码省略.........
try:
osc_start = float(self.acq_widget_layout.osc_start_ledit.text())
osc_range = float(self.acq_widget_layout.osc_range_ledit.text())
except ValueError:
return
if osc_range == 0:
return
num_images_limits = int((self.osc_start_validator.top() - \
osc_start) / osc_range)
self.num_img_validator.setTop(num_images_limits)
self.acq_widget_layout.num_images_ledit.setToolTip(\
"Number of images limits : %d" % num_images_limits)
self._acquisition_mib.validate_all()
def init_detector_roi_modes(self):
"""
Descript. :
"""
if self._beamline_setup_hwobj is not None:
roi_modes = self._beamline_setup_hwobj.detector_hwobj.get_roi_modes()
if (len(roi_modes) > 0 and
self.acq_widget_layout.detector_roi_mode_combo.count() == 0):
for roi_mode in roi_modes:
self.acq_widget_layout.detector_roi_mode_combo.\
addItem(roi_mode)
self.acq_widget_layout.detector_roi_mode_label.setEnabled(True)
self.acq_widget_layout.detector_roi_mode_combo.setEnabled(True)
#self._acquisition_mib.bind_value_update('detector_roi_mode',
# self.acq_widget_layout.detector_roi_mode_combo,
## str,
# None)
def update_detector_roi_mode(self, roi_mode_index):
"""
Descript. :
"""
if roi_mode_index is not None and \
self.acq_widget_layout.detector_roi_mode_combo.count() > 0:
self.acq_widget_layout.detector_roi_mode_combo.\
setCurrentIndex(roi_mode_index)
def detector_roi_mode_changed(self, roi_mode_index):
"""
Descript. :
"""
if self._beamline_setup_hwobj is not None:
self._beamline_setup_hwobj.detector_hwobj.set_roi_mode(roi_mode_index)
def kappa_ledit_changed(self, new_value):
if "kappa" not in self.value_changed_list:
self.value_changed_list.append("kappa")
self.emit_acq_parameters_changed()
def kappa_phi_ledit_changed(self, new_value):
if "kappa_phi" not in self.value_changed_list:
self.value_changed_list.append("kappa_phi")
self.emit_acq_parameters_changed()
def update_data_model(self, acquisition_parameters, path_template):
"""
Descript. :
"""
self._acquisition_parameters = acquisition_parameters
self._path_template = path_template
self._acquisition_mib.set_model(acquisition_parameters)
#Update mad widgets
mad = True if self._path_template.mad_prefix != '' else False
if mad:
mad_prefix = str(self._path_template.mad_prefix)
index = MAD_ENERGY_COMBO_NAMES[str(mad_prefix)]
self.acq_widget_layout.energies_combo.setCurrentIndex(index)
self.acq_widget_layout.mad_cbox.setChecked(True)
self.acq_widget_layout.energies_combo.setEnabled(True)
else:
self.acq_widget_layout.mad_cbox.setChecked(False)
self.acq_widget_layout.energies_combo.setEnabled(False)
self.acq_widget_layout.energies_combo.setCurrentIndex(0)
#self.update_osc_start_limits()
#self.update_osc_total_range()
self.emit_acq_parameters_changed()
def set_tunable_energy(self, state):
"""
Descript. :
"""
self.acq_widget_layout.energy_ledit.setEnabled(state)
self.acq_widget_layout.mad_cbox.setEnabled(state)
self.acq_widget_layout.energies_combo.setEnabled(state)
def check_parameter_conflict(self):
return self._acquisition_mib.validate_all()
def emit_acq_parameters_changed(self):
self.acqParametersChangedSignal.emit(self._acquisition_mib.validate_all())
示例6: DataPathWidget
# 需要导入模块: from widgets.Qt4_widget_utils import DataModelInputBinder [as 别名]
# 或者: from widgets.Qt4_widget_utils.DataModelInputBinder import set_model [as 别名]
#.........这里部分代码省略.........
if str(self._data_model.precision).isdigit():
file_name = self._data_model.get_image_file_name()
file_name = file_name.replace('%' + str(self._data_model.precision) + 'd',
int(self._data_model.precision) * '#' )
file_name = file_name.strip(' ')
self.data_path_layout.file_name_value_label.setText(file_name)
def set_data_path(self, path):
"""
Descript. :
"""
(dir_name, file_name) = os.path.split(path)
self.set_directory(dir_name)
file_name = file_name.replace('%' + str(self._data_model.precision) + 'd',
int(self._data_model.precision) * '#' )
self.data_path_layout.file_name_value_label.setText(file_name)
def set_directory(self, directory):
"""
Descript. :
"""
base_image_dir = self._base_image_dir
dir_parts = directory.split(base_image_dir)
if len(dir_parts) > 1:
sub_dir = dir_parts[1]
self._data_model.directory = directory
self.data_path_layout.folder_ledit.setText(sub_dir)
else:
self.data_path_layout.folder_ledit.setText('')
self._data_model.directory = base_image_dir
self.data_path_layout.base_path_ledit.setText(base_image_dir)
def set_run_number(self, run_number):
"""
Descript. :
"""
self._data_model.run_number = int(run_number)
self.data_path_layout.run_number_ledit.setText(str(run_number))
def set_prefix(self, base_prefix):
"""
Descript. :
"""
self._data_model.base_prefix = str(base_prefix)
self.data_path_layout.prefix_ledit.setText(str(base_prefix))
file_name = self._data_model.get_image_file_name()
file_name = file_name.replace('%' + str(self._data_model.precision) + 'd',
int(self._data_model.precision) * '#' )
self.data_path_layout.file_name_value_label.setText(file_name)
def update_data_model(self, data_model):
"""
Descript. :
"""
self._data_model = data_model
self.set_data_path(data_model.get_image_path())
self._data_model_pm.set_model(data_model)
def indicate_path_conflict(self, conflict):
"""
Descript. :
"""
if conflict:
Qt4_widget_colors.set_widget_color(\
self.data_path_layout.prefix_ledit,
Qt4_widget_colors.LIGHT_RED,
QPalette.Base)
Qt4_widget_colors.set_widget_color(\
self.data_path_layout.run_number_ledit,
Qt4_widget_colors.LIGHT_RED,
QPalette.Base)
Qt4_widget_colors.set_widget_color(\
self.data_path_layout.folder_ledit,
Qt4_widget_colors.LIGHT_RED,
QPalette.Base)
logging.getLogger("GUI").\
error('The current path settings will overwrite data ' + \
'from another task. Correct the problem before ' + \
'adding to queue')
else:
# We had a conflict previous, but its corrected now !
if self.path_conflict_state:
logging.getLogger("GUI").info('Path valid')
Qt4_widget_colors.set_widget_color(\
self.data_path_layout.prefix_ledit,
Qt4_widget_colors.WHITE,
QPalette.Base)
Qt4_widget_colors.set_widget_color(\
self.data_path_layout.run_number_ledit,
Qt4_widget_colors.WHITE,
QPalette.Base)
Qt4_widget_colors.set_widget_color(\
self.data_path_layout.folder_ledit,
Qt4_widget_colors.WHITE,
QPalette.Base)
self.path_conflict_state = conflict
示例7: ProcessingWidget
# 需要导入模块: from widgets.Qt4_widget_utils import DataModelInputBinder [as 别名]
# 或者: from widgets.Qt4_widget_utils.DataModelInputBinder import set_model [as 别名]
class ProcessingWidget(QtGui.QWidget):
def __init__(self, parent = None, name = None, fl = 0, data_model = None):
QtGui.QWidget.__init__(self, parent, QtCore.Qt.WindowFlags(fl))
if name is not None:
self.setObjectName(name)
if data_model is None:
self._model = queue_model_objects.ProcessingParameters()
else:
self._model = data_model
self._model_mib = DataModelInputBinder(self._model)
self.processing_widget = self.acq_widget_layout = uic.loadUi(
os.path.join(os.path.dirname(__file__),
"ui_files/Qt4_processing_widget_vertical_layout.ui"))
self.main_layout = QtGui.QVBoxLayout(self)
self.main_layout.addWidget(self.processing_widget)
self.main_layout.setSpacing(0)
self.main_layout.setContentsMargins(0, 0, 0, 0)
self.setLayout(self.main_layout)
self.processing_widget.findChild(QtGui.QComboBox, 'space_group_cbox').\
addItems(queue_model_enumerables.XTAL_SPACEGROUPS)
self._model_mib.bind_value_update('cell_a',
self.processing_widget.findChild(QtGui.QLineEdit, 'a_ledit'),
float,
None)
self._model_mib.bind_value_update('cell_alpha',
self.processing_widget.findChild(QtGui.QLineEdit, 'alpha_ledit'),
float,
None)
self._model_mib.bind_value_update('cell_b',
self.processing_widget.findChild(QtGui.QLineEdit, 'b_ledit'),
float,
None)
self._model_mib.bind_value_update('cell_beta',
self.processing_widget.findChild(QtGui.QLineEdit, 'beta_ledit'),
float,
None)
self._model_mib.bind_value_update('cell_c',
self.processing_widget.findChild(QtGui.QLineEdit, 'c_ledit'),
float,
None)
self._model_mib.bind_value_update('cell_gamma',
self.processing_widget.findChild(QtGui.QLineEdit, 'gamma_ledit'),
float,
None)
self._model_mib.bind_value_update('num_residues',
self.processing_widget.findChild(QtGui.QLineEdit, 'num_residues_ledit'),
float,
None)
self.connect(self.processing_widget.findChild(QtGui.QComboBox, 'space_group_cbox'),
QtCore.SIGNAL("activated(int)"),
self._space_group_change)
def _space_group_change(self, index):
self._model.space_group = queue_model_enumerables.\
XTAL_SPACEGROUPS[index]
def _set_space_group(self, space_group):
index = 0
if space_group in queue_model_enumerables.XTAL_SPACEGROUPS:
index = queue_model_enumerables.XTAL_SPACEGROUPS.index(space_group)
self._space_group_change(index)
self.processing_widget.findChild(QtGui.QComboBox, 'space_group_cbox').setCurrentIndex(index)
def update_data_model(self, model):
self._model = model
self._model_mib.set_model(model)
self._set_space_group(model.space_group)
示例8: ProcessingWidget
# 需要导入模块: from widgets.Qt4_widget_utils import DataModelInputBinder [as 别名]
# 或者: from widgets.Qt4_widget_utils.DataModelInputBinder import set_model [as 别名]
class ProcessingWidget(QWidget):
enableProcessingSignal = pyqtSignal(bool, bool)
def __init__(self, parent=None, name=None, fl=0, data_model=None):
QWidget.__init__(self, parent, Qt.WindowFlags(fl))
if name is not None:
self.setObjectName(name)
if data_model is None:
self._model = queue_model_objects.ProcessingParameters()
else:
self._model = data_model
self._model_mib = DataModelInputBinder(self._model)
self.processing_widget = self.acq_widget_layout = loadUi(
os.path.join(os.path.dirname(__file__),
"ui_files/Qt4_processing_widget_vertical_layout.ui"))
self.main_layout = QVBoxLayout(self)
self.main_layout.addWidget(self.processing_widget)
self.main_layout.setSpacing(0)
self.main_layout.setContentsMargins(0, 0, 0, 0)
self.processing_widget.space_group_combo.\
addItems(queue_model_enumerables.XTAL_SPACEGROUPS)
self._model_mib.bind_value_update('cell_a',
self.processing_widget.a_ledit,
float,
None)
self._model_mib.bind_value_update('cell_alpha',
self.processing_widget.alpha_ledit,
float,
None)
self._model_mib.bind_value_update('cell_b',
self.processing_widget.b_ledit,
float,
None)
self._model_mib.bind_value_update('cell_beta',
self.processing_widget.beta_ledit,
float,
None)
self._model_mib.bind_value_update('cell_c',
self.processing_widget.c_ledit,
float,
None)
self._model_mib.bind_value_update('cell_gamma',
self.processing_widget.gamma_ledit,
float,
None)
self._model_mib.bind_value_update('num_residues',
self.processing_widget.num_residues_ledit,
float,
None)
self.processing_widget.space_group_combo.activated.\
connect(self._space_group_change)
self.processing_widget.run_processing_after_cbox.stateChanged.\
connect(self._run_processing_after_toggled)
self.processing_widget.run_processing_parallel_cbox.stateChanged.\
connect(self._run_processing_parallel_toggled)
def _space_group_change(self, index):
self._model.space_group = queue_model_enumerables.\
XTAL_SPACEGROUPS[index]
def _set_space_group(self, space_group):
index = 0
if space_group in queue_model_enumerables.XTAL_SPACEGROUPS:
index = queue_model_enumerables.XTAL_SPACEGROUPS.index(space_group)
self._space_group_change(index)
self.processing_widget.space_group_combo.setCurrentIndex(index)
def update_data_model(self, model):
self._model = model
self._model_mib.set_model(model)
self._set_space_group(model.space_group)
def _run_processing_after_toggled(self, state):
self.enableProcessingSignal.emit(\
self.processing_widget.run_processing_after_cbox.isChecked(),
self.processing_widget.run_processing_parallel_cbox.isChecked())
def _run_processing_parallel_toggled(self, state):
self.enableProcessingSignal.emit(\
self.processing_widget.run_processing_after_cbox.isChecked(),
self.processing_widget.run_processing_parallel_cbox.isChecked())
示例9: AcquisitionWidget
# 需要导入模块: from widgets.Qt4_widget_utils import DataModelInputBinder [as 别名]
# 或者: from widgets.Qt4_widget_utils.DataModelInputBinder import set_model [as 别名]
#.........这里部分代码省略.........
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):
try:
osc_start = float(self.acq_widget_layout.osc_start_ledit.text())
osc_range = float(self.acq_widget_layout.osc_range_ledit.text())
except ValueError:
return
if osc_range == 0:
return
if self._beamline_setup_hwobj.diffractometer_hwobj.in_plate_mode():
num_image_limit = int((self.osc_start_validator.top() - osc_start) / osc_range)
else:
num_image_limit = 99999
self.num_img_validator.setTop(num_image_limit)
self.acq_widget_layout.num_images_ledit.setToolTip(\
"Number of frames limit : %d" % num_image_limit)
self._acquisition_mib.validate_all()
def init_detector_roi_modes(self):
if self._beamline_setup_hwobj is not None:
roi_modes = self._beamline_setup_hwobj._get_roi_modes()
if (len(roi_modes) > 0 and
self.acq_widget_layout.detector_roi_mode_combo.count() == 0):
for roi_mode in roi_modes:
self.acq_widget_layout.detector_roi_mode_combo.\
addItem(roi_mode)
self.acq_widget_layout.detector_roi_mode_label.setEnabled(True)
self.acq_widget_layout.detector_roi_mode_combo.setEnabled(True)
#self._acquisition_mib.bind_value_update('detector_roi_mode',
# self.acq_widget_layout.detector_roi_mode_combo,
## str,
# None)
def update_detector_roi_mode(self, roi_mode_index):
if self.acq_widget_layout.detector_roi_mode_combo.count() > 0:
self.acq_widget_layout.detector_roi_mode_combo.\
setCurrentIndex(roi_mode_index)
def detector_roi_mode_changed(self, roi_mode_index):
if self._beamline_setup_hwobj is not None:
self._beamline_setup_hwobj.detector_hwobj.set_roi_mode(roi_mode_index)
def update_data_model(self, acquisition_parameters, path_template):
"""
Descript. :
"""
self._acquisition_parameters = acquisition_parameters
self._path_template = path_template
self._acquisition_mib.set_model(acquisition_parameters)
#Update mad widgets
mad = True if self._path_template.mad_prefix != '' else False
if mad:
mad_prefix = self._path_template.mad_prefix
index = MAD_ENERGY_COMBO_NAMES[mad_prefix]
self.acq_widget_layout.energies_combo.setCurrentIndex(index)
self.acq_widget_layout.mad_cbox.setChecked(True)
self.acq_widget_layout.energies_combo.setEnabled(True)
else:
self.acq_widget_layout.mad_cbox.setChecked(False)
self.acq_widget_layout.energies_combo.setEnabled(False)
self.acq_widget_layout.energies_combo.setCurrentIndex(0)
def set_tunable_energy(self, state):
"""
Descript. :
"""
self.acq_widget_layout.energy_ledit.setEnabled(state)
self.acq_widget_layout.mad_cbox.setEnabled(state)
self.acq_widget_layout.energies_combo.setEnabled(state)
def disable_inverse_beam(self, state):
"""
Descript. :
"""
self.acq_widget_layout.inverse_beam_cbx.setDisabled(state)
self.acq_widget_layout.subwedge_size_label.setDisabled(state)
self.acq_widget_layout.subwedge_size_ledit.setDisabled(state)
def hide_aperture(self, state):
"""
Descript. :
"""
pass
示例10: AcquisitionStillWidget
# 需要导入模块: from widgets.Qt4_widget_utils import DataModelInputBinder [as 别名]
# 或者: from widgets.Qt4_widget_utils.DataModelInputBinder import set_model [as 别名]
#.........这里部分代码省略.........
(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:
roi_modes = self._beamline_setup_hwobj.detector_hwobj.get_roi_modes()
if (len(roi_modes) > 0 and
self.acq_widget_layout.detector_roi_mode_combo.count() == 0):
for roi_mode in roi_modes:
self.acq_widget_layout.detector_roi_mode_combo.\
addItem(roi_mode)
self.acq_widget_layout.detector_roi_mode_label.setEnabled(len(roi_modes) > 1)
self.acq_widget_layout.detector_roi_mode_combo.setEnabled(len(roi_modes) > 1)
def update_detector_roi_mode(self, roi_mode_index):
if roi_mode_index is not None and \
self.acq_widget_layout.detector_roi_mode_combo.count() > 0:
self.acq_widget_layout.detector_roi_mode_combo.\
setCurrentIndex(roi_mode_index)
def detector_roi_mode_changed(self, roi_mode_index):
if self._beamline_setup_hwobj is not None:
self._beamline_setup_hwobj.detector_hwobj.set_roi_mode(roi_mode_index)
def update_osc_range_per_frame_limits(self):
pass
def update_exp_time_limits(self):
pass
def update_osc_start(self, value):
pass
def update_kappa(self, value):
pass
def update_kappa_phi(self, value):
pass
def update_data_model(self, acquisition_parameters, path_template):
self._acquisition_parameters = acquisition_parameters
self._path_template = path_template
self._acquisition_mib.set_model(acquisition_parameters)
self.emit_acq_parameters_changed()
def check_parameter_conflict(self):
return self._acquisition_mib.validate_all()
def emit_acq_parameters_changed(self):
self.acqParametersChangedSignal.emit(self._acquisition_mib.validate_all())
def set_energies(self, energies):
pass
def num_triggers_ledit_changed(self, value):
if "num_triggers" not in self.value_changed_list:
self.value_changed_list.append("num_triggers")
self.update_num_images()
self.emit_acq_parameters_changed()
def num_images_per_trigger_ledit_changed(self, values):
if "num_images_per_trigger" not in self.value_changed_list:
self.value_changed_list.append("num_images_per_trigger")
self.update_num_images()
self.emit_acq_parameters_changed()
def update_num_images(self):
self.acq_widget_layout.num_images_ledit.setText(\
str(self._acquisition_parameters.num_triggers * \
self._acquisition_parameters.num_images_per_trigger))
示例11: GphlSetupWidget
# 需要导入模块: from widgets.Qt4_widget_utils import DataModelInputBinder [as 别名]
# 或者: from widgets.Qt4_widget_utils.DataModelInputBinder import set_model [as 别名]
class GphlSetupWidget(QtGui.QWidget):
"""Superclass for GPhL interface widgets"""
def __init__(self, parent=None, name='gphl_setup_widget'):
QtGui.QWidget.__init__(self,parent)
if name is not None:
self.setObjectName(name)
# Properties ----------------------------------------------------------
# Signals ------------------------------------------------------------
# Slots ---------------------------------------------------------------
dispatcher.connect(self._refresh_interface, 'model_update',
dispatcher.Any)
# Hardware objects ----------------------------------------------------
# Internal variables -------------------------------------------------
self._widget_data = OrderedDict()
self._data_object = GphlAcquisitionData()
self._pulldowns = {}
self._parameter_mib = DataModelInputBinder(self._data_object)
# Graphic elements ----------------------------------------------------
_parameters_widget = self._parameters_widget = QtGui.QWidget(self)
QtGui.QGridLayout(_parameters_widget)
_parameters_widget.layout().setColumnStretch(2, 1)
# Layout --------------------------------------------------------------
# This seems to be necessary to make widget visible
_main_vlayout = QtGui.QVBoxLayout(self)
_main_vlayout.addWidget(_parameters_widget)
_main_vlayout.setSpacing(0)
_main_vlayout.setContentsMargins(0, 0, 0, 0)
def setEnabled(self, value):
super(GphlSetupWidget, self).setEnabled(value)
for tag in self._widget_data:
self.set_parameter_enabled(tag, value, warn=False)
def set_parameter_enabled(self, tag, value, warn=True):
tt = self._widget_data.get(tag)
if tt:
if hasattr(tt[0], 'setEnabled'):
tt[0].setEnabled(value)
elif warn:
logging.getLogger().warning(
"%s Widget has no attribute setEnabled" % tag
)
elif warn:
logging.getLogger().warning(
"%s field not found in GphlSetupWidget" % tag
)
def get_data_object(self):
return self._data_object
def populate_widget(self, **kw):
self._data_object = data_object = GphlAcquisitionData()
self._parameter_mib.bindings.clear()
# NB must be done here to set empty model, and also in subclasses:
self._parameter_mib.set_model(data_object)
for field_name, tags in self._pulldowns.items():
widget = self._widget_data[field_name][0]
widget.clear()
widget.addItems(list(QtCore.QString(tag) for tag in tags))
widget.setCurrentIndex(0)
def set_parameter_value(self, name, value):
"""Set value - NB ComboBoxes are set by text, not index"""
if hasattr(self._data_object, name):
tags = self._pulldowns.get(name)
if tags is None:
# Not a pulldown
setattr(self._data_object, name, value)
else:
# This is a pulldown
if value in tags:
indx = tags.index(value)
setattr(self._data_object, name, indx)
else:
raise ValueError(
"GPhL acquisition widget %s pulldown has no value %s"
% (name, value)
)
self._parameter_mib._update_widget(name, None)
else:
raise ValueError(
"GPhL acquisition widget has no parameter named %s" % name
)
def get_parameter_value(self, name):
"""Return value of parameter <name> or None if it does not exist
NB ComboBoxes return text values, not indices
#.........这里部分代码省略.........
示例12: XrayImagingParametersWidget
# 需要导入模块: from widgets.Qt4_widget_utils import DataModelInputBinder [as 别名]
# 或者: from widgets.Qt4_widget_utils.DataModelInputBinder import set_model [as 别名]
class XrayImagingParametersWidget(QWidget):
def __init__(self, parent=None, name=None, fl=0, xray_imaging_params=None):
QWidget.__init__(self, parent, Qt.WindowFlags(fl))
if name is not None:
self.setObjectName(name)
# Hardware objects ----------------------------------------------------
self._beamline_setup_hwobj = None
# Internal variables --------------------------------------------------
# Properties ----------------------------------------------------------
# Signals -------------------------------------------------------------
# Slots ---------------------------------------------------------------
# Graphic elements ----------------------------------------------------
if xray_imaging_params is None:
self._xray_imaging_parameters = \
queue_model_objects.XrayImagingParameters()
else:
self._xray_imaging_parameters = xray_imaging_params
self._xray_imaging_mib = DataModelInputBinder(self._xray_imaging_parameters)
self._parameters_widget = loadUi(os.path.join(\
os.path.dirname(__file__),
"ui_files/Qt4_xray_imaging_parameters_widget_layout.ui"))
# Layout --------------------------------------------------------------
__main_vlayout = QVBoxLayout(self)
__main_vlayout.addWidget(self._parameters_widget)
__main_vlayout.setSpacing(0)
__main_vlayout.setContentsMargins(0, 0, 0, 0)
# SizePolicies --------------------------------------------------------
# Qt signal/slot connections ------------------------------------------
# Other ---------------------------------------------------------------
def set_beamline_setup(self, beamline_setup):
"""Sets beamline setup and links qt gui with data model
"""
self._beamline_setup_hwobj = beamline_setup
self._xray_imaging_mib.\
bind_value_update('camera_hw_binning',
self._parameters_widget.camera_hw_binning_combo,
int,
None)
self._xray_imaging_mib.\
bind_value_update('camera_hw_roi',
self._parameters_widget.camera_hw_roi_combo,
int,
None)
self._xray_imaging_mib.\
bind_value_update('store_data',
self._parameters_widget.store_data_cbox,
bool,
None)
self._xray_imaging_mib.\
bind_value_update('live_display',
self._parameters_widget.live_display_cbox,
bool,
None)
self._xray_imaging_mib.\
bind_value_update('pre_flat_field_frames',
self._parameters_widget.pre_flat_cbox,
bool,
None)
self._xray_imaging_mib.\
bind_value_update('post_flat_field_frames',
self._parameters_widget.post_flat_cbox,
bool,
None)
self._xray_imaging_mib.\
bind_value_update('apply_pre_flat_field_frames',
self._parameters_widget.apply_flat_cbox,
bool,
None)
def update_data_model(self, xray_imaging_parameters):
"""
Descript. :
"""
self._xray_imaging_parameters = xray_imaging_parameters
self._xray_imaging_mib.set_model(xray_imaging_parameters)
示例13: CreateCharWidget
# 需要导入模块: from widgets.Qt4_widget_utils import DataModelInputBinder [as 别名]
# 或者: from widgets.Qt4_widget_utils.DataModelInputBinder import set_model [as 别名]
#.........这里部分代码省略.........
energy = round(float(energy), 4)
except AttributeError:
energy = 0
self._acquisition_parameters.resolution = resolution
self._acquisition_parameters.energy = energy
self._acquisition_parameters.transmission = transmission
else:
self._acquisition_parameters = queue_model_objects.AcquisitionParameters()
return
self._path_template.reference_image_prefix = 'ref'
# The num images drop down default value is 1
# we would like it to be 2
self._acquisition_parameters.num_images = 2
self._char.characterisation_software =\
queue_model_enumerables.COLLECTION_ORIGIN.EDNA
self._path_template.num_files = 2
self._acquisition_parameters.shutterless = False
def single_item_selection(self, tree_item):
"""
Descript. :
"""
CreateTaskBase.single_item_selection(self, tree_item)
if isinstance(tree_item, Qt4_queue_item.SampleQueueItem):
self._init_models()
self._set_space_group(self._char_params.space_group)
self._acq_widget.update_data_model(self._acquisition_parameters,
self._path_template)
self._char_params_mib.set_model(self._char_params)
#self._char_params = copy.deepcopy(self._char_params)
#self._acquisition_parameters = copy.deepcopy(self._acquisition_parameters)
elif isinstance(tree_item, Qt4_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:
self.select_shape_with_cpos(self._acquisition_parameters.\
centred_position)
示例14: DataPathWidget
# 需要导入模块: from widgets.Qt4_widget_utils import DataModelInputBinder [as 别名]
# 或者: from widgets.Qt4_widget_utils.DataModelInputBinder import set_model [as 别名]
#.........这里部分代码省略.........
Qt4_widget_colors.set_widget_color(self.data_path_layout.folder_ledit,
Qt4_widget_colors.WHITE)
self.emit(QtCore.SIGNAL('pathTemplateChanged'),
self.data_path_layout.folder_ledit,
new_value)
def update_file_name(self):
"""
Descript. : updates filename if prefix or run number changed
at start values are initalized before precision is set.
so a check for isdigit is done to be on the safe side
"""
if str(self._data_model.precision).isdigit():
file_name = self._data_model.get_image_file_name()
file_name = file_name.replace('%' + self._data_model.precision + 'd',
int(self._data_model.precision) * '#' )
file_name = file_name.strip(' ')
self.data_path_layout.file_name_value_label.setText(file_name)
def set_data_path(self, path):
"""
Descript. :
"""
(dir_name, file_name) = os.path.split(path)
self.set_directory(dir_name)
file_name = file_name.replace('%' + self._data_model.precision + 'd',
int(self._data_model.precision) * '#' )
self.data_path_layout.file_name_value_label.setText(file_name)
def set_directory(self, directory):
"""
Descript. :
"""
base_image_dir = self._base_image_dir
dir_parts = directory.split(base_image_dir)
if len(dir_parts) > 1:
sub_dir = dir_parts[1]
self._data_model.directory = directory
self.data_path_layout.folder_ledit.setText(sub_dir)
else:
self.data_path_layout.folder_ledit.setText('')
self._data_model.directory = base_image_dir
self.data_path_layout.base_path_ledit.setText(base_image_dir)
def set_run_number(self, run_number):
"""
Descript. :
"""
self._data_model.run_number = int(run_number)
self.data_path_layout.run_number_ledit.setText(str(run_number))
def set_prefix(self, base_prefix):
"""
Descript. :
"""
self._data_model.base_prefix = str(base_prefix)
self.data_path_layout.prefix_ledit.setText(str(base_prefix))
file_name = self._data_model.get_image_file_name()
file_name = file_name.replace('%' + self._data_model.precision + 'd',
int(self._data_model.precision) * '#' )
self.data_path_layout.file_name_value_label.setText(file_name)
def update_data_model(self, data_model):
"""
Descript. :
"""
self._data_model = data_model
self.set_data_path(data_model.get_image_path())
self._data_model_pm.set_model(data_model)
def indicate_path_conflict(self, conflict):
"""
Descript. :
"""
if conflict:
Qt4_widget_colors.set_widget_color(self.data_path_layout.prefix_ledit,
Qt4_widget_colors.LIGHT_RED, QtGui.QPalette.Base)
Qt4_widget_colors.set_widget_color(self.data_path_layout.run_number_ledit,
Qt4_widget_colors.LIGHT_RED, QtGui.QPalette.Base)
Qt4_widget_colors.set_widget_color(self.data_path_layout.folder_ledit,
Qt4_widget_colors.LIGHT_RED, QtGui.QPalette.Base)
logging.getLogger("user_level_log").\
error('The current path settings will overwrite data' +\
' from another task. Correct the problem before adding to queue')
else:
# We had a conflict previous, but its corrected now !
if self.path_conflict_state:
logging.getLogger("user_level_log").info('Path valid')
Qt4_widget_colors.set_widget_color(self.data_path_layout.prefix_ledit,
Qt4_widget_colors.WHITE, QtGui.QPalette.Base)
Qt4_widget_colors.set_widget_color(self.data_path_layout.run_number_ledit,
Qt4_widget_colors.WHITE, QtGui.QPalette.Base)
Qt4_widget_colors.set_widget_color(self.data_path_layout.folder_ledit,
Qt4_widget_colors.WHITE, QtGui.QPalette.Base)
self.path_conflict_state = conflict