#!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()