def menu_new_display(self): self.mcaDisplay = mcaDisplay.mcaDisplay() mca = self.detector + 'mca' + str(self.element).strip() self.mcaDisplay.open_detector(mca)
def __init__(self, detector='13GE1:med:', element=1): class widgets: pass self.widgets = widgets() self.detector = detector self.element = element self.status = 'Ready' self.path = '.' self.file = 'test.xrf' self.next_file = self.file self.pvs = {} self.pvs['ElapsedReal'] = epicsPV.epicsPV(detector + 'ElapsedReal', wait=0) self.pvs['PresetReal'] = epicsPV.epicsPV(detector + 'PresetReal', wait=0) self.pvs['StartAll'] = epicsPV.epicsPV(detector + 'StartAll', wait=0) self.pvs['StopAll'] = epicsPV.epicsPV(detector + 'StopAll', wait=0) self.pvs['EraseAll'] = epicsPV.epicsPV(detector + 'EraseAll', wait=0) self.pvs['EraseStart'] = epicsPV.epicsPV(detector + 'EraseStart', wait=0) self.pvs['Acquiring'] = epicsPV.epicsPV(detector + 'Acquiring', wait=0) self.pvs['mca1.ERTM'] = epicsPV.epicsPV(detector + 'mca1.ERTM', wait=0) self.pvs['mca1.ERTM'].pend_io() self.preset_real = self.pvs['PresetReal'].getw() self.elapsed_real = self.pvs['ElapsedReal'].getw() self.update_time = .5 # menus top = myTkTop.myTkTop() top.title('medDisplay') self.widgets.top = top frame = Frame(top, borderwidth=1, relief='raised') frame.pack(fill=X) mb = Pmw.MenuBar(frame) mb.pack(fill=X) mb.addmenu('File', '', side='left') self.widgets.file = mb.component('File-menu') mb.addmenuitem('File', 'command', label='Save As ...', command=self.menu_save) mb.addmenuitem('File', 'command', label='Save Next = ' + self.next_file, command=self.menu_save_next) mb.addmenuitem('File', 'command', label='New MCA Display', command=self.menu_new_display) mb.addmenuitem('File', 'command', 'Exit', label='Exit', command=self.menu_exit) mb.addmenu('Help', '', side='right') self.widgets.help = mb.component('Help-menu') mb.addmenuitem('Help', 'command', label='Usage', command=self.menu_help) mb.addmenuitem('Help', 'command', label='About', command=self.menu_about) mb.addmenu('Options', '', side='left') self.widgets.options = mb.component('Options-menu') self.erase_on_start = IntVar() self.erase_on_start.set(1) mb.addmenuitem('Options', 'checkbutton', label='Erase on Start', variable=self.erase_on_start) # main page main_frame = Frame(self.widgets.top); main_frame.pack() left_frame = Frame(main_frame, borderwidth=1, relief='solid') left_frame.pack(side=LEFT, anchor=N) self.widgets.left_frame = left_frame right_frame = Frame(main_frame, borderwidth=1, relief='solid') right_frame.pack(side=LEFT, anchor=N) self.widgets.right_frame = right_frame # Right Hand Side for control buttons row = Frame(right_frame) row.pack(side=TOP, anchor=W) t = Label(row, text = 'Preset Real Time (s):', width=22, anchor=E); t.pack(side=LEFT) self.widgets.preset_real = t = Pmw.EntryField(row, value=0, entry_width=9, entry_justify=CENTER, validate={'validator':'real'}, entry_background='light blue', command=self.menu_preset_real) t.pack(side=LEFT) row = Frame(right_frame); row.pack(side=TOP, anchor=W) t = Label(row, text = 'Elapsed Real Time (s):', width=22, anchor=E); t.pack(side=LEFT) self.widgets.elapsed_real = t = Label(row, text=str(self.elapsed_real), foreground='blue') t.pack(side=LEFT) self.widgets.preset_real.setentry(self.preset_real) row = Frame(right_frame); row.pack(side=TOP) t = Button(row, text='Start', command=self.menu_start); t.pack(side=LEFT) t = Button(row, text='Stop', command=self.menu_stop); t.pack(side=LEFT) t = Button(row, text='Erase', command=self.menu_erase); t.pack(side=LEFT) row = Frame(right_frame); row.pack(side=TOP) t = Button(row, text='Copy ROIS', command=self.menu_copy_rois) t.pack(side=LEFT) row = Frame(right_frame); row.pack(side=TOP, anchor=W) t = Button(row, text='Save As ...', command=self.menu_save); t.pack(side=LEFT) self.widgets.save_next = t = Button(row, text='Save Next = ' + self.next_file, command=self.menu_save_next) t.pack(side=LEFT) # row = Frame(right_frame); row.pack(side=TOP, anchor=W) t = Label(row, text = 'Viewing Element: '); t.pack(side=LEFT) self.widgets.element = t = Label(row, text=str(self.element), width=2, foreground='blue') t.pack(side=LEFT) row = Frame(right_frame); row.pack(side=TOP, anchor=W) t = Label(row, text = 'Status: '); t.pack(side=LEFT) self.widgets.status = t = Label(row, text='Initializing...', foreground='blue'); t.pack(side=LEFT) t.pack(side=RIGHT) # # Left Hand Side shows Detector Element Layout # t = Label(left_frame, text='Detector Elements'); t.pack(side=TOP) width = 230 height = 230 area = Frame(left_frame, width=width, height=height); area.pack(side=TOP) self.widgets.area = area self.detector_positions = localMedLayout.localMedLayout() self.n_detectors = len(self.detector_positions) button_width=1 button_height=1 self.geom_state= 0 self.widgets.det_buttons = [] for d in range(self.n_detectors): t = Button(area, text=str(d+1), width=button_width, height=button_height, command = lambda s=self, d=d: s.menu_element(d+1)) self.widgets.det_buttons.append(t) self.layout_detector() # Finally, load real versions of the mca_display and EPICS_MED objects # This will take some time, so we start with 'Initializing ...' in the # status message self.widgets.elapsed_real.configure(text=' ') self.mcaDisplay = mcaDisplay.mcaDisplay() self.mca = self.detector + 'mca' + str(self.element) self.mcaDisplay.open_detector(self.mca) self.med = epicsMed.epicsMed(self.detector, n_detectors=self.n_detectors) # when objects are really created, report 'Ready'. self.widgets.status.configure(text='Ready') # Start the timer routine self.widgets.top.after(int(self.update_time*1000), self.menu_timer)
def __init__(self, detector='13GE1:med:', element=1): class widgets: pass self.widgets = widgets() self.detector = detector self.element = element self.status = 'Ready' self.path = '.' self.file = 'test.xrf' self.next_file = self.file self.pvs = {} self.pvs['ElapsedReal'] = epicsPV.epicsPV(detector + 'ElapsedReal', wait=0) self.pvs['PresetReal'] = epicsPV.epicsPV(detector + 'PresetReal', wait=0) self.pvs['StartAll'] = epicsPV.epicsPV(detector + 'StartAll', wait=0) self.pvs['StopAll'] = epicsPV.epicsPV(detector + 'StopAll', wait=0) self.pvs['EraseAll'] = epicsPV.epicsPV(detector + 'EraseAll', wait=0) self.pvs['EraseStart'] = epicsPV.epicsPV(detector + 'EraseStart', wait=0) self.pvs['Acquiring'] = epicsPV.epicsPV(detector + 'Acquiring', wait=0) self.pvs['mca1.ERTM'] = epicsPV.epicsPV(detector + 'mca1.ERTM', wait=0) self.pvs['mca1.ERTM'].pend_io() self.preset_real = self.pvs['PresetReal'].getw() self.elapsed_real = self.pvs['ElapsedReal'].getw() self.update_time = .5 # menus top = myTkTop.myTkTop() top.title('medDisplay') self.widgets.top = top frame = Frame(top, borderwidth=1, relief='raised') frame.pack(fill=X) mb = Pmw.MenuBar(frame) mb.pack(fill=X) mb.addmenu('File', '', side='left') self.widgets.file = mb.component('File-menu') mb.addmenuitem('File', 'command', label='Save As ...', command=self.menu_save) mb.addmenuitem('File', 'command', label='Save Next = ' + self.next_file, command=self.menu_save_next) mb.addmenuitem('File', 'command', label='New MCA Display', command=self.menu_new_display) mb.addmenuitem('File', 'command', 'Exit', label='Exit', command=self.menu_exit) mb.addmenu('Help', '', side='right') self.widgets.help = mb.component('Help-menu') mb.addmenuitem('Help', 'command', label='Usage', command=self.menu_help) mb.addmenuitem('Help', 'command', label='About', command=self.menu_about) mb.addmenu('Options', '', side='left') self.widgets.options = mb.component('Options-menu') self.erase_on_start = IntVar() self.erase_on_start.set(1) mb.addmenuitem('Options', 'checkbutton', label='Erase on Start', variable=self.erase_on_start) # main page main_frame = Frame(self.widgets.top) main_frame.pack() left_frame = Frame(main_frame, borderwidth=1, relief='solid') left_frame.pack(side=LEFT, anchor=N) self.widgets.left_frame = left_frame right_frame = Frame(main_frame, borderwidth=1, relief='solid') right_frame.pack(side=LEFT, anchor=N) self.widgets.right_frame = right_frame # Right Hand Side for control buttons row = Frame(right_frame) row.pack(side=TOP, anchor=W) t = Label(row, text='Preset Real Time (s):', width=22, anchor=E) t.pack(side=LEFT) self.widgets.preset_real = t = Pmw.EntryField( row, value=0, entry_width=9, entry_justify=CENTER, validate={'validator': 'real'}, entry_background='light blue', command=self.menu_preset_real) t.pack(side=LEFT) row = Frame(right_frame) row.pack(side=TOP, anchor=W) t = Label(row, text='Elapsed Real Time (s):', width=22, anchor=E) t.pack(side=LEFT) self.widgets.elapsed_real = t = Label(row, text=str(self.elapsed_real), foreground='blue') t.pack(side=LEFT) self.widgets.preset_real.setentry(self.preset_real) row = Frame(right_frame) row.pack(side=TOP) t = Button(row, text='Start', command=self.menu_start) t.pack(side=LEFT) t = Button(row, text='Stop', command=self.menu_stop) t.pack(side=LEFT) t = Button(row, text='Erase', command=self.menu_erase) t.pack(side=LEFT) row = Frame(right_frame) row.pack(side=TOP) t = Button(row, text='Copy ROIS', command=self.menu_copy_rois) t.pack(side=LEFT) row = Frame(right_frame) row.pack(side=TOP, anchor=W) t = Button(row, text='Save As ...', command=self.menu_save) t.pack(side=LEFT) self.widgets.save_next = t = Button(row, text='Save Next = ' + self.next_file, command=self.menu_save_next) t.pack(side=LEFT) # row = Frame(right_frame) row.pack(side=TOP, anchor=W) t = Label(row, text='Viewing Element: ') t.pack(side=LEFT) self.widgets.element = t = Label(row, text=str(self.element), width=2, foreground='blue') t.pack(side=LEFT) row = Frame(right_frame) row.pack(side=TOP, anchor=W) t = Label(row, text='Status: ') t.pack(side=LEFT) self.widgets.status = t = Label(row, text='Initializing...', foreground='blue') t.pack(side=LEFT) t.pack(side=RIGHT) # # Left Hand Side shows Detector Element Layout # t = Label(left_frame, text='Detector Elements') t.pack(side=TOP) width = 230 height = 230 area = Frame(left_frame, width=width, height=height) area.pack(side=TOP) self.widgets.area = area self.detector_positions = localMedLayout.localMedLayout() self.n_detectors = len(self.detector_positions) button_width = 1 button_height = 1 self.geom_state = 0 self.widgets.det_buttons = [] for d in range(self.n_detectors): t = Button(area, text=str(d + 1), width=button_width, height=button_height, command=lambda s=self, d=d: s.menu_element(d + 1)) self.widgets.det_buttons.append(t) self.layout_detector() # Finally, load real versions of the mca_display and EPICS_MED objects # This will take some time, so we start with 'Initializing ...' in the # status message self.widgets.elapsed_real.configure(text=' ') self.mcaDisplay = mcaDisplay.mcaDisplay() self.mca = self.detector + 'mca' + str(self.element) self.mcaDisplay.open_detector(self.mca) self.med = epicsMed.epicsMed(self.detector, n_detectors=self.n_detectors) # when objects are really created, report 'Ready'. self.widgets.status.configure(text='Ready') # Start the timer routine self.widgets.top.after(int(self.update_time * 1000), self.menu_timer)