Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

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

import os 

from director import ioUtils 

from director import objectmodel as om 

from director import visualization as vis 

from PythonQt import QtGui 

 

 

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) 

 

 

    def getRootFolder(self): 

        return om.getOrCreateContainer(self.rootFolderName) 

 

    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) 

 

    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) 

 

    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) 

 

    def getOpenDataDirectory(self): 

        return self.app.settings.value('OpenDataDir') or os.path.expanduser('~') 

 

    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)