comparison light8/Lightboard.py @ 78:0969d8a6729d

support for external sliders. fill in ExternalInput with real IO
author dmcc
date Fri, 12 Jul 2002 10:05:57 +0000
parents 2dfae9ed1cda
children 233fe8cefa36
comparison
equal deleted inserted replaced
77:5649f5d9c798 78:0969d8a6729d
1 from __future__ import nested_scopes 1 from __future__ import nested_scopes
2 2
3 from Tix import * 3 from Tix import *
4 import random
5 from signal import signal, SIGINT 4 from signal import signal, SIGINT
6 import sys, cPickle 5 import sys, cPickle, random
7 6
8 import io
9 from uihelpers import * 7 from uihelpers import *
10 from panels import * 8 from panels import *
11 from Xfader import * 9 from Xfader import *
12 from subediting import Subediting 10 from subediting import Subediting
13 from Fader import Fader 11 from Fader import Fader
14 import stage 12 import io, stage, Subs, Patch, ExternalInput
15 import Subs, Patch
16 13
17 class Pickles: 14 class Pickles:
18 def __init__(self, scalelevels, subs=None, windowpos=None): 15 def __init__(self, scalelevels, subs=None, windowpos=None):
19 self.scalelevels = dict([(name, lev.get()) 16 self.scalelevels = dict([(name, lev.get())
20 for name, lev in scalelevels.items()]) 17 for name, lev in scalelevels.items()])
29 self.DUMMY = DUMMY 26 self.DUMMY = DUMMY
30 self.jostle_mode = 0 27 self.jostle_mode = 0
31 28
32 self.channel_levels = [] 29 self.channel_levels = []
33 self.scalelevels = {} 30 self.scalelevels = {}
34 self.xfader = Xfader(self.scalelevels) # doesn't draw any UI yet-- look for self.xfader.setupwidget() 31 # doesn't draw any UI yet-- look for self.xfader.setupwidget()
32 self.xfader = Xfader(self.scalelevels)
35 self.oldlevels = [None] * 68 # never replace this; just clear it 33 self.oldlevels = [None] * 68 # never replace this; just clear it
36 self.subediting = Subediting(currentoutputlevels=self.oldlevels) 34 self.subediting = Subediting(currentoutputlevels=self.oldlevels)
37 35
38 self.windowpos = 0 36 self.windowpos = 0
39 self.get_data() 37 self.get_data()
44 42
45 def buildinterface(self): 43 def buildinterface(self):
46 for w in self.master.winfo_children(): 44 for w in self.master.winfo_children():
47 w.destroy() 45 w.destroy()
48 46
49 stage_tl = toplevelat('stage', self.windowpos) 47 stage_tl = toplevelat('stage')
50 s = stage.Stage(stage_tl) 48 s = stage.Stage(stage_tl)
51 stage.createlights(s) 49 stage.createlights(s)
52 s.setsubediting(self.subediting) 50 s.setsubediting(self.subediting)
53 s.pack() 51 s.pack()
54 self.stage = s # save it 52 self.stage = s # save it
55 53
56 sub_tl = toplevelat('sub', self.windowpos) 54 sub_tl = toplevelat('sub')
57 scene_tl = toplevelat('scenes',self.windowpos) 55 scene_tl = toplevelat('scenes')
58 effect_tl = toplevelat('effect', self.windowpos) 56 effect_tl = toplevelat('effect')
57
58 mapping_tl = toplevelat('mapping')
59 self.slidermapper = ExtSliderMapper(mapping_tl, self.scalelevels,
60 ExternalInput.ExternalSliders())
61 self.slidermapper.pack()
59 62
60 self.subpanels = Subpanels(sub_tl, effect_tl, scene_tl, self, self.scalelevels, 63 self.subpanels = Subpanels(sub_tl, effect_tl, scene_tl, self, self.scalelevels,
61 Subs, self.xfader, self.changelevel, 64 Subs, self.xfader, self.changelevel,
62 self.subediting, Subs.longestsubname()) 65 self.subediting, Subs.longestsubname())
63 66
64 leveldisplay_tl = toplevelat('leveldisplay', self.windowpos) 67 leveldisplay_tl = toplevelat('leveldisplay')
65 leveldisplay_tl.bind('<Escape>', sys.exit) 68 leveldisplay_tl.bind('<Escape>', sys.exit)
66 69
67 self.leveldisplay = Leveldisplay(leveldisplay_tl, self.channel_levels) 70 self.leveldisplay = Leveldisplay(leveldisplay_tl, self.channel_levels)
68 for i in range(0,len(self.channel_levels)): 71 for i in range(0,len(self.channel_levels)):
69 self.channel_levels[i].config(text=self.oldlevels[i]) 72 self.channel_levels[i].config(text=self.oldlevels[i])
84 leveldisplay_tl.bind('<r>', self.refresh) 87 leveldisplay_tl.bind('<r>', self.refresh)
85 88
86 self.xfader.setupwidget(xf) 89 self.xfader.setupwidget(xf)
87 controlpanel.pack() 90 controlpanel.pack()
88 91
89 cuefader_tl = toplevelat('cuefader', self.windowpos) 92 cuefader_tl = toplevelat('cuefader')
90 cuefader = Fader(cuefader_tl, Subs.cues, self.scalelevels) 93 cuefader = Fader(cuefader_tl, Subs.cues, self.scalelevels)
91 cuefader.pack() 94 cuefader.pack()
92 95
93 def get_data(self,*args): 96 def get_data(self,*args):
94 Subs.reload_data(self.DUMMY) 97 Subs.reload_data(self.DUMMY)
147 newlevels = s.get_levels(level=self.scalelevels[name].get()) 150 newlevels = s.get_levels(level=self.scalelevels[name].get())
148 for (ch, fadelev) in newlevels.items(): 151 for (ch, fadelev) in newlevels.items():
149 levels[ch-1] = max(levels[ch-1], fadelev) 152 levels[ch-1] = max(levels[ch-1], fadelev)
150 153
151 levels = [int(l) for l in levels] 154 levels = [int(l) for l in levels]
155
156 # load levels from external sliders
157 extlevels = self.slidermapper.get_levels()
158 for name, val in extlevels.items():
159 self.scalelevels[name].set(val)
152 160
153 for lev,lab,oldlev,numlab in zip(levels, self.channel_levels, 161 for lev,lab,oldlev,numlab in zip(levels, self.channel_levels,
154 self.oldlevels, 162 self.oldlevels,
155 self.leveldisplay.number_labels): 163 self.leveldisplay.number_labels):
156 if lev != oldlev: 164 if lev != oldlev:
200 print "IOError: Couldn't load prefs (%s): %s" % (filename,e) 208 print "IOError: Couldn't load prefs (%s): %s" % (filename,e)
201 except EOFError, e: 209 except EOFError, e:
202 print "EOFrror: Couldn't load prefs (%s): %s" % (filename,e) 210 print "EOFrror: Couldn't load prefs (%s): %s" % (filename,e)
203 except Exception,e: 211 except Exception,e:
204 print "Couldn't load prefs (%s): %s" % (filename,e) 212 print "Couldn't load prefs (%s): %s" % (filename,e)
213 self.slidermapper.setup()
205 214
206 def backgroundloop(self, *args): 215 def backgroundloop(self, *args):
207 self.master.after(50, self.backgroundloop, ()) 216 self.master.after(50, self.backgroundloop, ())
208 self.changelevel() 217 self.changelevel()
209 def quit(self, *args): 218 def quit(self, *args):