#!/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(""%key, lambda ev,sub=sub: self.bumpto(sub,1)) root.bind(""%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(""%i,lambda ev,i=i: mag.set(math.sqrt((i )/5))) magscl.pack(side='left',fill='y') root.mainloop()