PyMaxExplorer/qtViewModels.py
2 view models for 3ds Max object tree
4 from PySide2
import QtCore
7 class vmodelMaxObjects(QtCore.QAbstractItemModel):
8 def __init__(self, root, parent = None, header = "Scene objects tree"):
9 super(vmodelMaxObjects, self).__init__(parent)
13 def index(self, row, column, parent):
14 n = self.getNode(parent).child(row)
16 return self.createIndex(row, column, n)
18 return QtCore.QModelIndex()
20 def getNode(self, index):
21 if not index.isValid()
or not index.internalPointer():
23 return index.internalPointer()
25 def columnCount(self, parent):
28 def rowCount(self, parent):
29 parentnode = self._root
31 parentnode = parent.internalPointer()
32 return parentnode.numChildren()
34 def data(self, index, role):
35 if index.isValid()
and index.internalPointer()
and role == QtCore.Qt.DisplayRole
and index.column() == 0:
36 return index.internalPointer()._name
38 def setData(self, index, value, role = QtCore.Qt.EditRole):
39 if not index.isValid()
or not index.internalPointer()
and role != QtCore.Qt.EditRole:
40 node.setData(index.column(), value)
41 self.dataChanged.emit(index, index)
45 def headerData(self, section, orientation, role):
46 if role == QtCore.Qt.DisplayRole
and section == 0:
50 def flags(self, index):
51 return QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEditable
53 def parent(self, index):
54 parentNode = self.getNode(index).parent()
55 if parentNode == self._root:
56 return QtCore.QModelIndex()
57 return self.createIndex(parentNode.row(), 0, parentNode)