annotate bin/lightsim @ 356:c6aabf5bd3bc

big KC speedup from not reloading config.n3 constantly
author Drew Perttula <drewp@bigasterisk.com>
date Mon, 11 Jun 2007 02:26:49 +0000
parents 941cfe1e1691
children 60b49f6c2027
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
352
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1 #!/usr/bin/python
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
2
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
3 from __future__ import division
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
4 import run_local
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
5
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
6 from rdflib import Literal, URIRef
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
7 from twisted.internet import reactor, tksupport
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
8 from twisted.internet.task import LoopingCall
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
9 from twisted.web.xmlrpc import Proxy
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
10 import xmlrpclib, sys, logging
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
11 log = logging.getLogger()
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
12 logging.basicConfig(format="%(asctime)s %(levelname)-5s %(name)s %(filename)s:%(lineno)d: %(message)s")
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
13 log.setLevel(logging.DEBUG)
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
14 import Tkinter as tk
356
c6aabf5bd3bc big KC speedup from not reloading config.n3 constantly
Drew Perttula <drewp@bigasterisk.com>
parents: 353
diff changeset
15 from light9 import networking, Patch, showconfig, dmxclient, updatefreq, prof
352
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
16 from light9.namespaces import L9
353
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
17 from louie import dispatcher
352
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
18
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
19 try:
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
20 from OpenGL import Tk as Togl
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
21 from OpenGL.GL import *
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
22 except ImportError:
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
23 sys.path.append("/usr/lib/python2.4/site-packages/OpenGL/Tk/linux2-tk8.4")
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
24 from OpenGL.GL import *
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
25 import Togl
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
26
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
27 from lightsim.openglsim import Surface
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
28
353
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
29 def poll(graph, serv, pollFreq):
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
30 pollFreq.update()
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
31 dispatcher.send("status", key="pollFreq", value=str(pollFreq))
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
32 d = serv.callRemote("currentlevels", dmxclient._id)
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
33 def received(dmxLevels):
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
34 level = {} # filename : level
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
35 for i, lev in enumerate(dmxLevels):
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
36 if lev == 0:
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
37 continue
352
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
38
353
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
39 try:
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
40 chan = Patch.get_channel_uri(Patch.get_channel_name(i + 1))
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
41 except KeyError:
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
42 continue
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
43
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
44 for lyr in graph.objects(chan, L9['previewLayer']):
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
45 for imgPath in graph.objects(lyr, L9['path']):
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
46 level[str(imgPath)] = lev
352
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
47
353
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
48 ogl.newLevels(levels=level)
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
49 d.addCallback(received)
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
50 return d
352
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
51
353
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
52 class StatusKeys(tk.Frame):
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
53 # watch out- this might be an accidental redo of what curvecalc
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
54 # has. Or, maybe CC should use this obj
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
55 def __init__(self, master):
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
56 tk.Frame.__init__(self, master)
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
57 dispatcher.connect(self.status, "status")
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
58 self.row = {} # key name : (Frame, value Label)
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
59
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
60 def status(self, key, value):
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
61 if key not in self.row:
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
62 f = tk.Frame(self)
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
63 f.pack(side='top')
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
64 tk.Label(f, text=key, font="arial 8").pack(side='left')
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
65 l = tk.Label(f, text=value, font="arial 8")
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
66 l.pack(side='left')
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
67 self.row[key] = (f, l)
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
68 else:
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
69 row, lab = self.row[key]
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
70 lab.config(text=value)
352
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
71
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
72 root = tk.Frame()
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
73 root.pack(expand=True, fill='both')
353
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
74 pollFreq = updatefreq.Updatefreq(samples=5)
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
75 graph = showconfig.getGraph()
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
76 filenames = []
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
77 for lyr in graph.objects(None, L9['previewLayer']):
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
78 for p in graph.objects(lyr, L9['path']):
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
79 filenames.append(str(p))
352
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
80
353
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
81 ogl = Surface(root, filenames, width=120, height=80, imgRescaleTo=128)
352
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
82 ogl.pack(side='top', expand=True, fill='both')
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
83
353
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
84 sk = StatusKeys(root)
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
85 sk.pack(side='top', fill='x')
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
86
352
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
87
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
88
353
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
89 serv = Proxy(networking.dmxServerUrl())
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
90 LoopingCall(poll, graph, serv, pollFreq).start(.1)
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
91
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
92 top = root.winfo_toplevel()
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
93 top.wm_title(dmxclient._id)
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
94 top.bind("<Control-Key-q>",lambda ev: reactor.stop)
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
95 top.bind("<Destroy>",lambda ev: reactor.stop)
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
96 top.protocol('WM_DELETE_WINDOW', reactor.stop)
352
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
97 tksupport.install(ogl, ms=20)
353
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
98
356
c6aabf5bd3bc big KC speedup from not reloading config.n3 constantly
Drew Perttula <drewp@bigasterisk.com>
parents: 353
diff changeset
99 prof.run(reactor.run, profile=False)