예제 #1
0
 def menu_new_display(self):
     self.mcaDisplay = mcaDisplay.mcaDisplay()
     mca = self.detector + 'mca' + str(self.element).strip()
     self.mcaDisplay.open_detector(mca)
예제 #2
0
   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)
예제 #3
0
    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)
예제 #4
0
 def menu_new_display(self):
     self.mcaDisplay = mcaDisplay.mcaDisplay()
     mca  = self.detector + 'mca' + str(self.element).strip()
     self.mcaDisplay.open_detector(mca)