Package teamwork :: Package widgets :: Package PsychGUI :: Module AARWindow
[hide private]
[frames] | no frames]

Source Code for Module teamwork.widgets.PsychGUI.AARWindow

  1  import Tkinter 
  2  import tkMessageBox 
  3  import Pmw 
  4  from teamwork.widgets.MultiWin import InnerWindow 
  5   
6 -class AARWin (Pmw.MegaWidget):
7
8 - def __init__(self, frame, **kw):
9 optiondefs = ( 10 ('title', 'AAR',Pmw.INITOPT), 11 ('x', 300, Pmw.INITOPT), 12 ('y', 120, Pmw.INITOPT), 13 ('width', 500, Pmw.INITOPT), 14 ('height', 300, Pmw.INITOPT), 15 ('font', ("Helvetica", 10, "bold"), Pmw.INITOPT), 16 ('debug', 0, Pmw.INITOPT), 17 ) 18 self.defineoptions(kw, optiondefs) 19 20 self.aar = InnerWindow(parent = frame, 21 title = self['title'], 22 x=self['x'],y=self['y'], 23 height = self['height'], 24 width = self['width']) 25 # self.aarb = Pmw.LabeledWidget(self.aar.frame, 26 # labelpos = 'n', label_text = "AAR Notes") 27 28 self.aarHist = Pmw.ScrolledText(self.aar.frame, 29 text_highlightthickness = 0, 30 ## text_background = "white", 31 text_wrap = "word", 32 text_height = 10, 33 text_width = 42) 34 35 buttonframe = Tkinter.Frame(self.aar.frame) 36 ps = Tkinter.Button(buttonframe, text='Save', 37 command= self.printText) 38 ps.pack(side='left') 39 buttonframe.pack(fill='x', side='top') 40 41 self.aarHist.pack(fill = "both", expand = 1) 42 # self.aarb.pack(fill = "both", expand = 1) 43 self.aar.place(x = self['x'], y = self['y'], 44 width = self['width'], height = self['height']) 45 self.aarHist.component('text').tag_config('bolden', 46 foreground='blue', 47 font=self['font']) 48 self.aarHist.component('text').tag_config('black', 49 foreground='black', 50 font =self['font']) 51 self.aarHist.component('text').tag_config('hot', 52 font = self['font'], 53 foreground='white', 54 background = 'blue') 55 self.aarHist.component('text').tag_bind('hot','<Button-1>', 56 lambda e: tkMessageBox.showwarning('Direct Perturbation','Direct Perturbation will invoke the simulation with the suggested perturbation. Not Implemented Yet')) 57 58 ## AnalysisWins.append(self.aar) 59 self.initialiseoptions()
60
61 - def clear(self):
62 self.aarHist.clear()
63
64 - def printText(self, filename=None):
65 if filename is None: 66 from tkFileDialog import asksaveasfilename 67 ftypes = [('Text files', '.txt'), 68 ('All files', '*')] 69 filename = asksaveasfilename(filetypes=ftypes, 70 defaultextension='.txt') 71 if not filename: return 72 tkMessageBox.showerror('Unable to save', 73 'Unable to save window to file') 74 self.aarHist.exportfile(filename)
75
76 - def displayTaggedText(self,tokens):
77 """Display text in window 78 79 tokens: list of dictionaries, with each dictinoary 80 structured as follows --- 81 @keyword text: the text to insert 82 @keyword position: where to insert that text (default: 'end') 83 @keyword tag: the face tag to use (default: 'black')""" 84 for token in tokens: 85 try: 86 position = token['position'] 87 except KeyError: 88 position = 'end' 89 try: 90 tag = token['tag'] 91 except KeyError: 92 tag = 'black' 93 try: 94 text = token['text'] 95 except KeyError: 96 text = '' 97 self.insertText(position,text,tag)
98
99 - def insertText(self,index,chars,tagList=()):
100 cmd = self.makeTarget(index,chars,tagList) 101 Tkinter._default_root.after(1,cmd)
102
103 - def __insertText(self,index,chars,tagList=()):
104 self.aarHist.component('text').insert(index,chars,tagList) 105 self.aarHist.component('text').see('end')
106
107 - def makeTarget(self,index,chars,tagList):
108 return lambda s=self,i=index,c=chars,t=tagList:\ 109 s.__insertText(i,c,t)
110
111 - def addbutton(self,name,msg):
112 self.insertText('end', name, ('hot')) 113 self.insertText('end', msg, ('black'))
114
115 - def displayAAR(self, elements=('','','')):
116 step,entity, result = elements 117 self.insertText('end', step, ('bolden')) 118 self.insertText('end', entity, ('black')) 119 self.insertText('end', result, ('black'))
120 121
122 - def displayDebug(self, step, entity, result):
123 if self['debug']: 124 self.insertText('end', step, ('bolden')) 125 self.insertText('end', entity) 126 self.insertText('end', result)
127
128 - def displayAARred(self, step, entity, result):
129 130 self.insertText('end', step, ('black')) 131 self.insertText('end', entity) 132 self.insertText('end', result)
133
134 - def log(self, act):
135 self.insertText('end', getuser() + '::') 136 self.insertText('end', act + '::') 137 timeStr = strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime()) 138 self.insertText('end', timeStr)
139