Mercurial > code > home > repos > light9
changeset 801:caeaa88430b8
KC sends real levels
Ignore-this: 2c6dae9c9c706c7db02e361d1ff46035
author | drewp@bigasterisk.com |
---|---|
date | Mon, 16 Jul 2012 22:28:08 +0000 |
parents | 1274e041b579 |
children | 5442f5d8979a |
files | bin/keyboardcomposer bin/rdfdb light9/Submaster.py light9/subclient.py |
diffstat | 4 files changed, 17 insertions(+), 19 deletions(-) [+] |
line wrap: on
line diff
--- a/bin/keyboardcomposer Mon Jul 16 22:05:35 2012 +0000 +++ b/bin/keyboardcomposer Mon Jul 16 22:28:08 2012 +0000 @@ -140,9 +140,8 @@ self.sub_name = Entry(self.buttonframe, bg='black', fg='white') self.sub_name.pack(side=LEFT) - def redraw_sliders(self): - self.slider_vars = {} # this holds subname:sub Tk vars + self.slider_vars = {} # this holds suburi : sub Tk vars self.slider_table = {} # this holds coords:sub Tk vars self.name_to_subtk.clear() # subname : SubmasterTk instance @@ -219,7 +218,7 @@ subtk.place(relx=col / 8, rely=0, relwidth=1 / 8, relheight=1) self.setup_key_nudgers(subtk.scale) - self.slider_vars[sub.name] = subtk.slider_var + self.slider_vars[sub.uri] = subtk.slider_var return subtk def toggle_slider_connectedness(self): @@ -337,11 +336,11 @@ return # no slider assigned at that column subtk.scale.set(value) - def send_to_hw(self, subName, hwNum): + def send_to_hw(self, subUri, hwNum): if isinstance(self.sliders, DummySliders): return - v = round(127 * self.slider_vars[subName].get()) + v = round(127 * self.slider_vars[subUri].get()) chan = "slider%s" % hwNum # workaround for some rounding issue, where we receive one @@ -368,13 +367,12 @@ row['bg'] = 'black' def get_levels(self): - return dict([(name, slidervar.get()) - for name, slidervar in self.slider_vars.items()]) + return dict([(uri, slidervar.get()) + for uri, slidervar in self.slider_vars.items()]) def get_levels_as_sub(self): - scaledsubs = [self.submasters.get_sub_by_name(sub) * level \ + scaledsubs = [self.submasters.get_sub_by_uri(sub) * level for sub, level in self.get_levels().items() if level > 0.0] - maxes = sub_maxes(*scaledsubs) return maxes
--- a/bin/rdfdb Mon Jul 16 22:05:35 2012 +0000 +++ b/bin/rdfdb Mon Jul 16 22:28:08 2012 +0000 @@ -132,6 +132,7 @@ notifier.startReading() for inFile in [#"show/dance2012/config.n3", + "show/dance2012/patch.n3", "show/dance2012/subs/bcools", "show/dance2012/subs/bwarm", "show/dance2012/subs/house",
--- a/light9/Submaster.py Mon Jul 16 22:05:35 2012 +0000 +++ b/light9/Submaster.py Mon Jul 16 22:28:08 2012 +0000 @@ -160,7 +160,7 @@ val = self.graph.value(lev, L9['level']) name = patchGraph.label(chan) if not name: - #log.error("sub %r has channel %r with no name- leaving out that channel" % (self.name, chan)) + log.error("sub %r has channel %r with no name- leaving out that channel" % (self.name, chan)) continue self.levels[name] = float(val) @@ -253,14 +253,9 @@ combined = notsongs + songs return combined - def get_all_sub_names(self): - return [s.name for s in self.get_all_subs()] - def get_sub_by_name(self, name): - "Makes a new sub if there isn't one." - if name in self.submasters: - return self.submasters[name] - return Submaster(name) - __getitem__ = get_sub_by_name + + def get_sub_by_uri(self, uri): + return self.submasters[uri] def fullsub(*chans): """Make a submaster with chans at full."""
--- a/light9/subclient.py Mon Jul 16 22:05:35 2012 +0000 +++ b/light9/subclient.py Mon Jul 16 22:28:08 2012 +0000 @@ -4,6 +4,7 @@ # later, this stuff will talk to a SubServer class SubClient: def __init__(self): + """assumed that your init saves self.graph""" pass # we may later need init code for network setup def get_levels_as_sub(self): @@ -19,13 +20,16 @@ dmxclient.outputlevels(levels) def send_levels(self): + self.graph.addHandler(self._send_levels_handler) + + def _send_levels_handler(self): levels = self.get_dmx_list() dmxclient.outputlevels(levels) def send_levels_loop(self, delay=1000): """This function assumes that we are an instance of a Tk object (or at least that we have an 'after' method)""" - self.send_levels() + self.graph.addHandler(self.send_levels) self.after(delay, self.send_levels_loop, delay) def send_zeroes(self):