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()
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()
def onPVcolor(self, event=None, row=None, **kws): self.plotpanel.conf.set_trace_color(hexcolor(event.GetValue()), trace=row - 1) self.needs_refresh = True
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
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()
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()
def onPVcolor(self, event=None, row=None, **kws): self.plotpanel.conf.set_trace_color(hexcolor(event.GetValue()), trace=row-1) self.needs_refresh = True