diff --git a/bin/lightsim b/bin/lightsim --- a/bin/lightsim +++ b/bin/lightsim @@ -2,31 +2,30 @@ from __future__ import division import run_local +import xmlrpclib, sys, logging + +sys.path.append("lib") +import qt4reactor +qt4reactor.install() from rdflib import Literal, URIRef -from twisted.internet import reactor, tksupport +from twisted.internet import reactor from twisted.internet.task import LoopingCall from twisted.web.xmlrpc import Proxy -import xmlrpclib, sys, logging +from louie import dispatcher +from PyQt4 import QtCore, QtGui, QtOpenGL +from OpenGL.GL import * +from OpenGL.GLU import * + +from light9 import networking, Patch, showconfig, dmxclient, updatefreq, prof +from light9.namespaces import L9 +from lightsim.openglsim import Surface + 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, 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 - -def poll(graph, serv, pollFreq): +def poll(graph, serv, pollFreq, oglSurface): pollFreq.update() dispatcher.send("status", key="pollFreq", value=str(pollFreq)) d = serv.callRemote("currentlevels", dmxclient._id) @@ -45,11 +44,11 @@ def poll(graph, serv, pollFreq): for imgPath in graph.objects(lyr, L9['path']): level[str(imgPath)] = lev - ogl.newLevels(levels=level) + oglSurface.newLevels(levels=level) d.addCallback(received) return d -class StatusKeys(tk.Frame): +class StatusKeys(object): # watch out- this might be an accidental redo of what curvecalc # has. Or, maybe CC should use this obj def __init__(self, master): @@ -69,31 +68,51 @@ class StatusKeys(tk.Frame): row, lab = self.row[key] lab.config(text=value) -root = tk.Frame() -root.pack(expand=True, fill='both') -pollFreq = updatefreq.Updatefreq(samples=5) -graph = showconfig.getGraph() -filenames = [] -for lyr in graph.objects(None, L9['previewLayer']): - for p in graph.objects(lyr, L9['path']): - filenames.append(str(p)) - -ogl = Surface(root, filenames, width=120, height=80, imgRescaleTo=128) -ogl.pack(side='top', expand=True, fill='both') - -sk = StatusKeys(root) -sk.pack(side='top', fill='x') +class Window(QtGui.QMainWindow): + def __init__(self, filenames): + QtGui.QMainWindow.__init__(self, None) -serv = Proxy(networking.dmxServerUrl()) -LoopingCall(poll, graph, serv, pollFreq).start(.1) + self.w = QtGui.QWidget() + self.setCentralWidget(self.w) + + self.glWidget = Surface(self, filenames, + width=120*3, height=80*3, + imgRescaleTo=128) + + self.glWidget.newLevels(levels={ + "lightsim/skyline/front-left.png" : .4, + "lightsim/skyline/front-right.png" : .8}) + + mainLayout = QtGui.QHBoxLayout() + mainLayout.addWidget(self.glWidget) + self.w.setLayout(mainLayout) + + self.setWindowTitle(dmxclient._id) -top = root.winfo_toplevel() -top.wm_title(dmxclient._id) -top.bind("",lambda ev: reactor.stop) -top.bind("",lambda ev: reactor.stop) -top.protocol('WM_DELETE_WINDOW', reactor.stop) -tksupport.install(ogl, ms=20) +if __name__ == '__main__': + app = reactor.qApp + + graph = showconfig.getGraph() + filenames = [] + for lyr in graph.objects(None, L9['previewLayer']): + for p in graph.objects(lyr, L9['path']): + filenames.append(str(p)) + filenames.append("lightsim/skyline/front-left.png") # test + filenames.append("lightsim/skyline/front-right.png") # test -prof.run(reactor.run, profile=False) + window = Window(filenames) + window.show() + + serv = Proxy(networking.dmxServerUrl()) + pollFreq = updatefreq.Updatefreq(samples=5) + LoopingCall(poll, graph, serv, pollFreq, window.glWidget).start(.1) + + reactor.run() + + +###################################################### +#sk = StatusKeys(root) +#sk.pack(side='top', fill='x') +#prof.run(reactor.run, profile=False)