# HG changeset patch # User drewp # Date 1026530839 0 # Node ID d5deeed832283e00bb25c50d643ac5683875f1bb # Parent 29a8b23d8db5a8c78cf910ea0d3644893706e2da FancyDoubleVar is a DoubleVar where you can temporarily disable the callbacks FancyDoubleVar is a DoubleVar where you can temporarily disable the callbacks (at least the ones you made in python) diff -r 29a8b23d8db5 -r d5deeed83228 light8/Lightboard.py --- a/light8/Lightboard.py Sat Jul 13 03:23:35 2002 +0000 +++ b/light8/Lightboard.py Sat Jul 13 03:27:19 2002 +0000 @@ -159,7 +159,10 @@ extlevels = self.slidermapper.get_levels() for name, val in extlevels.items(): if name in self.scalelevels: - self.scalelevels[name].set(val) + sl = self.scalelevels[name] + sl.disable_traces() + sl.set(val) + sl.recreate_traces() for lev,lab,oldlev,numlab in zip(levels, self.channel_levels, self.oldlevels, diff -r 29a8b23d8db5 -r d5deeed83228 light8/panels.py --- a/light8/panels.py Sat Jul 13 03:23:35 2002 +0000 +++ b/light8/panels.py Sat Jul 13 03:27:19 2002 +0000 @@ -135,7 +135,7 @@ # make DoubleVar (there might be one left around from # before a refresh) if name not in scalelevels: - scalelevels[name]=DoubleVar() + scalelevels[name]=FancyDoubleVar() sub.set_slider_var(scalelevels[name]) diff -r 29a8b23d8db5 -r d5deeed83228 light8/uihelpers.py --- a/light8/uihelpers.py Sat Jul 13 03:23:35 2002 +0000 +++ b/light8/uihelpers.py Sat Jul 13 03:27:19 2002 +0000 @@ -153,6 +153,27 @@ self.config(bg=self._origbkg,relief='raised') return "break" + +class FancyDoubleVar(DoubleVar): + def __init__(self,master=None): + DoubleVar.__init__(self,master) + self.callbacklist = {} + def trace_variable(self,mode,callback): + + # we build a list of the trace callbacks (the py functrions and the tcl functionnames) + id=DoubleVar.trace_variable(self,mode,callback) + + self.callbacklist[id]= [mode,callback] + + return id + + def disable_traces(self): + for k,v in self.callbacklist.items(): + self.trace_vdelete(v[0],k) + def recreate_traces(self): + for k,v in self.callbacklist.items(): + self.trace_variable(v[0],v[1]) + if __name__=='__main__': root=Tk() root.tk_focusFollowsMouse()