Files @ 97c08a1c4351
Branch filter:

Location: light9/bin/bumppad

David McClosky
gyrocontroller: remap buttons, fix keep mode
Also, solo mode is now default, colors are brighter, numeric names for subs
are converted to subs with only that channel up, send zeroes when exiting
#!/usr/bin/env python
from __future__ import division,nested_scopes
import sys, time, math
import Tkinter as tk

import run_local
import light9.dmxclient as dmxclient
from light9.TLUtility import make_attributes_from_args

from light9.Submaster import Submaster,sub_maxes

class pad(tk.Frame):
    levs = None # Submaster : level
    def __init__(self,master,root,mag):
        make_attributes_from_args('master','mag')
        tk.Frame.__init__(self,master)
        self.levs={}
        for xy,key,subname in [
            ((1,1),'KP_Up','centered'),
            ((1,3),"KP_Down",'third-c'),
            ((0,2),'KP_Left','scoop-l'),
            ((2,2),'KP_Right','scoop-r'),
            ((1,0),'KP_Divide','cyc'),
            ((0,3),"KP_End",'third-l'),
            ((2,3),'KP_Next','third-r'),
            ((0,4),'KP_Insert',"zip_red"),
            ((2,4),'KP_Delete',"zip_orange"),
            ((3,1),'KP_Add','strobedim'),
            ((3,3),'KP_Enter','zip_blue'),
            ((1,2),'KP_Begin','scoop-c'),                            
                        ]:
            
            sub = Submaster(subname)
            self.levs[sub]=0
            
            l = tk.Label(self,font="arial 12 bold",anchor='w',height=2,
                         relief='groove',bd=5,
                         text="%s\n%s" % (key.replace('KP_',''),sub.name))
            l.grid(column=xy[0],row=xy[1],sticky='news')
            
            root.bind("<KeyPress-%s>"%key,
                      lambda ev,sub=sub: self.bumpto(sub,1))
            root.bind("<KeyRelease-%s>"%key,
                      lambda ev,sub=sub: self.bumpto(sub,0))
    def bumpto(self,sub,lev):
        now=time.time()
        self.levs[sub]=lev*self.mag.get()
        self.master.after_idle(self.output)
    def output(self):
        dmx = sub_maxes(*[s*l for s,l in self.levs.items()]).get_dmx_list()
        dmxclient.outputlevels(dmx,clientid="bumppad")
        
root=tk.Tk()
root.tk_setPalette("maroon4")
root.wm_title("bumppad")
mag = tk.DoubleVar()

tk.Label(root,text="Keypad press/release activate sub; 1..5 set mag",
             font="Helvetica -12 italic",anchor='w').pack(side='bottom',fill='x')
                      
pad(root,root,mag).pack(side='left',fill='both',exp=1)

magscl = tk.Scale(root,orient='vertical',from_=1,to=0,res=.01,
                   showval=1,variable=mag,label='mag',relief='raised',bd=1)
for i in range(1,6):
    root.bind("<Key-%s>"%i,lambda ev,i=i: mag.set(math.sqrt((i )/5)))
magscl.pack(side='left',fill='y')


root.mainloop()