annotate flax/CueFaders.py @ 157:7d3a0f9107a8

try to resolve version conflict problems
author dmcc
date Mon, 07 Jul 2003 07:07:22 +0000
parents 4c3060ceddcc
children 5c7ac46e33d3
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
155
4c3060ceddcc autoshifting is controllable now
dmcc
parents: 151
diff changeset
69 self.auto_shift = Tk.IntVar()
4c3060ceddcc autoshifting is controllable now
dmcc
parents: 151
diff changeset
70 self.auto_shift.set(1)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
71
45b12307c695 Initial revision
drewp
parents:
diff changeset
72 self.scales = {}
45b12307c695 Initial revision
drewp
parents:
diff changeset
73 self.shift_buttons = {}
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
74
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
75 topframe = Tk.Frame(self)
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
76 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
77 self.current_cues.pack()
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
78 self.update_cue_display()
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
79 topframe.pack()
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
80
155
4c3060ceddcc autoshifting is controllable now
dmcc
parents: 151
diff changeset
81 bottomframe = Tk.Frame(self)
4c3060ceddcc autoshifting is controllable now
dmcc
parents: 151
diff changeset
82 self.auto_shift_checkbutton = Tk.Checkbutton(self,
4c3060ceddcc autoshifting is controllable now
dmcc
parents: 151
diff changeset
83 variable=self.auto_shift, text='Autoshift',
4c3060ceddcc autoshifting is controllable now
dmcc
parents: 151
diff changeset
84 command=self.toggle_autoshift)
4c3060ceddcc autoshifting is controllable now
dmcc
parents: 151
diff changeset
85 self.auto_shift_checkbutton.pack()
4c3060ceddcc autoshifting is controllable now
dmcc
parents: 151
diff changeset
86 bottomframe.pack(side='bottom')
4c3060ceddcc autoshifting is controllable now
dmcc
parents: 151
diff changeset
87
4c3060ceddcc autoshifting is controllable now
dmcc
parents: 151
diff changeset
88 middleframe = Tk.Frame(self)
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
89 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
90 ('Next', 0, 1, 'right')):
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
91 frame = Tk.Frame(self)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
92 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
93 res=0.01, orient='horiz')
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
94 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
95 go = TimedGoButton(frame, 'Go %s' % name, scale)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
96 go.pack(fill='both', expand=1)
45b12307c695 Initial revision
drewp
parents:
diff changeset
97 frame.pack(side=side, fill='both', expand=1)
45b12307c695 Initial revision
drewp
parents:
diff changeset
98
155
4c3060ceddcc autoshifting is controllable now
dmcc
parents: 151
diff changeset
99 shift = Tk.Button(frame, text="Shift %s" % name, state='disabled',
4c3060ceddcc autoshifting is controllable now
dmcc
parents: 151
diff changeset
100 command=lambda name=name: self.shift(name))
4c3060ceddcc autoshifting is controllable now
dmcc
parents: 151
diff changeset
101
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
102 self.scales[name] = scale
45b12307c695 Initial revision
drewp
parents:
diff changeset
103 self.shift_buttons[name] = shift
45b12307c695 Initial revision
drewp
parents:
diff changeset
104
45b12307c695 Initial revision
drewp
parents:
diff changeset
105 scale.scale_var.trace('w', \
45b12307c695 Initial revision
drewp
parents:
diff changeset
106 lambda x, y, z, name=name, scale=scale: self.xfade(name, scale))
155
4c3060ceddcc autoshifting is controllable now
dmcc
parents: 151
diff changeset
107 middleframe.pack(side='bottom', fill='both', expand=1)
4c3060ceddcc autoshifting is controllable now
dmcc
parents: 151
diff changeset
108 def toggle_autoshift(self):
4c3060ceddcc autoshifting is controllable now
dmcc
parents: 151
diff changeset
109 for name, button in self.shift_buttons.items():
4c3060ceddcc autoshifting is controllable now
dmcc
parents: 151
diff changeset
110 if not self.auto_shift.get():
4c3060ceddcc autoshifting is controllable now
dmcc
parents: 151
diff changeset
111 button.pack(side='bottom', fill='both', expand=1)
4c3060ceddcc autoshifting is controllable now
dmcc
parents: 151
diff changeset
112 else:
4c3060ceddcc autoshifting is controllable now
dmcc
parents: 151
diff changeset
113 button.pack_forget()
4c3060ceddcc autoshifting is controllable now
dmcc
parents: 151
diff changeset
114
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
115 def shift(self, name):
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
116 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
117 scale.scale_var.set(0)
155
4c3060ceddcc autoshifting is controllable now
dmcc
parents: 151
diff changeset
118 scale.scale.update()
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
119 print "shift", name
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
120 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
121 self.update_cue_display()
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
122 def update_cue_display(self):
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
123 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
124 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
125 def xfade(self, name, scale):
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
126 scale_val = scale.scale_var.get()
45b12307c695 Initial revision
drewp
parents:
diff changeset
127
45b12307c695 Initial revision
drewp
parents:
diff changeset
128 if scale_val == 1:
155
4c3060ceddcc autoshifting is controllable now
dmcc
parents: 151
diff changeset
129 if self.auto_shift.get():
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
130 self.shift(name)
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
131 else:
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
132 self.shift_buttons[name]['state'] = 'normal'
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
133 else:
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
134 # disable any dangerous shifting
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
135 self.shift_buttons[name]['state'] = 'disabled'
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
136
45b12307c695 Initial revision
drewp
parents:
diff changeset
137 if scale_val != 0:
45b12307c695 Initial revision
drewp
parents:
diff changeset
138 # 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
139 # TODO:
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
140 # if name == 'Next':
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
141 # 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
142 pass
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
143 else:
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
144 # undo above changes
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
145
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
146 # 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
147 # 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
148 pass
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
149
45b12307c695 Initial revision
drewp
parents:
diff changeset
150 class Cue:
45b12307c695 Initial revision
drewp
parents:
diff changeset
151 """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
152 def __init__(self, name, time=3, **attrs):
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
153 self.name = name
45b12307c695 Initial revision
drewp
parents:
diff changeset
154 self.time = time
45b12307c695 Initial revision
drewp
parents:
diff changeset
155 self.__dict__.update(attrs)
45b12307c695 Initial revision
drewp
parents:
diff changeset
156 def __repr__(self):
45b12307c695 Initial revision
drewp
parents:
diff changeset
157 return "<Cue %s, length %s>" % (self.name, self.time)
45b12307c695 Initial revision
drewp
parents:
diff changeset
158
45b12307c695 Initial revision
drewp
parents:
diff changeset
159 empty_cue = Cue('empty')
45b12307c695 Initial revision
drewp
parents:
diff changeset
160
45b12307c695 Initial revision
drewp
parents:
diff changeset
161 allow_class_to_be_pickled(Cue)
45b12307c695 Initial revision
drewp
parents:
diff changeset
162
45b12307c695 Initial revision
drewp
parents:
diff changeset
163 class CueList:
45b12307c695 Initial revision
drewp
parents:
diff changeset
164 """Persistent list of Cues"""
45b12307c695 Initial revision
drewp
parents:
diff changeset
165 def __init__(self, filename):
45b12307c695 Initial revision
drewp
parents:
diff changeset
166 self.filename = filename
45b12307c695 Initial revision
drewp
parents:
diff changeset
167 self.treedict = TreeDict()
45b12307c695 Initial revision
drewp
parents:
diff changeset
168 try:
45b12307c695 Initial revision
drewp
parents:
diff changeset
169 self.treedict.load(filename)
45b12307c695 Initial revision
drewp
parents:
diff changeset
170 except IOError:
45b12307c695 Initial revision
drewp
parents:
diff changeset
171 self.treedict.cues = []
45b12307c695 Initial revision
drewp
parents:
diff changeset
172 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
173 self.current_cue_index = 0
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
174 self.next_pointer = None
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
175 self.prev_pointer = None
45b12307c695 Initial revision
drewp
parents:
diff changeset
176
45b12307c695 Initial revision
drewp
parents:
diff changeset
177 import atexit
45b12307c695 Initial revision
drewp
parents:
diff changeset
178 atexit.register(self.save)
45b12307c695 Initial revision
drewp
parents:
diff changeset
179 def add_cue(self, cue, index=None):
45b12307c695 Initial revision
drewp
parents:
diff changeset
180 """Adds a Cue object to the list. If no index is specified,
45b12307c695 Initial revision
drewp
parents:
diff changeset
181 the cue will be added to the end."""
45b12307c695 Initial revision
drewp
parents:
diff changeset
182 index = index or len(self.cues)
45b12307c695 Initial revision
drewp
parents:
diff changeset
183 self.cues.insert(index, cue)
45b12307c695 Initial revision
drewp
parents:
diff changeset
184 def shift(self, diff):
45b12307c695 Initial revision
drewp
parents:
diff changeset
185 """Shift through cue history"""
45b12307c695 Initial revision
drewp
parents:
diff changeset
186 old_index = self.current_cue_index
45b12307c695 Initial revision
drewp
parents:
diff changeset
187 self.current_cue_index = None
45b12307c695 Initial revision
drewp
parents:
diff changeset
188 if diff < 0: # if going backwards
45b12307c695 Initial revision
drewp
parents:
diff changeset
189 if self.prev_pointer: # use a prev pointer if we have one
45b12307c695 Initial revision
drewp
parents:
diff changeset
190 self.current_cue_index = self.prev_pointer
45b12307c695 Initial revision
drewp
parents:
diff changeset
191 self.next_pointer = old_index
45b12307c695 Initial revision
drewp
parents:
diff changeset
192 self.prev_pointer = None
45b12307c695 Initial revision
drewp
parents:
diff changeset
193 else:
45b12307c695 Initial revision
drewp
parents:
diff changeset
194 if self.next_pointer: # use a next pointer if we have one
45b12307c695 Initial revision
drewp
parents:
diff changeset
195 self.current_cue_index = self.next_pointer
45b12307c695 Initial revision
drewp
parents:
diff changeset
196 self.next_pointer = None
45b12307c695 Initial revision
drewp
parents:
diff changeset
197 self.prev_pointer = old_index
45b12307c695 Initial revision
drewp
parents:
diff changeset
198 if not self.current_cue_index:
45b12307c695 Initial revision
drewp
parents:
diff changeset
199 self.current_cue_index = old_index + diff
45b12307c695 Initial revision
drewp
parents:
diff changeset
200 def set_next(self, index):
45b12307c695 Initial revision
drewp
parents:
diff changeset
201 self.next_pointer = index
45b12307c695 Initial revision
drewp
parents:
diff changeset
202 def set_prev(self, index):
45b12307c695 Initial revision
drewp
parents:
diff changeset
203 self.prev_pointer = index
45b12307c695 Initial revision
drewp
parents:
diff changeset
204 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
205 if not self.cues:
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
206 return None
45b12307c695 Initial revision
drewp
parents:
diff changeset
207 else:
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
208 return max(0, min(index, len(self.cues)))
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
209 def get_current_cue_indices(self):
45b12307c695 Initial revision
drewp
parents:
diff changeset
210 cur = self.current_cue_index
45b12307c695 Initial revision
drewp
parents:
diff changeset
211 return [self.bound_index(index) for index in
45b12307c695 Initial revision
drewp
parents:
diff changeset
212 (self.prev_pointer or cur - 1,
45b12307c695 Initial revision
drewp
parents:
diff changeset
213 cur,
45b12307c695 Initial revision
drewp
parents:
diff changeset
214 self.next_pointer or cur + 1)]
45b12307c695 Initial revision
drewp
parents:
diff changeset
215 def get_current_cues(self):
45b12307c695 Initial revision
drewp
parents:
diff changeset
216 return [self.get_cue_by_index(index)
45b12307c695 Initial revision
drewp
parents:
diff changeset
217 for index in self.get_current_cue_indices()]
45b12307c695 Initial revision
drewp
parents:
diff changeset
218 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
219 if index:
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
220 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
221 else:
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
222 return empty_cue
45b12307c695 Initial revision
drewp
parents:
diff changeset
223 def __del__(self):
45b12307c695 Initial revision
drewp
parents:
diff changeset
224 self.save()
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
225 def save(self):
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
226 self.treedict.save(self.filename)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
227
45b12307c695 Initial revision
drewp
parents:
diff changeset
228 if __name__ == "__main__":
157
7d3a0f9107a8 try to resolve version conflict problems
dmcc
parents: 155
diff changeset
229 cl = CueList('cues/cuelist1')
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
230
157
7d3a0f9107a8 try to resolve version conflict problems
dmcc
parents: 155
diff changeset
231 # to populate cue list
7d3a0f9107a8 try to resolve version conflict problems
dmcc
parents: 155
diff changeset
232 if 0:
7d3a0f9107a8 try to resolve version conflict problems
dmcc
parents: 155
diff changeset
233 for x in range(20):
7d3a0f9107a8 try to resolve version conflict problems
dmcc
parents: 155
diff changeset
234 cl.add_cue(Cue('cue %d' % x, time=x, some_attribute=3))
151
990a9474d0e7 early cue stuff. the CueList will supply the CueFader with the cues to
dmcc
parents: 0
diff changeset
235
157
7d3a0f9107a8 try to resolve version conflict problems
dmcc
parents: 155
diff changeset
236 root = Tk.Tk()
7d3a0f9107a8 try to resolve version conflict problems
dmcc
parents: 155
diff changeset
237 fader = CueFader(root, cl)
7d3a0f9107a8 try to resolve version conflict problems
dmcc
parents: 155
diff changeset
238 fader.pack(fill='both', expand=1)
7d3a0f9107a8 try to resolve version conflict problems
dmcc
parents: 155
diff changeset
239 Tk.mainloop()