Source code for mxcubecore.HardwareObjects.ESRF.ESRFBeamlineActions
# Project name: MXCuBE
# https://github.com/mxcube.
#
# This file is part of MXCuBE software.
#
# MXCuBE is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# MXCuBE is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU General Lesser Public License
# along with MXCuBE. If not, see <http://www.gnu.org/licenses/>.
"""Execute commands and toggle two state actions
Example xml file:
<object class = "ESRF.ESRFBeamlineActions">
<object role="controller" href="/bliss"/>
<object role="hutchtrigger" href="/hutchtrigger"/>
<object role="scintillator" href="/udiff_scint"/>
<object role="detector_cover" href="/detcover"/>
<object role="aperture" href="/udiff_apertureinout"/>
<object role="cryostream" href="/udiff_cryo"/>
<controller_commands>
<centrebeam>Centre beam</centrebeam>
<quick_realign>Quick realign</quick_realign>
<anneal_procedure>Anneal</anneal_procedure>
</controller_commands>
<hwobj_commands>
["hutchtrigger", "scintillator", "detector_cover", "aperture", "cryostream"]
</hwobj_commands>
</object>
"""
from ast import literal_eval
from mxcubecore.HardwareObjects.BeamlineActions import (
BeamlineActions,
ControllerCommand,
HWObjActuatorCommand,
)
__copyright__ = """ Copyright © 2010-2023 by the MXCuBE collaboration """
__license__ = "LGPLv3+"
[docs]class ESRFBeamlineActions(BeamlineActions):
"""Beam action commands"""
def __init__(self, *args):
super().__init__(*args)
self.ctrl_list = []
self.hwobj_list = []
[docs] def init(self):
"""Initialise the controller commands and the actuator object
to be used.
"""
ctrl_cmds = self.get_property("controller_commands")
if ctrl_cmds:
controller = self.get_object_by_role("controller")
for key, name in ctrl_cmds.items():
try:
action = getattr(controller, key)
self.ctrl_list.append(ControllerCommand(name, action))
except AttributeError:
# self.log.exception("")
pass
hwobj_cmd_roles = self.get_property("hwobj_command_roles")
if hwobj_cmd_roles:
if isinstance(hwobj_cmd_roles, str):
hwobj_cmd_roles = literal_eval(hwobj_cmd_roles.strip())
for role in hwobj_cmd_roles:
try:
hwobj_cmd = self.get_object_by_role(role)
self.hwobj_list.append(
HWObjActuatorCommand(hwobj_cmd.username, hwobj_cmd)
)
except AttributeError:
# self.log.exception("")
pass
[docs] def get_commands(self):
"""Get which objects to be used in the GUI
Returns:
(list): List of object
"""
return self.ctrl_list + self.hwobj_list