annotate bin/lightsim @ 1858:7772cc48e016

reformat all python Ignore-this: 1135b78893f8b3d31badddda7f45678f
author drewp@bigasterisk.com
date Tue, 21 May 2019 23:56:12 +0000
parents b5efddd80dad
children f066d6e874db
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
729
b5efddd80dad update more shbang lines
Drew Perttula <drewp@bigasterisk.com>
parents: 623
diff changeset
1 #!bin/python
352
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
466
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
5 import sys, logging
463
60b49f6c2027 start porting lightsim to qt
drewp@bigasterisk.com
parents: 356
diff changeset
6
60b49f6c2027 start porting lightsim to qt
drewp@bigasterisk.com
parents: 356
diff changeset
7 sys.path.append("lib")
60b49f6c2027 start porting lightsim to qt
drewp@bigasterisk.com
parents: 356
diff changeset
8 import qt4reactor
60b49f6c2027 start porting lightsim to qt
drewp@bigasterisk.com
parents: 356
diff changeset
9 qt4reactor.install()
352
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
10
463
60b49f6c2027 start porting lightsim to qt
drewp@bigasterisk.com
parents: 356
diff changeset
11 from twisted.internet import reactor
352
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
12 from twisted.internet.task import LoopingCall
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
13 from twisted.web.xmlrpc import Proxy
463
60b49f6c2027 start porting lightsim to qt
drewp@bigasterisk.com
parents: 356
diff changeset
14 from louie import dispatcher
466
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
15 from PyQt4.QtGui import QWidget, QLabel, QVBoxLayout, QHBoxLayout, QMainWindow
463
60b49f6c2027 start porting lightsim to qt
drewp@bigasterisk.com
parents: 356
diff changeset
16 from OpenGL.GL import *
60b49f6c2027 start porting lightsim to qt
drewp@bigasterisk.com
parents: 356
diff changeset
17 from OpenGL.GLU import *
60b49f6c2027 start porting lightsim to qt
drewp@bigasterisk.com
parents: 356
diff changeset
18
60b49f6c2027 start porting lightsim to qt
drewp@bigasterisk.com
parents: 356
diff changeset
19 from light9 import networking, Patch, showconfig, dmxclient, updatefreq, prof
60b49f6c2027 start porting lightsim to qt
drewp@bigasterisk.com
parents: 356
diff changeset
20 from light9.namespaces import L9
60b49f6c2027 start porting lightsim to qt
drewp@bigasterisk.com
parents: 356
diff changeset
21 from lightsim.openglsim import Surface
60b49f6c2027 start porting lightsim to qt
drewp@bigasterisk.com
parents: 356
diff changeset
22
352
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
23 log = logging.getLogger()
1858
7772cc48e016 reformat all python
drewp@bigasterisk.com
parents: 729
diff changeset
24 logging.basicConfig(
7772cc48e016 reformat all python
drewp@bigasterisk.com
parents: 729
diff changeset
25 format=
7772cc48e016 reformat all python
drewp@bigasterisk.com
parents: 729
diff changeset
26 "%(asctime)s %(levelname)-5s %(name)s %(filename)s:%(lineno)d: %(message)s")
352
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
27 log.setLevel(logging.DEBUG)
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
28
1858
7772cc48e016 reformat all python
drewp@bigasterisk.com
parents: 729
diff changeset
29
466
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
30 def filenamesForChan(graph, chan):
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
31 for lyr in graph.objects(chan, L9['previewLayer']):
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
32 for imgPath in graph.objects(lyr, L9['path']):
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
33 yield imgPath
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
34
1858
7772cc48e016 reformat all python
drewp@bigasterisk.com
parents: 729
diff changeset
35
466
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
36 _lastLevels = None
1858
7772cc48e016 reformat all python
drewp@bigasterisk.com
parents: 729
diff changeset
37
7772cc48e016 reformat all python
drewp@bigasterisk.com
parents: 729
diff changeset
38
463
60b49f6c2027 start porting lightsim to qt
drewp@bigasterisk.com
parents: 356
diff changeset
39 def poll(graph, serv, pollFreq, oglSurface):
353
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
40 pollFreq.update()
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
41 dispatcher.send("status", key="pollFreq", value=str(pollFreq))
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
42 d = serv.callRemote("currentlevels", dmxclient._id)
1858
7772cc48e016 reformat all python
drewp@bigasterisk.com
parents: 729
diff changeset
43
353
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
44 def received(dmxLevels):
466
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
45 global _lastLevels
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
46 if dmxLevels == _lastLevels:
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
47 return
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
48 _lastLevels = dmxLevels
468
2d9c85c98be6 start new baypiggies talk
drewp@bigasterisk.com
parents: 466
diff changeset
49
1858
7772cc48e016 reformat all python
drewp@bigasterisk.com
parents: 729
diff changeset
50 level = {} # filename : level
353
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
51 for i, lev in enumerate(dmxLevels):
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
52 if lev == 0:
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
53 continue
352
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
54
353
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
55 try:
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
56 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
57 except KeyError:
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
58 continue
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
59
466
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
60 for imgPath in filenamesForChan(graph, chan):
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
61 level[str(imgPath)] = lev
352
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
62
463
60b49f6c2027 start porting lightsim to qt
drewp@bigasterisk.com
parents: 356
diff changeset
63 oglSurface.newLevels(levels=level)
1858
7772cc48e016 reformat all python
drewp@bigasterisk.com
parents: 729
diff changeset
64
353
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
65 d.addCallback(received)
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
66 return d
352
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
67
1858
7772cc48e016 reformat all python
drewp@bigasterisk.com
parents: 729
diff changeset
68
466
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
69 class StatusKeys(QWidget):
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
70 """listens for dispatcher signal 'status' and displays the key/value args"""
1858
7772cc48e016 reformat all python
drewp@bigasterisk.com
parents: 729
diff changeset
71
466
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
72 def __init__(self, parent):
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
73 QWidget.__init__(self)
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
74 self.layout = QVBoxLayout()
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
75 self.setLayout(self.layout)
1858
7772cc48e016 reformat all python
drewp@bigasterisk.com
parents: 729
diff changeset
76 self.row = {} # key name : (Frame, value Label)
353
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
77 dispatcher.connect(self.status, "status")
1858
7772cc48e016 reformat all python
drewp@bigasterisk.com
parents: 729
diff changeset
78
353
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
79 def status(self, key, value):
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
80 if key not in self.row:
466
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
81 row = QWidget()
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
82 self.layout.addWidget(row)
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
83 cols = QHBoxLayout()
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
84 row.setLayout(cols)
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
85 lab1 = QLabel(key)
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
86 lab2 = QLabel(value)
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
87 cols.addWidget(lab1)
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
88 cols.addWidget(lab2)
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
89 self.row[key] = lab2
353
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
90 else:
466
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
91 lab = self.row[key]
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
92 lab.setText(value)
353
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
93
1858
7772cc48e016 reformat all python
drewp@bigasterisk.com
parents: 729
diff changeset
94
466
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
95 class Window(QMainWindow):
1858
7772cc48e016 reformat all python
drewp@bigasterisk.com
parents: 729
diff changeset
96
463
60b49f6c2027 start porting lightsim to qt
drewp@bigasterisk.com
parents: 356
diff changeset
97 def __init__(self, filenames):
466
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
98 QMainWindow.__init__(self, None)
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
99 self.setWindowTitle(dmxclient._id)
352
9d1f323fb3d3 new bin/lightsim tied to dmxserver
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
100
466
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
101 w = QWidget()
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
102 self.setCentralWidget(w)
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
103 mainLayout = QVBoxLayout()
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
104 w.setLayout(mainLayout)
1858
7772cc48e016 reformat all python
drewp@bigasterisk.com
parents: 729
diff changeset
105
7772cc48e016 reformat all python
drewp@bigasterisk.com
parents: 729
diff changeset
106 self.glWidget = Surface(self, filenames, imgRescaleTo=128 * 2)
466
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
107
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
108 mainLayout.addWidget(self.glWidget)
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
109
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
110 status = StatusKeys(mainLayout)
1858
7772cc48e016 reformat all python
drewp@bigasterisk.com
parents: 729
diff changeset
111 mainLayout.addWidget(status)
7772cc48e016 reformat all python
drewp@bigasterisk.com
parents: 729
diff changeset
112
463
60b49f6c2027 start porting lightsim to qt
drewp@bigasterisk.com
parents: 356
diff changeset
113
466
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
114 def requiredImages(graph):
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
115 """filenames that we'll need to show, based on a config structure
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
116 like this:
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
117 ch:frontLeft a :Channel;
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
118 :previewLayer [ :path "lightsim/skyline/front-left.png" ] .
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
119 """
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
120 filenames = []
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
121 for lyr in graph.objects(None, L9['previewLayer']):
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
122 for p in graph.objects(lyr, L9['path']):
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
123 filenames.append(str(p))
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
124 return filenames
353
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
125
1858
7772cc48e016 reformat all python
drewp@bigasterisk.com
parents: 729
diff changeset
126
463
60b49f6c2027 start porting lightsim to qt
drewp@bigasterisk.com
parents: 356
diff changeset
127 if __name__ == '__main__':
60b49f6c2027 start porting lightsim to qt
drewp@bigasterisk.com
parents: 356
diff changeset
128 app = reactor.qApp
60b49f6c2027 start porting lightsim to qt
drewp@bigasterisk.com
parents: 356
diff changeset
129
60b49f6c2027 start porting lightsim to qt
drewp@bigasterisk.com
parents: 356
diff changeset
130 graph = showconfig.getGraph()
353
941cfe1e1691 lightsim now reads levels from dmxserver
drewp@bigasterisk.com
parents: 352
diff changeset
131
466
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
132 window = Window(requiredImages(graph))
463
60b49f6c2027 start porting lightsim to qt
drewp@bigasterisk.com
parents: 356
diff changeset
133 window.show()
60b49f6c2027 start porting lightsim to qt
drewp@bigasterisk.com
parents: 356
diff changeset
134
623
46d319974176 move networking settings to config.n3
drewp@bigasterisk.com
parents: 468
diff changeset
135 serv = Proxy(networking.dmxServer.url)
466
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
136 pollFreq = updatefreq.Updatefreq()
f69ba5ac17c5 qt version of lightsim now works
drewp@bigasterisk.com
parents: 463
diff changeset
137 LoopingCall(poll, graph, serv, pollFreq, window.glWidget).start(.05)
463
60b49f6c2027 start porting lightsim to qt
drewp@bigasterisk.com
parents: 356
diff changeset
138
60b49f6c2027 start porting lightsim to qt
drewp@bigasterisk.com
parents: 356
diff changeset
139 reactor.run()