Files
@ 11bc3d32f453
Branch filter:
Location: light9/bin/vidref - annotation
11bc3d32f453
2.4 KiB
text/plain
layout on effectSequencer display
Ignore-this: d0ec4310bc6abb583add94ef93c12b1c
Ignore-this: d0ec4310bc6abb583add94ef93c12b1c
b5efddd80dad d96c09669b40 b281ee32c785 7772cc48e016 89adbbb06bcd 89adbbb06bcd 1d9547f90737 d3f8333bc142 d3f8333bc142 1d9547f90737 087f6cbe4b22 3c523c71da29 b0337e6f68f1 1d9547f90737 6fa4288da8a6 e20419d637d5 7772cc48e016 7772cc48e016 7772cc48e016 cfd5d5be1b50 cfd5d5be1b50 7772cc48e016 cfd5d5be1b50 cfd5d5be1b50 2ee97997ee56 6f1eb6437c96 7772cc48e016 1d9547f90737 7772cc48e016 1d9547f90737 1d9547f90737 1d9547f90737 1d9547f90737 1d9547f90737 1d9547f90737 1d9547f90737 1d9547f90737 1d9547f90737 1d9547f90737 7772cc48e016 1d9547f90737 1d9547f90737 1d9547f90737 3c523c71da29 1d9547f90737 1d9547f90737 1d9547f90737 1d9547f90737 7772cc48e016 1d9547f90737 1d9547f90737 1d9547f90737 6b5e079b3dbe 6b5e079b3dbe 7772cc48e016 6b5e079b3dbe 6b5e079b3dbe 6b5e079b3dbe 6b5e079b3dbe 6b5e079b3dbe 6b5e079b3dbe 6b5e079b3dbe 6b5e079b3dbe a38955ba6f40 087f6cbe4b22 087f6cbe4b22 1d9547f90737 1d9547f90737 7772cc48e016 7772cc48e016 7772cc48e016 7772cc48e016 7772cc48e016 7772cc48e016 7772cc48e016 7772cc48e016 7772cc48e016 7772cc48e016 7772cc48e016 7772cc48e016 7772cc48e016 7772cc48e016 7772cc48e016 1d9547f90737 b0337e6f68f1 89adbbb06bcd | #!bin/python
from run_local import log
import sys
sys.path.append('/usr/lib/python2.7/dist-packages') # For gtk
from twisted.internet import gtk2reactor
gtk2reactor.install()
from twisted.internet import reactor, defer
import gobject
gobject.threads_init()
import sys, logging, optparse, json
import cyclone.web, cyclone.httpclient, cyclone.websocket
from light9 import networking
from light9.vidref.main import Gui
from light9.vidref.replay import snapshotDir
from rdfdb.syncedgraph import SyncedGraph
# find replay dirs correctly. show multiple
# replays. trash. reorder/pin. dump takes that are too short; they're
# just from seeking
parser = optparse.OptionParser()
parser.add_option("-v", "--verbose", action="store_true", help="logging.DEBUG")
(options, args) = parser.parse_args()
log.setLevel(logging.DEBUG if options.verbose else logging.INFO)
class Snapshot(cyclone.web.RequestHandler):
@defer.inlineCallbacks
def post(self):
# save next pic
# return /snapshot/path
try:
outputFilename = yield self.settings.gui.snapshot()
assert outputFilename.startswith(snapshotDir())
out = networking.vidref.path(
"snapshot/%s" % outputFilename[len(snapshotDir()):].lstrip('/'))
self.write(json.dumps({'snapshot': out}))
self.set_header("Location", out)
self.set_status(303)
except Exception:
import traceback
traceback.print_exc()
raise
class SnapshotPic(cyclone.web.StaticFileHandler):
pass
class Time(cyclone.web.RequestHandler):
def put(self):
body = json.loads(self.request.body)
t = body['t']
source = body['source']
self.settings.gui.incomingTime(t, source)
self.set_status(202)
graph = SyncedGraph(networking.rdfdb.url, "vidref")
gui = Gui(graph)
port = networking.vidref.port
reactor.listenTCP(
port,
cyclone.web.Application(handlers=[
(r'/()', cyclone.web.StaticFileHandler, {
'path': 'light9/vidref',
'default_filename': 'vidref.html'
}),
(r'/snapshot', Snapshot),
(r'/snapshot/(.*)', SnapshotPic, {
"path": snapshotDir()
}),
(r'/time', Time),
],
debug=True,
gui=gui))
log.info("serving on %s" % port)
reactor.run()
|