def run(self):
     """
     Protected method executed by the thread.
     """
     engine = QHelpEngineCore(self.__collection)
     engine.setupData()
     changes = False
     
     qtDocs = ["designer", "linguist", "qt"]
     for doc in qtDocs:
         changes |= self.__installQtDoc(doc, engine)
         self.__mutex.lock()
         if self.__abort:
             engine = None
             self.__mutex.unlock()
             return
         self.__mutex.unlock()
     
     changes |= self.__installEric4Doc(engine)
     engine = None
     del engine
     self.emit(SIGNAL("docsInstalled(bool)"), changes)
 def __init__(self, engine, parent = None):
     """
     Constructor
     
     @param engine reference to the help engine (QHelpEngine)
     @param parent reference to the parent widget (QWidget)
     """
     QDialog.__init__(self, parent)
     self.setupUi(self)
     
     self.__engine = engine
     
     self.attributesList.header().hide()
     
     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)
         ufilter = unicode(filter)
         self.__filterMapBackup[ufilter] = atts
         if ufilter not in self.__filterMap:
             self.__filterMap[ufilter] = atts
     
     self.filtersList.addItems(sorted(self.__filterMap.keys()))
     for attr in help.filterAttributes():
         QTreeWidgetItem(self.attributesList, QStringList(attr))
     
     if self.__filterMap:
         self.filtersList.setCurrentRow(0)