Beispiel #1
0
    def onColor(self, event=None, item=None):
        color = hexcolor(event.GetValue())
        setattr(self.parent.conf, item, color)
        if item == "spectra_color":
            self.parent.panel.conf.set_trace_color(color, trace=0)
        elif item == "roi_color":
            self.parent.panel.conf.set_trace_color(color, trace=1)
        elif item == "marker_color":
            for lmark in self.parent.cursor_markers:
                if lmark is not None:
                    lmark.set_color(color)

        elif item == "roi_fillcolor" and self.parent.roi_patch is not None:
            self.parent.roi_patch.set_color(color)
        elif item == "major_elinecolor":
            for l in self.parent.major_markers:
                l.set_color(color)
        elif item == "minor_elinecolor":
            for l in self.parent.minor_markers:
                l.set_color(color)
        elif item == "hold_elinecolor":
            for l in self.parent.hold_markers:
                l.set_color(color)

        self.parent.panel.canvas.draw()
        self.parent.panel.Refresh()
Beispiel #2
0
    def onColor(self, event=None, item=None):
        color = hexcolor(event.GetValue())
        setattr(self.parent.conf, item, color)
        if item == 'spectra_color':
            self.parent.panel.conf.set_trace_color(color, trace=0)
        elif item == 'roi_color':
            self.parent.panel.conf.set_trace_color(color, trace=1)
        elif item == 'marker_color':
            for lmark in self.parent.cursor_markers:
                if lmark is not None:
                    lmark.set_color(color)

        elif item == 'roi_fillcolor' and self.parent.roi_patch is not None:
            self.parent.roi_patch.set_color(color)
        elif item == 'major_elinecolor':
            for l in self.parent.major_markers:
                l.set_color(color)
        elif item == 'minor_elinecolor':
            for l in self.parent.minor_markers:
                l.set_color(color)
        elif item == 'hold_elinecolor':
            for l in self.parent.hold_markers:
                l.set_color(color)

        self.parent.panel.canvas.draw()
        self.parent.panel.Refresh()
Beispiel #3
0
 def onPVcolor(self, event=None, row=None, **kws):
     self.plotpanel.conf.set_trace_color(hexcolor(event.GetValue()),
                                         trace=row - 1)
     self.needs_refresh = True
Beispiel #4
0
 def add_color(panel, name):
     cval = hexcolor(getattr(conf, name))
     c = csel.ColourSelect(panel, -1, "", cval, size=(35, 25))
     c.Bind(csel.EVT_COLOURSELECT, partial(self.onColor, item=name))
     return c
Beispiel #5
0
 def add_color(panel, name):
     cval = hexcolor(getattr(conf, name))
     c = csel.ColourSelect(panel, -1, "", cval, size=(35, 25))
     c.Bind(csel.EVT_COLOURSELECT, partial(self.onColor, item=name))
     return c
Beispiel #6
0
    def connect_pvs(self, verbose=True):
        if self.prefix is None or len(self.prefix) < 2:
            return

        try:
            self.ad_cam.Acquire = 0
        except:
            pass

        if self.prefix.endswith(':'):
            self.prefix = self.prefix[:-1]
        if self.prefix.endswith(':image1'):
            self.prefix = self.prefix[:-7]
        if self.prefix.endswith(':cam1'):
            self.prefix = self.prefix[:-5]

        if verbose:
            self.messag('Connecting to AD %s' % self.prefix)
        self.ad_img = epics.Device(self.prefix + ':image1:',
                                   delim='',
                                   attrs=self.img_attrs)
        self.ad_cam = epics.Device(self.prefix + ':cam1:',
                                   delim='',
                                   attrs=self.cam_attrs)
        self.ad_overlays = []
        if HAS_OVERLAY_DEVICE:
            for ix in (1, 2):
                pvn = '%s:Over1:%i:' % (self.prefix, ix)
                self.ad_overlays.append(AD_OverlayPlugin(pvn))

        time.sleep(0.010)
        if not self.ad_img.PV('UniqueId_RBV').connected:
            epics.poll()
            if not self.ad_img.PV('UniqueId_RBV').connected:
                self.messag('Warning:  Camera seems to not be connected!')
                return
        if verbose:
            self.messag('Connected to AD %s' % self.prefix)

        self.SetTitle("Epics Image Display: %s" % self.prefix)

        self.wids['color'].SetPV(self.ad_cam.PV('ColorMode'))
        self.wids['exptime'].SetPV(self.ad_cam.PV('AcquireTime'))
        self.wids['period'].SetPV(self.ad_cam.PV('AcquirePeriod'))
        self.wids['gain'].SetPV(self.ad_cam.PV('Gain'))
        self.wids['numimages'].SetPV(self.ad_cam.PV('NumImages'))
        self.wids['imagemode'].SetPV(self.ad_cam.PV('ImageMode'))
        self.wids['triggermode'].SetPV(self.ad_cam.PV('TriggerMode'))

        sizex = self.ad_cam.MaxSizeX_RBV
        sizey = self.ad_cam.MaxSizeY_RBV

        if HAS_OVERLAY_DEVICE:
            over = self.ad_overlays[0]
            c1 = (over.Red, over.Green, over.Blue)
            self.wids['o1color'].SetColour(hexcolor(c1))
            self.wids['o1posx'].SetPV(over.PV('PositionX'))
            self.wids['o1posx'].SetMax(sizex)
            self.wids['o1posy'].SetPV(over.PV('PositionY'))
            self.wids['o1posy'].SetMax(sizey)
            self.wids['o1sizx'].SetPV(over.PV('SizeX'))
            self.wids['o1sizx'].SetMax(sizex)
            self.wids['o1sizy'].SetPV(over.PV('SizeY'))
            self.wids['o1sizy'].SetMax(sizey)
            self.wids['o1shape'].SetPV(over.PV('Shape'))
            self.wids['o1name'].SetPV(over.PV('Name'))
            self.wids['o1use'].SetPV(over.PV('Use'))

            over = self.ad_overlays[1]
            c1 = (over.Red, over.Green, over.Blue)
            self.wids['o2color'].SetColour(hexcolor(c1))
            self.wids['o2posx'].SetPV(over.PV('PositionX'))
            self.wids['o2posx'].SetMax(sizex)
            self.wids['o2posy'].SetPV(over.PV('PositionY'))
            self.wids['o2posy'].SetMax(sizey)
            self.wids['o2sizx'].SetPV(over.PV('SizeX'))
            self.wids['o2sizx'].SetMax(sizex)
            self.wids['o2sizy'].SetPV(over.PV('SizeY'))
            self.wids['o2sizy'].SetMax(sizey)
            self.wids['o2shape'].SetPV(over.PV('Shape'))
            self.wids['o2name'].SetPV(over.PV('Name'))
            self.wids['o2use'].SetPV(over.PV('Use'))

        sizelabel = 'Image Size: %i x %i pixels'
        try:
            sizelabel = sizelabel % (sizex, sizey)
        except:
            sizelabel = sizelabel % (0, 0)

        self.wids['fullsize'].SetLabel(sizelabel)
        self.showZoomsize()

        self.ad_img.add_callback('ArrayCounter_RBV', self.onNewImage)
        self.ad_img.add_callback('ArraySize0_RBV', self.onProperty, dim=0)
        self.ad_img.add_callback('ArraySize1_RBV', self.onProperty, dim=1)
        self.ad_img.add_callback('ArraySize2_RBV', self.onProperty, dim=2)
        self.ad_img.add_callback('ColorMode_RBV', self.onProperty, dim='color')
        self.ad_cam.add_callback('DetectorState_RBV', self.onDetState)

        epics.caput("%s:cam1:ArrayCallbacks" % self.prefix, 1)
        for p in self.enabled_plugins:
            epics.caput("%s:%s:EnableCallbacks" % (self.prefix, p), 1)
        epics.caput("%s:JPEG1:NDArrayPort" % self.prefix, "OVER1")
        epics.caput("%s:TIFF1:NDArrayPort" % self.prefix, "OVER1")
        epics.caput("%s:image1:NDArrayPort" % self.prefix, "OVER1")

        self.ad_cam.Acquire = 1
        self.GetImageSize()
        self.unZoom()

        epics.poll()
        self.RefreshImage()
Beispiel #7
0
    def connect_pvs(self, verbose=True):
        if self.prefix is None or len(self.prefix) < 2:
            return

        try:
            self.ad_cam.Acquire = 0
        except:
            pass

        if self.prefix.endswith(':'):
            self.prefix = self.prefix[:-1]
        if self.prefix.endswith(':image1'):
            self.prefix = self.prefix[:-7]
        if self.prefix.endswith(':cam1'):
            self.prefix = self.prefix[:-5]

        if verbose:
            self.messag('Connecting to AD %s' % self.prefix)
        self.ad_img = epics.Device(self.prefix + ':image1:', delim='',
                                   attrs=self.img_attrs)
        self.ad_cam = epics.Device(self.prefix + ':cam1:', delim='',
                                   attrs=self.cam_attrs)
        self.ad_overlays = []
        if HAS_OVERLAY_DEVICE:
            for ix in (1, 2):
                pvn ='%s:Over1:%i:' % (self.prefix, ix)
                self.ad_overlays.append(AD_OverlayPlugin(pvn))

        time.sleep(0.010)
        if not self.ad_img.PV('UniqueId_RBV').connected:
            epics.poll()
            if not self.ad_img.PV('UniqueId_RBV').connected:
                self.messag('Warning:  Camera seems to not be connected!')
                return
        if verbose:
            self.messag('Connected to AD %s' % self.prefix)

        self.SetTitle("Epics Image Display: %s" % self.prefix)

        self.wids['color'].SetPV(self.ad_cam.PV('ColorMode'))
        self.wids['exptime'].SetPV(self.ad_cam.PV('AcquireTime'))
        self.wids['period'].SetPV(self.ad_cam.PV('AcquirePeriod'))
        self.wids['gain'].SetPV(self.ad_cam.PV('Gain'))
        self.wids['numimages'].SetPV(self.ad_cam.PV('NumImages'))
        self.wids['imagemode'].SetPV(self.ad_cam.PV('ImageMode'))
        self.wids['triggermode'].SetPV(self.ad_cam.PV('TriggerMode'))

        sizex = self.ad_cam.MaxSizeX_RBV
        sizey = self.ad_cam.MaxSizeY_RBV

        if HAS_OVERLAY_DEVICE:
            over = self.ad_overlays[0]
            c1 = (over.Red, over.Green, over.Blue)
            self.wids['o1color'].SetColour(hexcolor(c1))
            self.wids['o1posx'].SetPV(over.PV('PositionX'))
            self.wids['o1posx'].SetMax(sizex)
            self.wids['o1posy'].SetPV(over.PV('PositionY'))
            self.wids['o1posy'].SetMax(sizey)
            self.wids['o1sizx'].SetPV(over.PV('SizeX'))
            self.wids['o1sizx'].SetMax(sizex)
            self.wids['o1sizy'].SetPV(over.PV('SizeY'))
            self.wids['o1sizy'].SetMax(sizey)
            self.wids['o1shape'].SetPV(over.PV('Shape'))
            self.wids['o1name'].SetPV(over.PV('Name'))
            self.wids['o1use'].SetPV(over.PV('Use'))

            over = self.ad_overlays[1]
            c1 = (over.Red, over.Green, over.Blue)
            self.wids['o2color'].SetColour(hexcolor(c1))
            self.wids['o2posx'].SetPV(over.PV('PositionX'))
            self.wids['o2posx'].SetMax(sizex)
            self.wids['o2posy'].SetPV(over.PV('PositionY'))
            self.wids['o2posy'].SetMax(sizey)
            self.wids['o2sizx'].SetPV(over.PV('SizeX'))
            self.wids['o2sizx'].SetMax(sizex)
            self.wids['o2sizy'].SetPV(over.PV('SizeY'))
            self.wids['o2sizy'].SetMax(sizey)
            self.wids['o2shape'].SetPV(over.PV('Shape'))
            self.wids['o2name'].SetPV(over.PV('Name'))
            self.wids['o2use'].SetPV(over.PV('Use'))

        sizelabel = 'Image Size: %i x %i pixels'
        try:
            sizelabel = sizelabel  % (sizex, sizey)
        except:
            sizelabel = sizelabel  % (0, 0)

        self.wids['fullsize'].SetLabel(sizelabel)
        self.showZoomsize()

        self.ad_img.add_callback('ArrayCounter_RBV',   self.onNewImage)
        self.ad_img.add_callback('ArraySize0_RBV', self.onProperty, dim=0)
        self.ad_img.add_callback('ArraySize1_RBV', self.onProperty, dim=1)
        self.ad_img.add_callback('ArraySize2_RBV', self.onProperty, dim=2)
        self.ad_img.add_callback('ColorMode_RBV',  self.onProperty, dim='color')
        self.ad_cam.add_callback('DetectorState_RBV',  self.onDetState)

        epics.caput("%s:cam1:ArrayCallbacks" % self.prefix, 1)
        for p in self.enabled_plugins:
            epics.caput("%s:%s:EnableCallbacks" % (self.prefix, p), 1)
        epics.caput("%s:JPEG1:NDArrayPort" % self.prefix, "OVER1")
        epics.caput("%s:TIFF1:NDArrayPort" % self.prefix, "OVER1")
        epics.caput("%s:image1:NDArrayPort"% self.prefix, "OVER1")

        self.ad_cam.Acquire = 1
        self.GetImageSize()
        self.unZoom()

        epics.poll()
        self.RefreshImage()
Beispiel #8
0
 def onPVcolor(self, event=None, row=None, **kws):
     self.plotpanel.conf.set_trace_color(hexcolor(event.GetValue()),
                                         trace=row-1)
     self.needs_refresh = True