Source code for director.opendatahandler

import os
from director import ioUtils
from director import objectmodel as om
from director import visualization as vis
from PythonQt import QtGui


[docs]class OpenDataHandler(object): def __init__(self, mainWindowApp): self.app = mainWindowApp self.rootFolderName = 'data files' self.openAction = QtGui.QAction('&Open Data...', self.app.fileMenu) self.app.fileMenu.insertAction(self.app.quitAction, self.openAction) self.app.fileMenu.insertSeparator(self.app.quitAction) self.openAction.setShortcut(QtGui.QKeySequence('Ctrl+O')) self.openAction.connect('triggered()', self.onOpenDataFile)
[docs] def getRootFolder(self): return om.getOrCreateContainer(self.rootFolderName)
[docs] def onOpenVrml(self, filename): meshes, color = ioUtils.readVrml(filename) folder = om.getOrCreateContainer(os.path.basename(filename), parentObj=self.getRootFolder()) for i, pair in enumerate(zip(meshes, color)): mesh, color = pair obj = vis.showPolyData(mesh, 'mesh %d' % i, color=color, parent=folder) vis.addChildFrame(obj)
[docs] def openGeometry(self, filename): if filename.lower().endswith('wrl'): self.onOpenVrml(filename) return polyData = ioUtils.readPolyData(filename) if not polyData or not polyData.GetNumberOfPoints(): self.app.showErrorMessage('Failed to read any data from file: %s' % filename, title='Reader error') return obj = vis.showPolyData(polyData, os.path.basename(filename), parent=self.getRootFolder()) vis.addChildFrame(obj)
[docs] def onOpenDataFile(self): fileFilters = 'Data Files (*.obj *.ply *.stl *.vtk *.vtp *.wrl)'; filename = QtGui.QFileDialog.getOpenFileName(self.app.mainWindow, 'Open...', self.getOpenDataDirectory(), fileFilters) if not filename: return self.storeOpenDataDirectory(filename) self.openGeometry(filename)
[docs] def getOpenDataDirectory(self): return self.app.settings.value('OpenDataDir') or os.path.expanduser('~')
[docs] def storeOpenDataDirectory(self, filename): if os.path.isfile(filename): filename = os.path.dirname(filename) if os.path.isdir(filename): self.app.settings.setValue('OpenDataDir', filename)