本文整理汇总了Python中widgets.Qt4_widget_utils.DataModelInputBinder类的典型用法代码示例。如果您正苦于以下问题:Python DataModelInputBinder类的具体用法?Python DataModelInputBinder怎么用?Python DataModelInputBinder使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了DataModelInputBinder类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: __init__
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)
开发者ID:MartinSavko,项目名称:mxcube,代码行数:32,代码来源:Qt4_gphl_acquisition_widget.py
示例2: populate_widget
def populate_widget(self, tree_view_item):
self._tree_view_item = tree_view_item
self._data_collection = tree_view_item.get_model().reference_image_collection
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)
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)
开发者ID:hzb-mx,项目名称:mxcube,代码行数:29,代码来源:Qt4_advanced_parameters_widget.py
示例3: __init__
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)
开发者ID:vrey01,项目名称:mxcube,代码行数:35,代码来源:Qt4_xray_imaging_parameters_widget.py
示例4: populate_widget
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)
开发者ID:jordiandreu,项目名称:mxcube,代码行数:29,代码来源:Qt4_dc_parameters_widget.py
示例5: __init__
def __init__(self, parent = None, name = None, fl = 0, acq_params = None,
path_template = None, layout = None):
"""
Descript. :
"""
QtGui.QWidget.__init__(self, parent, QtCore.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 acq_params is None:
self._acquisition_parameters = queue_model_objects.AcquisitionParameters()
else:
self._acquisition_parameters = acq_params
if path_template is None:
self._path_template = queue_model_objects.PathTemplate()
else:
self._path_template = path_template
self._acquisition_mib = DataModelInputBinder(self._acquisition_parameters)
self.acq_widget = uic.loadUi(os.path.join(os.path.dirname(__file__),
"ui_files/Qt4_acquisition_widget_vertical_simple_layout.ui"))
# Layout --------------------------------------------------------------
main_layout = QtGui.QVBoxLayout(self)
main_layout.addWidget(self.acq_widget)
main_layout.setSpacing(0)
main_layout.setContentsMargins(0, 0, 0, 0)
self.setLayout(main_layout)
# SizePolicies --------------------------------------------------------
# Qt signal/slot connections ------------------------------------------
self.acq_widget.num_images_cbox.activated.connect(self.update_num_images)
self.acq_widget.detector_mode_combo.activated.connect(self.detector_mode_changed)
self.acq_widget.osc_start_cbox.toggled.connect(self.osc_start_cbox_click)
# Other ---------------------------------------------------------------
self.energy_validator = QtGui.QDoubleValidator(0, 25, 5, self)
self.resolution_validator = QtGui.QDoubleValidator(0, 15, 3, self)
self.transmission_validator = QtGui.QDoubleValidator(0, 100, 3, self)
self.exp_time_validator = QtGui.QDoubleValidator(0, 10000, 5, self)
self.acq_widget.osc_start_ledit.setEnabled(False)
self.acq_widget.kappa_ledit.setEnabled(False)
self.acq_widget.kappa_phi_ledit.setEnabled(False)
self.acq_widget.num_images_cbox.setCurrentIndex(1)
开发者ID:folf,项目名称:mxcube,代码行数:58,代码来源:Qt4_acquisition_widget_simple.py
示例6: __init__
def __init__(self, parent = None, name = '', fl = 0, data_model = None,
layout = None):
QWidget.__init__(self, parent, Qt.WindowFlags(fl))
if name is not None:
self.setObjectName(name)
# Hardware objects ----------------------------------------------------
# Internal variables --------------------------------------------------
self._base_image_dir = None
self._base_process_dir = None
self.path_conflict_state = False
self.enable_macros = False
if data_model is None:
self._data_model = queue_model_objects.PathTemplate()
else:
self._data_model = data_model
self._data_model_pm = DataModelInputBinder(self._data_model)
# Graphic elements ----------------------------------------------------
if layout == "vertical":
self.data_path_layout = loadUi(\
os.path.join(os.path.dirname(__file__),
"ui_files/Qt4_data_path_widget_vertical_layout.ui"))
else:
self.data_path_layout = loadUi(\
os.path.join(os.path.dirname(__file__),
"ui_files/Qt4_data_path_widget_horizontal_layout.ui"))
# Layout --------------------------------------------------------------
_main_vlayout = QVBoxLayout(self)
_main_vlayout.addWidget(self.data_path_layout)
_main_vlayout.setSpacing(0)
_main_vlayout.setContentsMargins(0, 0, 0, 0)
# Qt signal/slot connections ------------------------------------------
self.data_path_layout.prefix_ledit.textChanged.\
connect(self._prefix_ledit_change)
self.data_path_layout.run_number_ledit.textChanged.\
connect(self._run_number_ledit_change)
self.data_path_layout.browse_button.clicked.\
connect(self._browse_clicked)
self.data_path_layout.folder_ledit.textChanged.\
connect(self._folder_ledit_change)
self.data_path_layout.compression_cbox.toggled.\
connect(self._compression_toggled)
# Other ---------------------------------------------------------------
self._data_model_pm.bind_value_update('base_prefix',
self.data_path_layout.prefix_ledit, str, None)
self._data_model_pm.bind_value_update('run_number',
self.data_path_layout.run_number_ledit,
int, QIntValidator(0, 1000, self))
开发者ID:MartinSavko,项目名称:mxcube,代码行数:56,代码来源:Qt4_data_path_widget.py
示例7: populate_widget
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.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.acq_widget.use_osc_start(True)
self.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)
开发者ID:folf,项目名称:mxcube,代码行数:42,代码来源:Qt4_dc_parameters_widget.py
示例8: populate_widget
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)
开发者ID:douglasbeniz,项目名称:mxcube,代码行数:39,代码来源:Qt4_advanced_parameters_widget.py
示例9: AcquisitionWidget
class AcquisitionWidget(QWidget):
acqParametersChangedSignal = pyqtSignal(list)
madEnergySelectedSignal = pyqtSignal(str, float, bool)
def __init__(self, parent=None, name=None, fl=0, acq_params=None,
path_template=None, layout='horizontal'):
QWidget.__init__(self, parent, Qt.WindowFlags(fl))
if name is not None:
self.setObjectName(name)
# Hardware objects ----------------------------------------------------
self._beamline_setup_hwobj = None
self._diffractometer_hwobj = None
# Internal variables --------------------------------------------------
self.previous_energy = 0
# If the acq. widget is used with grids then total osc range is not
# equal to num_images * osc_range, but num_images_per_line * osc_range
# For grids the osc total range is updated when a grid is selected
self.grid_mode = False
# Properties ----------------------------------------------------------
# Signals -------------------------------------------------------------
# Slots ---------------------------------------------------------------
# Graphic elements ----------------------------------------------------
if acq_params is None:
self._acquisition_parameters = queue_model_objects.\
AcquisitionParameters()
else:
self._acquisition_parameters = acq_params
if path_template is None:
self._path_template = queue_model_objects.PathTemplate()
else:
self._path_template = path_template
self._acquisition_mib = DataModelInputBinder(self._acquisition_parameters)
if layout == "horizontal":
self.acq_widget_layout = loadUi(os.path.join(\
os.path.dirname(__file__),
"ui_files/Qt4_acquisition_widget_horizontal_layout.ui"))
self.use_osc_start(False)
else:
self.acq_widget_layout = loadUi(os.path.join(\
os.path.dirname(__file__),
"ui_files/Qt4_acquisition_widget_vertical_layout.ui"))
# Layout --------------------------------------------------------------
__main_vlayout = QVBoxLayout(self)
__main_vlayout.addWidget(self.acq_widget_layout)
__main_vlayout.setSpacing(0)
__main_vlayout.setContentsMargins(0, 0, 0, 0)
# SizePolicies --------------------------------------------------------
# Qt signal/slot connections ------------------------------------------
self.acq_widget_layout.osc_start_cbox.stateChanged.connect(\
self.fix_osc_start)
self.acq_widget_layout.exp_time_ledit.textChanged.connect(\
self.exposure_time_ledit_changed)
self.acq_widget_layout.first_image_ledit.textChanged.connect(\
self.first_image_ledit_change)
self.acq_widget_layout.num_images_ledit.textChanged.connect(\
self.num_images_ledit_change)
self.acq_widget_layout.detector_roi_mode_combo.activated.connect(\
self.detector_roi_mode_changed)
self.acq_widget_layout.energies_combo.activated.connect(\
self.energy_selected)
self.acq_widget_layout.mad_cbox.toggled.connect(\
self.use_mad)
self.acq_widget_layout.osc_start_ledit.textEdited.connect(\
self.osc_start_ledit_changed)
self.acq_widget_layout.osc_range_ledit.textEdited.connect(\
self.osc_range_per_frame_ledit_changed)
self.acq_widget_layout.osc_total_range_ledit.textEdited.connect(\
self.osc_total_range_ledit_changed)
self.acq_widget_layout.energy_ledit.textEdited.connect(\
self.energy_ledit_changed)
self.acq_widget_layout.transmission_ledit.textEdited.connect(\
self.transmission_ledit_changed)
self.acq_widget_layout.resolution_ledit.textEdited.connect(\
self.resolution_ledit_changed)
self.acq_widget_layout.kappa_ledit.textEdited.connect(\
self.kappa_ledit_changed)
self.acq_widget_layout.kappa_phi_ledit.textEdited.connect(\
self.kappa_phi_ledit_changed)
if self.acq_widget_layout.findChild(QLineEdit, "overlap_ledit"):
self.acq_widget_layout.overlap_ledit.textChanged.connect(\
self.overlap_changed)
if self.acq_widget_layout.findChild(QCheckBox, "max_osc_range_cbx"):
self.acq_widget_layout.max_osc_range_cbx.toggled.connect(\
#.........这里部分代码省略.........
开发者ID:vrey01,项目名称:mxcube,代码行数:101,代码来源:Qt4_acquisition_widget.py
示例10: __init__
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)
开发者ID:olofsvensson,项目名称:mxcube,代码行数:64,代码来源:Qt4_processing_widget.py
示例11: AcquisitionWidgetSimple
class AcquisitionWidgetSimple(QtGui.QWidget):
"""
Descript. :
"""
acqParametersChangedSignal = QtCore.pyqtSignal()
madEnergySelectedSignal = QtCore.pyqtSignal(str, float, bool)
def __init__(self, parent = None, name = None, fl = 0, acq_params = None,
path_template = None, layout = None):
"""
Descript. :
"""
QtGui.QWidget.__init__(self, parent, QtCore.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 acq_params is None:
self._acquisition_parameters = queue_model_objects.AcquisitionParameters()
else:
self._acquisition_parameters = acq_params
if path_template is None:
self._path_template = queue_model_objects.PathTemplate()
else:
self._path_template = path_template
self._acquisition_mib = DataModelInputBinder(self._acquisition_parameters)
self.acq_widget_layout = uic.loadUi(os.path.join(os.path.dirname(\
__file__), "ui_files/Qt4_acquisition_widget_vertical_simple_layout.ui"))
# Layout --------------------------------------------------------------
main_layout = QtGui.QVBoxLayout(self)
main_layout.addWidget(self.acq_widget_layout)
main_layout.setSpacing(0)
main_layout.setContentsMargins(0, 0, 0, 0)
# SizePolicies --------------------------------------------------------
# Qt signal/slot connections ------------------------------------------
self.acq_widget_layout.osc_start_cbox.stateChanged.connect(\
self.use_osc_start)
self.acq_widget_layout.num_images_cbox.activated.connect(\
self.update_num_images)
self.acq_widget_layout.detector_roi_mode_combo.activated.connect(\
self.detector_roi_mode_changed)
# Other ---------------------------------------------------------------
self.osc_start_validator = QtGui.QDoubleValidator(-10000, 10000, 4, self)
self.osc_range_validator = QtGui.QDoubleValidator(-10000, 10000, 4, self)
self.kappa_validator = QtGui.QDoubleValidator(0, 360, 4, self)
self.kappa_phi_validator = QtGui.QDoubleValidator(0, 360, 4, self)
self.energy_validator = QtGui.QDoubleValidator(0, 25, 5, self)
self.resolution_validator = QtGui.QDoubleValidator(0, 15, 3, self)
self.transmission_validator = QtGui.QDoubleValidator(0, 100, 3, self)
self.exp_time_validator = QtGui.QDoubleValidator(0, 10000, 5, self)
self.acq_widget_layout.num_images_cbox.setCurrentIndex(1)
self.acq_widget_layout.detector_roi_mode_label.setEnabled(False)
self.acq_widget_layout.detector_roi_mode_combo.setEnabled(False)
def set_osc_start_limits(self, limits):
if not None in limits:
self.osc_start_validator.setRange(limits[0], limits[1], 4)
def update_osc_start(self, new_value):
"""
Descript. :
"""
if not self.acq_widget_layout.osc_start_cbox.hasFocus():
osc_start_value = 0
try:
osc_start_value = round(float(new_value), 2)
except TypeError:
pass
self.acq_widget_layout.osc_start_ledit.setText(\
"%.2f" % osc_start_value)
#self._acquisition_parameters.osc_start = osc_start_value
def update_kappa(self, new_value):
"""
Descript. :
"""
if not self.acq_widget_layout.kappa_ledit.hasFocus():
self.acq_widget_layout.kappa_ledit.setText(\
"%.2f" % float(new_value))
def update_kappa_phi(self, new_value):
"""
#.........这里部分代码省略.........
开发者ID:jordiandreu,项目名称:mxcube,代码行数:101,代码来源:Qt4_acquisition_widget_simple.py
示例12: DataPathWidget
class DataPathWidget(QWidget):
pathTemplateChangedSignal = pyqtSignal()
def __init__(self, parent = None, name = '', fl = 0, data_model = None,
layout = None):
QWidget.__init__(self, parent, Qt.WindowFlags(fl))
if name is not None:
self.setObjectName(name)
# Hardware objects ----------------------------------------------------
# Internal variables --------------------------------------------------
self._base_image_dir = None
self._base_process_dir = None
self.path_conflict_state = False
self.enable_macros = False
if data_model is None:
self._data_model = queue_model_objects.PathTemplate()
else:
self._data_model = data_model
self._data_model_pm = DataModelInputBinder(self._data_model)
# Graphic elements ----------------------------------------------------
if layout == "vertical":
self.data_path_layout = loadUi(\
os.path.join(os.path.dirname(__file__),
"ui_files/Qt4_data_path_widget_vertical_layout.ui"))
else:
self.data_path_layout = loadUi(\
os.path.join(os.path.dirname(__file__),
"ui_files/Qt4_data_path_widget_horizontal_layout.ui"))
# Layout --------------------------------------------------------------
_main_vlayout = QVBoxLayout(self)
_main_vlayout.addWidget(self.data_path_layout)
_main_vlayout.setSpacing(0)
_main_vlayout.setContentsMargins(0, 0, 0, 0)
# Qt signal/slot connections ------------------------------------------
self.data_path_layout.prefix_ledit.textChanged.\
connect(self._prefix_ledit_change)
self.data_path_layout.run_number_ledit.textChanged.\
connect(self._run_number_ledit_change)
self.data_path_layout.browse_button.clicked.\
connect(self._browse_clicked)
self.data_path_layout.folder_ledit.textChanged.\
connect(self._folder_ledit_change)
self.data_path_layout.compression_cbox.toggled.\
connect(self._compression_toggled)
# Other ---------------------------------------------------------------
self._data_model_pm.bind_value_update('base_prefix',
self.data_path_layout.prefix_ledit, str, None)
self._data_model_pm.bind_value_update('run_number',
self.data_path_layout.run_number_ledit,
int, QIntValidator(0, 1000, self))
#self._data_model_pm.bind_value_update('compression',
# self.data_path_layout.compression_cbox, bool, None)
def _browse_clicked(self):
"""
Descript. :
"""
file_dialog = QFileDialog(self)
file_dialog.setNameFilter("%s*" % self._base_image_dir)
selected_dir = str(file_dialog.getExistingDirectory(\
self, "Select a directory", self._base_image_dir))
selecte_dir = os.path.dirname(selected_dir)
if selected_dir is not None and len(selected_dir) > 0:
self.set_directory(selected_dir)
def _prefix_ledit_change(self, new_value):
"""
Descript. :
"""
cursor_pos = self.data_path_layout.prefix_ledit.cursorPosition()
if len(new_value) > 0:
available_chars = string.ascii_lowercase + string.ascii_uppercase + \
string.digits + "-_"
if self.enable_macros:
available_chars += "%"
new_value = ''.join(i for i in str(new_value) if i in available_chars)
if len(new_value) > 50:
logging.getLogger("GUI").\
error("Current prefix is to long (max 50 characters are allowed)")
new_value = new_value[:-1]
self.data_path_layout.prefix_ledit.setText(new_value)
self.data_path_layout.prefix_ledit.setCursorPosition(cursor_pos)
self._data_model.base_prefix = str(new_value)
#.........这里部分代码省略.........
开发者ID:MartinSavko,项目名称:mxcube,代码行数:101,代码来源:Qt4_data_path_widget.py
示例13: GphlSetupWidget
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
#.........这里部分代码省略.........
开发者ID:MartinSavko,项目名称:mxcube,代码行数:101,代码来源:Qt4_gphl_acquisition_widget.py
示例14: AcquisitionStillWidget
class AcquisitionStillWidget(QWidget):
acqParametersChangedSignal = pyqtSignal(list)
def __init__(self, parent=None, name=None, fl=0, acq_params=None,
path_template=None, layout='vertical'):
QWidget.__init__(self, parent, Qt.WindowFlags(fl))
if name is not None:
self.setObjectName(name)
# Hardware objects ----------------------------------------------------
self._beamline_setup_hwobj = None
self._diffractometer_hwobj = None
# Internal variables --------------------------------------------------
# Properties ----------------------------------------------------------
# Signals -------------------------------------------------------------
# Slots ---------------------------------------------------------------
# Graphic elements ----------------------------------------------------
if acq_params is None:
self._acquisition_parameters = queue_model_objects.\
AcquisitionParameters()
else:
self._acquisition_parameters = acq_params
if path_template is None:
self._path_template = queue_model_objects.PathTemplate()
else:
self._path_template = path_template
self._acquisition_mib = DataModelInputBinder(self._acquisition_parameters)
self.acq_widget_layout = loadUi(os.path.join(\
os.path.dirname(__file__),
"ui_files/Qt4_acquisition_widget_vertical_still_layout.ui"))
# Layout --------------------------------------------------------------
__main_vlayout = QVBoxLayout(self)
__main_vlayout.addWidget(self.acq_widget_layout)
__main_vlayout.setSpacing(0)
__main_vlayout.setContentsMargins(0, 0, 0, 0)
# SizePolicies --------------------------------------------------------
# Qt signal/slot connections ------------------------------------------
self.acq_widget_layout.num_triggers_ledit.textChanged.connect(\
self.num_triggers_ledit_changed)
self.acq_widget_layout.num_images_per_trigger_ledit.textChanged.connect(\
self.num_images_per_trigger_ledit_changed)
self.acq_widget_layout.exp_time_ledit.textChanged.connect(\
self.exposure_time_ledit_changed)
self.acq_widget_layout.detector_roi_mode_combo.activated.connect(\
self.detector_roi_mode_changed)
self.acq_widget_layout.energy_ledit.textEdited.connect(\
self.energy_ledit_changed)
self.acq_widget_layout.transmission_ledit.textEdited.connect(\
self.transmission_ledit_changed)
self.acq_widget_layout.resolution_ledit.textEdited.connect(\
self.resolution_ledit_changed)
# Other ---------------------------------------------------------------
self.value_changed_list = []
self.energy_validator = QDoubleValidator(\
4, 25, 4, self.acq_widget_layout.energy_ledit)
self.resolution_validator = QDoubleValidator(\
0, 15, 3, self.acq_widget_layout.resolution_ledit)
self.transmission_validator = QDoubleValidator(\
0, 100, 3, self.acq_widget_layout.transmission_ledit)
self.exp_time_validator = QDoubleValidator(\
0.0001, 10000, 7, self.acq_widget_layout.exp_time_ledit)
self.num_triggers_validator = QIntValidator(\
1, 9999999, self.acq_widget_layout.num_triggers_ledit)
self.num_images_per_trigger_validator = QIntValidator(\
1, 9999999, self.acq_widget_layout.num_images_per_trigger_ledit)
self.num_img_validator = QIntValidator(\
1, 9999999, self.acq_widget_layout.num_images_ledit)
self.acq_widget_layout.detector_roi_mode_label.setEnabled(False)
self.acq_widget_layout.detector_roi_mode_combo.setEnabled(False)
def use_osc_start(self, status):
pass
def use_max_osc_range(self, status):
pass
def use_kappa(self, status):
pass
def set_beamline_setup(self, beamline_setup):
self._beamline_setup_hwobj = beamline_setup
limits_dict = self._beamline_setup_hwobj.get_acquisition_limit_values()
self._diffractometer_hwobj = self._beamline_setup_hwobj.diffractometer_hwobj
#.........这里部分代码省略.........
开发者ID:vrey01,项目名称:mxcube,代码行数:101,代码来源:Qt4_acquisition_still_widget.py
示例15: AdvancedParametersWidget
class AdvancedParametersWidget(QWidget):
def __init__(self, parent = None, name = "advanced_parameters_widget"):
QWidget.__init__(self, parent)
# Hardware objects ----------------------------------------------------
self._queue_model_hwobj = None
self._beamline_setup_hwobj = None
# Internal values -----------------------------------------------------
self._data_collection = None
self._tree_view_item = None
# Properties ----------------------------------------------------------
# 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_beam
|
请发表评论