Mercurial > code > home > repos > light9
changeset 371:058f2f508504
curve: hw slider buttons make new keys for their curve
author | David McClosky <dmcc@bigasterisk.com> |
---|---|
date | Fri, 15 Jun 2007 18:58:05 +0000 |
parents | 10e4f755beca |
children | b2469273289e |
files | light9/curve.py |
diffstat | 1 files changed, 23 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/light9/curve.py Fri Jun 15 18:46:16 2007 +0000 +++ b/light9/curve.py Fri Jun 15 18:58:05 2007 +0000 @@ -162,7 +162,7 @@ dispatcher.connect(self.select_between,"select between") if self.knobEnabled: dispatcher.connect(self.knob_in, "knob in") - dispatcher.connect(self.slider_in, "slider in") + dispatcher.connect(self.slider_in, "set key") self.bind("<Configure>",self.update_curve) for x in range(1, 6): def add_kb_marker_point(evt, x=x): @@ -224,11 +224,15 @@ self.curve.points[idx] = (pos[0], value) self.update_curve() - def slider_in(self, curve, value): - """user pushed on a slider. make a new key""" + def slider_in(self, curve, value=None): + """user pushed on a slider. make a new key. if value is None, + the value will be the same as the last.""" if curve != self.curve: return + if value is None: + value = self.curve.eval(self.current_time()) + self.curve.insert_pt((self.current_time(), value)) self.update_curve() @@ -546,15 +550,18 @@ self.dragging_dots = False class Sliders(BCF2000): - def __init__(self, cb, knobCallback): + def __init__(self, cb, knobCallback, knobButtonCallback): BCF2000.__init__(self) self.cb = cb self.knobCallback = knobCallback + self.knobButtonCallback = knobButtonCallback def valueIn(self, name, value): if name.startswith("slider"): self.cb(int(name[6:]), value / 127) if name.startswith("knob"): self.knobCallback(int(name[4:]), value / 127) + if name.startswith("button-knob"): + self.knobButtonCallback(int(name[11:])) class Curveset: @@ -566,7 +573,8 @@ self.sliderCurve = {} # slider number (1 based) : curve name self.sliderNum = {} # reverse if sliders: - self.sliders = Sliders(self.hw_slider_in, self.hw_knob_in) + self.sliders = Sliders(self.hw_slider_in, self.hw_knob_in, + self.hw_knob_button) dispatcher.connect(self.curvesToSliders, "curves to sliders") dispatcher.connect(self.knobOut, "knob out") self.lastSliderTime = {} # num : time @@ -642,7 +650,7 @@ # bigger than the ignore time above. self.sliderSuppressOutputUntil[num] = now + .2 - dispatcher.send("slider in", curve=curve, value=value) + dispatcher.send("set key", curve=curve, value=value) def hw_knob_in(self, num, value): try: @@ -651,6 +659,15 @@ return dispatcher.send("knob in", curve=curve, value=value) + def hw_knob_button(self, num): + try: + curve = self.curves[self.sliderCurve[num]] + except KeyError: + return + + dispatcher.send("set key", curve=curve) + + def curvesToSliders(self, t): now = time.time() for num, name in self.sliderCurve.items():