X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/da1955116b7e8b8c203e27c7e5994537219a0632..98f7390aeb2c7b1ef3963fef83a6eeae367256a6:/lib/python/Components/FileList.py diff --git a/lib/python/Components/FileList.py b/lib/python/Components/FileList.py index d842cfef..fcd1555f 100644 --- a/lib/python/Components/FileList.py +++ b/lib/python/Components/FileList.py @@ -42,8 +42,9 @@ def FileEntryComponent(name, absolute = None, isDir = False): return res class FileList(MenuList): - def __init__(self, directory, showDirectories = True, showFiles = True, matchingPattern = None, useServiceRef = False, isTop = False, enableWrapAround = False): + def __init__(self, directory, showDirectories = True, showFiles = True, matchingPattern = None, useServiceRef = False, isTop = False, enableWrapAround = False, additionalExtensions = None): MenuList.__init__(self, list, enableWrapAround, eListboxPythonMultiContent) + self.additional_extensions = additionalExtensions self.mount_point = None self.current_directory = None self.useServiceRef = useServiceRef @@ -78,7 +79,20 @@ class FileList(MenuList): # if we are just entering from the list of mount points: if self.current_directory is None: - self.mount_point = directory + if directory is None: + self.mount_point = None + else: + # Sort Mountpoints by length (longest first) + sortedp = harddiskmanager.getMountedPartitions() + sortedp.sort(key=lambda p: 0 - len(p.mountpoint)) + + # Search for the longest matching mp (should at least match /) + for p in sortedp: + if directory.startswith(p.mountpoint): + self.mount_point = p.mountpoint + if p.mountpoint != "/": + self.mount_point += "/" + break self.current_directory = directory directories = [] files = [] @@ -94,6 +108,8 @@ class FileList(MenuList): directories = [ ] elif self.useServiceRef: root = eServiceReference("2:0:1:0:0:0:0:0:0:0:" + directory) + if self.additional_extensions: + root.setName(self.additional_extensions) serviceHandler = eServiceCenter.getInstance() list = serviceHandler.list(root) @@ -110,13 +126,14 @@ class FileList(MenuList): directories.sort() files.sort() else: - files = listdir(directory) - files.sort() - tmpfiles = files[:] - for x in tmpfiles: - if os_path.isdir(directory + x): - directories.append(directory + x + "/") - files.remove(x) + if os_path.exists(directory): + files = listdir(directory) + files.sort() + tmpfiles = files[:] + for x in tmpfiles: + if os_path.isdir(directory + x): + directories.append(directory + x + "/") + files.remove(x) if directory is not None and self.showDirectories and not self.isTop: if directory == self.mount_point: