#!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, urllib
from gi.repository import Gtk
from run_local import log
from light9 import showconfig, networking
from light9.rdfdb import clientsession
from light9.rdfdb.syncedgraph import SyncedGraph
import cyclone.httpclient
class App(object):
def __init__(self):
parser = optparse.OptionParser()
parser.set_usage("%prog [opts]")
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("inputdemo")
self.graph.initiallySynced.addCallback(lambda _: self.launch())
self.curve = 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):
f = cyclone.httpclient.fetch(
networking.curveCalc.path('liveInputPoint'),
method='POST', timeout=1,
postdata=urllib.urlencode({'curve': self.curve,
'value': str(scale.get_value())}))
@f.addCallback
def cb(result):
if result.code // 100 != 2:
log.error("curveCalc said %s: %s", result.code, result.body)
@f.addErrback
def eb(err):
print "err", err
App()