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