comparison flax/CueFaders.py @ 155:4c3060ceddcc

autoshifting is controllable now
author dmcc
date Mon, 07 Jul 2003 06:56:15 +0000
parents 990a9474d0e7
children 7d3a0f9107a8
comparison
equal deleted inserted replaced
154:e3a92ccea4be 155:4c3060ceddcc
64 64
65 class CueFader(Tk.Frame): 65 class CueFader(Tk.Frame):
66 def __init__(self, master, cuelist): 66 def __init__(self, master, cuelist):
67 Tk.Frame.__init__(self, master) 67 Tk.Frame.__init__(self, master)
68 self.cuelist = cuelist 68 self.cuelist = cuelist
69 self.auto_shift = 0 69 self.auto_shift = Tk.IntVar()
70 self.auto_shift.set(1)
70 71
71 self.scales = {} 72 self.scales = {}
72 self.shift_buttons = {} 73 self.shift_buttons = {}
73 74
74 topframe = Tk.Frame(self) 75 topframe = Tk.Frame(self)
75 self.current_cues = Tk.Label(topframe) 76 self.current_cues = Tk.Label(topframe)
76 self.current_cues.pack() 77 self.current_cues.pack()
77 self.update_cue_display() 78 self.update_cue_display()
78 topframe.pack() 79 topframe.pack()
79 80
81 bottomframe = Tk.Frame(self)
82 self.auto_shift_checkbutton = Tk.Checkbutton(self,
83 variable=self.auto_shift, text='Autoshift',
84 command=self.toggle_autoshift)
85 self.auto_shift_checkbutton.pack()
86 bottomframe.pack(side='bottom')
87
88 middleframe = Tk.Frame(self)
80 for name, start, end, side in (('Prev', 1, 0, 'left'), 89 for name, start, end, side in (('Prev', 1, 0, 'left'),
81 ('Next', 0, 1, 'right')): 90 ('Next', 0, 1, 'right')):
82
83 shift = Tk.Button(self, text="Shift %s" % name, state='disabled',
84 command=lambda name=name: self.shift(name))
85 shift.pack(side=side, fill='both', expand=1)
86
87 frame = Tk.Frame(self) 91 frame = Tk.Frame(self)
88 scale = LabelledScale(frame, name, from_=start, to_=end, 92 scale = LabelledScale(frame, name, from_=start, to_=end,
89 res=0.01, orient='horiz') 93 res=0.01, orient='horiz')
90 scale.pack(fill='both', expand=1) 94 scale.pack(fill='both', expand=1)
91 go = TimedGoButton(frame, 'Go %s' % name, scale) 95 go = TimedGoButton(frame, 'Go %s' % name, scale)
92 go.pack(fill='both', expand=1) 96 go.pack(fill='both', expand=1)
93 frame.pack(side=side, fill='both', expand=1) 97 frame.pack(side=side, fill='both', expand=1)
94 98
99 shift = Tk.Button(frame, text="Shift %s" % name, state='disabled',
100 command=lambda name=name: self.shift(name))
101
95 self.scales[name] = scale 102 self.scales[name] = scale
96 self.shift_buttons[name] = shift 103 self.shift_buttons[name] = shift
97 104
98 scale.scale_var.trace('w', \ 105 scale.scale_var.trace('w', \
99 lambda x, y, z, name=name, scale=scale: self.xfade(name, scale)) 106 lambda x, y, z, name=name, scale=scale: self.xfade(name, scale))
107 middleframe.pack(side='bottom', fill='both', expand=1)
108 def toggle_autoshift(self):
109 for name, button in self.shift_buttons.items():
110 if not self.auto_shift.get():
111 button.pack(side='bottom', fill='both', expand=1)
112 else:
113 button.pack_forget()
114
100 def shift(self, name): 115 def shift(self, name):
101 for scale in self.scales.values(): 116 for scale in self.scales.values():
102 scale.scale_var.set(0) 117 scale.scale_var.set(0)
103 if name == 'Next': scale.update() 118 scale.scale.update()
104 print "shift", name 119 print "shift", name
105 self.cuelist.shift((-1, 1)[name == 'Next']) 120 self.cuelist.shift((-1, 1)[name == 'Next'])
106 self.update_cue_display() 121 self.update_cue_display()
107 def update_cue_display(self): 122 def update_cue_display(self):
108 current_cues = [cue.name for cue in self.cuelist.get_current_cues()] 123 current_cues = [cue.name for cue in self.cuelist.get_current_cues()]
109 self.current_cues['text'] = ', '.join(current_cues) 124 self.current_cues['text'] = ', '.join(current_cues)
110 def xfade(self, name, scale): 125 def xfade(self, name, scale):
111 scale_val = scale.scale_var.get() 126 scale_val = scale.scale_var.get()
112 127
113 if scale_val == 1: 128 if scale_val == 1:
114 if self.auto_shift: 129 if self.auto_shift.get():
115 self.shift(name) 130 self.shift(name)
116 else: 131 else:
117 self.shift_buttons[name]['state'] = 'normal' 132 self.shift_buttons[name]['state'] = 'normal'
118 else: 133 else:
119 # disable any dangerous shifting 134 # disable any dangerous shifting