annotate light8/panels.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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
1 """some of the panels"""
48
2ef72bb3a707 finished the re-class of Console so it can make new subs again
drewp
parents: 43
diff changeset
2 from __future__ import nested_scopes
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
3
51
71489bb71528 - Meet Fader. He is going to grow up and be a crossfader some day
dmcc
parents: 48
diff changeset
4 from Tix import *
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
5 from uihelpers import *
45b12307c695 Initial revision
drewp
parents:
diff changeset
6 import Patch
19
6284a812da50 makefile - add link to ../Widgets/FlyingFader.py
dmcc
parents: 16
diff changeset
7 from FlyingFader import FlyingFader
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
8
45b12307c695 Initial revision
drewp
parents:
diff changeset
9 stdfont = ('Arial', 8)
45b12307c695 Initial revision
drewp
parents:
diff changeset
10 monofont = ('Courier', 8)
45b12307c695 Initial revision
drewp
parents:
diff changeset
11
45b12307c695 Initial revision
drewp
parents:
diff changeset
12 class Controlpanel(Frame):
74
2dfae9ed1cda jostle feature, use it to shake levels mildly
dmcc
parents: 69
diff changeset
13 def __init__(self, parent, xfader, refresh_cb, quit_cb, jostle_cb):
12
7adc65771676 big restructuring - moved lots of things (including most panels) to other files
drewp
parents: 0
diff changeset
14 Frame.__init__(self,parent)
26
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
15 controlpanel = self
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
16 for txt,cmd in (
45b12307c695 Initial revision
drewp
parents:
diff changeset
17 ('Quit', quit_cb),
45b12307c695 Initial revision
drewp
parents:
diff changeset
18 ('Refresh', refresh_cb),
45b12307c695 Initial revision
drewp
parents:
diff changeset
19 ('Clear all', xfader.clearallbuttons),
45b12307c695 Initial revision
drewp
parents:
diff changeset
20 ('On -> X', lambda: xfader.grab('x')),
45b12307c695 Initial revision
drewp
parents:
diff changeset
21 ('Clear X', lambda: xfader.clearallbuttons('x')),
45b12307c695 Initial revision
drewp
parents:
diff changeset
22 ('On -> Y', lambda: xfader.grab('y')),
12
7adc65771676 big restructuring - moved lots of things (including most panels) to other files
drewp
parents: 0
diff changeset
23 ('Clear Y', lambda: xfader.clearallbuttons('y'))):
26
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
24 Button(controlpanel, text=txt, command=cmd).pack(side='top',
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
25 fill='x')
78
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
26 # jostle button
74
2dfae9ed1cda jostle feature, use it to shake levels mildly
dmcc
parents: 69
diff changeset
27 Checkbutton(controlpanel, text="Jostle",
2dfae9ed1cda jostle feature, use it to shake levels mildly
dmcc
parents: 69
diff changeset
28 command=jostle_cb).pack(side=TOP, fill=X)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
29
45b12307c695 Initial revision
drewp
parents:
diff changeset
30 class Console:
53
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
31 def __init__(self,lightboard):
12
7adc65771676 big restructuring - moved lots of things (including most panels) to other files
drewp
parents: 0
diff changeset
32 print "Light 8: Everything's under control"
78
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
33 t=toplevelat('console')
12
7adc65771676 big restructuring - moved lots of things (including most panels) to other files
drewp
parents: 0
diff changeset
34 self.frame = Frame(t)
7adc65771676 big restructuring - moved lots of things (including most panels) to other files
drewp
parents: 0
diff changeset
35 self.entry=Entry(self.frame)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
36 self.entry.pack(expand=1, fill='x')
48
2ef72bb3a707 finished the re-class of Console so it can make new subs again
drewp
parents: 43
diff changeset
37 self.entry.bind('<Return>',
2ef72bb3a707 finished the re-class of Console so it can make new subs again
drewp
parents: 43
diff changeset
38 lambda evt: self.execute(evt, self.entry.get()))
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
39 self.frame.pack(fill=BOTH, expand=1)
53
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
40 self.lightboard=lightboard
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
41
48
2ef72bb3a707 finished the re-class of Console so it can make new subs again
drewp
parents: 43
diff changeset
42 def execute(self, evt, str):
53
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
43 if str[0] == '*': # make a new sub from the current levels
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
44 self.lightboard.save_sub(str,self.lightboard.stageassub())
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
45 else:
45b12307c695 Initial revision
drewp
parents:
diff changeset
46 print '>>>', str
45b12307c695 Initial revision
drewp
parents:
diff changeset
47 print eval(str)
53
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
48 self.frame.focus()
48
2ef72bb3a707 finished the re-class of Console so it can make new subs again
drewp
parents: 43
diff changeset
49
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
50 class Leveldisplay:
26
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
51 def __init__(self, parent, channel_levels, num_channels=68):
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
52 frames = (make_frame(parent), make_frame(parent))
16
7dbe8067acea fixed bug with channel levels not displaying
drewp
parents: 12
diff changeset
53 channel_levels[:]=[]
34
411de8b46aef the famous you-are-in-the-process-of-changing-this-light indicator.
dmcc
parents: 32
diff changeset
54 self.number_labels = []
26
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
55 for channel in range(1, num_channels+1):
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
56
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
57 # frame for this channel
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
58 f = Frame(frames[channel > (num_channels/2)])
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
59 # channel number -- will turn yellow when being altered
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
60 num_lab = Label(f, text=str(channel), width=3, bg='lightPink',
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
61 font=stdfont, padx=0, pady=0, bd=0, height=1)
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
62 num_lab.pack(side='left')
34
411de8b46aef the famous you-are-in-the-process-of-changing-this-light indicator.
dmcc
parents: 32
diff changeset
63 self.number_labels.append(num_lab)
26
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
64
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
65 # text description of channel
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
66 Label(f, text=Patch.get_channel_name(channel), width=8,
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
67 font=stdfont, anchor='w', padx=0, pady=0, bd=0,
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
68 height=1).pack(side='left')
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
69
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
70 # current level of channel, shows intensity with color
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
71 l = Label(f, width=3, bg='lightBlue', font=stdfont, anchor='e',
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
72 padx=1, pady=0, bd=0, height=1)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
73 l.pack(side='left')
45b12307c695 Initial revision
drewp
parents:
diff changeset
74 colorlabel(l)
45b12307c695 Initial revision
drewp
parents:
diff changeset
75 channel_levels.append(l)
45b12307c695 Initial revision
drewp
parents:
diff changeset
76 f.pack(side='top')
26
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
77
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
78 self.channel_levels = channel_levels
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
79 # channel_levels is an output - changelevel will use it to access
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
80 # these labels
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
81
78
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
82 class ExtSliderMapper(Frame):
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
83 def __init__(self, parent, sliderlevels, sliderinput, filename='slidermapping',
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
84 numsliders=4):
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
85 'Slider levels is scalelevels, sliderinput is an ExternalInput object'
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
86 Frame.__init__(self, parent)
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
87 self.parent = parent
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
88 self.sliderlevels = sliderlevels
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
89 self.sliderinput = sliderinput
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
90 self.filename = filename
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
91 self.numsliders = numsliders
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
92 self.file = None
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
93
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
94 # self.setup()
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
95 def setup(self):
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
96 self.subnames = self.sliderlevels.keys()
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
97 self.subnames.sort()
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
98 self.presets = {}
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
99 self.load_presets()
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
100
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
101 self.current_mapping_name = StringVar()
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
102 self.current_mapping = []
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
103 self.attached = []
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
104 self.levels_read = []
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
105 for i in range(self.numsliders):
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
106 self.current_mapping.append(StringVar())
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
107 self.attached.append(BooleanVar())
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
108 self.levels_read.append(DoubleVar())
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
109
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
110 self.reallevellabels = []
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
111 self.draw_interface()
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
112 def load_presets(self):
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
113 self.file = open(self.filename, 'r')
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
114 lines = self.file.readlines()
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
115 for l in lines:
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
116 tokens = l[:-1].split('\t')
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
117 name = tokens.pop(0)
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
118 self.presets[name] = tokens
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
119 self.file.close()
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
120 def save_presets(self):
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
121 self.file = open(self.filename, 'w')
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
122 self.file.seek(0)
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
123 preset_names = self.presets.keys()
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
124 preset_names.sort()
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
125 for p in preset_names:
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
126 s = '\t'.join([p] + self.presets[p]) + '\n'
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
127 self.file.write(s)
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
128 self.file.close()
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
129 def load_scalelevels(self):
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
130 for m, rll in zip(self.current_mapping, self.reallevellabels):
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
131 try:
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
132 v = self.sliderlevels[m.get()]
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
133 rll.configure(textvariable=v)
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
134 except KeyError:
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
135 pass
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
136
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
137 def get_levels(self):
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
138 'To be called by changelevels, I think'
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
139 if not self.current_mapping_name: return {}
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
140 if not self.sliderinput: return {}
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
141
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
142 self.load_scalelevels()
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
143
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
144 rawlevels = self.sliderinput.get_levels()
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
145 for rawlev, levlabvar in zip(rawlevels, self.levels_read):
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
146 levlabvar.set(rawlev)
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
147 outputlevels = {}
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
148 return dict([(name.get(), lev)
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
149 for name, lev, att in zip(self.current_mapping,
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
150 rawlevels,
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
151 self.attached)
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
152 if att.get()])
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
153
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
154 def draw_interface(self):
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
155 self.reallevellabels = []
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
156 subchoiceframe = Frame(self)
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
157 for i, mapping, isattached, lev in zip(range(self.numsliders),
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
158 self.current_mapping,
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
159 self.attached,
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
160 self.levels_read):
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
161 f = Frame(subchoiceframe)
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
162 # Label(f, text="Slider %d" % (i+1)).pack(side=LEFT)
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
163 c = ComboBox(f, variable=mapping)
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
164 for s in self.subnames:
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
165 c.slistbox.listbox.insert(END, s)
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
166 c.entry.configure(width=12)
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
167 statframe = Frame(f)
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
168 Checkbutton(statframe, variable=isattached,
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
169 text="Attached").grid(columnspan=2, sticky=W)
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
170 Label(statframe, text="Input", fg='red').grid(row=1, sticky=W)
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
171 Label(statframe, textvariable=lev, fg='red', width=5).grid(row=1, column=1)
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
172 Label(statframe, text="Real").grid(row=2, sticky=W)
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
173 l = Label(statframe, text="N/A", width=5)
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
174 l.grid(row=2, column=1)
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
175 self.reallevellabels.append(l)
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
176 statframe.pack(side=BOTTOM, expand=1, fill=X)
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
177 c.pack()
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
178 f.pack(side=LEFT)
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
179 subchoiceframe.pack()
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
180
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
181 presetframe = Frame(self)
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
182 Label(presetframe, text="Preset:").pack(side=LEFT)
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
183 self.presetcombo = ComboBox(presetframe, variable=self.current_mapping_name,
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
184 editable=1, command=self.apply_preset)
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
185 self.draw_presets()
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
186 self.presetcombo.pack(side=LEFT)
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
187 Button(presetframe, text="Add", padx=0, pady=0,
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
188 command=self.add_preset).pack(side=LEFT)
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
189 Button(presetframe, text="Delete", padx=0, pady=0,
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
190 command=self.delete_preset).pack(side=LEFT)
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
191 presetframe.pack(side=BOTTOM)
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
192 def apply_preset(self, preset):
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
193 if not preset: return
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
194 mapping = self.presets.get(preset)
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
195 if not mapping: return
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
196 for name, var, att in zip(mapping, self.current_mapping, self.attached):
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
197 var.set(name)
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
198 att.set(0) # detach all sliders
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
199 def delete_preset(self, *args):
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
200 del self.presets[self.current_mapping_name.get()]
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
201 self.presetcombo.slistbox.listbox.delete(0, END)
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
202 self.draw_presets()
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
203 self.save_presets()
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
204 def add_preset(self, *args):
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
205 self.presets[self.current_mapping_name.get()] = [m.get()
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
206 for m in self.current_mapping]
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
207 self.presetcombo.slistbox.listbox.delete(0, END)
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
208 self.draw_presets()
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
209 self.save_presets()
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
210 def draw_presets(self):
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
211 preset_names = self.presets.keys()
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
212 preset_names.sort()
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
213 for p in preset_names:
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
214 self.presetcombo.slistbox.listbox.insert(END, p)
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
215
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
216
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
217
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
218 class Subpanels:
69
ab0be21b549b result of 7.9.2002 rehearsal
dmcc
parents: 68
diff changeset
219 def __init__(self, scenesparent, effectsparent, scenes, lightboard,
53
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
220 scalelevels, Subs, xfader,
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
221 changelevel, subediting, longestname):
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
222
45b12307c695 Initial revision
drewp
parents:
diff changeset
223 sublist = Subs.subs.items()
45b12307c695 Initial revision
drewp
parents:
diff changeset
224 sublist.sort()
45b12307c695 Initial revision
drewp
parents:
diff changeset
225
69
ab0be21b549b result of 7.9.2002 rehearsal
dmcc
parents: 68
diff changeset
226 for p in scenesparent,effectsparent,scenes:
60
f177a2ff34f5 scrolled sub panels
drewp
parents: 53
diff changeset
227 sw = ScrolledWindow(p)
61
2508c6b7a4e0 scrolled sub panels which work
drewp
parents: 60
diff changeset
228 for but,units in ( (4,-4),(5,4) ):
2508c6b7a4e0 scrolled sub panels which work
drewp
parents: 60
diff changeset
229 sw.window.bind("<ButtonPress-%s>"%but,lambda ev,s=sw.vsb,u=units: s.tk.call('tkScrollByUnits',s,'hv',u))
2508c6b7a4e0 scrolled sub panels which work
drewp
parents: 60
diff changeset
230
60
f177a2ff34f5 scrolled sub panels
drewp
parents: 53
diff changeset
231 sw.pack(expand=1,fill=BOTH)
f177a2ff34f5 scrolled sub panels
drewp
parents: 53
diff changeset
232 if p==scenesparent:
f177a2ff34f5 scrolled sub panels
drewp
parents: 53
diff changeset
233 scenesparent = sw.window
69
ab0be21b549b result of 7.9.2002 rehearsal
dmcc
parents: 68
diff changeset
234 elif p==effectsparent:
ab0be21b549b result of 7.9.2002 rehearsal
dmcc
parents: 68
diff changeset
235 effectsparent = sw.window
60
f177a2ff34f5 scrolled sub panels
drewp
parents: 53
diff changeset
236 else:
69
ab0be21b549b result of 7.9.2002 rehearsal
dmcc
parents: 68
diff changeset
237 scenes=sw.window
60
f177a2ff34f5 scrolled sub panels
drewp
parents: 53
diff changeset
238
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
239 for name, sub in sublist:
30
e9d2e7754fd9 sideways subs, new x/y buttons (which don't draw right, but they work)
drewp
parents: 26
diff changeset
240 # choose one of the sub panels to add to
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
241 if sub.is_effect:
45b12307c695 Initial revision
drewp
parents:
diff changeset
242 parent=effectsparent
30
e9d2e7754fd9 sideways subs, new x/y buttons (which don't draw right, but they work)
drewp
parents: 26
diff changeset
243 side1='bottom'
48
2ef72bb3a707 finished the re-class of Console so it can make new subs again
drewp
parents: 43
diff changeset
244 side2='left'
38
0ce56c4dd355 small ui enhancements
drewp
parents: 34
diff changeset
245 orient1='vert'
32
925382e7cdc8 fixed small bug with orientable
drewp
parents: 30
diff changeset
246 end1=0
925382e7cdc8 fixed small bug with orientable
drewp
parents: 30
diff changeset
247 end2=1
38
0ce56c4dd355 small ui enhancements
drewp
parents: 34
diff changeset
248 width1=len(name)
69
ab0be21b549b result of 7.9.2002 rehearsal
dmcc
parents: 68
diff changeset
249 elif name.startswith("*") and name[1].isdigit():
ab0be21b549b result of 7.9.2002 rehearsal
dmcc
parents: 68
diff changeset
250 parent=scenes
ab0be21b549b result of 7.9.2002 rehearsal
dmcc
parents: 68
diff changeset
251 side1='right'
ab0be21b549b result of 7.9.2002 rehearsal
dmcc
parents: 68
diff changeset
252 side2='top'
ab0be21b549b result of 7.9.2002 rehearsal
dmcc
parents: 68
diff changeset
253 orient1='horiz'
ab0be21b549b result of 7.9.2002 rehearsal
dmcc
parents: 68
diff changeset
254 end1=1
ab0be21b549b result of 7.9.2002 rehearsal
dmcc
parents: 68
diff changeset
255 end2=0
ab0be21b549b result of 7.9.2002 rehearsal
dmcc
parents: 68
diff changeset
256 width1=longestname
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
257 else:
45b12307c695 Initial revision
drewp
parents:
diff changeset
258 parent=scenesparent
30
e9d2e7754fd9 sideways subs, new x/y buttons (which don't draw right, but they work)
drewp
parents: 26
diff changeset
259 side1='right'
48
2ef72bb3a707 finished the re-class of Console so it can make new subs again
drewp
parents: 43
diff changeset
260 side2='top'
38
0ce56c4dd355 small ui enhancements
drewp
parents: 34
diff changeset
261 orient1='horiz'
32
925382e7cdc8 fixed small bug with orientable
drewp
parents: 30
diff changeset
262 end1=1
925382e7cdc8 fixed small bug with orientable
drewp
parents: 30
diff changeset
263 end2=0
38
0ce56c4dd355 small ui enhancements
drewp
parents: 34
diff changeset
264 width1=longestname
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
265
30
e9d2e7754fd9 sideways subs, new x/y buttons (which don't draw right, but they work)
drewp
parents: 26
diff changeset
266 # make frame that surrounds the whole submaster
12
7adc65771676 big restructuring - moved lots of things (including most panels) to other files
drewp
parents: 0
diff changeset
267 f=Frame(parent, bd=1, relief='raised')
48
2ef72bb3a707 finished the re-class of Console so it can make new subs again
drewp
parents: 43
diff changeset
268 f.pack(fill='both',exp=1,side=side2)
60
f177a2ff34f5 scrolled sub panels
drewp
parents: 53
diff changeset
269
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
270
53
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
271 # make DoubleVar (there might be one left around from
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
272 # before a refresh)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
273 if name not in scalelevels:
45b12307c695 Initial revision
drewp
parents:
diff changeset
274 scalelevels[name]=DoubleVar()
45b12307c695 Initial revision
drewp
parents:
diff changeset
275
45b12307c695 Initial revision
drewp
parents:
diff changeset
276 sub.set_slider_var(scalelevels[name])
45b12307c695 Initial revision
drewp
parents:
diff changeset
277
53
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
278 scaleopts = {'troughcolor' : 'grey70'}
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
279 if sub.color:
45b12307c695 Initial revision
drewp
parents:
diff changeset
280 scaleopts['troughcolor'] = sub.color
19
6284a812da50 makefile - add link to ../Widgets/FlyingFader.py
dmcc
parents: 16
diff changeset
281
6284a812da50 makefile - add link to ../Widgets/FlyingFader.py
dmcc
parents: 16
diff changeset
282 s = FlyingFader(f, label=str(name), variable=scalelevels[name],
60
f177a2ff34f5 scrolled sub panels
drewp
parents: 53
diff changeset
283 showvalue=0, length=100,
53
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
284 width=14, sliderlength=14,
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
285 to=end1,res=.001,from_=end2,bd=1, font=stdfont,
38
0ce56c4dd355 small ui enhancements
drewp
parents: 34
diff changeset
286 orient=orient1,
0ce56c4dd355 small ui enhancements
drewp
parents: 34
diff changeset
287 labelwidth=width1,
30
e9d2e7754fd9 sideways subs, new x/y buttons (which don't draw right, but they work)
drewp
parents: 26
diff changeset
288 **scaleopts)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
289
60
f177a2ff34f5 scrolled sub panels
drewp
parents: 53
diff changeset
290 # tell subediting what widgets to highlight when it's
53
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
291 # editing a sub
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
292 for w in (s,s.label,s.vlabel, s.scale):
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
293 subediting.register(subname=name,widget=w)
38
0ce56c4dd355 small ui enhancements
drewp
parents: 34
diff changeset
294
53
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
295 if not sub.is_effect:
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
296 self.subeditingbuttons(f,side1,sub,name,lightboard,subediting)
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
297
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
298 self.axisbuttons(f,s,xfader,stdfont,side1,name)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
299
60
f177a2ff34f5 scrolled sub panels
drewp
parents: 53
diff changeset
300 s.pack(side='left', fill=BOTH, expand=1)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
301
45b12307c695 Initial revision
drewp
parents:
diff changeset
302 # effects frame?
45b12307c695 Initial revision
drewp
parents:
diff changeset
303 sframe = Frame(f,bd=2,relief='groove')
45b12307c695 Initial revision
drewp
parents:
diff changeset
304 sub.draw_tk(sframe)
45b12307c695 Initial revision
drewp
parents:
diff changeset
305 sframe.pack(side='left',fill='y')
53
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
306
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
307 def subediting_edit(self,subediting,sub):
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
308 subediting.setsub(sub)
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
309
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
310 def subediting_save(self,name,sub,lightboard):
68
57b3c454465a result of 7.8.2002 run-through
dmcc
parents: 67
diff changeset
311 lightboard.save_sub(name,sub.getlevels(),refresh=0)
53
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
312
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
313 def subeditingbuttons(self,f,side1,sub,name,lightboard,subediting):
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
314 for txt,cmd in (("Edit",lambda subediting=subediting,sub=sub: self.subediting_edit(subediting,sub)),
66
8b6befd8b97e new 'save stage' button which saves a new copy of the sub with whatever's visible on the stage (!)
drewp
parents: 61
diff changeset
315 ("Save",lambda sub=sub,name=name,lightboard=lightboard: self.subediting_save(name,sub,lightboard)),
68
57b3c454465a result of 7.8.2002 run-through
dmcc
parents: 67
diff changeset
316 ("SaveStg",lambda l=lightboard,name=name: l.save_sub(name,l.stageassub(),refresh=1)),
66
8b6befd8b97e new 'save stage' button which saves a new copy of the sub with whatever's visible on the stage (!)
drewp
parents: 61
diff changeset
317 ):
53
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
318 eb = Button(f,text=txt,font=stdfont,padx=0,pady=0,
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
319 bd=1,command=cmd)
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
320 eb.pack(side=side1,fill='both',padx=0,pady=0)
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
321
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
322 def axisbuttons(self,f,s,xfader,stdfont,side1,name):
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
323 for axis in ('y','x'):
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
324 cvar=IntVar()
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
325 eb_color = ('red', 'green')[axis == 'y']
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
326 cb=Togglebutton(f,text=axis.upper(),variable=cvar,font=stdfont,
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
327 padx=3, pady=0, bd=1, downcolor=eb_color)
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
328 cb.pack(side=side1,fill='both', padx=0, pady=0)
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
329 s.bind('<Key-%s>'%axis, lambda ev,cb=cb: cb.invoke)
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
330 xfader.registerbutton(name,axis,cvar)
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
331
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
332
78
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
333 if __name__ == '__main__':
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
334 print "testing external sliders"
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
335 root = Tk()
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
336 fakesliderlevels = dict([('sub%d' % n, DoubleVar()) for n in range(12)])
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
337 esm = ExtSliderMapper(root, fakesliderlevels, None)
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
338 esm.pack()
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
339
0969d8a6729d support for external sliders. fill in ExternalInput with real IO
dmcc
parents: 74
diff changeset
340 mainloop()