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)