comparison light8/ExtSliderMapper.py @ 103:ddd3c8f04640

more untested code, ready for production: colors for slider mapping
author dmcc
date Sun, 14 Jul 2002 09:07:14 +0000
parents e04f7b552bcd
children 15ead14b4dd1
comparison
equal deleted inserted replaced
102:e04f7b552bcd 103:ddd3c8f04640
11 11
12 from Tix import * 12 from Tix import *
13 from uihelpers import FancyDoubleVar, get_selection 13 from uihelpers import FancyDoubleVar, get_selection
14 14
15 stdfont = ('Arial', 8) 15 stdfont = ('Arial', 8)
16 colors = ('lightBlue', 'lightPink', 'lightGreen', 'aquamarine1')
16 17
17 class SliderMapping: 18 class SliderMapping:
18 def __init__(self, default='disconnected', synced=0, extinputlevel=0, 19 def __init__(self, color, default='disconnected', synced=0,
19 sublevel=0): 20 extinputlevel=0, sublevel=0):
21 self.color = color
20 self.subname = StringVar() # name of submaster we're connected to 22 self.subname = StringVar() # name of submaster we're connected to
21 self.subname.set(default) 23 self.subname.set(default)
22 self.sublevel = DoubleVar() # scalelevel variable of that submaster 24 self.sublevel = DoubleVar() # scalelevel variable of that submaster
23 # self.sublevel = FancyDoubleVar() # scalelevel variable of that submaster 25 # self.sublevel = FancyDoubleVar() # scalelevel variable of that submaster
24 self.sublevel.set(sublevel) 26 self.sublevel.set(sublevel)
151 self.subnames = subnames 153 self.subnames = subnames
152 frame = Frame(master, bg='black') 154 frame = Frame(master, bg='black')
153 self.listbox = ScrolledListBox(frame, scrollbar='y', bg='black') 155 self.listbox = ScrolledListBox(frame, scrollbar='y', bg='black')
154 self.listbox.listbox.bind("<<ListboxSelect>>", self.listbox_cb, add=1) 156 self.listbox.listbox.bind("<<ListboxSelect>>", self.listbox_cb, add=1)
155 self.listbox.listbox.configure(font=stdfont, exportselection=0, 157 self.listbox.listbox.configure(font=stdfont, exportselection=0,
156 selectmode=BROWSE, bg='black', fg='white') 158 selectmode=BROWSE, bg='black', fg='white',
157 self.listbox.vsb.configure(troughcolor='black') 159 selectbackground=self.color)
160 self.listbox.vsb.configure(troughcolor=self.color)
158 # self.listbox.listbox.insert(END, "disconnected") 161 # self.listbox.listbox.insert(END, "disconnected")
159 for s in subnames: 162 for s in subnames:
160 self.listbox.listbox.insert(END, s) 163 self.listbox.listbox.insert(END, s)
161 statframe = Frame(frame, bg='black') 164 statframe = Frame(frame, bg='black')
162 165
181 184
182 self.widgets = [frame, self.listbox, statframe, self.statuslabel, 185 self.widgets = [frame, self.listbox, statframe, self.statuslabel,
183 ilabel, extlabel, rlabel, self.sublabel, disc_button] 186 ilabel, extlabel, rlabel, self.sublabel, disc_button]
184 187
185 class ExtSliderMapper(Frame): 188 class ExtSliderMapper(Frame):
186 def __init__(self, parent, sliderlevels, sliderinput, filename='slidermapping', 189 def __init__(self, parent, sliderlevels, sliderinput,
187 numsliders=4): 190 lightboard, filename='slidermapping', numsliders=4):
188 'Slider levels is scalelevels, sliderinput is an ExternalInput object' 191 'Slider levels is scalelevels, sliderinput is an ExternalInput object'
189 Frame.__init__(self, parent, bg='black') 192 Frame.__init__(self, parent, bg='black')
190 self.parent = parent 193 self.parent = parent
191 self.sliderlevels = sliderlevels 194 self.sliderlevels = sliderlevels
192 self.sliderinput = sliderinput 195 self.sliderinput = sliderinput
193 self.filename = filename 196 self.filename = filename
194 self.numsliders = numsliders 197 self.numsliders = numsliders
198 self.lightboard = lightboard
195 self.file = None 199 self.file = None
196 200
197 # don't call setup, let them do that when scalelevels is created 201 # don't call setup, let them do that when scalelevels is created
198 def setup(self): 202 def setup(self):
199 self.subnames = self.sliderlevels.keys() 203 self.subnames = self.sliderlevels.keys()
201 self.presets = {} 205 self.presets = {}
202 self.load_presets() 206 self.load_presets()
203 207
204 self.current_preset = StringVar() # name of current preset 208 self.current_preset = StringVar() # name of current preset
205 self.current_mappings = [] 209 self.current_mappings = []
206 for i in range(self.numsliders): 210 for i, color in zip(range(self.numsliders), colors):
207 self.current_mappings.append(SliderMapping()) 211 self.current_mappings.append(SliderMapping(color))
208 212
209 self.draw_interface() 213 self.draw_interface()
210 def load_presets(self): 214 def load_presets(self):
211 self.presets = {} 215 self.presets = {}
212 self.file = open(self.filename, 'r') 216 self.file = open(self.filename, 'r')
240 'Called by changelevels, returns a dict of new values for submasters' 244 'Called by changelevels, returns a dict of new values for submasters'
241 if not self.sliderinput: return {} 245 if not self.sliderinput: return {}
242 246
243 self.load_scalelevels() # freshen our input from the submasters 247 self.load_scalelevels() # freshen our input from the submasters
244 248
249 for m, color in zip(self.current_mappings, colors):
250 if not m.isdisconnected():
251 name = m.get_mapping()
252 lastsub = self.subs_highlighted.get(color)
253 if name is not lastsub:
254 if lastsub is not None:
255 self.lightboard.highlight_sub(lastsub, 'restore')
256 self.lightboard.highlight_sub(name, color)
257 self.subs_highlighted[color] = name
258
245 rawlevels = self.sliderinput.get_levels() 259 rawlevels = self.sliderinput.get_levels()
246 for rawlev, slidermap in zip(rawlevels, self.current_mappings): 260 for rawlev, slidermap in zip(rawlevels, self.current_mappings):
247 slidermap.changed_extinput(rawlev) 261 slidermap.changed_extinput(rawlev)
248 262
249 return dict([m.get_level_pair() 263 return dict([m.get_level_pair()
250 for m in self.current_mappings 264 for m in self.current_mappings
251 if m.issynced()]) 265 if m.issynced()])
252 def draw_interface(self): 266 def draw_interface(self):
253 self.reallevellabels = [] 267 self.subs_highlighted = {}
254 subchoiceframe = Frame(self, bg='black') 268 subchoiceframe = Frame(self, bg='black')
255 for m in self.current_mappings: 269 for m in self.current_mappings:
256 m.draw_interface(subchoiceframe, self.subnames) 270 m.draw_interface(subchoiceframe, self.subnames)
257 subchoiceframe.pack() 271 subchoiceframe.pack()
258 272