Changeset - 2aefd45dceaa
[Not reviewed]
default
0 1 0
drewp@bigasterisk.com - 16 years ago 2009-06-15 02:22:55
drewp@bigasterisk.com
new keys for muting and collapsing a curve
Ignore-this: 6022d4ac284aeffda96cc9a9fb70d02c
1 file changed with 35 insertions and 13 deletions:
0 comments (0 inline, 0 general)
light9/curve.py
Show inline comments
 
from __future__ import division
 
import sys,math,glob,random,os, time
 
from bisect import bisect_left,bisect,bisect_right
 
import Tkinter as tk
 
import math, glob, time
 
from bisect import bisect_left,bisect
 
import Tix as tk
 
try:
 
    from dispatch import dispatcher
 
except ImportError:
 
    import louie as dispatcher
 

	
 
import run_local
 
@@ -27,12 +27,15 @@ class Curve(object):
 
        def fset(self, val):
 
            self._muted = val
 
            dispatcher.send('mute changed', sender=self)
 
        return locals()
 
    muted = property(**muted())
 

	
 
    def toggleMute(self):
 
        self.muted = not self.muted
 

	
 
    def load(self,filename):
 
        self.points[:]=[]
 
        for line in file(filename):
 
            self.points.append(tuple([float(a) for a in line.split()]))
 
        self.points.sort()
 
        dispatcher.send("points changed",sender=self)
 
@@ -226,12 +229,16 @@ class Curveview(tk.Canvas):
 
        self.bind("<Motion>", self.select_motion, add=True)
 
        self.bind("<ButtonRelease-1>", #"<Alt-KeyRelease>",
 
                  self.select_release)
 

	
 
        self.bind("<ButtonPress-1>", self.check_deselect, add=True)
 

	
 
        self.bind("<Key-m>", lambda *args: self.curve.toggleMute())
 
        self.bind("<Key-c>", lambda *args: dispatcher.send('toggle collapse',
 
                                                           sender=self.curve))
 

	
 
    def knob_in(self, curve, value):
 
        """user turned a hardware knob, which edits the point to the
 
        left of the current time"""
 
        if curve != self.curve:
 
            return
 
        idx = self.curve.index_before(self.current_time())
 
@@ -718,15 +725,14 @@ class Curveset:
 
            num = self.sliderNum[self.curveName[curve]]
 
        except KeyError:
 
            return
 
        self.sliders.valueOut("knob%s" % num, value * 127)
 

	
 
class Curvesetview(tk.Frame):
 
    curves = None # curvename : Curveview
 
    def __init__(self, master, curveset, **kw):
 
        self.curves = {}
 
        self.curves = {} # curvename : Curveview
 
        self.curveset = curveset
 
        tk.Frame.__init__(self,master,**kw)
 
        
 
        f = tk.Frame(self,relief='raised',bd=1)
 
        f.pack(side='top',fill='x')
 
        tk.Label(f, text="new curve named: (C-N)").pack(side='left')
 
@@ -762,25 +768,32 @@ class Curvesetview(tk.Frame):
 
            txt = name
 
        curve_name_label = tk.Label(leftside,text=txt,font=labelFont,
 
                 width=15)
 
        curve_name_label.pack(side='left')
 

	
 
        sliderLabel = None
 
        def collapsed_cmd():
 

	
 
        collapsed_cb = tk.Checkbutton(leftside, text="C",
 
                       font=labelFont, variable=collapsed)
 
        collapsed_cb.pack(side='left')
 

	
 
        def toggleCollapsed():
 
            collapsed.set(not collapsed.get())
 

	
 

	
 
        def update_ui_to_collapsed_state(*args):
 
            if collapsed.get():
 
                if sliderLabel:
 
                    sliderLabel.pack_forget()
 
                f.pack(exp=0)
 
            else:
 
                if sliderLabel:
 
                    sliderLabel.pack(side='left')
 
                f.pack(exp=1)
 
        collapsed_cb = tk.Checkbutton(leftside, text="C",
 
                       font=labelFont, variable=collapsed, 
 
                       command=collapsed_cmd)
 
        collapsed_cb.pack(side='left')
 
        collapsed.trace('w', update_ui_to_collapsed_state)
 

	
 

	
 
        muted = tk.IntVar()
 
        default_bg = leftside['bg']
 
        muted_cb = tk.Checkbutton(leftside, text="M", font=labelFont,
 
                       variable=muted)
 
        muted_cb.pack(side='left')
 
@@ -794,30 +807,39 @@ class Curvesetview(tk.Frame):
 

	
 
        cv = Curveview(f, self.curveset.curves[name],
 
                       knobEnabled=knobEnabled)
 
        cv.pack(side='left',fill='both',exp=1)
 
        self.curves[name] = cv
 

	
 
        def muted_cmd(*args):
 
        def sync_mute_to_curve(*args):
 
            """send value from Tk var to the master attribute inside Curve"""
 
            new_mute = muted.get()
 
            old_mute = cv.curve.muted
 
            if new_mute == old_mute:
 
                return
 

	
 
            cv.curve.muted = new_mute
 

	
 
        muted.trace('w', sync_mute_to_curve)
 

	
 
        def update_mute_look():
 
            if muted.get():
 
                new_bg = 'grey20'
 
            else:
 
                new_bg = default_bg
 

	
 
            widgets = [leftside, collapsed_cb, muted_cb, curve_name_label, f]
 
            if sliderLabel:
 
                widgets.append(sliderLabel)
 
            for widget in widgets:
 
                widget['bg'] = new_bg
 
        muted.trace('w', muted_cmd)
 

	
 
        def mute_changed():
 
            muted.set(cv.curve.muted)
 
            update_mute_look()
 

	
 
        dispatcher.connect(mute_changed, 'mute changed', sender=cv.curve)
 
        dispatcher.connect(mute_changed, 'mute changed', sender=cv.curve,
 
                           weak=False)
 

	
 
        dispatcher.connect(toggleCollapsed, "toggle collapse", sender=cv.curve,
 
                           weak=False)
 

	
0 comments (0 inline, 0 general)