def __init__(self, q, data, container=None): sortingEnabled = False root = _SkWidgetTreeController.parseData(data) if data else None self.sourceModel = SkTreeModel(root=root, parent=q) self.proxyModel = SkMultiFilterProxyModel( q, roles=(Qt.DisplayRole, Qt.ToolTipRole, Qt.StatusTipRole, Qt.UserRole)) #self.proxyModel.setSortingEnabled(sortingEnabled) self.proxyModel.setDynamicSortFilter(sortingEnabled) self.proxyModel.setSortCaseSensitivity(Qt.CaseInsensitive) self.proxyModel.setSourceModel(self.sourceModel) q_parent = q.parent() self._parentWidget = q_parent if isinstance( q_parent, QtWidgets.QWidget) else None self.treeView = QtWidgets.QTreeView(self._parentWidget) self.treeView.setRootIsDecorated(True) self.treeView.setAlternatingRowColors(True) self.treeView.setSortingEnabled(sortingEnabled) self.treeView.setModel(self.proxyModel) self.filterEdit = QtWidgets.QLineEdit() self.filterEdit.setPlaceholderText(tr_("Search")) self.filterEdit.setToolTip("%s (%s, %s)" % (tr_("Search"), tr_("case-insensitive"), tr_("regular expression"))) self.countLabel = QtWidgets.QLabel() #self.countLabel.setToolTip(self.q.tr("Count")) self.container = container or skwidgets.SkContainerWidget( self._parentWidget) # Connections #self.treeView.activated.connect(q.currentIndexChanged) #self.treeView.clicked.connect(q.currentIndexChanged) self.selectionModel = self.treeView.selectionModel( ) # increase reference counting self.selectionModel.currentChanged.connect(self._refresh) self.selectionModel.currentChanged.connect(q.currentIndexChanged) self.filterEdit.textChanged.connect(self._updateFilter) self.filterEdit.textChanged.connect(self._updateCount) self.sourceModel.dataChanged.connect(self._updateCount) if self.sourceModel.rootItem(): w = self.sourceModel.rootItem().dataAt( role=SkWidgetTreeController.WidgetRole) if w: dprint(w.__class__.__name__) self._setCurrentWidget(w)
def __init__(self, q): self.sourceModel = QtGui.QStandardItemModel(q) self.proxyModel = SkMultiFilterProxyModel(q) self.proxyModel.setDynamicSortFilter(True) self.proxyModel.setSortCaseSensitivity(Qt.CaseInsensitive) self.proxyModel.setSourceModel(self.sourceModel) q_parent = q.parent() self._parentWidget = q_parent if isinstance( q_parent, QtWidgets.QWidget) else None self.treeView = QtWidgets.QTreeView(self._parentWidget) self.treeView.setRootIsDecorated(True) self.treeView.setAlternatingRowColors(True) self.treeView.setSortingEnabled(True) self.treeView.setModel(self.proxyModel) self.filterEdit = QtWidgets.QLineEdit() self.filterEdit.setPlaceholderText(tr_("Search")) self.filterEdit.setToolTip("%s (%s, %s)" % (tr_("Search"), tr_("case-insensitive"), tr_("regular expression"))) self.countLabel = QtWidgets.QLabel() #self.countLabel.setToolTip(self.q.tr("Count")) # Connections # See: http://www.qtcentre.org/threads/2603-currentChanged-protected-slot-cant-get-working #self.treeView.activated.connect(q.currentIndexChanged) #self.treeView.clicked.connect(q.currentIndexChanged) self.selectionModel = self.treeView.selectionModel( ) # increase reference counting self.selectionModel.currentChanged.connect(q.currentIndexChanged) self.filterEdit.textChanged.connect(self._updateFilter) self.filterEdit.textChanged.connect(self._updateCount) self.sourceModel.dataChanged.connect(self._updateCount)