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
|
from PyQt4 import QtCore
from core.modules.module_registry import get_module_registry
from packages.vtk.vtkcell import QVTKWidget
from packages.spreadsheet.basic_widgets import SpreadsheetCell, CellLocation
from packages.spreadsheet.spreadsheet_cell import QCellWidget
from PVBase import PVModule
import paraview.simple as pvsp
import paraview.pvfilters
import vtk
class PVCell(SpreadsheetCell):
def __init__(self):
SpreadsheetCell.__init__(self)
self.cellWidget = None
def compute(self):
""" compute() -> None
Dispatch the vtkRenderer to the actual rendering widget
"""
proxies = self.forceGetInputListFromPort('Proxy')
self.cellWidget = self.displayAndWait(QParaViewWidget, (proxies,))
class QParaViewWidget(QVTKWidget):
def __init__(self, parent=None, f=QtCore.Qt.WindowFlags()):
QVTKWidget.__init__(self, parent, f)
self.view = None
def updateContents(self, inputPorts):
if self.view==None:
self.view = pvsp.CreateRenderView()
renWin = self.view.GetRenderWindow()
self.SetRenderWindow(renWin)
iren = renWin.GetInteractor()
print type(iren)
iren.SetNonInteractiveRenderDelay(0)
iren.SetInteractorStyle(vtk.vtkInteractorStyleTrackballCamera())
(representations, ) = inputPorts
self.view.Representations = []
for r in representations:
self.view.Representations.append(r.pvInstance)
self.view.ResetCamera()
self.view.StillRender()
QCellWidget.updateContents(self, inputPorts)
def saveToPNG(self, filename):
""" saveToPNG(filename: str) -> filename or vtkUnsignedCharArray
Save the current widget contents to an image file. If
str==None, then it returns the vtkUnsignedCharArray containing
the PNG image. Otherwise, the filename is returned.
"""
image = self.view.CaptureWindow(1)
image.UnRegister(None)
writer = vtk.vtkPNGWriter()
writer.SetInput(image)
if filename!=None:
writer.SetFileName(filename)
else:
writer.WriteToMemoryOn()
writer.Write()
if filename:
return filename
else:
return writer.GetResult()
def deleteLater(self):
QCellWidget.deleteLater(self)
def registerSelf():
registry = get_module_registry()
registry.add_module(PVCell)
registry.add_input_port(PVCell, "Location", CellLocation)
registry.add_input_port(PVCell, "Proxy", PVModule)
registry.add_output_port(PVCell, "self", PVCell)
|