def init(self):
        super(GphlWorkflowConnection, self).init()
        if self.hasObject("connection_parameters"):
            self._connection_parameters.update(
                self["connection_parameters"].getProperties())
        if self.hasObject("ssh_options"):
            # We are running through ssh - so we need python_address
            # If not, we stick to default, which is localhost (127.0.0.1)
            self._connection_parameters["python_address"] = socket.gethostname(
            )

        locations = next(
            self.getObjects("directory_locations")).getProperties()
        paths = self.software_paths
        props = self.java_properties
        dd0 = next(self.getObjects("software_paths")).getProperties()
        for tag, val in dd0.items():
            val2 = val.format(**locations)
            if not os.path.isabs(val2):
                val2 = HWR.getHardwareRepository().findInRepository(val)
                if val2 is None:
                    raise ValueError("File path %s not recognised" % val)
            paths[tag] = val2
        dd0 = next(self.getObjects("software_properties")).getProperties()
        for tag, val in dd0.items():
            val2 = val.format(**locations)
            if not os.path.isabs(val2):
                val2 = HWR.getHardwareRepository().findInRepository(val)
                if val2 is None:
                    raise ValueError("File path %s not recognised" % val)
            paths[tag] = props[tag] = val2
        #
        pp0 = props["co.gphl.wf.bin"] = paths["GPHL_INSTALLATION"]
        paths["BDG_home"] = paths.get("co.gphl.wf.bdg_licence_dir") or pp0
    def init(self):
        try:
            self.aperture_HO = HardwareRepository.getHardwareRepository().getHardwareObject(
                self.getProperty("aperture")
            )
            self.connect(self.aperture_HO, "apertureChanged", self.aperture_pos_changed)
        except BaseException:
            logging.getLogger("HWR").debug("BeamInfo: aperture not defined correctly")
        try:
            self.slits_HO = HardwareRepository.getHardwareRepository().getHardwareObject(
                self.getProperty("slits")
            )
            self.connect(self.slits_HO, "gapSizeChanged", self.slits_gap_changed)
        except BaseException:
            logging.getLogger("HWR").debug("BeamInfo: slits not defined correctly")
        try:
            self.beam_definer_HO = HardwareRepository.getHardwareRepository().getHardwareObject(
                self.getProperty("definer")
            )
            self.connect(
                self.beam_definer_HO, "definerPosChanged", self.definer_pos_changed
            )
        except BaseException:
            logging.getLogger("HWR").debug(
                "BeamInfo: beam definer not defined correctly"
            )

        self.beam_position_hor = self.getChannelObject("beam_position_hor")
        self.beam_position_hor.connectSignal("update", self.beam_pos_hor_changed)
        self.beam_position_ver = self.getChannelObject("beam_position_ver")
        self.beam_position_ver.connectSignal("update", self.beam_pos_ver_changed)
        self.chan_beam_size_microns = self.getChannelObject("beam_size_microns")
        self.chan_beam_shape_ellipse = self.getChannelObject("beam_shape_ellipse")
예제 #3
0
    def get_hardware_object(self, hardware_object_name, optional=False):
        splash_screen = gui.get_splash_screen()
        if splash_screen:
            splash_screen.set_message(
                "Loading hardware object defined in %s.xml" %
                hardware_object_name)

        if not hardware_object_name in self.__loaded_hardware_objects:
            if splash_screen:
                splash_screen.inc_progress_value()
            self.__loaded_hardware_objects.append(hardware_object_name)

        hwobj = HardwareRepository.getHardwareRepository().getHardwareObject(
            hardware_object_name)

        if hwobj is not None:
            self.connect(hwobj, "progressInit", self.progress_init)
            self.connect(hwobj, "progressStep", self.progress_step)
            self.connect(hwobj, "progressStop", self.progress_stop)
            self.connect(hwobj, "statusMessage", self.status_message_changed)

        if hwobj is None and not optional:
            logging.getLogger("GUI").error(
                "%s: Unable to initialize hardware object defined in %s.xml" %
                (self.objectName(), hardware_object_name[1:]))
            self.set_background_color(Colors.LIGHT_RED)
            self.__failed_to_load_hwobj = True
            self.setDisabled(True)

        return hwobj
예제 #4
0
def beamline():
    hwr_path = os.path.join(HWR_DIR, "configuration/test")
    HWR._instance = HWR.beamline = None
    HWR.init_hardware_repository(hwr_path)
    hwr = HWR.getHardwareRepository()
    hwr.connect()
    return HWR.beamline
예제 #5
0
def test():
    hwr = HWR.getHardwareRepository()
    hwr.connect()

    conn = hwr.getHardwareObject("/ldapconnection")
    # conn.login("20141015", "4dBM0lx3pw")

    # ok,name = conn.login("99140198", "5u4Twf70K5")
    # ok,name = conn.login("mx20100023", "tisabet")
    # ok,name = conn.login("anything", "tisabet")

    # info = conn.getinfo("legrand")
    # info = conn.getinfo("20100023")
    # conn.find_groups_for_username('houdusse')

    # grps = conn.find_groups_for_username('houdusse')
    # for grp,users in grps.items():
    # print grp, " :  " , users
    user = "******"  # '20100023'
    sess = conn.find_sessions_for_user("%s" % user)
    for onesess in sess:
        print("Session for %s" % user, onesess)

    validsess = conn.find_valid_sessions_for_user(user)
    for valid in validsess:
        print("Valid session for today", valid)
예제 #6
0
    def __init__(self,
                 design_mode=False,
                 show_maximized=False,
                 no_border=False):
        """Main mxcube gui widget"""

        QtImport.QWidget.__init__(self)

        self.framework = None
        self.gui_config_file = None
        self.user_file_dir = None
        self.configuration = None
        self.user_settings = None

        self.launch_in_design_mode = design_mode
        self.hardware_repository = HardwareRepository.getHardwareRepository()
        self.show_maximized = show_maximized
        self.no_border = no_border
        self.windows = []

        self.splash_screen = SplashScreen(Icons.load_pixmap("splash"))

        set_splash_screen(self.splash_screen)
        self.splash_screen.show()

        self.time_stamp = 0
예제 #7
0
    def get_hardware_object(self, hardware_object_name, optional=False):
        splash_screen = gui.get_splash_screen()
        if splash_screen:
            splash_screen.set_message(
                "Loading hardware object defined in %s.xml" % hardware_object_name
            )

        if not hardware_object_name in self.__loaded_hardware_objects:
            if splash_screen:
                splash_screen.inc_progress_value()
            self.__loaded_hardware_objects.append(hardware_object_name)

        hwobj = HardwareRepository.getHardwareRepository().getHardwareObject(
            hardware_object_name
        )

        if hwobj is not None:
            self.connect(hwobj, "progressInit", self.progress_init)
            self.connect(hwobj, "progressStep", self.progress_step)
            self.connect(hwobj, "progressStop", self.progress_stop)
            self.connect(hwobj, "statusMessage", self.status_message_changed)

        if hwobj is None and not optional:
            logging.getLogger("GUI").error(
                "%s: Unable to initialize hardware object defined in %s.xml"
                % (self.objectName(), hardware_object_name[1:])
            )
            self.set_background_color(Colors.LIGHT_RED)
            self.__failed_to_load_hwobj = True
            self.setDisabled(True)

        return hwobj
예제 #8
0
    def __init__(self, parent=None, widgetName=""):
        Connectable.Connectable.__init__(self)
        QWidget.__init__(self, parent, widgetName)

        self.setSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.MinimumExpanding)
        self.propertyBag = PropertyBag.PropertyBag()

        self.__enabledState = True  # saved enabled state
        self.__loadedHardwareObjects = []
        self._signalSlotFilters = {}
        self._widgetEvents = []

        #
        # add what's this help
        #
        QWhatsThis.add(self, "%s (%s)\n" % (widgetName, self.__class__.__name__))

        #
        # add properties shared by all BlissWidgets
        #
        self.addProperty("fontSize", "string", str(self.font().pointSize()))
        # self.addProperty("alignment", "combo", ("none", "top center", "top left", "top right", "bottom center", "bottom left", "bottom right", "center", "left", "right"), "none")
        self.addProperty("instanceAllowAlways", "boolean", False)  # , hidden=True)
        self.addProperty("instanceAllowConnected", "boolean", False)  # , hidden=True)

        #
        # connect signals / slots
        #
        dispatcher.connect(
            self.__hardwareObjectDiscarded,
            "hardwareObjectDiscarded",
            HardwareRepository.getHardwareRepository(),
        )

        self.defineSlot("enable_widget", ())
예제 #9
0
    def init(self):
        """
        Ggonio axes definitions are static
        motorHO is expected to have get_position() that returns coordinate in mm
        """
        self.motorConstraints = []
        self.gonioAxes = []
        for axis in self["gonioAxes"]:
            self.gonioAxes.append({
                "type":
                axis.type,
                "direction":
                eval(axis.direction),
                "motor_name":
                axis.motorname,
                "motor_HO":
                HardwareRepository.getHardwareRepository().getHardwareObject(
                    axis.motorHO),
            })
        """
        This version is lacking video microscope object. Therefore we model only
        static camera axes directions, but no camera axes scaling or center - which
        are dynamic. Therefore, camera coordinates are relative, in mm.
        """
        self.cameraAxes = []
        for axis in self["cameraAxes"]:
            self.cameraAxes.append({
                "axis_name": axis.axisname,
                "direction": eval(axis.direction)
            })

        self.mI = numpy.diag([1.0, 1.0, 1.0])  # identity matrix
        self.calibrate()
예제 #10
0
def test():
    hwr = HWR.getHardwareRepository()
    hwr.connect()

    flux = hwr.getHardwareObject("/flux")

    print("PX1 Flux is ", flux.get_value())
def test_hwo():
    from gui.utils.QtImport import *
    import time

    from HardwareRepository import HardwareRepository as HWR

    hwr = HWR.getHardwareRepository()
    hwr.connect()

    hwo = hwr.getHardwareObject("/singleton_objects/limavideo")

    print("Image dimensions: ", hwo.get_image_dimensions())
    print("Live Mode: ", hwo.get_video_live())

    app = QApplication([])

    win = QMainWindow()
    lab = QLabel("toto")

    print("Image dimensions: ", hwo.get_image_dimensions())
    hwo.set_video_live(True)
    hwo.set_exposure_time(0.05)
    time.sleep(1)

    qimg = hwo.get_new_image()
    px = QPixmap(qimg)

    px = px.scaled(QSize(px.width() * 0.5, px.height() * 0.5))

    lab.setPixmap(px)
    win.setCentralWidget(lab)
    win.show()
    app.exec_()
def test():
    hwr = HardwareRepository.getHardwareRepository()
    hwr.connect()

    shut = hwr.getHardwareObject("/fastshutter")

    print("Shutter State is: ", shut.readShutterState())
예제 #13
0
def test():
    hwr = HardwareRepository.getHardwareRepository()
    hwr.connect()

    flux = hwr.getHardwareObject("/flux")

    print "PX1 Flux is ", flux.getCurrentFlux()
예제 #14
0
def test():
    hwr = HWR.getHardwareRepository()
    hwr.connect()

    shut = hwr.getHardwareObject("/fastshutter")

    print(("Shutter State is: ", shut.readShutterState()))
def test():
    hwr = HardwareRepository.getHardwareRepository()
    hwr.connect()

    conn = hwr.getHardwareObject("/ldapconnection")
    # conn.login("20141015", "4dBM0lx3pw")

    # ok,name = conn.login("99140198", "5u4Twf70K5")
    # ok,name = conn.login("mx20100023", "tisabet")
    # ok,name = conn.login("anything", "tisabet")

    # info = conn.getinfo("legrand")
    # info = conn.getinfo("20100023")
    # conn.find_groups_for_username('houdusse')

    # grps = conn.find_groups_for_username('houdusse')
    # for grp,users in grps.iteritems():
    # print grp, " :  " , users
    user = "******"  # '20100023'
    sess = conn.find_sessions_for_user("%s" % user)
    for onesess in sess:
        print "Session for %s" % user, onesess

    validsess = conn.find_valid_sessions_for_user(user)
    for valid in validsess:
        print "Valid session for today", valid
예제 #16
0
def test():
    import sys

    hwr = HardwareRepository.getHardwareRepository()
    hwr.connect()

    ruche = hwr.getHardwareObject("/ruche")
    filename = sys.argv[1]
    ruche.trigger_sync(filename)
예제 #17
0
    def getAxisMotor(self):
        hwmot = None
        motorname = self.getProperty("motor")

        if motorname:
            hwmot = HardwareRepository.getHardwareRepository(
            ).getHardwareObject(motorname)

        return hwmot
예제 #18
0
    def addPage(self, pageName):
        self.__pages.append(ProcedureWidgets.ProcedurePanel(self))

        self.__pages[-1].setProcedure(
            HardwareRepository.getHardwareRepository().getProcedure(
                self["mnemonic"]))
        self.procedureTab.addTab(self.__pages[-1], pageName)

        return self.__pages[-1]
예제 #19
0
 def init(self):
     self.__axis = []
     for token in self:
         if token.name() == "axis":
             axis_name = token.getProperty("objectName")
             if axis_name is not None:
                 axis = HWR.getHardwareRepository().getHardwareObject(axis_name)
                 if axis is not None:
                     self.__axis.append(axis)
예제 #20
0
def test():
    import sys

    hwr = HardwareRepository.getHardwareRepository()
    hwr.connect()

    ruche = hwr.getHardwareObject("/ruche")
    filename = sys.argv[1]
    ruche.trigger_sync(filename)
예제 #21
0
    def __init__(self, parent=None, widget_name=''):
        """
        Descript. :
        """
        Connectable.Connectable.__init__(self)
        QFrame.__init__(self, parent)
        self.setObjectName(widget_name)
        self.property_bag = PropertyBag.PropertyBag()

        self.__enabledState = True
        self.__loaded_hardware_objects = []
        self.__failed_to_load_hwobj = False
        self.__use_progress_dialog = False
        self._signal_slot_filters = {}
        self._widget_events = []

        self.setWhatsThis("%s (%s)\n" % (widget_name, self.__class__.__name__))

        self.addProperty('fontSize',
                         'string',
                         str(self.font().pointSize()))
        self.addProperty('frame',
                         'boolean',
                         False,
                         comment="Draw a frame around the widget")
        self.addProperty('instanceAllowAlways',
                         'boolean',
                         False,
                         comment="Allow to control brick in all modes")
        self.addProperty('instanceAllowConnected',
                         'boolean',
                         False,
                         comment="Allow to control brick in slave mode")
        self.addProperty('fixedWidth',
                         'integer',
                         '-1',
                         comment="Set fixed width in pixels")
        self.addProperty('fixedHeight',
                         'integer',
                         '-1',
                         comment="Set fixed height in pixels")
        self.addProperty('hide',
                         'boolean',
                         False,
                         comment="Hide widget")

        dispatcher.connect(self.__hardwareObjectDiscarded,
                           'hardwareObjectDiscarded',
                           HardwareRepository.getHardwareRepository())
        self.defineSlot('enable_widget', ())
        self.defineSlot('disable_widget', ())

        #If PySide used then connect method was not overriden
        #This solution of redirecting methods works...

        self.connect = self.connect_hwobj
        self.diconnect = self.disconnect_hwobj
예제 #22
0
def test():
    hwr = HWR.getHardwareRepository()
    hwr.connect()

    light = hwr.getHardwareObject("/frontlight")
    print('\nLight control for "%s"\n' % light.getUserName())
    print("   Level limits are:", light.get_limits())
    print("   Current level is:", light.getLevel())
    print("   Current state is:", light.get_state())
예제 #23
0
 def init(self):
     controller = HWR.getHardwareRepository().getHardwareObject(
         self.getProperty("controller"))
     cryostat = self.getProperty("cryostat")
     self.interval = self.getProperty("interval") or 10
     self.ctrl = getattr(controller, cryostat)
     if self.ctrl is not None:
         self.get_params()
         gevent.spawn(self._do_polling)
def test():
    hwr = HardwareRepository.getHardwareRepository()
    hwr.connect()

    light = hwr.getHardwareObject("/frontlight")
    print '\nLight control for "%s"\n' % light.getUserName()
    print "   Level limits are:", light.getLimits()
    print "   Current level is:", light.getLevel()
    print "   Current state is:", light.getState()
예제 #25
0
    def addPage(self, pageName):
        self.__pages.append(ProcedureWidgets.ProcedurePanel(self))

        self.__pages[-1].setProcedure(
            HardwareRepository.getHardwareRepository().getProcedure(self["mnemonic"])
        )
        self.procedureTab.addTab(self.__pages[-1], pageName)

        return self.__pages[-1]
예제 #26
0
    def __init__(self, parent=None, widget_name=""):

        Connectable.Connectable.__init__(self)
        QtImport.QFrame.__init__(self, parent)
        self.setObjectName(widget_name)
        self.property_bag = PropertyBag.PropertyBag()

        self.__enabled_state = True
        self.__loaded_hardware_objects = []
        self.__failed_to_load_hwobj = False
        self.__use_progress_dialog = False
        self._signal_slot_filters = {}
        self._widget_events = []

        self.setWhatsThis("%s (%s)\n" % (widget_name, self.__class__.__name__))

        self.add_property("fontSize", "string", str(self.font().pointSize()))
        self.add_property("frame",
                          "boolean",
                          False,
                          comment="Draw a frame around the widget")
        self.add_property(
            "instanceAllowAlways",
            "boolean",
            False,
            comment="Allow to control brick in all modes",
        )
        self.add_property(
            "instanceAllowConnected",
            "boolean",
            False,
            comment="Allow to control brick in slave mode",
        )
        self.add_property("fixedWidth",
                          "integer",
                          "-1",
                          comment="Set fixed width in pixels")
        self.add_property("fixedHeight",
                          "integer",
                          "-1",
                          comment="Set fixed height in pixels")
        self.add_property("hide", "boolean", False, comment="Hide widget")

        dispatcher.connect(
            self.__hardware_object_discarded,
            "hardwareObjectDiscarded",
            HardwareRepository.getHardwareRepository(),
        )
        self.define_slot("enable_widget", ())
        self.define_slot("disable_widget", ())

        # If PySide used then connect method was not overriden
        # This solution of redirecting methods works...

        self.connect = self.connect_hwobj
        self.diconnect = self.disconnect_hwobj
 def _init(self):
     self.stream_hash = "#"
     self.udiffVER_Ok = False
     self.badimg = 0
     self.pollInterval = 500
     self.connected = False
     self.image_name = self.getProperty("image_name")
     xml_path = HWR.getHardwareRepository().serverAddress[0]
     self.image = os.path.join(xml_path, self.image_name)
     self.setIsReady(True)
예제 #28
0
    def getAxisMotor(self):
        hwmot = None
        motorname = self.getProperty("motor")

        if motorname:
            hwmot = HardwareRepository.getHardwareRepository().getHardwareObject(
                motorname
            )

        return hwmot
예제 #29
0
 def init(self):
     controller = HardwareRepository.getHardwareRepository().getHardwareObject(
         self.getProperty("controller")
     )
     cryostat = self.getProperty("cryostat")
     self.interval = self.getProperty("interval") or 10
     self.ctrl = getattr(controller, cryostat)
     if self.ctrl is not None:
         self.get_params()
         gevent.spawn(self._do_polling)
예제 #30
0
 def init(self):
     self.__axis = []
     for token in self:
         if token.name() == "axis":
             axis_name = token.getProperty("objectName")
             if axis_name is not None:
                 axis = HardwareRepository.getHardwareRepository().getHardwareObject(
                     axis_name
                 )
                 if axis is not None:
                     self.__axis.append(axis)
예제 #31
0
    def __init__(self, parent=None, widget_name=""):

        Connectable.Connectable.__init__(self)
        QtImport.QFrame.__init__(self, parent)
        self.setObjectName(widget_name)
        self.property_bag = PropertyBag.PropertyBag()

        self.__enabled_state = True
        self.__loaded_hardware_objects = []
        self.__failed_to_load_hwobj = False
        self.__use_progress_dialog = False
        self._signal_slot_filters = {}
        self._widget_events = []

        self.setWhatsThis("%s (%s)\n" % (widget_name, self.__class__.__name__))

        self.add_property("fontSize", "string", str(self.font().pointSize()))
        self.add_property(
            "frame", "boolean", False, comment="Draw a frame around the widget"
        )
        self.add_property(
            "instanceAllowAlways",
            "boolean",
            False,
            comment="Allow to control brick in all modes",
        )
        self.add_property(
            "instanceAllowConnected",
            "boolean",
            False,
            comment="Allow to control brick in slave mode",
        )
        self.add_property(
            "fixedWidth", "integer", "-1", comment="Set fixed width in pixels"
        )
        self.add_property(
            "fixedHeight", "integer", "-1", comment="Set fixed height in pixels"
        )
        self.add_property("hide", "boolean", False, comment="Hide widget")

        dispatcher.connect(
            self.__hardware_object_discarded,
            "hardwareObjectDiscarded",
            HardwareRepository.getHardwareRepository(),
        )
        self.define_slot("enable_widget", ())
        self.define_slot("disable_widget", ())

        # If PySide used then connect method was not overriden
        # This solution of redirecting methods works...

        self.connect = self.connect_hwobj
        self.diconnect = self.disconnect_hwobj
예제 #32
0
    def get_hardware_objects_info(self):
        info_dict = {}
        for ho_name in self.__loaded_hardware_objects:
            info = HardwareRepository.getHardwareRepository().getInfo(ho_name)

            if len(info) > 0:
                info_dict[ho_name] = info

        if len(info_dict):
            return "Hardware Objects:\n\n%s" % pprint.pformat(info_dict)
        else:
            return ""
예제 #33
0
    def get_hardware_objects_info(self):
        info_dict = {}
        for ho_name in self.__loaded_hardware_objects:
            info = HardwareRepository.getHardwareRepository().getInfo(ho_name)

            if len(info) > 0:
                info_dict[ho_name] = info

        if len(info_dict):
            return "Hardware Objects:\n\n%s" % pprint.pformat(info_dict)
        else:
            return ""
예제 #34
0
    def __init__(self, designMode=False, showMaximized=False, noBorder=False):
        qt.QWidget.__init__(self)

        self.launchInDesignMode = designMode
        self.hardwareRepository = HardwareRepository.getHardwareRepository()
        self.showMaximized = showMaximized
        self.noBorder = noBorder
        self.windows = []
        self.splashScreen = BlissSplashScreen(Icons.load("splash"),
                                              qt.Qt.WDestructiveClose)
        self.splashScreen.show()
        self.timestamp = 0
예제 #35
0
    def getHardwareObject(self, hardwareObjectName):
        if not hardwareObjectName in self.__loadedHardwareObjects:
            self.__loadedHardwareObjects.append(hardwareObjectName)

        screen = get_splash_screen()
        if screen is not None:
            screen.set_message("Loading hardware object: %s" %
                               hardwareObjectName)

        ho = HardwareRepository.getHardwareRepository().getHardwareObject(
            hardwareObjectName)

        return ho
예제 #36
0
    def getHardwareObjectsInfo(self):
        d = {}

        for ho_name in self.__loadedHardwareObjects:
            info = HardwareRepository.getHardwareRepository().getInfo(ho_name)

            if len(info) > 0:
                d[ho_name] = info

        if len(d):
            return "Hardware Objects:\n\n%s" % pprint.pformat(d)
        else:
            return ""
def test():
    hwr = HardwareRepository.getHardwareRepository()
    hwr.connect()

    zoom = hwr.getHardwareObject("/zoom-auto-brightness")

    print type(zoom.getState())

    print "     Zoom position is : ", zoom.getPosition()
    print "Zoom position name is : ", zoom.getCurrentPositionName()
    print "               Moving : ", zoom.motorIsMoving()
    print "                State : ", zoom.getState()
    print "            Positions : ", zoom.getPredefinedPositionsList()
예제 #38
0
def test():
    hwr = HWR.getHardwareRepository()
    hwr.connect()

    ap_pos = hwr.getHardwareObject("/aperture_position")
    ap_diam = hwr.getHardwareObject("/aperture_diameter")
    yag_pos = hwr.getHardwareObject("/scintillator")
    md2_phase = hwr.getHardwareObject("/md2j_phase")

    print("Aperture Position: ", ap_pos.get_state())
    print("Aperture Diameter: ", ap_diam.get_state())
    print("Yag Posiion: ", yag_pos.get_state())
    print("MD2 Phase: ", md2_phase.get_state())
예제 #39
0
    def __init__(self, designMode=False, showMaximized=False, noBorder=False):
        qt.QWidget.__init__(self)

        self.launchInDesignMode = designMode
        self.hardwareRepository = HardwareRepository.getHardwareRepository()
        self.showMaximized = showMaximized
        self.noBorder = noBorder
        self.windows = []
        self.splashScreen = BlissSplashScreen(
            Icons.load("splash"), qt.Qt.WDestructiveClose
        )
        self.splashScreen.show()
        self.timestamp = 0
예제 #40
0
    def getHardwareObject(self, hardwareObjectName):
        if not hardwareObjectName in self.__loadedHardwareObjects:
            self.__loadedHardwareObjects.append(hardwareObjectName)

        screen = get_splash_screen()
        if screen is not None:
            screen.set_message("Loading hardware object: %s" % hardwareObjectName)

        ho = HardwareRepository.getHardwareRepository().getHardwareObject(
            hardwareObjectName
        )

        return ho
예제 #41
0
def test():
    hwr = HardwareRepository.getHardwareRepository()
    hwr.connect()

    ap_pos = hwr.getHardwareObject("/aperture_position")
    ap_diam = hwr.getHardwareObject("/aperture_diameter")
    yag_pos = hwr.getHardwareObject("/scintillator")
    md2_phase = hwr.getHardwareObject("/md2j_phase")

    print "Aperture Position: ", ap_pos.getState()
    print "Aperture Diameter: ", ap_diam.getState()
    print "Yag Posiion: ", yag_pos.getState()
    print "MD2 Phase: ", md2_phase.getState()
def test():
    hwr = HardwareRepository.getHardwareRepository()
    hwr.connect()

    zoom = hwr.getHardwareObject("/zoom-auto-brightness")

    print type(zoom.getState())

    print "     Zoom position is : ", zoom.getPosition()
    print "Zoom position name is : ", zoom.getCurrentPositionName()
    print "               Moving : ", zoom.motorIsMoving()
    print "                State : ", zoom.getState()
    print "            Positions : ", zoom.getPredefinedPositionsList()
예제 #43
0
    def getHardwareObjectsInfo(self):
        d = {}

        for ho_name in self.__loadedHardwareObjects:
            info = HardwareRepository.getHardwareRepository().getInfo(ho_name)

            if len(info) > 0:
                d[ho_name] = info

        if len(d):
            return "Hardware Objects:\n\n%s" % pprint.pformat(d)
        else:
            return ""
def test():
    hwr = HardwareRepository.getHardwareRepository()
    hwr.connect()

    sess = hwr.getHardwareObject("/session")

    sess.set_user_info("mx2014", "143301", "14330", "20100023")

    path = "/927bis/ccd/2015_Run2/visitor/mx2014/px2/20150120/ARCHIVE/mx2014/mx2014_2_4.snapshot.jpeg"
    ispyb_path = sess.path_to_ispyb(path)

    print path
    print "  will become "
    print ispyb_path
def test():
    from HardwareRepository import HardwareRepository as HWR
    hwr = HWR.getHardwareRepository()
    hwr.connect()

    zoom = hwr.getHardwareObject("/zoom-auto-brightness")

    print(type(zoom.get_state()))

    print("     Zoom position is : ", zoom.get_value())
    print("Zoom position name is : ", zoom.get_current_position_name())
    print("               Moving : ", zoom.motorIsMoving())
    print("                State : ", zoom.get_state())
    print("            Positions : ", zoom.getPredefinedPositionsList())
예제 #46
0
    def end_init(self):
        if self.__initialized:
            return
        controller = HWR.getHardwareRepository().getHardwareObject(
            self.getProperty(
                "controller"))  # self.getObjectByRole("controller")

        # this is ugly : I added it to make the centring procedure happy
        self.specName = self.actuator_name

        self.motor = getattr(controller, self.actuator_name)
        self.connect(self.motor, "position", self.positionChanged)
        self.connect(self.motor, "state", self.updateState)
        self.__initialized = True
예제 #47
0
def test():
    hwr = HWR.getHardwareRepository()
    hwr.connect()

    sess = HWR.beamline.session

    sess.set_user_info("mx2014", "143301", "14330", "20100023")

    path = "/927bis/ccd/2015_Run2/visitor/mx2014/px2/20150120/ARCHIVE/mx2014/mx2014_2_4.snapshot.jpeg"
    ispyb_path = sess.path_to_ispyb(path)

    print(path)
    print("  will become ")
    print(ispyb_path)
    def init(self):
        try:
            self.aperture_HO = HWR.getHardwareRepository().getHardwareObject(
                self.getProperty("aperture"))
            self.connect(self.aperture_HO, "apertureChanged",
                         self.aperture_pos_changed)
        except BaseException:
            logging.getLogger("HWR").debug(
                "BeamInfo: aperture not defined correctly")
        try:
            self.slits_HO = HWR.getHardwareRepository().getHardwareObject(
                self.getProperty("slits"))
            self.connect(self.slits_HO, "gapSizeChanged",
                         self.slits_gap_changed)
        except BaseException:
            logging.getLogger("HWR").debug(
                "BeamInfo: slits not defined correctly")
        try:
            self.connect(
                HWR.beamline.beam.beam_definer,
                "definerPosChanged",
                self.definer_pos_changed,
            )
        except BaseException:
            logging.getLogger("HWR").debug(
                "BeamInfo: beam definer not defined correctly")

        self.beam_position_hor = self.get_channel_object("beam_position_hor")
        self.beam_position_hor.connectSignal("update",
                                             self.beam_pos_hor_changed)
        self.beam_position_ver = self.get_channel_object("beam_position_ver")
        self.beam_position_ver.connectSignal("update",
                                             self.beam_pos_ver_changed)
        self.chan_beam_size_microns = self.get_channel_object(
            "beam_size_microns")
        self.chan_beam_shape_ellipse = self.get_channel_object(
            "beam_shape_ellipse")
예제 #49
0
def test():
    import sys

    hwr = HardwareRepository.getHardwareRepository()
    hwr.connect()

    conn = hwr.getHardwareObject(sys.argv[1])

    print "Machine current: ", conn.getCurrent()
    print "Life time: ", conn.getLifeTime()
    print "TopUp remaining: ", conn.getTopUpRemaining()
    print "Message: ", conn.getMessage()

    while True:
        gevent.wait(timeout=0.1)
예제 #50
0
    def setMotor(self, motor_mne):
        if self.motor is not None:
            QObject.disconnect(self.motor, PYSIGNAL('positionChanged'), self.motorPositionChanged)
            
        self.motor = HardwareRepository.getHardwareRepository().getHardwareObject(motor_mne)

        if self.motor is not None:
            self.cmdMotorPosition.setEnabled(True)
            QObject.connect(self.motor, PYSIGNAL('positionChanged'), self.motorPositionChanged)
            if self.motor.isReady():
                self.motorPositionChanged(self.motor.getPosition())
            else:
                self.motorPositionChanged('unavailable')
        else:
            self.cmdMotorPosition.setText(MotorPositionReminder.NOPOSITION)
            self.cmdMotorPosition.setEnabled(False)
    def init(self):
        self.collect_obj = self.getObjectByRole("collect")
        self.start_edna_command = self.getProperty("edna_command")
        self.edna_default_file = self.getProperty("edna_default_file")

        fp = HWR.getHardwareRepository().findInRepository(
            self.edna_default_file)

        if fp is None:
            fp = self.edna_default_file

            if not os.path.exists(fp):
                raise ValueError("File %s not found in repository" % fp)

        with open(fp, "r") as f:
            self.edna_default_input = "".join(f.readlines())
예제 #52
0
    def setMotor(self, motor_mne):
        self.motor = HardwareRepository.getHardwareRepository().getHardwareObject(motor_mne)

        if self.motor is not None:
            self.cmdMotorPosition.setEnabled(True)
            try:
                self.motor.connect('positionChanged', self.motorPositionChanged)
            except BaseException:
                logging.getLogger().exception("%s: could not get motor position", self.motor.name())
                self.motorPositionChanged('unavailable')
            else:
                if self.motor.isReady():
                    self.motorPositionChanged(self.motor.getPosition())
                else:
                    self.motorPositionChanged('unavailable')
        else:
            self.cmdMotorPosition.setText(MotorPositionReminder.NOPOSITION)
            self.cmdMotorPosition.setEnabled(False)
def test():
    hwr = HardwareRepository.getHardwareRepository()
    hwr.connect()

    db = hwr.getHardwareObject("/singleton_objects/dbconnection")

    print "db", db
    print "dir(db)", dir(db)
    # print 'db._SOLEILISPyBClientShipping', db._SOLEILISPyBClientShipping
    # print 'db.Shipping', db.Shipping

    proposal_code = "mx"
    proposal_number = "20100023"
    proposal_psd = "tisabet"

    info = db.get_proposal(proposal_code, proposal_number)  # proposal_number)
    print info

    info = db.login(proposal_number, proposal_psd)
    print info
예제 #54
0
    def getHardwareObject(self, hardware_object_name, optional=False):
        """
        Descript. :
        """
        splash_screen = BlissFramework.get_splash_screen()
        if splash_screen:
            splash_screen.set_message(\
                "Loading hardware object defined in %s.xml" %
                hardware_object_name)        

        if not hardware_object_name in self.__loaded_hardware_objects:
            self.__loaded_hardware_objects.append(hardware_object_name)

        hwobj = HardwareRepository.getHardwareRepository().\
                   getHardwareObject(hardware_object_name)

        if hwobj is not None:
            self.connect(hwobj,
                         "progressInit",
                         self.progress_init)
            self.connect(hwobj,
                         'progressStep',
                         self.progress_step)
            self.connect(hwobj,
                         'progressStop',
                         self.progress_stop)
            self.connect(hwobj,
                         'statusMessage',
                         self.status_message_changed)

        if hwobj is None and not optional:
            logging.getLogger("GUI").error(\
               "%s: Unable to initialize hardware object defined in %s.xml" % \
                (self.objectName(),
                 hardware_object_name[1:]))
            self.set_background_color(Qt4_widget_colors.LIGHT_RED)
            self.__failed_to_load_hwobj = True
            self.setDisabled(True)

        return hwobj
예제 #55
0
    def __init__(self, design_mode=False, show_maximized=False, no_border=False):
        """init"""

        QWidget.__init__(self)

        self.framework = None
        self.gui_config_file = None
        self.user_file_dir = None
        self.configuration = None
        self.user_settings = None

        self.launch_in_design_mode = design_mode
        self.hardware_repository = HardwareRepository.getHardwareRepository()
        self.show_maximized = show_maximized
        self.no_border = no_border
        self.windows = []
        self.splash_screen = BlissSplashScreen(Qt4_Icons.load_pixmap('splash'))

        set_splash_screen(self.splash_screen)
        self.splash_screen.show()

        self.timestamp = 0
예제 #56
0
def init(hwr_path):
    hwr = HardwareRepository.getHardwareRepository(hwr_path)
    hwr.connect()

    global beamline_setup
    global queue_model
    global queue_manager

    beamline_setup = hwr.getHardwareObject("beamline-setup")
    queue_model = hwr.getHardwareObject("queue-model")
    queue_manager = hwr.getHardwareObject("queue")

    logging.getLogger("API").debug("Initializing API...")
    error_count = 0

    for role in CORE_HWOBJ_ROLES:
        if hasattr(beamline_setup, "%s_hwobj" % role):
            setattr(sys.modules[__name__], role, getattr(beamline_setup, "%s_hwobj" % role))
        else:
            setattr(sys.modules[__name__], role, None)
            logging.getLogger("HWR").warning("API: %s role is not defined in the beamline_setup" % role)
            error_count += 1

    for role in ADDITIONAL_HWOBJ_ROLES:
        if hasattr(beamline_setup, "%s_hwobj" % role):
            setattr(sys.modules[__name__], role, getattr(beamline_setup, "%s_hwobj" % role))
        else:
            setattr(sys.modules[__name__], role, None)


    if error_count == 0:
        logging.getLogger("HWR").info("Initializing of API done")
    else:
        logging.getLogger("API").info("Initializing of API done (%d warning(s): see messages above)." % error_count)
     

    setattr(sys.modules[__name__], "lims", getattr(beamline_setup, "lims_client_hwobj"))
    setattr(sys.modules[__name__], "graphics", getattr(beamline_setup, "shape_history_hwobj"))
예제 #57
0
def test():
    import sys
    import os

    if len(sys.argv) != 5:
        print(
            "Usage: %s triggermode (exts/ints) nb_images exp_time energy" % sys.argv[0]
        )
        sys.exit(0)
    else:
        try:
            trigmode = sys.argv[1]
            nimages = float(sys.argv[2])
            exptime = float(sys.argv[3])
            egy = float(sys.argv[4])
        except ValueError:
            print("Cannot decode parameters. Aborting")
            sys.exit(0)

    if trigmode not in ["exts", "ints"]:
        print('Bad trigger mode. It should be "exts" or "ints"')
        sys.exit(0)

    hwr = HardwareRepository.getHardwareRepository()
    hwr.connect()
    obj = hwr.getHardwareObject("/detector")

    config = {
        "OmegaStart": 0,
        "OmegaIncrement": 0.1,
        "BeamCenterX": None,  # length not pixel
        "BeamCenterY": None,
        "DetectorDistance": None,
        "FrameTime": exptime,
        "NbImages": nimages,
        "NbTriggers": None,
        "ImagesPerFile": None,
        "RoiMode": "4M",
        "FilenamePattern": None,
        "PhotonEnergy": egy,
        "TriggerMode": trigmode,
    }

    if obj.get_status() == "not_init":
        print("Cannot initialize hardware object")
        sys.exit(0)

    if not obj.is_idle():
        obj.stop_acquisition()
        obj.wait_idle()

    obj.prepare_acquisition(config)

    print("Waiting for configuration finished")

    while obj.is_preparing():
        gevent.wait(timeout=0.1)
        gevent.sleep(0.1)
        print(".")

    if obj.prepare_error():
        print("Prepare went wrong. Aborting")
        sys.exit(0)

    readout_time = obj.get_readout_time()
    print("EIGER configuration done")

    print("Starting acquisition (trigmode = %s)" % trigmode)
    if trigmode == "exts":
        total_time = nimages * (exptime + readout_time)
        print("Total exposure time (estimated) will be: %s", total_time)

    try:
        obj.start_acquisition()

        if trigmode == "exts":
            print("  - waiting for trigger.")
            sys.stdout.flush()
            obj.wait_acquire()
            print("  - trigger received. Acquiring")
            obj.wait_ready_or_idle()
        else:
            obj.trigger()
            obj.wait_ready_or_idle()

        obj.stop_acquisition()
        print("Acquisition done")
    except KeyboardInterrupt:
        obj.abort()
        obj.wait_idle()
예제 #58
0
    def setMnemonic(self, mne):
        self.getProperty("mnemonic").setValue(mne)

        proc = HardwareRepository.getHardwareRepository().getProcedure(mne)

        self.__setProcedure(proc)