Sat, 16 Feb 2019 10:26:04 +0100
changelog: added a change log entry for 19.02.1.
(grafted from c5a61d7afc9c574919c3b8d076f4dafec0fac049)
# -*- coding: utf-8 -*- # Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de> # """ Module implementing a modified QSortFilterProxyModel. """ from __future__ import unicode_literals from PyQt5.QtCore import Qt, QModelIndex, QSortFilterProxyModel class E5TreeSortFilterProxyModel(QSortFilterProxyModel): """ Class implementing a modified QSortFilterProxyModel. It always accepts the root nodes in the tree so filtering is only done on the children. """ def __init__(self, parent=None): """ Constructor @param parent reference to the parent object (QObject) """ super(E5TreeSortFilterProxyModel, self).__init__(parent) self.setFilterCaseSensitivity(Qt.CaseInsensitive) def filterAcceptsRow(self, sourceRow, sourceParent): """ Public method to determine, if the row is acceptable. @param sourceRow row number in the source model (integer) @param sourceParent index of the source item (QModelIndex) @return flag indicating acceptance (boolean) """ idx = self.sourceModel().index(sourceRow, 0, sourceParent) if self.sourceModel().hasChildren(idx): return True return QSortFilterProxyModel.filterAcceptsRow( self, sourceRow, sourceParent) def hasChildren(self, parent=None): """ Public method to check, if a parent node has some children. @param parent index of the parent node (QModelIndex) @return flag indicating the presence of children (boolean) """ if parent is None: parent = QModelIndex() sindex = self.mapToSource(parent) return self.sourceModel().hasChildren(sindex)