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):