comparison light8/uihelpers.py @ 101:a995fd1a8f03

result of 7.12 performance
author dmcc
date Sun, 14 Jul 2002 02:44:27 +0000
parents 57319ec2bfad
children e04f7b552bcd
comparison
equal deleted inserted replaced
100:f13cf18224f2 101:a995fd1a8f03
11 'leveldisplay' : '144x340+870+400', 11 'leveldisplay' : '144x340+870+400',
12 'cuefader' : '314x212+546+741', 12 'cuefader' : '314x212+546+741',
13 'effect' : '24x24+0963+338', 13 'effect' : '24x24+0963+338',
14 'stage' : '823x683+37+030', 14 'stage' : '823x683+37+030',
15 'scenes' : '504x198+462+12', 15 'scenes' : '504x198+462+12',
16
17 } 16 }
18 17
19 def make_frame(parent): 18 def make_frame(parent):
20 f = Frame(parent, bd=0) 19 f = Frame(parent, bd=0)
21 f.pack(side='left') 20 f.pack(side='left')
155 154
156 155
157 class FancyDoubleVar(DoubleVar): 156 class FancyDoubleVar(DoubleVar):
158 def __init__(self,master=None): 157 def __init__(self,master=None):
159 DoubleVar.__init__(self,master) 158 DoubleVar.__init__(self,master)
160 self.callbacklist = {} 159 self.callbacklist = {} # cbname : mode
160 self.namedtraces = {} # name : cbname
161 def trace_variable(self,mode,callback): 161 def trace_variable(self,mode,callback):
162 """Define a trace callback for the variable. 162 """Define a trace callback for the variable.
163 163
164 MODE is one of "r", "w", "u" for read, write, undefine. 164 MODE is one of "r", "w", "u" for read, write, undefine.
165 CALLBACK must be a function which is called when 165 CALLBACK must be a function which is called when
169 """ 169 """
170 cbname = self._master._register(callback) 170 cbname = self._master._register(callback)
171 self._tk.call("trace", "variable", self._name, mode, cbname) 171 self._tk.call("trace", "variable", self._name, mode, cbname)
172 172
173 # we build a list of the trace callbacks (the py functrions and the tcl functionnames) 173 # we build a list of the trace callbacks (the py functrions and the tcl functionnames)
174 self.callbacklist[cbname]= mode 174 self.callbacklist[cbname] = mode
175 # print "added trace:",callback,cbname 175 # print "added trace:",callback,cbname
176 176
177 return cbname 177 return cbname
178 trace=trace_variable 178 trace=trace_variable
179 def disable_traces(self): 179 def disable_traces(self):
185 def recreate_traces(self): 185 def recreate_traces(self):
186 for cb,mode in self.callbacklist.items(): 186 for cb,mode in self.callbacklist.items():
187 # self.trace_variable(v[0],v[1]) 187 # self.trace_variable(v[0],v[1])
188 self._tk.call("trace", "variable", self._name, mode,cb) 188 self._tk.call("trace", "variable", self._name, mode,cb)
189 189
190 def trace_named(self, name, callback):
191 if name in self.namedtraces:
192 print "FancyDoubleVar: already had a trace named %s - replacing it" % name
193 self.delete_named(name)
194
195 cbname = self.trace_variable('w',callback) # this will register in self.callbacklist too
196
197 self.namedtraces[name] = cbname
198 return cbname
199
200 def delete_named(self, name):
201 if name in self.namedtraces:
202
203 cbname = self.namedtraces[name]
204
205 self.trace_vdelete('w',cbname)
206 #self._tk.call("trace","vdelete",self._name,'w',cbname)
207 print "FancyDoubleVar: successfully deleted trace named %s" % name
208 else:
209 print "FancyDoubleVar: attempted to delete named %s which wasn't set to any function" % name
210
211
212
190 213
191 if __name__=='__main__': 214 if __name__=='__main__':
192 root=Tk() 215 root=Tk()
193 root.tk_focusFollowsMouse() 216 root.tk_focusFollowsMouse()
194 iv=IntVar() 217 iv=IntVar()
196 print "cb!" 219 print "cb!"
197 t = Togglebutton(root,text="testbutton",command=cb,variable=iv) 220 t = Togglebutton(root,text="testbutton",command=cb,variable=iv)
198 t.pack() 221 t.pack()
199 Entry(root,textvariable=iv).pack() 222 Entry(root,textvariable=iv).pack()
200 root.mainloop() 223 root.mainloop()
224
225
226
227
228
229
230
231
232