def __init__(self, parent=None, completionMode=QCompleter.PopupCompletion, showHidden=False): """ Constructor @param parent parent widget of the completer (QWidget) @keyparam completionMode completion mode of the completer (QCompleter.CompletionMode) @keyparam showHidden flag indicating to show hidden entries as well (boolean) """ super(E5DirCompleter, self).__init__(parent) self.__model = QFileSystemModel(self) if showHidden: self.__model.setFilter( QDir.Filters(QDir.Drives | QDir.AllDirs | QDir.Hidden)) else: self.__model.setFilter( QDir.Filters(QDir.Drives | QDir.AllDirs)) self.setModel(self.__model) self.setCompletionMode(completionMode) if isWindowsPlatform(): self.setCaseSensitivity(Qt.CaseInsensitive) if parent: parent.setCompleter(self)
def populateProjectDirectoryItem(self, parentItem, repopulate=False): """ Public method to populate a directory item's subtree. @param parentItem reference to the directory item to be populated @param repopulate flag indicating a repopulation (boolean) """ self._addWatchedItem(parentItem) qdir = QDir(parentItem.dirName()) if Preferences.getUI("BrowsersListHiddenFiles"): fileFilter = QDir.Filters( QDir.AllEntries | QDir.Hidden | QDir.NoDotAndDotDot) else: fileFilter = QDir.Filters( QDir.AllEntries | QDir.NoDot | QDir.NoDotDot) entryInfoList = qdir.entryInfoList(fileFilter) if len(entryInfoList) > 0: if repopulate: self.beginInsertRows(self.createIndex( parentItem.row(), 0, parentItem), 0, len(entryInfoList) - 1) states = {} if self.project.vcs is not None: for f in entryInfoList: fname = f.absoluteFilePath() states[os.path.normcase(fname)] = 0 dname = parentItem.dirName() self.project.vcs.clearStatusCache() states = self.project.vcs.vcsAllRegisteredStates(states, dname) for f in entryInfoList: if f.isDir(): node = ProjectBrowserDirectoryItem( parentItem, Utilities.toNativeSeparators(f.absoluteFilePath()), parentItem.getProjectTypes()[0], False) else: node = ProjectBrowserFileItem( parentItem, Utilities.toNativeSeparators(f.absoluteFilePath()), parentItem.getProjectTypes()[0]) if self.project.vcs is not None: fname = f.absoluteFilePath() if ( states[os.path.normcase(fname)] == self.project.vcs.canBeCommitted ): node.addVcsStatus(self.project.vcs.vcsName()) self.project.clearStatusMonitorCachedState( f.absoluteFilePath()) else: node.addVcsStatus(self.tr("local")) else: node.addVcsStatus("") self._addItem(node, parentItem) if repopulate: self.endInsertRows()
def initUI(self): self.setWindowTitle("userFirefox - userChrome tweak manager") self.setGeometry(300, 300, 640, 640) self.layoutBox = LayoutBox() self.setLayout(self.layoutBox) currentDir = QDir().current() logging.info("Current application dir: %s", currentDir.path()) currentDir.setFilter( QDir.Filters(24577) ) #filter only dirs 0x001 and no dots 0x2000 and 0x4000 results to 0d24577 tweakCats = currentDir.entryList() tweaksAvail = {} tweaksTree = {} logging.debug("List of tweak categoriess: %s", tweakCats) for tCat in tweakCats: categoryDir = QDir() categoryDir.setPath(currentDir.path()) categoryDir.cd(tCat) categoryDir.setFilter( QDir.Filters(2)) #filter files 0x002 results to 0d2 logging.debug("Tweaks in category %s are %s", tCat, categoryDir.entryList()) tweaksAvail[tCat] = categoryDir.entryList() logging.info("Dictionary of all available tweaks: %s", tweaksAvail) for tCat in tweaksAvail: logging.debug(tCat) tweaksTree["_uFFTree"] = {} tweaksTree[tCat] = QTreeWidgetItem( self.layoutBox.filesBox.availableTweaks) tweaksTree[tCat].setText(0, tCat) for tName in tweaksAvail[tCat]: tweaksTree["_uFFTree"][tName] = QTreeWidgetItem( tweaksTree[tCat]) tweaksTree["_uFFTree"][tName].setText(0, tName) #qtreetop = QTreeWidgetItem(self.layoutBox.filesBox.availableTweaks) #qtreetop.setText(0, "baf") self.show()
def directoryChanged(self, path): """ Public slot to handle the directoryChanged signal of the watcher. @param path path of the directory (string) """ if path not in self.watchedItems: # just ignore the situation we don't have a reference to the item return if Preferences.getUI("BrowsersListHiddenFiles"): filter = QDir.Filters(QDir.AllEntries | QDir.Hidden | QDir.NoDotAndDotDot) else: filter = QDir.Filters(QDir.AllEntries | QDir.NoDot | QDir.NoDotDot) for itm in self.watchedItems[path]: oldCnt = itm.childCount() qdir = QDir(itm.dirName()) entryInfoList = qdir.entryInfoList(filter) # step 1: check for new entries children = itm.children() for f in entryInfoList: fpath = Utilities.toNativeSeparators(f.absoluteFilePath()) childFound = False for child in children: if child.name() == fpath: childFound = True children.remove(child) break if childFound: continue cnt = itm.childCount() self.beginInsertRows(self.createIndex(itm.row(), 0, itm), cnt, cnt) if f.isDir(): node = ProjectBrowserDirectoryItem( itm, Utilities.toNativeSeparators(f.absoluteFilePath()), itm.getProjectTypes()[0], False) else: node = ProjectBrowserFileItem( itm, Utilities.toNativeSeparators(f.absoluteFilePath()), itm.getProjectTypes()[0]) self._addItem(node, itm) if self.project.vcs is not None: self.project.vcs.clearStatusCache() state = self.project.vcs.vcsRegisteredState(node.name()) if state == self.project.vcs.canBeCommitted: node.addVcsStatus(self.project.vcs.vcsName()) else: node.addVcsStatus(self.tr("local")) self.endInsertRows() # step 2: check for removed entries if len(entryInfoList) != itm.childCount(): for row in range(oldCnt - 1, -1, -1): child = itm.child(row) childname = Utilities.fromNativeSeparators(child.name()) entryFound = False for f in entryInfoList: if f.absoluteFilePath() == childname: entryFound = True entryInfoList.remove(f) break if entryFound: continue self._removeWatchedItem(child) self.beginRemoveRows(self.createIndex(itm.row(), 0, itm), row, row) itm.removeChild(child) self.endRemoveRows()