204
|
1 #!/usr/bin/env python
|
|
2 from __future__ import division,nested_scopes
|
|
3 import sys, time, math
|
|
4 import Tkinter as tk
|
|
5
|
|
6 sys.path.append("../light8")
|
|
7 import dmxclient
|
|
8 from TLUtility import make_attributes_from_args
|
|
9
|
|
10 from Submaster import Submaster,sub_maxes
|
|
11
|
|
12 class pad(tk.Frame):
|
|
13 levs = None # Submaster : level
|
|
14 def __init__(self,master,root,mag):
|
|
15 make_attributes_from_args('master','mag')
|
|
16 tk.Frame.__init__(self,master)
|
|
17 self.levs={}
|
|
18 for xy,key,subname in [
|
|
19 ((1,1),'KP_Up','upstage'),
|
|
20 ((1,3),"KP_Down",'narrow-c'),
|
|
21 ((0,2),'KP_Left','left1'),
|
|
22 ((2,2),'KP_Right','right1'),
|
|
23 ((1,0),'KP_Divide','cyc'),
|
|
24 ((0,3),"KP_End",'edge-l'),
|
|
25 ((2,3),'KP_Next','edge-r'),
|
|
26 ((0,4),'KP_Insert',"zip_red"),
|
|
27 ((2,4),'KP_Delete',"zip_orange"),
|
|
28 ((3,1),'KP_Add','zip_green'),
|
|
29 ((3,3),'KP_Enter','zip_blue'),
|
|
30 ((1,2),'KP_Begin','downfront'),
|
|
31 ]:
|
|
32
|
|
33 sub = Submaster(subname)
|
|
34 self.levs[sub]=0
|
|
35
|
|
36 l = tk.Label(self,font="arial 12 bold",anchor='w',height=2,
|
|
37 relief='groove',bd=5,
|
|
38 text="%s\n%s" % (key.replace('KP_',''),sub.name))
|
|
39 l.grid(column=xy[0],row=xy[1],sticky='news')
|
|
40
|
|
41 root.bind("<KeyPress-%s>"%key,
|
|
42 lambda ev,sub=sub: self.bumpto(sub,1))
|
|
43 root.bind("<KeyRelease-%s>"%key,
|
|
44 lambda ev,sub=sub: self.bumpto(sub,0))
|
|
45 def bumpto(self,sub,lev):
|
|
46 now=time.time()
|
|
47 self.levs[sub]=lev*self.mag.get()
|
|
48 self.master.after_idle(self.output)
|
|
49 def output(self):
|
|
50 dmx = sub_maxes(*[s*l for s,l in self.levs.items()]).get_dmx_list()
|
|
51 dmxclient.outputlevels(dmx,clientid="bumppad")
|
|
52
|
|
53 root=tk.Tk()
|
|
54 root.tk_setPalette("maroon4")
|
|
55
|
|
56 mag = tk.DoubleVar()
|
|
57
|
|
58 pad(root,root,mag).pack(side='left',fill='both',exp=1)
|
|
59
|
|
60 magscl = tk.Scale(root,orient='vertical',from_=1,to=0,res=.01,
|
|
61 showval=1,variable=mag,label='mag',relief='raised',bd=1)
|
|
62 for i in range(1,6):
|
|
63 root.bind("<Key-%s>"%i,lambda ev,i=i: mag.set(math.sqrt((i )/5)))
|
|
64 magscl.pack(side='left',fill='y')
|
|
65 root.mainloop()
|