| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

Gui.py

Go to the documentation of this file.
00001 #!/usr/bin/env python
00002 '''
00003 An external event looper for nuwa.py that provides a GUI.
00004 '''
00005 
00006 from Tkinter import *
00007 
00008 class Main(Frame):
00009     def __init__(self,app,master=None):
00010         Frame.__init__(self,master)
00011         self.app = app
00012         self.pack()
00013         self.createWidgets()
00014         self._canvas = None
00015         self._histogram = None
00016         from DybPython.Control import nuwa
00017         self._nevents = nuwa.opts.executions
00018         return
00019 
00020     def createWidgets(self):
00021         b = Button(self)
00022         b['text'] = 'Quit'
00023         b['fg'] = 'red'
00024         b['command'] = self.quit
00025         b.pack({'side':'left'})
00026         self.b_quit = b
00027 
00028         b = Button(self)
00029         b['text'] = 'Next'
00030         b['command'] = self.next
00031         b.pack({'side':'left'})
00032         self.b_next = b
00033 
00034         b = Button(self)
00035         b['text'] = 'Hist'
00036         b['command'] = self.hist
00037         b.pack({'side':'left'})
00038         self.b_hist = b
00039         
00040         return
00041 
00042     def hist(self):
00043         import ROOT
00044         if not self._canvas:
00045             self._canvas = ROOT.TCanvas('canvas','gaussian')
00046             self._histogram = ROOT.TH1D("gaussian","gaussian",200,-10,10)
00047             self._histogram.Draw()
00048 
00049             pass
00050         self._histogram.FillRandom("gaus")
00051         self._canvas.Modified()
00052         self._canvas.Update()
00053         return
00054     
00055 
00056     def drain(self):
00057         #print 'draining'
00058         self.app.drain_queue()
00059         self.after(100, self.drain)
00060         return
00061 
00062     def _next_cb(self,res):
00063         print 'Next event loaded'
00064         if res: print 'Result: %s'%str(res)
00065         return
00066 
00067     def next(self):
00068         if not self._nevents:
00069             self.app.shutdown()
00070             self.quit()
00071         self._nevents -= 1
00072         self.app.run(self._next_cb,1)
00073         return
00074 
00075     pass
00076 
00077 def start(app):
00078     import async
00079     tkroot = Tk()
00080     tkapp = Main(async.AsyncInterface(app),master=tkroot)
00081     tkapp.after(0, tkapp.drain)
00082     tkapp.mainloop()
00083     tkroot.destroy()
00084 
00085 
00086 
00087 
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 20:14:18 2011 for EventLooper by doxygen 1.4.7