Exemple #1
0
    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)
Exemple #2
0
    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)