annotate flax/CueFaders.py @ 151:990a9474d0e7

early cue stuff. the CueList will supply the CueFader with the cues to early cue stuff. the CueList will supply the CueFader with the cues to work with, and will do crossfading sooner or later. the format of cues is still very open. cuelist1 is a bogus cuelist for testing.
author dmcc
date Sun, 06 Jul 2003 16:33:06 +0000
parents 45b12307c695
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()