def updateDirNodes(self, parent): """ This generator updates the directory nodes, based on whether they should be expandable """ for child in self.tree.iterChildren(parent): # Only directories need to be updated and since they all come first, # we can stop as soon as we find something else if self.tree.getItem(child, ROW_TYPE) != TYPE_DIR: break # Make sure it's readable directory = self.tree.getItem(child, ROW_FULLPATH) hasContent = False if os.access(directory, os.R_OK | os.X_OK): for (file, path) in tools.listDir(directory): supported = (media.isSupported(file) or playlist.isSupported(file)) if isdir(path) or (isfile(path) and supported): hasContent = True break # Append/remove children if needed if hasContent and self.tree.getNbChildren(child) == 0: self.tree.appendRow((icons.dirMenuIcon(), '', TYPE_NONE, ''), child) elif not hasContent and self.tree.getNbChildren(child) > 0: self.tree.removeAllChildren(child) yield True if parent is not None: self.stopLoading(parent) yield False
def getDirContents(self, directory): """ Return a tuple of sorted rows (directories, playlists, mediaFiles) for the given directory """ playlists = [] mediaFiles = [] directories = [] for (file, path) in tools.listDir(directory, self.showHiddenFiles): if isdir(path): directories.append( (icons.dirMenuIcon(), tools.htmlEscape(unicode(file, errors='replace')), TYPE_DIR, path)) elif isfile(path): if media.isSupported(file): mediaFiles.append( (icons.mediaFileMenuIcon(), tools.htmlEscape(unicode(file, errors='replace')), TYPE_FILE, path)) elif playlist.isSupported(file): playlists.append( (icons.mediaFileMenuIcon(), tools.htmlEscape(unicode(file, errors='replace')), TYPE_FILE, path)) playlists.sort(key=self.sortKey) mediaFiles.sort(key=self.sortKey) directories.sort(key=self.sortKey) return (directories, playlists, mediaFiles)
def updateDirNodes(self, parent): """ This generator updates the directory nodes, based on whether they should be expandable """ for child in self.tree.iterChildren(parent): # Only directories need to be updated and since they all come first, we can stop as soon as we find something else if self.tree.getItem(child, ROW_TYPE) != TYPE_DIR: break # Make sure it's readable directory = self.tree.getItem(child, ROW_FULLPATH) hasContent = False if os.access(directory, os.R_OK | os.X_OK): for (file, path) in tools.listDir(directory, self.showHiddenFiles): if isdir(path) or (isfile(path) and (media.isSupported(file) or playlist.isSupported(file))): hasContent = True break # Append/remove children if needed if hasContent and self.tree.getNbChildren(child) == 0: self.tree.appendRow((icons.dirMenuIcon(), '', TYPE_NONE, ''), child) elif not hasContent and self.tree.getNbChildren(child) > 0: self.tree.removeAllChildren(child) yield True if parent is not None: self.stopLoading(parent) yield False
def getDirContents(self, directory): """ Return a tuple of sorted rows (directories, playlists, mediaFiles) for the given directory """ playlists = [] mediaFiles = [] directories = [] for (file, path) in tools.listDir(directory, self.showHiddenFiles): if isdir(path): directories.append((icons.dirMenuIcon(), tools.htmlEscape(unicode(file, errors='replace')), TYPE_DIR, path)) elif isfile(path): if media.isSupported(file): mediaFiles.append((icons.mediaFileMenuIcon(), tools.htmlEscape(unicode(file, errors='replace')), TYPE_FILE, path)) elif playlist.isSupported(file): playlists.append((icons.mediaFileMenuIcon(), tools.htmlEscape(unicode(file, errors='replace')), TYPE_FILE, path)) playlists.sort(key=self.sortKey) mediaFiles.sort(key=self.sortKey) directories.sort(key=self.sortKey) return (directories, playlists, mediaFiles)