Files @ 46a8f5a8a4dd
Branch filter:

Location: light9/bin/inputdemo

drewp@bigasterisk.com
fix collector display to show real values from py
#!bin/python
import sys
sys.path.append('/usr/lib/python2.7/dist-packages')  # For gtk
from twisted.internet import gtk3reactor
gtk3reactor.install()
from twisted.internet import reactor
from rdflib import URIRef
import optparse, logging, time
from gi.repository import Gtk
from run_local import log
from light9 import networking
from light9 import clientsession
from rdfdb.syncedgraph import SyncedGraph
from light9.curvecalc.client import sendLiveInputPoint


class App(object):

    def __init__(self):
        parser = optparse.OptionParser()
        parser.set_usage("%prog [opts] [curve uri]")
        parser.add_option("--debug", action="store_true", help="log at DEBUG")
        clientsession.add_option(parser)
        opts, args = parser.parse_args()

        log.setLevel(logging.DEBUG if opts.debug else logging.INFO)

        self.session = clientsession.getUri('inputdemo', opts)
        self.graph = SyncedGraph(networking.rdfdb.url, "inputdemo")

        self.graph.initiallySynced.addCallback(lambda _: self.launch())

        self.curve = args[0] if args else URIRef(
            'http://light9.bigasterisk.com/show/dance2014/song1/curve/c-1401259747.675542'
        )
        print("sending points on curve %s" % self.curve)

        reactor.run()

    def launch(self):
        win = Gtk.Window()

        slider = Gtk.Scale.new_with_range(orientation=Gtk.Orientation.VERTICAL,
                                          min=0,
                                          max=1,
                                          step=.001)
        slider.props.inverted = True
        slider.connect('value-changed', self.onChanged)

        win.add(slider)
        win.parse_geometry('50x250')
        win.connect("delete-event", lambda *a: reactor.crash())
        win.connect("destroy", lambda *a: reactor.crash())
        win.show_all()

    def onChanged(self, scale):
        t1 = time.time()
        d = sendLiveInputPoint(self.curve, scale.get_value())

        @d.addCallback
        def done(result):
            print("posted in %.1f ms" % (1000 * (time.time() - t1)))


App()