File: pvpytonapp.py

package info (click to toggle)
paraview 5.1.2%2Bdfsg1-2
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 221,108 kB
  • ctags: 236,092
  • sloc: cpp: 2,416,026; ansic: 190,891; python: 99,856; xml: 81,001; tcl: 46,915; yacc: 5,039; java: 4,413; perl: 3,108; sh: 1,974; lex: 1,926; f90: 748; asm: 471; pascal: 228; makefile: 198; objc: 83; fortran: 31
file content (85 lines) | stat: -rw-r--r-- 2,796 bytes parent folder | download | duplicates (9)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
from PyQt4 import QtCore, QtGui, QtNetwork
from paraview import simple as pvsimple
from vtk.qt4 import QVTKRenderWindowInteractor

class ParaViewClient(QtCore.QObject):

    def __init__(self, port, serverHost=None, serverPort=11111):

        self.tcpServer = QtNetwork.QTcpServer()
        if not self.tcpServer.listen(QtNetwork.QHostAddress.Any, port):
            print 'Could not list on port %d' % port
            return
        self.tcpServer.newConnection.connect(self.acceptClient)

        self.timer = QtCore.QTimer()
        self.timer.setSingleShot(True)
        self.timer.timeout.connect(self.render)

        if serverHost:
            pvsimple.Connect(serverHost, serverPort)
        self.createPipeline()

        self.setupManipulators()

        self.widget = \
            QVTKRenderWindowInteractor.QVTKRenderWindowInteractor(\
            rw=self.renderView.GetRenderWindow(),
            iren=self.renderView.GetInteractor())
        self.widget.Initialize()
        self.widget.Start()
        self.widget.show()

        pvsimple.Render(self.renderView)

    def setupManipulators(self):
        cm = self.renderView.GetProperty("CameraManipulators")
        cm.AddProxy(pvsimple.servermanager.rendering.TrackballRotate().SMProxy)

        zoom = pvsimple.servermanager.rendering.TrackballZoom()
        zoom.Button = 'Right Button'
        cm.AddProxy(zoom.SMProxy)

        pan = pvsimple.servermanager.rendering.TrackballPan1()
        pan.Button = 'Center Button'
        cm.AddProxy(pan.SMProxy)

        pan2 = pvsimple.servermanager.rendering.TrackballPan1()
        pan2.Button = 'Left Button'
        pan2.Shift = True
        pan2.Control = True
        cm.AddProxy(pan2.SMProxy)

        self.renderView.UpdateVTKObjects()

    def createPipeline(self):
        pass

    def acceptClient(self):
        self.connection = self.tcpServer.nextPendingConnection()
        self.connection.readyRead.connect(self.readData)
        self.tcpServer.close()

    def render(self):
        pvsimple.Render(self.renderView)

    def readData(self):
        instr = QtCore.QDataStream(self.connection)
        if self.connection.bytesAvailable >= 8:
            self.renderView.GetActiveCamera().Azimuth(instr.readDouble())
            if not self.timer.isActive():
                self.timer.start(30)
        if self.connection.bytesAvailable() >= 8:
            QtCore.QTimer.singleShot(30, self.readData)

if __name__ == '__main__':
    class SimpleClient(ParaViewClient):
        def createPipeline(self):
            self.renderView = pvsimple.CreateRenderView()

            pvsimple.Sphere()
            pvsimple.Show()
    app = QtGui.QApplication(['ParaView Python App'])
    #s = ParaViewClient(12345, 'localhost')
    s = SimpleClient(12345)
    app.exec_()