Mercurial > code > home > repos > light9
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 |
rev | line source |
---|---|
0 | 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 | 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 | 5 from uihelpers import * |
6 import Patch | |
19 | 7 from FlyingFader import FlyingFader |
0 | 8 |
9 stdfont = ('Arial', 8) | |
10 monofont = ('Courier', 8) | |
11 | |
12 class Controlpanel(Frame): | |
74 | 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 | 15 controlpanel = self |
0 | 16 for txt,cmd in ( |
17 ('Quit', quit_cb), | |
18 ('Refresh', refresh_cb), | |
19 ('Clear all', xfader.clearallbuttons), | |
20 ('On -> X', lambda: xfader.grab('x')), | |
21 ('Clear X', lambda: xfader.clearallbuttons('x')), | |
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 | 24 Button(controlpanel, text=txt, command=cmd).pack(side='top', |
25 fill='x') | |
78
0969d8a6729d
support for external sliders. fill in ExternalInput with real IO
dmcc
parents:
74
diff
changeset
|
26 # jostle button |
74 | 27 Checkbutton(controlpanel, text="Jostle", |
28 command=jostle_cb).pack(side=TOP, fill=X) | |
0 | 29 |
30 class Console: | |
53 | 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 | 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 | 39 self.frame.pack(fill=BOTH, expand=1) |
53 | 40 self.lightboard=lightboard |
0 | 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 | 43 if str[0] == '*': # make a new sub from the current levels |
44 self.lightboard.save_sub(str,self.lightboard.stageassub()) | |
0 | 45 else: |
46 print '>>>', str | |
47 print eval(str) | |
53 | 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 | 50 class Leveldisplay: |
26 | 51 def __init__(self, parent, channel_levels, num_channels=68): |
0 | 52 frames = (make_frame(parent), make_frame(parent)) |
16 | 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 | 55 for channel in range(1, num_channels+1): |
56 | |
57 # frame for this channel | |
58 f = Frame(frames[channel > (num_channels/2)]) | |
59 # channel number -- will turn yellow when being altered | |
60 num_lab = Label(f, text=str(channel), width=3, bg='lightPink', | |
61 font=stdfont, padx=0, pady=0, bd=0, height=1) | |
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 | 64 |
65 # text description of channel | |
66 Label(f, text=Patch.get_channel_name(channel), width=8, | |
67 font=stdfont, anchor='w', padx=0, pady=0, bd=0, | |
68 height=1).pack(side='left') | |
69 | |
70 # current level of channel, shows intensity with color | |
71 l = Label(f, width=3, bg='lightBlue', font=stdfont, anchor='e', | |
72 padx=1, pady=0, bd=0, height=1) | |
0 | 73 l.pack(side='left') |
74 colorlabel(l) | |
75 channel_levels.append(l) | |
76 f.pack(side='top') | |
26 | 77 |
78 self.channel_levels = channel_levels | |
79 # channel_levels is an output - changelevel will use it to access | |
80 # these labels | |
0 | 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 | 218 class Subpanels: |
69 | 219 def __init__(self, scenesparent, effectsparent, scenes, lightboard, |
53 | 220 scalelevels, Subs, xfader, |
221 changelevel, subediting, longestname): | |
0 | 222 |
223 sublist = Subs.subs.items() | |
224 sublist.sort() | |
225 | |
69 | 226 for p in scenesparent,effectsparent,scenes: |
60 | 227 sw = ScrolledWindow(p) |
61 | 228 for but,units in ( (4,-4),(5,4) ): |
229 sw.window.bind("<ButtonPress-%s>"%but,lambda ev,s=sw.vsb,u=units: s.tk.call('tkScrollByUnits',s,'hv',u)) | |
230 | |
60 | 231 sw.pack(expand=1,fill=BOTH) |
232 if p==scenesparent: | |
233 scenesparent = sw.window | |
69 | 234 elif p==effectsparent: |
235 effectsparent = sw.window | |
60 | 236 else: |
69 | 237 scenes=sw.window |
60 | 238 |
0 | 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 | 241 if sub.is_effect: |
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 | 245 orient1='vert' |
32 | 246 end1=0 |
247 end2=1 | |
38 | 248 width1=len(name) |
69 | 249 elif name.startswith("*") and name[1].isdigit(): |
250 parent=scenes | |
251 side1='right' | |
252 side2='top' | |
253 orient1='horiz' | |
254 end1=1 | |
255 end2=0 | |
256 width1=longestname | |
0 | 257 else: |
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 | 261 orient1='horiz' |
32 | 262 end1=1 |
263 end2=0 | |
38 | 264 width1=longestname |
0 | 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 | 269 |
0 | 270 |
53 | 271 # make DoubleVar (there might be one left around from |
272 # before a refresh) | |
0 | 273 if name not in scalelevels: |
274 scalelevels[name]=DoubleVar() | |
275 | |
276 sub.set_slider_var(scalelevels[name]) | |
277 | |
53 | 278 scaleopts = {'troughcolor' : 'grey70'} |
0 | 279 if sub.color: |
280 scaleopts['troughcolor'] = sub.color | |
19 | 281 |
282 s = FlyingFader(f, label=str(name), variable=scalelevels[name], | |
60 | 283 showvalue=0, length=100, |
53 | 284 width=14, sliderlength=14, |
285 to=end1,res=.001,from_=end2,bd=1, font=stdfont, | |
38 | 286 orient=orient1, |
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 | 289 |
60 | 290 # tell subediting what widgets to highlight when it's |
53 | 291 # editing a sub |
292 for w in (s,s.label,s.vlabel, s.scale): | |
293 subediting.register(subname=name,widget=w) | |
38 | 294 |
53 | 295 if not sub.is_effect: |
296 self.subeditingbuttons(f,side1,sub,name,lightboard,subediting) | |
297 | |
298 self.axisbuttons(f,s,xfader,stdfont,side1,name) | |
0 | 299 |
60 | 300 s.pack(side='left', fill=BOTH, expand=1) |
0 | 301 |
302 # effects frame? | |
303 sframe = Frame(f,bd=2,relief='groove') | |
304 sub.draw_tk(sframe) | |
305 sframe.pack(side='left',fill='y') | |
53 | 306 |
307 def subediting_edit(self,subediting,sub): | |
308 subediting.setsub(sub) | |
309 | |
310 def subediting_save(self,name,sub,lightboard): | |
68 | 311 lightboard.save_sub(name,sub.getlevels(),refresh=0) |
53 | 312 |
313 def subeditingbuttons(self,f,side1,sub,name,lightboard,subediting): | |
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 | 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 | 318 eb = Button(f,text=txt,font=stdfont,padx=0,pady=0, |
319 bd=1,command=cmd) | |
320 eb.pack(side=side1,fill='both',padx=0,pady=0) | |
321 | |
322 def axisbuttons(self,f,s,xfader,stdfont,side1,name): | |
323 for axis in ('y','x'): | |
324 cvar=IntVar() | |
325 eb_color = ('red', 'green')[axis == 'y'] | |
326 cb=Togglebutton(f,text=axis.upper(),variable=cvar,font=stdfont, | |
327 padx=3, pady=0, bd=1, downcolor=eb_color) | |
328 cb.pack(side=side1,fill='both', padx=0, pady=0) | |
329 s.bind('<Key-%s>'%axis, lambda ev,cb=cb: cb.invoke) | |
330 xfader.registerbutton(name,axis,cvar) | |
331 | |
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() |