def __init__(self, engine, parent=None):
        """
        Constructor
        
        @param engine reference to the help engine (QHelpEngine)
        @param parent reference to the parent widget (QWidget)
        """
        super(QtHelpFiltersDialog, self).__init__(parent)
        self.setupUi(self)

        self.removeButton.setEnabled(False)
        self.removeAttributeButton.setEnabled(False)

        self.__engine = engine

        self.filtersList.clear()
        self.attributesList.clear()

        help = QHelpEngineCore(self.__engine.collectionFile())
        help.setupData()

        self.__removedFilters = []
        self.__filterMap = {}
        self.__filterMapBackup = {}
        self.__removedAttributes = []

        for filter in help.customFilters():
            atts = help.filterAttributes(filter)
            self.__filterMapBackup[filter] = atts
            if filter not in self.__filterMap:
                self.__filterMap[filter] = atts

        self.filtersList.addItems(sorted(self.__filterMap.keys()))
        for attr in help.filterAttributes():
            QTreeWidgetItem(self.attributesList, [attr])
        self.attributesList.sortItems(0, Qt.AscendingOrder)

        if self.__filterMap:
            self.filtersList.setCurrentRow(0)
Example #2
0
 def __init__(self, engine, parent=None):
     """
     Constructor
     
     @param engine reference to the help engine (QHelpEngine)
     @param parent reference to the parent widget (QWidget)
     """
     super(QtHelpFiltersDialog, self).__init__(parent)
     self.setupUi(self)
     
     self.removeButton.setEnabled(False)
     self.removeAttributeButton.setEnabled(False)
     
     self.__engine = engine
     
     self.filtersList.clear()
     self.attributesList.clear()
     
     help = QHelpEngineCore(self.__engine.collectionFile())
     help.setupData()
     
     self.__removedFilters = []
     self.__filterMap = {}
     self.__filterMapBackup = {}
     self.__removedAttributes = []
     
     for filter in help.customFilters():
         atts = help.filterAttributes(filter)
         self.__filterMapBackup[filter] = atts
         if filter not in self.__filterMap:
             self.__filterMap[filter] = atts
     
     self.filtersList.addItems(sorted(self.__filterMap.keys()))
     for attr in help.filterAttributes():
         QTreeWidgetItem(self.attributesList, [attr])
     self.attributesList.sortItems(0, Qt.AscendingOrder)
     
     if self.__filterMap:
         self.filtersList.setCurrentRow(0)
    def __initFiltersTab(self):
        """
        Private method to initialize the filters tab.
        """
        self.removeFiltersButton.setEnabled(False)
        self.removeAttributesButton.setEnabled(False)

        # save the current and selected filters
        currentFilter = self.filtersList.currentItem()
        if currentFilter:
            currentFilterText = currentFilter.text()
        else:
            currentFilterText = ""
        selectedFiltersText = [
            itm.text() for itm in self.filtersList.selectedItems()
        ]

        # save the selected attributes
        selectedAttributesText = [
            itm.text(0) for itm in self.attributesList.selectedItems()
        ]

        self.filtersList.clear()
        self.attributesList.clear()

        helpEngineCore = QHelpEngineCore(self.__engine.collectionFile())

        self.__removedFilters = []
        self.__filterMap = {}
        self.__filterMapBackup = {}
        self.__removedAttributes = []

        for customFilter in helpEngineCore.customFilters():
            atts = helpEngineCore.filterAttributes(customFilter)
            self.__filterMapBackup[customFilter] = atts
            if customFilter not in self.__filterMap:
                self.__filterMap[customFilter] = atts

        self.filtersList.addItems(sorted(self.__filterMap.keys()))
        for attr in helpEngineCore.filterAttributes():
            QTreeWidgetItem(self.attributesList, [attr])
        self.attributesList.sortItems(0, Qt.AscendingOrder)

        if selectedFiltersText or currentFilterText or selectedAttributesText:
            # restore the selected filters
            for txt in selectedFiltersText:
                items = self.filtersList.findItems(txt, Qt.MatchExactly)
                for itm in items:
                    itm.setSelected(True)
            # restore the current filter
            if currentFilterText:
                items = self.filtersList.findItems(currentFilterText,
                                                   Qt.MatchExactly)
                if items:
                    self.filtersList.setCurrentItem(
                        items[0], QItemSelectionModel.NoUpdate)
            # restore the selected attributes
            for txt in selectedAttributesText:
                items = self.attributesList.findItems(txt, Qt.MatchExactly, 0)
                for itm in items:
                    itm.setSelected(True)
        elif self.__filterMap:
            self.filtersList.setCurrentRow(0)