Files @ 7adc65771676
Branch filter:

Location: light9/light8/panels.py - annotation

drewp
big restructuring - moved lots of things (including most panels) to other files
"""some of the panels"""

from Tkinter import *
from uihelpers import *
import Patch

stdfont = ('Arial', 8)
monofont = ('Courier', 8)



class Controlpanel(Frame):
    def __init__(self,parent,xfader,refresh_cb,quit_cb):
        Frame.__init__(self,parent)
        controlpanel=self
        for txt,cmd in (
            ('Quit',       quit_cb),
            ('Refresh',    refresh_cb),
            ('Clear all', xfader.clearallbuttons),
            ('On -> X',     lambda: xfader.grab('x')),
            ('Clear X',     lambda: xfader.clearallbuttons('x')),
            ('On -> Y',     lambda: xfader.grab('y')),
            ('Clear Y',     lambda: xfader.clearallbuttons('y'))):
            Button(controlpanel, text=txt, command=cmd).pack(side='top', fill='x')


class Console:
    def __init__(self):
        print "Light 8: Everything's under control"
        t=toplevelat(267,717,w=599,h=19)
        self.frame = Frame(t)
        self.entry=Entry(self.frame)
        self.entry.pack(expand=1, fill='x')
        self.entry.bind('<Return>', lambda evt: self.execute(evt, self.entry.get()))
        self.frame.pack(fill=BOTH, expand=1)
    
    def execute(evt, str):
        if str[0] == '*': # make a new sub
            make_sub(str)
        else:
            print '>>>', str
            print eval(str)
        self.frame.focus()

class Leveldisplay:
    def __init__(self,parent,_oldlevels):
        global channel_levels
        
        frames = (make_frame(parent), make_frame(parent))
        channel_levels=[]
        for channel in range(1, 69):
            f=Frame(frames[channel > 34])
            Label(f,text=str(channel), width=3, bg='lightPink', 
                font=stdfont, padx=0, pady=0, bd=0, height=1).pack(side='left')
            Label(f,text=Patch.get_channel_name(channel), width=8, 
                font=stdfont, anchor='w', padx=0, pady=0, bd=0, height=1).pack(side='left')
            l=Label(f,text=_oldlevels[channel-1], width=3, bg='lightBlue', 
                font=stdfont, anchor='e', padx=1, pady=0, bd=0, height=1)
            l.pack(side='left')
            colorlabel(l)
            channel_levels.append(l)
            f.pack(side='top')

class Subpanels:
    def __init__(self,scenesparent,effectsparent,scalelevels,Subs,xfader,changelevel):
        
        sublist = Subs.subs.items()
        sublist.sort()

        for name, sub in sublist:
            if sub.is_effect:
                parent=effectsparent
            else:
                parent=scenesparent

            f=Frame(parent, bd=1, relief='raised')
            f.pack(fill='both',exp=1,side='left')

            if name not in scalelevels:
                scalelevels[name]=DoubleVar()

            sub.set_slider_var(scalelevels[name])

            scaleopts = {}
            if sub.color:
                scaleopts['troughcolor'] = sub.color
            s=Scale(f,command=lambda l,name=name: changelevel(name,l),showvalue=0,
                    length=300-17,variable=scalelevels[name],width=20,
                    to=0,res=.001,from_=1,bd=1, **scaleopts)
            l=Label(f,text=str(name), font=stdfont, padx=0, pady=0)
            v=Label(f,textvariable=scalelevels[name], font=stdfont, padx=0, pady=0)
            l.pack(side='bottom')
            v.pack(side='bottom')

            for axis in ('y','x'):
                cvar=IntVar()
                cb=Checkbutton(f,text=axis,variable=cvar,font=stdfont, padx=0, pady=0, bd=1)
                button = ('Alt','Control')[axis=='y'] # unused?
    #            s.bind('<Key-%s>'%axis, lambda ev,cb=cb: cb.invoke)
                cb.pack(side='bottom',fill='both', padx=0, pady=0)
                xfader.registerbutton(name,axis,cvar)

            s.pack(side='left')
            s.bind('<3>', lambda evt, v=scalelevels[name]: toggle_slider(v))\

            # effects frame?
            sframe = Frame(f,bd=2,relief='groove')
            sub.draw_tk(sframe)
            sframe.pack(side='left',fill='y')