Changeset - c6aabf5bd3bc
[Not reviewed]
default
0 3 0
Drew Perttula - 18 years ago 2007-06-11 02:26:49
drewp@bigasterisk.com
big KC speedup from not reloading config.n3 constantly
3 files changed with 31 insertions and 19 deletions:
0 comments (0 inline, 0 general)
bin/keyboardcomposer
Show inline comments
 
@@ -5,25 +5,25 @@ import os, sys, time, subprocess
 
from optparse import OptionParser
 

	
 
from twisted.internet import reactor, tksupport
 
from twisted.web import xmlrpc, server
 
from Tix import *
 
import Tix as tk
 
import pickle
 

	
 
import run_local
 
from light9.Fadable import Fadable
 
from light9.Submaster import Submasters, sub_maxes
 
from light9.subclient import SubClient
 
from light9 import dmxclient, showconfig, networking
 
from light9 import dmxclient, showconfig, networking, prof
 
from light9.uihelpers import toplevelat, bindkeys
 
from bcf2000 import BCF2000
 

	
 
nudge_keys = {
 
    'up' : list('qwertyuiop'),
 
    'down' : list('asdfghjkl')
 
}
 
nudge_keys['down'].append('semicolon')
 

	
 
class SubScale(Scale, Fadable):
 
    def __init__(self, master, *args, **kw):
 
        self.scale_var = kw.get('variable') or DoubleVar()
 
@@ -102,28 +102,28 @@ class KeyboardComposer(Frame, SubClient)
 
        self.refreshbutton.pack(side=LEFT)
 
        self.save_stage_button = Button(self.buttonframe, text="Save", 
 
            command=lambda: self.save_current_stage(self.sub_name.get()), 
 
            bg='black', fg='white')
 
        self.save_stage_button.pack(side=LEFT)
 
        self.sub_name = Entry(self.buttonframe, bg='black', fg='white')
 
        self.sub_name.pack(side=LEFT)
 
        self.stop_frequent_update_time = 0
 

	
 
        try:
 
            self.sliders = Sliders(self.hw_slider_moved)
 
        except IOError:
 
            class _:
 
            class dummy:
 
                def valueOut(self, name, value):
 
                    pass
 
            self.sliders = _()
 
            self.sliders = dummy()
 
            print "no hw sliders found"
 

	
 
    def make_key_hints(self):
 
        keyhintrow = Frame(self)
 

	
 
        col = 0
 
        for upkey, downkey in zip(nudge_keys['up'],
 
                                  nudge_keys['down']):
 
            # what a hack!
 
            downkey = downkey.replace('semicolon', ';')
 
            upkey, downkey = (upkey.upper(), downkey.upper())
 

	
 
@@ -285,24 +285,28 @@ class LevelServer(xmlrpc.XMLRPC):
 
        return ret
 

	
 
class Sliders(BCF2000):
 
    def __init__(self, cb):
 
        BCF2000.__init__(self)
 
        self.cb = cb
 
    def valueIn(self, name, value):
 
        print "in", name, value
 
        if name.startswith("slider"):
 
            self.cb(int(name[6:]) - 1, value / 127)
 

	
 
if __name__ == "__main__":
 

	
 
    #prof.watchPoint("/usr/lib/python2.4/site-packages/rdflib-2.3.3-py2.4-linux-i686.egg/rdflib/syntax/parsers/n3p/n3p.py", 67)
 

	
 

	
 
    parser = OptionParser()
 
    parser.add_option('--nonpersistent', action="store_true",
 
                      help="don't load or save levels")
 
    opts, args = parser.parse_args()
 
    
 
    s = Submasters()
 

	
 
    root = Tk()
 
    tl = toplevelat("Keyboard Composer", existingtoplevel=root)
 

	
 
    startLevels = None
 
    if opts.nonpersistent:
 
@@ -318,18 +322,16 @@ if __name__ == "__main__":
 
    try:
 
        ls = LevelServer(kc.name_to_subtk)
 
        reactor.listenTCP(networking.kcPort(), server.Site(ls))
 
    except twisted.internet.error.CannotListenError, e:
 
        print "Can't (and won't!) start level server:"
 
        print e
 

	
 
    root.protocol('WM_DELETE_WINDOW', reactor.stop)
 
    if not opts.nonpersistent:
 
        reactor.addSystemEventTrigger('after', 'shutdown', kc.save)
 
    
 
    tksupport.install(root,ms=10)
 
    if 0:
 
        sys.path.append("/home/drewp/projects/cuisine/pour")
 
        from utils import runstats
 
        runstats("reactor.run()")
 
    else:
 
        reactor.run()
 

	
 

	
 
    
 
    prof.run(reactor.run, profile=False)
bin/lightsim
Show inline comments
 
@@ -3,25 +3,25 @@
 
from __future__ import division
 
import run_local
 

	
 
from rdflib import Literal, URIRef
 
from twisted.internet import reactor, tksupport
 
from twisted.internet.task import LoopingCall
 
from twisted.web.xmlrpc import Proxy
 
import xmlrpclib, sys, logging
 
log = logging.getLogger()
 
logging.basicConfig(format="%(asctime)s %(levelname)-5s %(name)s %(filename)s:%(lineno)d: %(message)s")
 
log.setLevel(logging.DEBUG)
 
import Tkinter as tk
 
from light9 import networking, Patch, showconfig, dmxclient, updatefreq
 
from light9 import networking, Patch, showconfig, dmxclient, updatefreq, prof
 
from light9.namespaces import L9
 
from louie import dispatcher
 

	
 
try:
 
    from OpenGL import Tk as Togl
 
    from OpenGL.GL import *
 
except ImportError:
 
    sys.path.append("/usr/lib/python2.4/site-packages/OpenGL/Tk/linux2-tk8.4")
 
    from OpenGL.GL import *
 
    import Togl
 
  
 
from lightsim.openglsim import Surface
 
@@ -87,20 +87,13 @@ sk.pack(side='top', fill='x')
 

	
 

	
 
serv = Proxy(networking.dmxServerUrl())
 
LoopingCall(poll, graph, serv, pollFreq).start(.1)
 

	
 
top = root.winfo_toplevel()
 
top.wm_title(dmxclient._id)
 
top.bind("<Control-Key-q>",lambda ev: reactor.stop)
 
top.bind("<Destroy>",lambda ev: reactor.stop)
 
top.protocol('WM_DELETE_WINDOW', reactor.stop)
 
tksupport.install(ogl, ms=20)
 

	
 
if 0:
 
    import hotshot, hotshot.stats
 
    p = hotshot.Profile("/tmp/pro")
 
    p.runcall(reactor.run)
 
    p.close()
 
    hotshot.stats.load("/tmp/pro").sort_stats('time').print_stats()
 
else:
 
    reactor.run()
 
prof.run(reactor.run, profile=False)
light9/showconfig.py
Show inline comments
 
import time
 
from os import path,getenv
 
from rdflib.Graph import Graph
 
from rdflib import URIRef
 
from namespaces import MUS, L9
 

	
 
_config = (None, None, None) # graph, mtime, len
 
def getGraph():
 
    global _config
 
    configPath = path.join(root(), 'config.n3')
 
    
 
    now = time.time()
 
    diskMtime = path.getmtime(configPath)
 
    if diskMtime <= _config[1]:
 
        graph = _config[0]
 
        # i'm scared of some program modifying the graph, and then i
 
        # return that from a new getGraph call. Maybe I should be
 
        # copying it right here, or doing something clever with
 
        # contexts
 
        assert len(graph) == _config[2]
 
        return _config[0]
 

	
 
    graph = Graph()
 
    graph.parse(path.join(root(), 'config.n3'), format='n3')
 
    graph.parse(configPath, format='n3')
 
    _config = (graph, diskMtime, len(graph))
 
    return graph
 

	
 
def root():
 
    r = getenv("LIGHT9_SHOW")
 
    if r is None:
 
        raise OSError(
 
            "LIGHT9_SHOW env variable has not been set to the show root")
 
    return r
 

	
 
def songInMpd(song):
 

	
 
    """mpd only works off its own musicroot, which for me is
0 comments (0 inline, 0 general)