Changeset - 901884392e24
[Not reviewed]
default
0 1 0
drewp@bigasterisk.com - 12 years ago 2013-06-15 06:29:25
drewp@bigasterisk.com
KC wasn't sending dmx whenever anything changed, only on a periodic keepalive timer
Ignore-this: aad5a5f238f057fe56408db171c026b8
1 file changed with 21 insertions and 3 deletions:
0 comments (0 inline, 0 general)
bin/keyboardcomposer
Show inline comments
 
@@ -444,32 +444,50 @@ class KeyboardComposer(Frame, SubClient)
 
        row['bg'] = 'black'
 

	
 
    def get_levels(self):
 
        return dict([(uri, box.slider_var.get())
 
            for uri, box in self.subbox.items()])
 

	
 
    def get_levels_as_sub(self):
 
    def get_levels_as_sub(self, graph=None):
 
        """this has to depend on the graph to get called back enough"""
 
        if graph is None:
 
            graph = self.graph
 
        # but it was using all synced values accidentally
 
        for setting in graph.objects(self.session, L9['subSetting']):
 
            level = graph.value(setting, L9['level'])
 
            if level != 0:
 
                sub = graph.value(setting, L9['sub'])
 
                for ll in graph.objects(sub, L9['lightLevel']):
 
                    graph.value(ll, L9['channel'])
 
                    graph.value(ll, L9['level'])
 

	
 
        # this is the older code, which uses some local objects
 
        # that are (supposedly) synced to the graph. It's a waste,
 
        # since I think the previous graph code just fetched all this
 
        # same data
 
        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
 

	
 
    def save_current_stage(self, subname):
 
        log.info("saving current levels as %s", subname)
 
        sub = self.get_levels_as_sub()
 
        with self.graph.currentState() as current:
 
            sub = self.get_levels_as_sub(graph=current)
 

	
 
        log.debug("new sub for reference: %r", sub)
 

	
 
        newUri = showconfig.showUri() + "/sub/%s" % subname
 
        ps = PersistentSubmaster(self.graph, newUri)
 
        ps.changeName(subname)
 
        for chanName, v in sub.get_levels().items():
 
            chan = get_channel_uri(str(chanName))
 
            ps.editLevel(chan, v)
 
            
 
        self.sub_name.delete(0, tk.END)
 

	
 

	
 
    def send_frequent_updates(self):
 
        """called when we get a fade -- send events as quickly as possible"""
 
        if time.time() <= self.stop_frequent_update_time:
 
            self.send_levels()
 
            self.after(10, self.send_frequent_updates)
 

	
0 comments (0 inline, 0 general)