annotate flax/CueFaders.py @ 154:e3a92ccea4be

add cuisine path
author dmcc
date Mon, 07 Jul 2003 06:32:25 +0000
parents 990a9474d0e7
children 4c3060ceddcc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
1 from __future__ import division, nested_scopes
45b12307c695 Initial revision
drewp
parents:
diff changeset
2 import Tix as Tk
45b12307c695 Initial revision
drewp
parents:
diff changeset
3 import time
45b12307c695 Initial revision
drewp
parents:
diff changeset
4 from TreeDict import TreeDict, allow_class_to_be_pickled
45b12307c695 Initial revision
drewp
parents:
diff changeset
5
45b12307c695 Initial revision
drewp
parents:
diff changeset
6 class LabelledScale(Tk.Frame):
45b12307c695 Initial revision
drewp
parents:
diff changeset
7 """Scale with two labels: a name and current value"""
45b12307c695 Initial revision
drewp
parents:
diff changeset
8 def __init__(self, master, label, **opts):
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
9 Tk.Frame.__init__(self, master, bd=2, relief='raised')
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
10 opts.setdefault('variable', Tk.DoubleVar())
45b12307c695 Initial revision
drewp
parents:
diff changeset
11 opts.setdefault('showvalue', 0)
45b12307c695 Initial revision
drewp
parents:
diff changeset
12 self.scale_var = opts['variable']
45b12307c695 Initial revision
drewp
parents:
diff changeset
13 self.scale = Tk.Scale(self, **opts)
45b12307c695 Initial revision
drewp
parents:
diff changeset
14 self.scale.pack(side='top', expand=1, fill='both')
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
15 self.name = Tk.Label(self, text=label)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
16 self.name.pack(side='bottom')
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
17 self.scale_value = Tk.Label(self, width=6)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
18 self.scale_value.pack(side='bottom')
45b12307c695 Initial revision
drewp
parents:
diff changeset
19 self.scale_var.trace('w', self.update_value_label)
45b12307c695 Initial revision
drewp
parents:
diff changeset
20 self.update_value_label()
45b12307c695 Initial revision
drewp
parents:
diff changeset
21 def set_label(self, label):
45b12307c695 Initial revision
drewp
parents:
diff changeset
22 self.name['text'] = label
45b12307c695 Initial revision
drewp
parents:
diff changeset
23 def update_value_label(self, *args):
45b12307c695 Initial revision
drewp
parents:
diff changeset
24 val = self.scale_var.get() * 100
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
25 self.scale_value['text'] = "%0.2f" % val
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
26
45b12307c695 Initial revision
drewp
parents:
diff changeset
27 class TimedGoButton(Tk.Frame):
45b12307c695 Initial revision
drewp
parents:
diff changeset
28 """Go button, fade time entry, and time fader"""
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
29 def __init__(self, master, name, scale_to_fade):
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
30 Tk.Frame.__init__(self, master)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
31 self.name = name
45b12307c695 Initial revision
drewp
parents:
diff changeset
32 self.scale_to_fade = scale_to_fade
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
33 self.button = Tk.Button(self, text=name, command=self.start_fade)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
34 self.button.pack(fill='both', expand=1, side='left')
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
35 self.timer_var = Tk.StringVar()
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
36 self.timer_entry = Tk.Entry(self, textvariable=self.timer_var, width=5)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
37 self.timer_entry.pack(fill='y', side='left')
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
38 self.timer_var.set("2")
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
39 def start_fade(self, end_level=1):
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
40 try:
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
41 fade_time = float(self.timer_var.get())
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
42 except ValueError:
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
43 # TODO figure out how to handle this
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
44 print "can't fade -- bad time"
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
45 return
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
46
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
47 self.start_time = time.time()
45b12307c695 Initial revision
drewp
parents:
diff changeset
48 self.start_level = self.scale_to_fade.scale_var.get()
45b12307c695 Initial revision
drewp
parents:
diff changeset
49 self.end_level = end_level
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
50 self.fade_length = fade_time
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
51 self.do_fade()
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
52 def do_fade(self):
45b12307c695 Initial revision
drewp
parents:
diff changeset
53 diff = time.time() - self.start_time
45b12307c695 Initial revision
drewp
parents:
diff changeset
54 if diff < self.fade_length:
45b12307c695 Initial revision
drewp
parents:
diff changeset
55 percent = diff / self.fade_length
45b12307c695 Initial revision
drewp
parents:
diff changeset
56 newlevel = self.start_level + \
45b12307c695 Initial revision
drewp
parents:
diff changeset
57 (percent * (self.end_level - self.start_level))
45b12307c695 Initial revision
drewp
parents:
diff changeset
58 self.scale_to_fade.scale_var.set(newlevel)
45b12307c695 Initial revision
drewp
parents:
diff changeset
59
45b12307c695 Initial revision
drewp
parents:
diff changeset
60 if newlevel != self.end_level:
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
61 self.after(10, self.do_fade)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
62 else:
45b12307c695 Initial revision
drewp
parents:
diff changeset
63 self.scale_to_fade.scale_var.set(self.end_level)
45b12307c695 Initial revision
drewp
parents:
diff changeset
64
45b12307c695 Initial revision
drewp
parents:
diff changeset
65 class CueFader(Tk.Frame):
45b12307c695 Initial revision
drewp
parents:
diff changeset
66 def __init__(self, master, cuelist):
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
67 Tk.Frame.__init__(self, master)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
68 self.cuelist = cuelist
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
69 self.auto_shift = 0
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
70
45b12307c695 Initial revision
drewp
parents:
diff changeset
71 self.scales = {}
45b12307c695 Initial revision
drewp
parents:
diff changeset
72 self.shift_buttons = {}
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
73
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
74 topframe = Tk.Frame(self)
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
75 self.current_cues = Tk.Label(topframe)
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
76 self.current_cues.pack()
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
77 self.update_cue_display()
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
78 topframe.pack()
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
79
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
80 for name, start, end, side in (('Prev', 1, 0, 'left'),
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
81 ('Next', 0, 1, 'right')):
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
82
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
83 shift = Tk.Button(self, text="Shift %s" % name, state='disabled',
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
84 command=lambda name=name: self.shift(name))
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
85 shift.pack(side=side, fill='both', expand=1)
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
86
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
87 frame = Tk.Frame(self)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
88 scale = LabelledScale(frame, name, from_=start, to_=end,
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
89 res=0.01, orient='horiz')
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
90 scale.pack(fill='both', expand=1)
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
91 go = TimedGoButton(frame, 'Go %s' % name, scale)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
92 go.pack(fill='both', expand=1)
45b12307c695 Initial revision
drewp
parents:
diff changeset
93 frame.pack(side=side, fill='both', expand=1)
45b12307c695 Initial revision
drewp
parents:
diff changeset
94
45b12307c695 Initial revision
drewp
parents:
diff changeset
95 self.scales[name] = scale
45b12307c695 Initial revision
drewp
parents:
diff changeset
96 self.shift_buttons[name] = shift
45b12307c695 Initial revision
drewp
parents:
diff changeset
97
45b12307c695 Initial revision
drewp
parents:
diff changeset
98 scale.scale_var.trace('w', \
45b12307c695 Initial revision
drewp
parents:
diff changeset
99 lambda x, y, z, name=name, scale=scale: self.xfade(name, scale))
45b12307c695 Initial revision
drewp
parents:
diff changeset
100 def shift(self, name):
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
101 for scale in self.scales.values():
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
102 scale.scale_var.set(0)
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
103 if name == 'Next': scale.update()
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
104 print "shift", name
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
105 self.cuelist.shift((-1, 1)[name == 'Next'])
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
106 self.update_cue_display()
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
107 def update_cue_display(self):
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
108 current_cues = [cue.name for cue in self.cuelist.get_current_cues()]
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
109 self.current_cues['text'] = ', '.join(current_cues)
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
110 def xfade(self, name, scale):
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
111 scale_val = scale.scale_var.get()
45b12307c695 Initial revision
drewp
parents:
diff changeset
112
45b12307c695 Initial revision
drewp
parents:
diff changeset
113 if scale_val == 1:
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
114 if self.auto_shift:
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
115 self.shift(name)
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
116 else:
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
117 self.shift_buttons[name]['state'] = 'normal'
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
118 else:
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
119 # disable any dangerous shifting
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
120 self.shift_buttons[name]['state'] = 'disabled'
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
121
45b12307c695 Initial revision
drewp
parents:
diff changeset
122 if scale_val != 0:
45b12307c695 Initial revision
drewp
parents:
diff changeset
123 # disable illegal three part crossfades
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
124 # TODO:
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
125 # if name == 'Next':
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
126 # disable go_prev button and slider, lock slider at 0
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
127 pass
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
128 else:
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
129 # undo above changes
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
130
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
131 # Actually, TimedGoButton and LabelledScale can have enable/disable
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
132 # methods which will only do the Tk calls if necessary
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
133 pass
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
134
45b12307c695 Initial revision
drewp
parents:
diff changeset
135 class Cue:
45b12307c695 Initial revision
drewp
parents:
diff changeset
136 """A Cue has a name, a time, and any number of other attributes."""
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
137 def __init__(self, name, time=3, **attrs):
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
138 self.name = name
45b12307c695 Initial revision
drewp
parents:
diff changeset
139 self.time = time
45b12307c695 Initial revision
drewp
parents:
diff changeset
140 self.__dict__.update(attrs)
45b12307c695 Initial revision
drewp
parents:
diff changeset
141 def __repr__(self):
45b12307c695 Initial revision
drewp
parents:
diff changeset
142 return "<Cue %s, length %s>" % (self.name, self.time)
45b12307c695 Initial revision
drewp
parents:
diff changeset
143
45b12307c695 Initial revision
drewp
parents:
diff changeset
144 empty_cue = Cue('empty')
45b12307c695 Initial revision
drewp
parents:
diff changeset
145
45b12307c695 Initial revision
drewp
parents:
diff changeset
146 allow_class_to_be_pickled(Cue)
45b12307c695 Initial revision
drewp
parents:
diff changeset
147
45b12307c695 Initial revision
drewp
parents:
diff changeset
148 class CueList:
45b12307c695 Initial revision
drewp
parents:
diff changeset
149 """Persistent list of Cues"""
45b12307c695 Initial revision
drewp
parents:
diff changeset
150 def __init__(self, filename):
45b12307c695 Initial revision
drewp
parents:
diff changeset
151 self.filename = filename
45b12307c695 Initial revision
drewp
parents:
diff changeset
152 self.treedict = TreeDict()
45b12307c695 Initial revision
drewp
parents:
diff changeset
153 try:
45b12307c695 Initial revision
drewp
parents:
diff changeset
154 self.treedict.load(filename)
45b12307c695 Initial revision
drewp
parents:
diff changeset
155 except IOError:
45b12307c695 Initial revision
drewp
parents:
diff changeset
156 self.treedict.cues = []
45b12307c695 Initial revision
drewp
parents:
diff changeset
157 self.cues = self.treedict.cues
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
158 self.current_cue_index = 0
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
159 self.next_pointer = None
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
160 self.prev_pointer = None
45b12307c695 Initial revision
drewp
parents:
diff changeset
161
45b12307c695 Initial revision
drewp
parents:
diff changeset
162 import atexit
45b12307c695 Initial revision
drewp
parents:
diff changeset
163 atexit.register(self.save)
45b12307c695 Initial revision
drewp
parents:
diff changeset
164 def add_cue(self, cue, index=None):
45b12307c695 Initial revision
drewp
parents:
diff changeset
165 """Adds a Cue object to the list. If no index is specified,
45b12307c695 Initial revision
drewp
parents:
diff changeset
166 the cue will be added to the end."""
45b12307c695 Initial revision
drewp
parents:
diff changeset
167 index = index or len(self.cues)
45b12307c695 Initial revision
drewp
parents:
diff changeset
168 self.cues.insert(index, cue)
45b12307c695 Initial revision
drewp
parents:
diff changeset
169 def shift(self, diff):
45b12307c695 Initial revision
drewp
parents:
diff changeset
170 """Shift through cue history"""
45b12307c695 Initial revision
drewp
parents:
diff changeset
171 old_index = self.current_cue_index
45b12307c695 Initial revision
drewp
parents:
diff changeset
172 self.current_cue_index = None
45b12307c695 Initial revision
drewp
parents:
diff changeset
173 if diff < 0: # if going backwards
45b12307c695 Initial revision
drewp
parents:
diff changeset
174 if self.prev_pointer: # use a prev pointer if we have one
45b12307c695 Initial revision
drewp
parents:
diff changeset
175 self.current_cue_index = self.prev_pointer
45b12307c695 Initial revision
drewp
parents:
diff changeset
176 self.next_pointer = old_index
45b12307c695 Initial revision
drewp
parents:
diff changeset
177 self.prev_pointer = None
45b12307c695 Initial revision
drewp
parents:
diff changeset
178 else:
45b12307c695 Initial revision
drewp
parents:
diff changeset
179 if self.next_pointer: # use a next pointer if we have one
45b12307c695 Initial revision
drewp
parents:
diff changeset
180 self.current_cue_index = self.next_pointer
45b12307c695 Initial revision
drewp
parents:
diff changeset
181 self.next_pointer = None
45b12307c695 Initial revision
drewp
parents:
diff changeset
182 self.prev_pointer = old_index
45b12307c695 Initial revision
drewp
parents:
diff changeset
183 if not self.current_cue_index:
45b12307c695 Initial revision
drewp
parents:
diff changeset
184 self.current_cue_index = old_index + diff
45b12307c695 Initial revision
drewp
parents:
diff changeset
185 def set_next(self, index):
45b12307c695 Initial revision
drewp
parents:
diff changeset
186 self.next_pointer = index
45b12307c695 Initial revision
drewp
parents:
diff changeset
187 def set_prev(self, index):
45b12307c695 Initial revision
drewp
parents:
diff changeset
188 self.prev_pointer = index
45b12307c695 Initial revision
drewp
parents:
diff changeset
189 def bound_index(self, index):
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
190 if not self.cues:
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
191 return None
45b12307c695 Initial revision
drewp
parents:
diff changeset
192 else:
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
193 return max(0, min(index, len(self.cues)))
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
194 def get_current_cue_indices(self):
45b12307c695 Initial revision
drewp
parents:
diff changeset
195 cur = self.current_cue_index
45b12307c695 Initial revision
drewp
parents:
diff changeset
196 return [self.bound_index(index) for index in
45b12307c695 Initial revision
drewp
parents:
diff changeset
197 (self.prev_pointer or cur - 1,
45b12307c695 Initial revision
drewp
parents:
diff changeset
198 cur,
45b12307c695 Initial revision
drewp
parents:
diff changeset
199 self.next_pointer or cur + 1)]
45b12307c695 Initial revision
drewp
parents:
diff changeset
200 def get_current_cues(self):
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
201 # print "get_current_cue_indices", self.get_current_cue_indices()
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
202 return [self.get_cue_by_index(index)
45b12307c695 Initial revision
drewp
parents:
diff changeset
203 for index in self.get_current_cue_indices()]
45b12307c695 Initial revision
drewp
parents:
diff changeset
204 def get_cue_by_index(self, index):
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
205 # print "get_cue_by_index", index
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
206 if index:
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
207 return self.cues[self.bound_index(index)]
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
208 else:
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
209 return empty_cue
45b12307c695 Initial revision
drewp
parents:
diff changeset
210 def __del__(self):
45b12307c695 Initial revision
drewp
parents:
diff changeset
211 self.save()
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
212 def save(self):
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
213 self.treedict.save(self.filename)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
214
45b12307c695 Initial revision
drewp
parents:
diff changeset
215 if __name__ == "__main__":
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
216 if 0:
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
217 z = CueList('cues/cuelist1')
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
218 z.add_cue(Cue('cue %s' % time.asctime(), time=2, a=7, b=8))
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
219 print 'cues', z.cues
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
220 else:
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
221 cl = CueList('cues/cuelist1')
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
222
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
223 # to populate cue list
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
224 if 0:
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
225 for x in range(20):
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
226 cl.add_cue(Cue('cue %d' % x, time=x, some_attribute=3))
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
227
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
228 root = Tk.Tk()
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
229 fader = CueFader(root, cl)
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
230 fader.pack(fill='both', expand=1)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
231 Tk.mainloop()