示例#1
0
    def parent(self, index):
        if not index.isValid():
            return QModelIndex()
        parent = index.internalPointer()
        if parent == Root:
            return QModelIndex()

        grandparent, row = self.model.index_manager.get_parent_and_row(parent)
        return self.createIndex(row, 0, grandparent)
示例#2
0
    def rowCount(self, index=QModelIndex()):
        row_index = self._to_row_index(index)
        try:
            if self.model.can_have_children(row_index):
                return self.model.get_row_count(row_index)
        except Exception:
            logger.exception("Error in rowCount")

        return 0
示例#3
0
    def columnCount(self, index=QModelIndex()):
        row_index = self._to_row_index(index)
        try:
            # the number of columns is constant; leaf rows return 0
            if self.model.can_have_children(row_index):
                return self.model.get_column_count() + 1
        except Exception:
            logger.exception("Error in columnCount")

        return 0
示例#4
0
    def _to_model_index(self, row_index, column_index):
        if len(row_index) == 0:
            return QModelIndex()
        index = self.model.index_manager.from_sequence(row_index[:-1])
        row = row_index[-1]
        if len(column_index) == 0:
            column = 0
        else:
            column = column_index[0] + 1

        return self.createIndex(row, column, index)