Mercurial > code > home > repos > light9
comparison flax/CueFaders.py @ 176:c8d24bd2a99e
CueFaders: autoload/shifting bug fixed
CueFaders: autoload/shifting bug fixed
mute button added
cuenum attribute added
cursor is visible in CueEditron
Subcomposer: not a dummy! use DMXDUMMY=1 if you want to do dummy
cues/dolly: changes from 7.8.2003 rehearsal
author | dmcc |
---|---|
date | Thu, 10 Jul 2003 02:57:12 +0000 |
parents | ba83a312d8b1 |
children | e9c06be9b26b |
comparison
equal
deleted
inserted
replaced
175:365e924adaee | 176:c8d24bd2a99e |
---|---|
9 # bg fg | 9 # bg fg |
10 'prev' : ('blue', 'white'), | 10 'prev' : ('blue', 'white'), |
11 'cur' : ('yellow', 'black'), | 11 'cur' : ('yellow', 'black'), |
12 'next' : ('red', 'white'), | 12 'next' : ('red', 'white'), |
13 } | 13 } |
14 | |
15 # TODO pause fades, set new time to be remaining about of time in the fade so fade | |
16 # can continue properly | |
17 # make fades work properly: the set_next / prev bug | |
18 # find cue by page ("not necessawy!") | |
19 # CueFader controls KeyboardController? unlikely | |
14 | 20 |
15 class LabelledScale(Tk.Frame): | 21 class LabelledScale(Tk.Frame): |
16 """Scale with two labels: a name and current value""" | 22 """Scale with two labels: a name and current value""" |
17 def __init__(self, master, label, **opts): | 23 def __init__(self, master, label, **opts): |
18 Tk.Frame.__init__(self, master, bd=2, relief='raised', bg='black') | 24 Tk.Frame.__init__(self, master, bd=2, relief='raised', bg='black') |
176 self.auto_load_times = Tk.IntVar() | 182 self.auto_load_times = Tk.IntVar() |
177 self.auto_load_times.set(1) | 183 self.auto_load_times.set(1) |
178 | 184 |
179 self.auto_load_times_checkbutton = Tk.Checkbutton(topframe, | 185 self.auto_load_times_checkbutton = Tk.Checkbutton(topframe, |
180 variable=self.auto_load_times, text='Autoload Times', | 186 variable=self.auto_load_times, text='Autoload Times', |
181 command=self.toggle_autoshift, bg='black', fg='white', | 187 bg='black', fg='white', |
182 highlightbackground='black') | 188 highlightbackground='black') |
183 self.auto_load_times_checkbutton.pack(fill='both', side='left') | 189 self.auto_load_times_checkbutton.pack(fill='both', side='left') |
190 | |
191 self.mute = Tk.IntVar() | |
192 self.mute.set(0) | |
193 | |
194 self.mutebutton = Tk.Checkbutton(topframe, | |
195 variable=self.mute, text='Mute', | |
196 bg='black', fg='white', | |
197 highlightbackground='black', | |
198 command=self.send_dmx_levels) | |
199 self.mutebutton.pack(fill='both', side='left') | |
184 | 200 |
185 self.set_next_button = Tk.Button(topframe, text='Set Next', | 201 self.set_next_button = Tk.Button(topframe, text='Set Next', |
186 command=lambda: cuelist.set_selection_as_next(), | 202 command=lambda: cuelist.set_selection_as_next(), |
187 fg='white', bg='red') | 203 fg='white', bg='red') |
188 self.set_next_button.pack(side='left') | 204 self.set_next_button.pack(side='left') |
253 | 269 |
254 other_sub = self.cues_as_subs[self.current_dir] | 270 other_sub = self.cues_as_subs[self.current_dir] |
255 current_levels_as_sub = cur_sub.crossfade(other_sub, scale_val) | 271 current_levels_as_sub = cur_sub.crossfade(other_sub, scale_val) |
256 self.current_dmx_levels = current_levels_as_sub.get_dmx_list() | 272 self.current_dmx_levels = current_levels_as_sub.get_dmx_list() |
257 self.send_dmx_levels() | 273 self.send_dmx_levels() |
258 def send_dmx_levels(self): | 274 def send_dmx_levels(self, *args): |
259 # print "send_dmx_levels", self.current_dmx_levels | 275 # print "send_dmx_levels", self.current_dmx_levels |
260 dmxclient.outputlevels(self.current_dmx_levels) | 276 if self.mute.get(): |
277 dmxclient.outputlevels([0] * 68) | |
278 else: | |
279 dmxclient.outputlevels(self.current_dmx_levels) | |
261 self.last_levels_sent = time.time() | 280 self.last_levels_sent = time.time() |
262 def send_dmx_levels_loop(self): | 281 def send_dmx_levels_loop(self): |
263 diff = time.time() - self.last_levels_sent | 282 diff = time.time() - self.last_levels_sent |
264 if diff >= 2: # too long since last send | 283 if diff >= 2: # too long since last send |
265 self.send_dmx_levels() | 284 self.send_dmx_levels() |
451 | 470 |
452 def edit_cue(index): | 471 def edit_cue(index): |
453 index = int(index) | 472 index = int(index) |
454 self.editor.set_cue_to_edit(self.cues[index]) | 473 self.editor.set_cue_to_edit(self.cues[index]) |
455 | 474 |
456 self.columns = ('name', 'time', 'page', 'desc') | 475 self.columns = ('name', 'time', 'page', 'cuenum', 'desc') |
457 self.scrolled_hlist = Tk.ScrolledHList(self, | 476 self.scrolled_hlist = Tk.ScrolledHList(self, |
458 options='hlist.columns %d hlist.header 1' % len(self.columns)) | 477 options='hlist.columns %d hlist.header 1' % len(self.columns)) |
459 self.hlist = self.scrolled_hlist.hlist | 478 self.hlist = self.scrolled_hlist.hlist |
460 self.hlist.configure(fg='white', bg='black', | 479 self.hlist.configure(fg='white', bg='black', |
461 command=self.select_callback, browsecmd=edit_cue) | 480 command=self.select_callback, browsecmd=edit_cue) |
589 self.master.title("Editing '%s'" % self.cue.name) | 608 self.master.title("Editing '%s'" % self.cue.name) |
590 except AttributeError: | 609 except AttributeError: |
591 pass | 610 pass |
592 def setup_editing_forms(self): | 611 def setup_editing_forms(self): |
593 self.variables = {} | 612 self.variables = {} |
594 for row, field in enumerate(('name', 'time', 'page', 'desc', | 613 for row, field in enumerate(('name', 'time', 'page', 'cuenum', 'desc', |
595 'sub_levels')): | 614 'sub_levels')): |
596 lab = Tk.Label(self, text=field, fg='white', bg='black') | 615 lab = Tk.Label(self, text=field, fg='white', bg='black') |
597 lab.grid(row=row, column=0, sticky='nsew') | 616 lab.grid(row=row, column=0, sticky='nsew') |
598 | 617 |
599 entryvar = Tk.StringVar() | 618 entryvar = Tk.StringVar() |
600 entry = Tk.Entry(self, fg='white', bg='black', | 619 entry = Tk.Entry(self, fg='white', bg='black', |
601 textvariable=entryvar) | 620 textvariable=entryvar, insertbackground='white', |
621 highlightbackground='red') # TODO this red/black is backwards | |
602 entry.grid(row=row, column=1, sticky='nsew') | 622 entry.grid(row=row, column=1, sticky='nsew') |
603 | 623 |
604 self.variables[field] = entryvar | 624 self.variables[field] = entryvar |
605 | 625 |
606 def field_changed(x, y, z, field=field, entryvar=entryvar): | 626 def field_changed(x, y, z, field=field, entryvar=entryvar): |
613 | 633 |
614 entryvar.trace('w', field_changed) | 634 entryvar.trace('w', field_changed) |
615 self.columnconfigure(1, weight=1) | 635 self.columnconfigure(1, weight=1) |
616 def fill_in_cue_info(self): | 636 def fill_in_cue_info(self): |
617 self.enable_callbacks = 0 | 637 self.enable_callbacks = 0 |
618 for row, field in enumerate(('name', 'time', 'page', 'desc', | 638 for row, field in enumerate(('name', 'time', 'page', 'cuenum', 'desc', |
619 'sub_levels')): | 639 'sub_levels')): |
620 text = '' | 640 text = '' |
621 if self.cue: | 641 if self.cue: |
622 try: | 642 try: |
623 text = getattr(self.cue, field) | 643 text = getattr(self.cue, field) |