diff 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
line wrap: on
line diff
--- a/light8/uihelpers.py	Sat Jul 13 04:48:27 2002 +0000
+++ b/light8/uihelpers.py	Sun Jul 14 02:44:27 2002 +0000
@@ -13,7 +13,6 @@
     'effect' : '24x24+0963+338',
     'stage' : '823x683+37+030',
     'scenes' : '504x198+462+12',
-
 }
 
 def make_frame(parent):
@@ -157,7 +156,8 @@
 class FancyDoubleVar(DoubleVar):
     def __init__(self,master=None):
         DoubleVar.__init__(self,master)
-        self.callbacklist = {}
+        self.callbacklist = {} # cbname : mode
+        self.namedtraces = {} # name : cbname
     def trace_variable(self,mode,callback):
         """Define a trace callback for the variable.
 
@@ -171,7 +171,7 @@
         self._tk.call("trace", "variable", self._name, mode, cbname)
         
         # we build a list of the trace callbacks (the py functrions and the tcl functionnames)
-        self.callbacklist[cbname]= mode
+        self.callbacklist[cbname] = mode
 #        print "added trace:",callback,cbname
         
         return cbname
@@ -187,6 +187,29 @@
 #            self.trace_variable(v[0],v[1])
             self._tk.call("trace", "variable", self._name, mode,cb)
 
+    def trace_named(self, name, callback):
+        if name in self.namedtraces:
+            print "FancyDoubleVar: already had a trace named %s - replacing it" % name
+            self.delete_named(name)
+
+        cbname = self.trace_variable('w',callback) # this will register in self.callbacklist too
+        
+        self.namedtraces[name] = cbname
+        return cbname
+        
+    def delete_named(self, name):
+        if name in self.namedtraces:
+
+            cbname = self.namedtraces[name]
+            
+            self.trace_vdelete('w',cbname)
+	    #self._tk.call("trace","vdelete",self._name,'w',cbname)
+            print "FancyDoubleVar: successfully deleted trace named %s" % name
+        else:
+            print "FancyDoubleVar: attempted to delete named %s which wasn't set to any function" % name
+
+
+
 
 if __name__=='__main__':
     root=Tk()
@@ -198,3 +221,12 @@
     t.pack()
     Entry(root,textvariable=iv).pack()
     root.mainloop()
+
+
+
+
+
+
+
+
+