X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/d459fe1406ae27625c9e5988ff894f6be4a62519..e25c93ddcc6a2c73b413fced441624703901e22d:/lib/python/Components/FileList.py diff --git a/lib/python/Components/FileList.py b/lib/python/Components/FileList.py index 4238ed1a..3091436f 100644 --- a/lib/python/Components/FileList.py +++ b/lib/python/Components/FileList.py @@ -2,20 +2,14 @@ from HTMLComponent import * from GUIComponent import * import re +from os import path as os_path, listdir from MenuList import MenuList +from Components.Harddisk import harddiskmanager -from Tools.Directories import * +from Tools.Directories import SCOPE_SKIN_IMAGE, resolveFilename -from enigma import * - -RT_HALIGN_LEFT = 0 -RT_HALIGN_RIGHT = 1 -RT_HALIGN_CENTER = 2 -RT_HALIGN_BLOCK = 4 - -RT_VALIGN_TOP = 0 -RT_VALIGN_CENTER = 8 -RT_VALIGN_BOTTOM = 16 +from enigma import RT_HALIGN_LEFT, loadPNG, eListbox, eListboxPythonMultiContent, \ + eServiceReference, eServiceCenter, gFont EXTENSIONS = { "mp3": "music", @@ -24,6 +18,7 @@ EXTENSIONS = { "jpg": "picture", "jpeg": "picture", "png": "picture", + "bmp": "picture", "ts": "movie", "avi": "movie", "mpg": "movie", @@ -52,6 +47,7 @@ class FileList(MenuList, HTMLComponent, GUIComponent): GUIComponent.__init__(self) self.l = eListboxPythonMultiContent() + self.mount_point = None self.current_directory = None self.useServiceRef = useServiceRef self.showDirectories = showDirectories @@ -62,21 +58,39 @@ class FileList(MenuList, HTMLComponent, GUIComponent): self.changeDir(directory) self.l.setFont(0, gFont("Regular", 18)) - + self.l.setItemHeight(23) + def getSelection(self): + if self.l.getCurrentSelection() is None: + return None return self.l.getCurrentSelection()[0] + def getSelectionIndex(self): + return self.l.getCurrentSelectionIndex() + def getFileList(self): return self.list def changeDir(self, directory, select = None): self.list = [] + # if we are just entering from the list of mount points: + if self.current_directory is None: + self.mount_point = directory self.current_directory = directory directories = [] files = [] - if self.useServiceRef: + if directory is None: # present available mountpoints + print "listing partitions:" + for p in harddiskmanager.getMountedPartitions(): + if p.mountpoint == "/": + self.list.append(FileEntryComponent(name = p.description, absolute = p.mountpoint, isDir = True)) + else: + self.list.append(FileEntryComponent(name = p.description, absolute = p.mountpoint + "/", isDir = True)) + files = [ ] + directories = [ ] + elif self.useServiceRef: root = eServiceReference("2:0:1:0:0:0:0:0:0:0:" + directory) serviceHandler = eServiceCenter.getInstance() list = serviceHandler.list(root) @@ -94,16 +108,19 @@ class FileList(MenuList, HTMLComponent, GUIComponent): directories.sort() files.sort() else: - files = os.listdir(directory) + files = listdir(directory) files.sort() tmpfiles = files[:] for x in tmpfiles: - if os.path.isdir(directory + x): + if os_path.isdir(directory + x): directories.append(directory + x + "/") files.remove(x) - if directory != "/" and self.showDirectories and not self.isTop: - self.list.append(FileEntryComponent(name = "..", absolute = '/'.join(directory.split('/')[:-2]) + '/', isDir = True)) + if directory is not None and self.showDirectories and not self.isTop: + if directory == self.mount_point: + self.list.append(FileEntryComponent(name = ".. (" +_("List of Storage Devices") + ")", absolute = None, isDir = True)) + else: + self.list.append(FileEntryComponent(name = "..", absolute = '/'.join(directory.split('/')[:-2]) + '/', isDir = True)) if self.showDirectories: for x in directories: @@ -144,18 +161,26 @@ class FileList(MenuList, HTMLComponent, GUIComponent): return self.current_directory def canDescent(self): + if self.getSelection() is None: + return False return self.getSelection()[1] def descent(self): + if self.getSelection() is None: + return self.changeDir(self.getSelection()[0], select = self.current_directory) def getFilename(self): + if self.getSelection() is None: + return None x = self.getSelection()[0] if isinstance(x, eServiceReference): x = x.getPath() return x def getServiceRef(self): + if self.getSelection() is None: + return None x = self.getSelection()[0] if isinstance(x, eServiceReference): return x @@ -165,4 +190,3 @@ class FileList(MenuList, HTMLComponent, GUIComponent): def postWidgetCreate(self, instance): instance.setContent(self.l) - instance.setItemHeight(23)