1 import Tkinter
2 import tkMessageBox
3 import Pmw
4 from teamwork.widgets.MultiWin import InnerWindow
5
7
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
26
27
28 self.aarHist = Pmw.ScrolledText(self.aar.frame,
29 text_highlightthickness = 0,
30
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
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
59 self.initialiseoptions()
60
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
110
114
120
121
127
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