def setRootTagRef(self, rootTagRef, keepExpanded=False): if rootTagRef is self.rootTagRef: return self.rootTagRef = rootTagRef if rootTagRef is None: self.treeView.setModel(None) self.model = None return self.model = NBTTreeModel(rootTagRef.rootTag) expanded = [] current = None if keepExpanded and self.proxyModel: current = self.proxyModel.data(self.treeView.currentIndex(), NBTTreeModel.NBTPathRole) def addExpanded(parentIndex): for row in range(self.proxyModel.rowCount(parentIndex)): index = self.proxyModel.index(row, 0, parentIndex) if self.treeView.isExpanded(index): expanded.append(self.proxyModel.data(index, NBTTreeModel.NBTPathRole)) addExpanded(index) addExpanded(QtCore.QModelIndex()) self.model.dataChanged.connect(self.dataDidChange) self.model.rowsInserted.connect(self.rowsDidInsert) self.model.rowsRemoved.connect(self.rowsDidRemove) self.proxyModel = NBTFilterProxyModel(self) self.proxyModel.setSourceModel(self.model) # self.proxyModel.setDynamicSortFilter(True) self.treeView.setModel(self.proxyModel) header = self.treeView.header() header.setStretchLastSection(False) header.setResizeMode(1, header.ResizeMode.Stretch) header.setResizeMode(2, header.ResizeMode.Fixed) header.setResizeMode(3, header.ResizeMode.Fixed) if keepExpanded: for path in expanded: matches = self.proxyModel.match(self.proxyModel.index(0, 0, QtCore.QModelIndex()), NBTTreeModel.NBTPathRole, path, flags=Qt.MatchExactly | Qt.MatchRecursive) for i in matches: self.treeView.setExpanded(i, True) if current is not None: matches = self.proxyModel.match(self.proxyModel.index(0, 0, QtCore.QModelIndex()), NBTTreeModel.NBTPathRole, current, flags=Qt.MatchExactly | Qt.MatchRecursive) if len(matches): self.treeView.setCurrentIndex(matches[0]) else: self.treeView.expandToDepth(0) self.treeView.sortByColumn(0, Qt.AscendingOrder) self.treeView.resizeColumnToContents(0) self.treeView.resizeColumnToContents(1) self.treeView.resizeColumnToContents(2) self.treeView.resizeColumnToContents(3)
def setSelectedEntity(self, index): if len(self.selectedEntities): model = NBTTreeModel(self.selectedEntities[index].raw_tag()) proxyModel = NBTFilterProxyModel(self) proxyModel.setSourceModel(model) proxyModel.setDynamicSortFilter(True) self.toolWidget.treeView.setModel(proxyModel) self.toolWidget.treeView.sortByColumn(0, Qt.AscendingOrder) else: self.toolWidget.treeView.setModel(None)
def setSelectedPlayer(self, name): try: self.selectedPlayer = player = self.editorSession.worldEditor.getPlayer( name) except PlayerNotFound: log.info("PlayerPanel: player %s not found!", name) self.treeView.setModel(None) else: model = NBTTreeModel(player.rootTag) self.treeView.setModel(model) self.treeView.sortByColumn(0, Qt.AscendingOrder) self.updatePlayerTab()
def setSelectedChunk(self, chunk): if self.selectionNode is None: self.selectionNode = SelectionBoxNode() self.selectionNode.filled = False self.selectionNode.color = (0.3, 0.3, 1, .3) self.overlayNode.addChild(self.selectionNode) self.selectionNode.selectionBox = chunk.bounds self.currentChunk = chunk self.updateChunkWidget() model = NBTTreeModel(chunk.rootTag) self.toolWidget.nbtTreeView.setModel(model) self.toolWidget.cxSpinBox.setValue(chunk.cx) self.toolWidget.czSpinBox.setValue(chunk.cz)