Mercurial > code > home > repos > light9
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 |
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) |