Mercurial > code > home > repos > light9
comparison flax/Subcomposer.py @ 144:f433e95f2e42
subcomposer is now a module. You can still run it from the command
subcomposer is now a module. You can still run it from the command
line. If you want it to work as a module, you need to call the
considersendupdate() method with the period of the after loop that it
should use.
author | dmcc |
---|---|
date | Wed, 02 Jul 2003 10:21:59 +0000 |
parents | 45b12307c695 |
children | 6a1f4becb1db |
comparison
equal
deleted
inserted
replaced
143:79aabb5db3ce | 144:f433e95f2e42 |
---|---|
7 sys.path.append("../light8") | 7 sys.path.append("../light8") |
8 import dmxclient | 8 import dmxclient |
9 import Patch | 9 import Patch |
10 import Submaster | 10 import Submaster |
11 | 11 |
12 from dispatch import dispatcher | 12 import dispatcher |
13 | 13 |
14 class Subcomposer(tk.Frame): | 14 class Subcomposer(tk.Frame): |
15 def __init__(self, master, levelboxopts=None, dmxdummy=0, numchannels=68, | 15 def __init__(self, master, levelboxopts=None, dmxdummy=0, numchannels=68): |
16 use_persistentlevels=0): | |
17 tk.Frame.__init__(self, master, bg='black') | 16 tk.Frame.__init__(self, master, bg='black') |
18 self.dmxdummy = dmxdummy | 17 self.dmxdummy = dmxdummy |
19 self.numchannels = numchannels | 18 self.numchannels = numchannels |
20 | 19 |
21 self.levels = [0]*68 # levels should never get overwritten, just edited | 20 self.levels = [0]*68 # levels should never get overwritten, just edited |
39 tk.Button(self, text="all to zero", command=alltozero).pack(side='top') | 38 tk.Button(self, text="all to zero", command=alltozero).pack(side='top') |
40 | 39 |
41 dispatcher.connect(self.levelchanged,"levelchanged") | 40 dispatcher.connect(self.levelchanged,"levelchanged") |
42 dispatcher.connect(self.sendupdate,"levelchanged") | 41 dispatcher.connect(self.sendupdate,"levelchanged") |
43 | 42 |
44 if use_persistentlevels: | 43 self.persistentlevels() |
45 self.persistentlevels() | |
46 | 44 |
47 self.lastupdate=0 # time we last sent to dmx | 45 self.lastupdate=0 # time we last sent to dmx |
48 | 46 |
49 self.lastsent=[] # copy of levels | 47 self.lastsent=[] # copy of levels |
50 | 48 |
67 if channel is not None and newlevel is not None: | 65 if channel is not None and newlevel is not None: |
68 if channel>len(self.levels): | 66 if channel>len(self.levels): |
69 return | 67 return |
70 self.levels[channel-1]=max(0,min(1,float(newlevel))) | 68 self.levels[channel-1]=max(0,min(1,float(newlevel))) |
71 self.levelbox.setlevels(self.levels) | 69 self.levelbox.setlevels(self.levels) |
72 def savenewsub(self, levels, subname): | 70 def savenewsub(self, subname): |
73 leveldict={} | 71 leveldict={} |
74 for i,lev in zip(range(len(self.levels)),self.levels): | 72 for i,lev in zip(range(len(self.levels)),self.levels): |
75 if lev!=0: | 73 if lev!=0: |
76 leveldict[Patch.get_channel_name(i+1)]=lev | 74 leveldict[Patch.get_channel_name(i+1)]=lev |
77 | 75 |
78 s=Submaster.Submaster(subname,leveldict) | 76 s=Submaster.Submaster(subname,leveldict) |
79 s.save() | 77 s.save() |
80 def loadsub(self, levels, subname): | 78 def loadsub(self, subname): |
81 """puts a sub into the levels, replacing old level values""" | 79 """puts a sub into the levels, replacing old level values""" |
82 s=Submaster.Submasters().get_sub_by_name(subname) | 80 s=Submaster.Submasters().get_sub_by_name(subname) |
83 self.levels[:]=[0]*68 | 81 self.levels[:]=[0]*68 |
84 self.levels[:]=s.get_dmx_list() | 82 self.levels[:]=s.get_dmx_list() |
85 dispatcher.send("levelchanged") | 83 dispatcher.send("levelchanged") |
108 cmd(levels,subname) | 106 cmd(levels,subname) |
109 print "sub",verb,subname | 107 print "sub",verb,subname |
110 e.bind("<Return>",cb) | 108 e.bind("<Return>",cb) |
111 tk.Button(f,text=verb,command=cb).pack(side='left') | 109 tk.Button(f,text=verb,command=cb).pack(side='left') |
112 return f | 110 return f |
113 | |
114 def open_sub_editing_window(subname, use_mainloop=1, dmxdummy=0): | |
115 if use_mainloop: | |
116 toplevel = tk.Tk() | |
117 else: | |
118 toplevel = tk.Toplevel() | |
119 if dmxdummy: | |
120 dummy_str = ' (dummy)' | |
121 else: | |
122 dummy_str = '' | |
123 toplevel.title("Subcomposer: %s%s" % (subname, dummy_str)) | |
124 sc = Subcomposer(toplevel, use_persistentlevels=0, dmxdummy=dmxdummy) | |
125 sc.pack(fill='both', expand=1) | |
126 sc.loadsub(None, subname) # don't ask | |
127 sc.considersendupdate(use_after_loop=10) | |
128 if use_mainloop: | |
129 tk.mainloop() | |
130 | 111 |
131 ############################# | 112 ############################# |
132 | 113 |
133 if __name__ == "__main__": | 114 if __name__ == "__main__": |
134 root=tk.Tk() | 115 root=tk.Tk() |
135 root.config(bg='black') | 116 root.config(bg='black') |
136 root.tk_setPalette("#004633") | |
137 | 117 |
138 sc = Subcomposer(root, dmxdummy=0) | 118 sc = Subcomposer(root, dmxdummy=1) |
139 sc.pack() | 119 sc.pack() |
140 | 120 |
141 while 1: | 121 while 1: |
142 if 0: | 122 if 0: |
143 for i in range(20): # don't let Tk take all the time | 123 for i in range(20): # don't let Tk take all the time |