Mercurial > code > home > repos > light9
annotate flax/subcomposer @ 128:6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
author | drewp |
---|---|
date | Sat, 14 Jun 2003 14:50:31 +0000 |
parents | |
children | feddef0d2fd4 |
rev | line source |
---|---|
128
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
1 #!/usr/bin/python |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
2 |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
3 from __future__ import division, nested_scopes |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
4 import Tkinter as tk |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
5 from dmxchanedit import Levelbox |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
6 import sys,os,time,atexit |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
7 sys.path.append("../light8") |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
8 import dmxclient |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
9 import Patch |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
10 import Submaster |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
11 |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
12 import dispatcher |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
13 |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
14 def persistentlevels(): |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
15 """adjusts levels from subcomposer.savedlevels, if possible; and |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
16 arranges to save the levels in that file upon exit""" |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
17 global levels |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
18 try: |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
19 levels[:]=map(float,file("subcomposer.savedlevels","r").read().split()) |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
20 except IOError: |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
21 pass |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
22 |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
23 atexit.register(lambda: file("subcomposer.savedlevels","w"). |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
24 write(" ".join(map(str,levels)))) |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
25 |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
26 def levelchanged(channel,newlevel): |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
27 global lb, levels |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
28 if channel>len(levels): |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
29 return |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
30 levels[channel-1]=max(0,min(1,float(newlevel))) |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
31 lb.setlevels(levels) |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
32 |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
33 def savenewsub(levels,subname): |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
34 leveldict={} |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
35 for i,lev in zip(range(len(levels)),levels): |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
36 if lev!=0: |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
37 leveldict[Patch.get_channel_name(i+1)]=lev |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
38 |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
39 s=Submaster.Submaster(subname,leveldict) |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
40 s.save() |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
41 def Savebox(master,levels): |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
42 f=tk.Frame(master,bd=2,relief='raised') |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
43 tk.Label(f,text="Save this as:").pack(side='left') |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
44 e=tk.Entry(f) |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
45 e.pack(side='left',exp=1,fill='x') |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
46 def cmd(): |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
47 subname=e.get() |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
48 savenewsub(levels,subname) |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
49 print "saved new sub",subname |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
50 tk.Button(f,text="Save",command=cmd).pack(side='left') |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
51 return f |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
52 |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
53 ############################# |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
54 |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
55 levels=[0]*68 # levels should never get overwritten, just edited |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
56 persistentlevels() |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
57 |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
58 root=tk.Tk() |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
59 root.config(bg='black') |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
60 |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
61 lb=Levelbox(root) |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
62 lb.pack(side='top') |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
63 |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
64 savebox=Savebox(root,levels) |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
65 savebox.pack(side='top') |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
66 |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
67 # the dmx levels we edit and output, range is 0..1 (dmx chan 1 is |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
68 # the 0 element) |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
69 lb.setlevels(levels) |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
70 |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
71 dispatcher.connect(levelchanged,"levelchanged") |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
72 |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
73 lastupdate=0 # time we last sent to dmx |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
74 |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
75 root.update() # get the windows drawn |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
76 |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
77 lastsent=[] # copy of levels |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
78 |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
79 def sendupdate(): |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
80 global levels,lastupdate,lastsent |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
81 dmxclient.outputlevels(levels) |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
82 lastupdate=time.time() |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
83 lastsent=levels[:] |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
84 |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
85 dispatcher.connect(sendupdate,"levelchanged") |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
86 |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
87 while 1: |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
88 |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
89 if 0: |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
90 for i in range(20): # don't let Tk take all the time |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
91 tk._tkinter.dooneevent() |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
92 print "loop" |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
93 else: |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
94 root.update() |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
95 |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
96 if lastsent!=levels or time.time()>lastupdate+1: |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
97 sendupdate() |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
98 |
6dfe10a54fc4
new program to adjust indiv dmx channels and save the settings as new submasters
drewp
parents:
diff
changeset
|
99 time.sleep(.01) |