annotate light8/Subs.py @ 1428:7fd31c549e17

notes about effecteval Ignore-this: 1f132f9161fd22f290e906597ed1069
author drewp@bigasterisk.com
date Sat, 11 Jun 2016 04:34:07 +0000
parents 177e9ba0b4a7
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
1 from Patch import *
45b12307c695 Initial revision
drewp
parents:
diff changeset
2 from time import time
51
71489bb71528 - Meet Fader. He is going to grow up and be a crossfader some day
dmcc
parents: 36
diff changeset
3 from Tix import *
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
4 from types import TupleType
45b12307c695 Initial revision
drewp
parents:
diff changeset
5
45b12307c695 Initial revision
drewp
parents:
diff changeset
6 stdfont = ('Arial', 8)
45b12307c695 Initial revision
drewp
parents:
diff changeset
7
45b12307c695 Initial revision
drewp
parents:
diff changeset
8 class Param: # abstract
45b12307c695 Initial revision
drewp
parents:
diff changeset
9 def get_value(self):
45b12307c695 Initial revision
drewp
parents:
diff changeset
10 pass
28
b0342f9ee328 attempts to save params, better loading behavior
dmcc
parents: 21
diff changeset
11 def set_value(self, v):
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
12 pass
45b12307c695 Initial revision
drewp
parents:
diff changeset
13 def draw_tk(self, frame):
45b12307c695 Initial revision
drewp
parents:
diff changeset
14 pass
28
b0342f9ee328 attempts to save params, better loading behavior
dmcc
parents: 21
diff changeset
15 def __getstate__(self):
b0342f9ee328 attempts to save params, better loading behavior
dmcc
parents: 21
diff changeset
16 return {'value' : self.get_value()}
b0342f9ee328 attempts to save params, better loading behavior
dmcc
parents: 21
diff changeset
17 def __setstate__(self, dict):
b0342f9ee328 attempts to save params, better loading behavior
dmcc
parents: 21
diff changeset
18 self.value = StringVar()
b0342f9ee328 attempts to save params, better loading behavior
dmcc
parents: 21
diff changeset
19 self.set_value(dict['value'])
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
20
45b12307c695 Initial revision
drewp
parents:
diff changeset
21 class CheckboxParam(Param):
45b12307c695 Initial revision
drewp
parents:
diff changeset
22 def __init__(self, initial=0):
45b12307c695 Initial revision
drewp
parents:
diff changeset
23 self.value = IntVar()
45b12307c695 Initial revision
drewp
parents:
diff changeset
24 self.value.set(initial)
45b12307c695 Initial revision
drewp
parents:
diff changeset
25 def get_value(self):
45b12307c695 Initial revision
drewp
parents:
diff changeset
26 return self.value.get()
45b12307c695 Initial revision
drewp
parents:
diff changeset
27 def draw_tk(self, frame):
45b12307c695 Initial revision
drewp
parents:
diff changeset
28 self.c = Checkbutton(frame, variable=self.value)
45b12307c695 Initial revision
drewp
parents:
diff changeset
29 self.c.pack()
45b12307c695 Initial revision
drewp
parents:
diff changeset
30
45b12307c695 Initial revision
drewp
parents:
diff changeset
31 class SliderParam(Param):
45b12307c695 Initial revision
drewp
parents:
diff changeset
32 def __init__(self, range=(0, 1), res=0.01, initial=0, orient='v',
45b12307c695 Initial revision
drewp
parents:
diff changeset
33 **options):
45b12307c695 Initial revision
drewp
parents:
diff changeset
34 self.value = DoubleVar()
45b12307c695 Initial revision
drewp
parents:
diff changeset
35 self.value.set(initial)
45b12307c695 Initial revision
drewp
parents:
diff changeset
36 self.options = {'res' : res, 'to' : range[0], 'from' : range[1],
45b12307c695 Initial revision
drewp
parents:
diff changeset
37 'orient' : orient,
45b12307c695 Initial revision
drewp
parents:
diff changeset
38 'font' : stdfont, 'length' : 50, 'sliderlength' : 10,
45b12307c695 Initial revision
drewp
parents:
diff changeset
39 'width' : 10}
45b12307c695 Initial revision
drewp
parents:
diff changeset
40 self.options.update(options)
45b12307c695 Initial revision
drewp
parents:
diff changeset
41 def get_value(self):
45b12307c695 Initial revision
drewp
parents:
diff changeset
42 return self.value.get()
45b12307c695 Initial revision
drewp
parents:
diff changeset
43 def draw_tk(self, frame):
45b12307c695 Initial revision
drewp
parents:
diff changeset
44 s = Scale(frame, variable=self.value, **self.options)
45b12307c695 Initial revision
drewp
parents:
diff changeset
45 s.pack()
45b12307c695 Initial revision
drewp
parents:
diff changeset
46
45b12307c695 Initial revision
drewp
parents:
diff changeset
47 class TextParam(Param):
45b12307c695 Initial revision
drewp
parents:
diff changeset
48 def __init__(self, initial=''):
45b12307c695 Initial revision
drewp
parents:
diff changeset
49 self.value = StringVar()
45b12307c695 Initial revision
drewp
parents:
diff changeset
50 self.value.set(initial)
45b12307c695 Initial revision
drewp
parents:
diff changeset
51 def get_value(self):
45b12307c695 Initial revision
drewp
parents:
diff changeset
52 return self.value.get()
45b12307c695 Initial revision
drewp
parents:
diff changeset
53 def select_all(self, evt):
45b12307c695 Initial revision
drewp
parents:
diff changeset
54 self.e.select_range(0, END)
45b12307c695 Initial revision
drewp
parents:
diff changeset
55 def unfocus(self, evt):
45b12307c695 Initial revision
drewp
parents:
diff changeset
56 self.frame.focus()
45b12307c695 Initial revision
drewp
parents:
diff changeset
57 def draw_tk(self, frame):
45b12307c695 Initial revision
drewp
parents:
diff changeset
58 self.frame = frame
45b12307c695 Initial revision
drewp
parents:
diff changeset
59 self.e = Entry(frame, textvariable=self.value)
45b12307c695 Initial revision
drewp
parents:
diff changeset
60 self.e.bind("<Return>", self.unfocus)
45b12307c695 Initial revision
drewp
parents:
diff changeset
61 self.e.pack()
45b12307c695 Initial revision
drewp
parents:
diff changeset
62
45b12307c695 Initial revision
drewp
parents:
diff changeset
63 class ListParam(Param):
45b12307c695 Initial revision
drewp
parents:
diff changeset
64 def __init__(self, options=(), multiple=0, initial=''):
45b12307c695 Initial revision
drewp
parents:
diff changeset
65 self.value = StringVar()
45b12307c695 Initial revision
drewp
parents:
diff changeset
66 self.value.set(initial)
45b12307c695 Initial revision
drewp
parents:
diff changeset
67 self.options = options
45b12307c695 Initial revision
drewp
parents:
diff changeset
68 if multiple:
45b12307c695 Initial revision
drewp
parents:
diff changeset
69 self.selectmode = 'MULTIPLE'
45b12307c695 Initial revision
drewp
parents:
diff changeset
70 else:
45b12307c695 Initial revision
drewp
parents:
diff changeset
71 self.selectmode = 'SINGLE'
45b12307c695 Initial revision
drewp
parents:
diff changeset
72 def get_value(self):
45b12307c695 Initial revision
drewp
parents:
diff changeset
73 try:
45b12307c695 Initial revision
drewp
parents:
diff changeset
74 return self.l.get(self.l.curselection())
45b12307c695 Initial revision
drewp
parents:
diff changeset
75 except:
45b12307c695 Initial revision
drewp
parents:
diff changeset
76 return ''
45b12307c695 Initial revision
drewp
parents:
diff changeset
77 def draw_tk(self, frame):
45b12307c695 Initial revision
drewp
parents:
diff changeset
78 self.l = Listbox(frame, selectmode=self.selectmode, font=stdfont,
45b12307c695 Initial revision
drewp
parents:
diff changeset
79 width=max([len(o) for o in self.options]),
21
dea1e1d6d439 shared Listbox problem solved. exportselection=0!
dmcc
parents: 4
diff changeset
80 height=len(self.options), exportselection=0)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
81 for o in self.options:
45b12307c695 Initial revision
drewp
parents:
diff changeset
82 self.l.insert(END, o)
45b12307c695 Initial revision
drewp
parents:
diff changeset
83 self.l.pack()
45b12307c695 Initial revision
drewp
parents:
diff changeset
84
45b12307c695 Initial revision
drewp
parents:
diff changeset
85 class LabelParam(Param):
45b12307c695 Initial revision
drewp
parents:
diff changeset
86 def __init__(self, initial=''):
45b12307c695 Initial revision
drewp
parents:
diff changeset
87 self.value = StringVar()
45b12307c695 Initial revision
drewp
parents:
diff changeset
88 self.value.set(initial)
45b12307c695 Initial revision
drewp
parents:
diff changeset
89 def get_value(self):
45b12307c695 Initial revision
drewp
parents:
diff changeset
90 return self.value.get()
45b12307c695 Initial revision
drewp
parents:
diff changeset
91 def set_value(self, v):
28
b0342f9ee328 attempts to save params, better loading behavior
dmcc
parents: 21
diff changeset
92 if 'value' not in self.__dict__:
b0342f9ee328 attempts to save params, better loading behavior
dmcc
parents: 21
diff changeset
93 self.value = StringVar()
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
94 self.value.set(v)
45b12307c695 Initial revision
drewp
parents:
diff changeset
95 def draw_tk(self, frame):
45b12307c695 Initial revision
drewp
parents:
diff changeset
96 l = Label(frame, textvariable=self.value, font=stdfont)
45b12307c695 Initial revision
drewp
parents:
diff changeset
97 l.pack()
45b12307c695 Initial revision
drewp
parents:
diff changeset
98
45b12307c695 Initial revision
drewp
parents:
diff changeset
99 class ButtonParam(Param):
45b12307c695 Initial revision
drewp
parents:
diff changeset
100 def __init__(self, text, **options):
45b12307c695 Initial revision
drewp
parents:
diff changeset
101 self.options = {'text' : text}
45b12307c695 Initial revision
drewp
parents:
diff changeset
102 self.options.update(options)
45b12307c695 Initial revision
drewp
parents:
diff changeset
103 self.pressed = 0
45b12307c695 Initial revision
drewp
parents:
diff changeset
104 self.unread = 0 # unread button presses
45b12307c695 Initial revision
drewp
parents:
diff changeset
105 def draw_tk(self, frame):
45b12307c695 Initial revision
drewp
parents:
diff changeset
106 b = Button(frame, **self.options)
45b12307c695 Initial revision
drewp
parents:
diff changeset
107 b.pack()
45b12307c695 Initial revision
drewp
parents:
diff changeset
108 b.bind('<ButtonPress>', self.activate)
45b12307c695 Initial revision
drewp
parents:
diff changeset
109 b.bind('<ButtonRelease>', self.deactivate)
45b12307c695 Initial revision
drewp
parents:
diff changeset
110 def get_value(self):
45b12307c695 Initial revision
drewp
parents:
diff changeset
111 if self.unread:
45b12307c695 Initial revision
drewp
parents:
diff changeset
112 self.unread = 0
45b12307c695 Initial revision
drewp
parents:
diff changeset
113 return 1
45b12307c695 Initial revision
drewp
parents:
diff changeset
114
45b12307c695 Initial revision
drewp
parents:
diff changeset
115 return self.pressed
45b12307c695 Initial revision
drewp
parents:
diff changeset
116 def activate(self, evt):
45b12307c695 Initial revision
drewp
parents:
diff changeset
117 self.pressed = 1
45b12307c695 Initial revision
drewp
parents:
diff changeset
118 self.unread = 1
45b12307c695 Initial revision
drewp
parents:
diff changeset
119 def deactivate(self, evt):
45b12307c695 Initial revision
drewp
parents:
diff changeset
120 self.pressed = 0
45b12307c695 Initial revision
drewp
parents:
diff changeset
121
45b12307c695 Initial revision
drewp
parents:
diff changeset
122 class Params:
45b12307c695 Initial revision
drewp
parents:
diff changeset
123 def __init__(self):
45b12307c695 Initial revision
drewp
parents:
diff changeset
124 self.params = {}
45b12307c695 Initial revision
drewp
parents:
diff changeset
125 def add_param(self, name, param):
45b12307c695 Initial revision
drewp
parents:
diff changeset
126 self.params[name] = param
45b12307c695 Initial revision
drewp
parents:
diff changeset
127 def get_param_value(self, name):
45b12307c695 Initial revision
drewp
parents:
diff changeset
128 return self.params[name].get_value()
45b12307c695 Initial revision
drewp
parents:
diff changeset
129 def __getitem__(self, name):
45b12307c695 Initial revision
drewp
parents:
diff changeset
130 return self.params[name].get_value()
45b12307c695 Initial revision
drewp
parents:
diff changeset
131 def __setitem__(self, name, value):
45b12307c695 Initial revision
drewp
parents:
diff changeset
132 self.params[name].set_value(value)
45b12307c695 Initial revision
drewp
parents:
diff changeset
133 def draw_tk(self, frame):
45b12307c695 Initial revision
drewp
parents:
diff changeset
134 for name,param in self.params.items():
45b12307c695 Initial revision
drewp
parents:
diff changeset
135 f = Frame(frame)
45b12307c695 Initial revision
drewp
parents:
diff changeset
136 l = Label(f, text=name, font=stdfont)
45b12307c695 Initial revision
drewp
parents:
diff changeset
137 l.pack(side='left')
45b12307c695 Initial revision
drewp
parents:
diff changeset
138 pframe = Frame(f)
45b12307c695 Initial revision
drewp
parents:
diff changeset
139 param.draw_tk(pframe)
45b12307c695 Initial revision
drewp
parents:
diff changeset
140 pframe.pack(side='right')
45b12307c695 Initial revision
drewp
parents:
diff changeset
141 f.pack()
45b12307c695 Initial revision
drewp
parents:
diff changeset
142
45b12307c695 Initial revision
drewp
parents:
diff changeset
143 class SliderAdjuster:
45b12307c695 Initial revision
drewp
parents:
diff changeset
144 def __init__(self):
45b12307c695 Initial revision
drewp
parents:
diff changeset
145 self.var = None
45b12307c695 Initial revision
drewp
parents:
diff changeset
146 self.atzero = 0
45b12307c695 Initial revision
drewp
parents:
diff changeset
147 def set(self, level):
45b12307c695 Initial revision
drewp
parents:
diff changeset
148 if self.var is not None:
45b12307c695 Initial revision
drewp
parents:
diff changeset
149 self.var.set(level)
45b12307c695 Initial revision
drewp
parents:
diff changeset
150 def get(self, level):
45b12307c695 Initial revision
drewp
parents:
diff changeset
151 if self.var is not None:
45b12307c695 Initial revision
drewp
parents:
diff changeset
152 return self.var.get()
45b12307c695 Initial revision
drewp
parents:
diff changeset
153 return None
45b12307c695 Initial revision
drewp
parents:
diff changeset
154 def justturnedon(self):
45b12307c695 Initial revision
drewp
parents:
diff changeset
155 return self.atzero
28
b0342f9ee328 attempts to save params, better loading behavior
dmcc
parents: 21
diff changeset
156 def __getstate__(self):
b0342f9ee328 attempts to save params, better loading behavior
dmcc
parents: 21
diff changeset
157 state = self.__dict__.copy()
b0342f9ee328 attempts to save params, better loading behavior
dmcc
parents: 21
diff changeset
158 # remove var (non-pickleable)
b0342f9ee328 attempts to save params, better loading behavior
dmcc
parents: 21
diff changeset
159 try:
b0342f9ee328 attempts to save params, better loading behavior
dmcc
parents: 21
diff changeset
160 del state['var']
b0342f9ee328 attempts to save params, better loading behavior
dmcc
parents: 21
diff changeset
161 except KeyError:
b0342f9ee328 attempts to save params, better loading behavior
dmcc
parents: 21
diff changeset
162 pass
b0342f9ee328 attempts to save params, better loading behavior
dmcc
parents: 21
diff changeset
163 return state
b0342f9ee328 attempts to save params, better loading behavior
dmcc
parents: 21
diff changeset
164 # no setstate needed
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
165
45b12307c695 Initial revision
drewp
parents:
diff changeset
166 class Sub:
36
d07b3a20c48e subeditor begins to work
drewp
parents: 29
diff changeset
167 def __init__(self, name, levels, dimmers=68, color=None):
d07b3a20c48e subeditor begins to work
drewp
parents: 29
diff changeset
168 self.name = name # keep this consistent please
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
169 self.levels = levels
28
b0342f9ee328 attempts to save params, better loading behavior
dmcc
parents: 21
diff changeset
170 self.dimmers = dimmers # needed?
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
171 self.is_effect = callable(self.levels)
45b12307c695 Initial revision
drewp
parents:
diff changeset
172 self.slideradjuster = SliderAdjuster()
71
177e9ba0b4a7 simple DMX server
dmcc
parents: 51
diff changeset
173 self.namecache = {}
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
174 if self.is_effect:
45b12307c695 Initial revision
drewp
parents:
diff changeset
175 self.params = Params()
45b12307c695 Initial revision
drewp
parents:
diff changeset
176 self.generator = self.levels(self.params, self.slideradjuster)
45b12307c695 Initial revision
drewp
parents:
diff changeset
177 self.generator.next()
45b12307c695 Initial revision
drewp
parents:
diff changeset
178 self.color = color
71
177e9ba0b4a7 simple DMX server
dmcc
parents: 51
diff changeset
179 def resolve_name(self, ch_name):
177e9ba0b4a7 simple DMX server
dmcc
parents: 51
diff changeset
180 if ch_name in self.namecache:
177e9ba0b4a7 simple DMX server
dmcc
parents: 51
diff changeset
181 return self.namecache[ch_name]
177e9ba0b4a7 simple DMX server
dmcc
parents: 51
diff changeset
182 else:
177e9ba0b4a7 simple DMX server
dmcc
parents: 51
diff changeset
183 resolved = get_dmx_channel(ch_name)
177e9ba0b4a7 simple DMX server
dmcc
parents: 51
diff changeset
184 self.namecache[ch_name] = resolved
177e9ba0b4a7 simple DMX server
dmcc
parents: 51
diff changeset
185 return resolved
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
186 def set_slider_var(self, slidervar):
45b12307c695 Initial revision
drewp
parents:
diff changeset
187 if self.is_effect:
45b12307c695 Initial revision
drewp
parents:
diff changeset
188 self.slideradjuster.var = slidervar
45b12307c695 Initial revision
drewp
parents:
diff changeset
189 def draw_tk(self, frame):
45b12307c695 Initial revision
drewp
parents:
diff changeset
190 if self.is_effect:
45b12307c695 Initial revision
drewp
parents:
diff changeset
191 self.params.draw_tk(frame)
45b12307c695 Initial revision
drewp
parents:
diff changeset
192 def get_state(self):
28
b0342f9ee328 attempts to save params, better loading behavior
dmcc
parents: 21
diff changeset
193 state = self.__dict__.copy()
b0342f9ee328 attempts to save params, better loading behavior
dmcc
parents: 21
diff changeset
194 if self.is_effect:
b0342f9ee328 attempts to save params, better loading behavior
dmcc
parents: 21
diff changeset
195 del state['levels']
b0342f9ee328 attempts to save params, better loading behavior
dmcc
parents: 21
diff changeset
196 del state['generator']
b0342f9ee328 attempts to save params, better loading behavior
dmcc
parents: 21
diff changeset
197
b0342f9ee328 attempts to save params, better loading behavior
dmcc
parents: 21
diff changeset
198 return state
b0342f9ee328 attempts to save params, better loading behavior
dmcc
parents: 21
diff changeset
199 def set_state(self, statedict):
b0342f9ee328 attempts to save params, better loading behavior
dmcc
parents: 21
diff changeset
200 self.__dict__.update(statedict)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
201 def get_levels(self, level):
71
177e9ba0b4a7 simple DMX server
dmcc
parents: 51
diff changeset
202 """returns a scaled version of the levels in the sub; channel names
177e9ba0b4a7 simple DMX server
dmcc
parents: 51
diff changeset
203 are resolved to numbers"""
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
204 d = {}
45b12307c695 Initial revision
drewp
parents:
diff changeset
205 if level == 0:
45b12307c695 Initial revision
drewp
parents:
diff changeset
206 self.slideradjuster.atzero = 1
45b12307c695 Initial revision
drewp
parents:
diff changeset
207 return d
29
f595fdd4c548 minor cleanups, convert parallel port controller to a class
dmcc
parents: 28
diff changeset
208 if self.is_effect: # effect
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
209 d = self.generator.next()
45b12307c695 Initial revision
drewp
parents:
diff changeset
210 self.slideradjuster.atzero = 0
71
177e9ba0b4a7 simple DMX server
dmcc
parents: 51
diff changeset
211 return dict([(get_dmx_channel(ch), float(lev) * float(level))
177e9ba0b4a7 simple DMX server
dmcc
parents: 51
diff changeset
212 for ch, lev in d.items()])
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
213 else: # dictionary (standard)
45b12307c695 Initial revision
drewp
parents:
diff changeset
214 d = self.levels
71
177e9ba0b4a7 simple DMX server
dmcc
parents: 51
diff changeset
215 return dict([(self.resolve_name(ch), float(lev) * float(level))
177e9ba0b4a7 simple DMX server
dmcc
parents: 51
diff changeset
216 for ch, lev in d.items()])
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
217
36
d07b3a20c48e subeditor begins to work
drewp
parents: 29
diff changeset
218 #
d07b3a20c48e subeditor begins to work
drewp
parents: 29
diff changeset
219 # methods for Subediting to use
d07b3a20c48e subeditor begins to work
drewp
parents: 29
diff changeset
220 #
d07b3a20c48e subeditor begins to work
drewp
parents: 29
diff changeset
221 def getlevels(self):
d07b3a20c48e subeditor begins to work
drewp
parents: 29
diff changeset
222 return self.levels.copy()
d07b3a20c48e subeditor begins to work
drewp
parents: 29
diff changeset
223 def reviselevels(self,levels):
d07b3a20c48e subeditor begins to work
drewp
parents: 29
diff changeset
224 # we can accept these new levels; subediting has done all the work
d07b3a20c48e subeditor begins to work
drewp
parents: 29
diff changeset
225 self.levels.update(levels)
d07b3a20c48e subeditor begins to work
drewp
parents: 29
diff changeset
226
d07b3a20c48e subeditor begins to work
drewp
parents: 29
diff changeset
227
d07b3a20c48e subeditor begins to work
drewp
parents: 29
diff changeset
228
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
229 def reload_data(dummy):
51
71489bb71528 - Meet Fader. He is going to grow up and be a crossfader some day
dmcc
parents: 36
diff changeset
230 global subs, cues
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
231 if dummy:
45b12307c695 Initial revision
drewp
parents:
diff changeset
232 import ConfigDummy as Config
45b12307c695 Initial revision
drewp
parents:
diff changeset
233 else:
45b12307c695 Initial revision
drewp
parents:
diff changeset
234 import Config
45b12307c695 Initial revision
drewp
parents:
diff changeset
235
45b12307c695 Initial revision
drewp
parents:
diff changeset
236 reload(Config)
45b12307c695 Initial revision
drewp
parents:
diff changeset
237
45b12307c695 Initial revision
drewp
parents:
diff changeset
238 subs = {}
45b12307c695 Initial revision
drewp
parents:
diff changeset
239 for name, levels in Config.subs.items():
45b12307c695 Initial revision
drewp
parents:
diff changeset
240 if type(name) == TupleType:
45b12307c695 Initial revision
drewp
parents:
diff changeset
241 name, color = name
45b12307c695 Initial revision
drewp
parents:
diff changeset
242 else:
28
b0342f9ee328 attempts to save params, better loading behavior
dmcc
parents: 21
diff changeset
243 color = None
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
244
36
d07b3a20c48e subeditor begins to work
drewp
parents: 29
diff changeset
245 subs[name] = Sub(name, levels, color=color)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
246
45b12307c695 Initial revision
drewp
parents:
diff changeset
247 # subs = dict([(name, Sub(levels)) for name, levels in Config.subs.items()])
51
71489bb71528 - Meet Fader. He is going to grow up and be a crossfader some day
dmcc
parents: 36
diff changeset
248
71489bb71528 - Meet Fader. He is going to grow up and be a crossfader some day
dmcc
parents: 36
diff changeset
249 cues = Config.cues
71489bb71528 - Meet Fader. He is going to grow up and be a crossfader some day
dmcc
parents: 36
diff changeset
250
36
d07b3a20c48e subeditor begins to work
drewp
parents: 29
diff changeset
251 def longestsubname():
d07b3a20c48e subeditor begins to work
drewp
parents: 29
diff changeset
252 return max([len(x) for x in subs.keys()])