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
# 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 = []
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)
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: