comparison light8/rsn.py @ 26:219d6fcbc28d

Reclassification, minor cleanups Reclassification, minor cleanups No more global variables in rsn! They are all in a class called LightBoard.
author dmcc
date Sun, 07 Jul 2002 08:33:52 +0000
parents 6284a812da50
children b0342f9ee328
comparison
equal deleted inserted replaced
25:f0e1dde35aec 26:219d6fcbc28d
36 36
37 get_data() 37 get_data()
38 38
39 io.init(DUMMY) 39 io.init(DUMMY)
40 40
41 channel_levels = [] 41 class Lightboard:
42 scalelevels = {} 42 def __init__(self, master):
43 fades = {} 43 self.master = master
44 44
45 _oldlevels=[None] * 68 45 self.channel_levels = []
46 self.scalelevels = {}
47 self.oldlevels = [None] * 68
46 48
47 # this is called on a loop, and ALSO by the Scales 49 self.buildinterface()
48 def changelevel(*args): 50 self.load()
49 'Amp trims slider' 51 self.backgroundloop()
50 global _oldlevels 52 def buildinterface(self):
53 for w in self.master.winfo_children():
54 w.destroy()
51 55
52 levels = [0] * 68 56 stage_tl = toplevelat(165,90)
53 for name, s in Subs.subs.items(): 57 s = stage.Stage(stage_tl)
54 newlevels = s.get_levels(level=scalelevels[name].get()) 58 stage.createlights(s)
55 for (ch, fadelev) in newlevels.items(): 59 s.pack()
56 levels[ch-1] = max(levels[ch-1], fadelev)
57 60
58 levels = [int(l) for l in levels] 61 sub_tl = toplevelat(0,0)
62 effect_tl = toplevelat(0,352)
59 63
60 for lev,lab,oldlev in zip(levels, channel_levels, _oldlevels): 64 self.xfader = Xfader(self.scalelevels)
61 if lev != oldlev:
62 lab.config(text="%d" % lev)
63 colorlabel(lab)
64 65
65 _oldlevels = levels[:] 66 self.subpanels = Subpanels(sub_tl, effect_tl, self.scalelevels, Subs,
67 self.xfader, self.changelevel)
68
69 leveldisplay_tl = toplevelat(873,400)
70 leveldisplay_tl.bind('<Escape>', sys.exit)
71
72 leveldisplay = Leveldisplay(leveldisplay_tl, self.channel_levels)
73
74 Console()
75
76 # root frame
77 controlpanel = Controlpanel(root, self.xfader, self.refresh, quit)
66 78
67 io.sendlevels(levels) 79 xf=Frame(root)
80 xf.pack(side='right')
68 81
69 def backgroundloop(*args): 82 root.bind('<q>', quit)
70 root.after(50, backgroundloop, ()) 83 root.bind('<r>', self.refresh)
71 changelevel() 84 leveldisplay_tl.bind('<q>', quit)
85 leveldisplay_tl.bind('<r>', self.refresh)
72 86
73 buildinterface = None # temporary 87 self.xfader.setupwidget(xf)
74 def refresh(*args): 88 controlpanel.pack()
75 get_data()
76 buildinterface()
77 bindkeys(root,'<Escape>', quit)
78 89
79 def quit(*args): 90 def refresh(self, *args):
80 filename = '/tmp/light9.prefs' 91 'rebuild interface, reload data'
81 if DUMMY: 92 get_data()
82 filename += '.dummy' 93 self.buildinterface()
83 print "Saving to", filename 94 bindkeys(root,'<Escape>', quit)
84 file = open(filename, 'w')
85 cPickle.dump(Pickles(scalelevels), file)
86 root.destroy()
87 sys.exit()
88 95
96 # this is called on a loop, and ALSO by the Scales
97 def changelevel(self, *args):
98 'Amp trims slider'
89 99
90 xfader=Xfader(scalelevels) 100 levels = [0] * 68
101 for name, s in Subs.subs.items():
102 newlevels = s.get_levels(level=self.scalelevels[name].get())
103 for (ch, fadelev) in newlevels.items():
104 levels[ch-1] = max(levels[ch-1], fadelev)
91 105
92 def buildinterface(*args): 106 levels = [int(l) for l in levels]
93 global channel_levels, _oldlevels, leveldisplay, xfader
94 for w in root.winfo_children():
95 w.destroy()
96 107
97 stage_tl=toplevelat(165,90) 108 for lev,lab,oldlev in zip(levels, self.channel_levels, self.oldlevels):
98 s=stage.Stage(stage_tl) 109 if lev != oldlev:
99 stage.createlights(s) 110 lab.config(text="%d" % lev)
100 s.pack() 111 colorlabel(lab)
101 112
102 sub_tl = toplevelat(0,0) 113 self.oldlevels = levels[:]
103 effect_tl = toplevelat(0,352) 114
115 io.sendlevels(levels)
104 116
105 Subpanels(sub_tl,effect_tl,scalelevels,Subs,xfader,changelevel) 117 def load(self):
118 try:
119 filename = '/tmp/light9.prefs'
120 if DUMMY:
121 filename += '.dummy'
122 print "Loading from", filename
123 file = open(filename, 'r')
124 p = cPickle.load(file)
125 for s, v in p.scalelevels.items():
126 try:
127 self.scalelevels[s].set(v)
128 except:
129 print "Couldn't set %s -> %s" % (s, v)
130 except:
131 print "Couldn't load prefs (%s)" % filename
106 132
107 # def event_printer(evt): 133 def make_sub(self, name):
108 # print dir(evt) 134 i = 1
135 # name = console_entry.get() # read from console
136 if not name:
137 print "Enter sub name in console."
138 return
109 139
110 # sub_tl.bind('<b>', event_printer) 140 st = ''
111 leveldisplay=toplevelat(873,400) 141 linebuf = 'subs["%s"] = {' % name
112 leveldisplay.bind('<Escape>', sys.exit) 142 for l in self.oldlevels:
143 if l:
144 if len(linebuf) > 60:
145 st += linebuf + '\n '
146 linebuf = ''
113 147
114 Leveldisplay(leveldisplay,_oldlevels,channel_levels) 148 linebuf += ' "%s" : %d,' % (Patch.get_channel_name(i), l)
115 149 i += 1
116 Console() 150 st += linebuf + '}\n'
117 151 if DUMMY:
118 # root frame 152 filename = 'ConfigDummy.py'
119 controlpanel = Controlpanel(root,xfader,refresh,quit) 153 else:
120 154 filename = 'Config.py'
121 xf=Frame(root) 155 f = open(filename, 'a')
122 xf.pack(side='right') 156 f.write(st)
123 157 f.close()
124 root.bind('<q>', quit) 158 print 'Added sub:', st
125 root.bind('<r>', refresh) 159 self.refresh()
126 leveldisplay.bind('<q>', quit) 160 def backgroundloop(self, *args):
127 leveldisplay.bind('<r>', refresh) 161 self.master.after(50, self.backgroundloop, ())
128 162 self.changelevel()
129 xfader.setupwidget(xf) 163 def quit(self, *args):
130 controlpanel.pack() 164 filename = '/tmp/light9.prefs'
131 165 if DUMMY:
132 166 filename += '.dummy'
133 buildinterface() 167 print "Saving to", filename
168 file = open(filename, 'w')
169 cPickle.dump(Pickles(self.scalelevels), file)
170 root.destroy()
171 sys.exit()
134 172
135 class Pickles: 173 class Pickles:
136 def __init__(self, scalelevels): 174 def __init__(self, scalelevels):
137 self.scalelevels = dict([(name, lev.get()) 175 self.scalelevels = dict([(name, lev.get())
138 for name,lev in scalelevels.items()]) 176 for name,lev in scalelevels.items()])
139 177
140 def load(): 178 mr_lightboard = Lightboard(root)
141 try:
142 filename = '/tmp/light9.prefs'
143 if DUMMY:
144 filename += '.dummy'
145 print "Loading from", filename
146 file = open(filename, 'r')
147 p = cPickle.load(file)
148 for s, v in p.scalelevels.items():
149 try:
150 scalelevels[s].set(v)
151 except:
152 print "Couldn't set %s -> %s" % (s, v)
153 except:
154 print "Couldn't load prefs (%s)" % filename
155 179
156 def make_sub(name): 180 signal(SIGINT, mr_lightboard.quit)
157 global _oldlevels 181 bindkeys(root,'<Escape>', mr_lightboard.quit)
158 i = 1
159 # name = console_entry.get() # read from console
160 if not name:
161 print "Enter sub name in console."
162 return
163
164 st = ''
165 linebuf = 'subs["%s"] = {' % name
166 for l in _oldlevels:
167 if l:
168 if len(linebuf) > 60:
169 st += linebuf + '\n '
170 linebuf = ''
171
172 linebuf += ' "%s" : %d,' % (Patch.get_channel_name(i), l)
173 i += 1
174 st += linebuf + '}\n'
175 if DUMMY:
176 filename = 'ConfigDummy.py'
177 else:
178 filename = 'Config.py'
179 f = open(filename, 'a')
180 f.write(st)
181 f.close()
182 print 'Added sub:', st
183 refresh()
184
185 load()
186 signal(SIGINT, quit)
187 bindkeys(root,'<Escape>', quit)
188 182
189 # bindkeys(root,'<q>', quit) 183 # bindkeys(root,'<q>', quit)
190 # bindkeys(root,'<r>', refresh) 184 # bindkeys(root,'<r>', refresh)
191 # bindkeys(root,'<s>', make_sub) 185 # bindkeys(root,'<s>', make_sub)
192 backgroundloop()
193 root.mainloop() # Receiver switches main 186 root.mainloop() # Receiver switches main