Пример #1
0
    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)
Пример #2
0
    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)
Пример #3
0
    def setModel(self, model):
        self.model = model

        proxyModel = NBTFilterProxyModel(self)
        proxyModel.setSourceModel(model)
        proxyModel.setDynamicSortFilter(True)

        self.treeView.setModel(model)

        self.treeView.sortByColumn(0, Qt.AscendingOrder)
        self.treeView.expandToDepth(0)
        self.treeView.resizeColumnToContents(0)
        self.treeView.resizeColumnToContents(1)