from Tools.Directories import SCOPE_SKIN_IMAGE, resolveFilename
from Components.MenuList import MenuList
+from pyexpat import ExpatError
+
from VlcServerConfig import vlcPluginInfo
class VlcFileList(MenuList):
- def __init__(self, server, matchingPattern):
+ def __init__(self, server, getFilesAndDirsCB, matchingPattern):
MenuList.__init__(self, list, False, eListboxPythonMultiContent)
self.l.setFont(0, gFont("Regular", 18))
self.l.setItemHeight(23)
self.server = server
+ self.getFilesAndDirsCB = getFilesAndDirsCB
self.currentDirectory = self.server.getBasedir()
self.changeRegex(matchingPattern)
def update(self):
- files, directories = self.server.getFilesAndDirs(self.currentDirectory, self.regex)
+ success = False
+ filelistEntries = self.getFilesAndDirsCB(self.currentDirectory, self.regex)
fileEntries = []
- for file in files:
- [name, path] = file
- fileEntries.append(VlcFileListEntry(name, path))
directoryEntries = []
- for directory in directories:
- [name, path] = directory
- directoryEntries.append(VlcFileListEntry(name, path, True))
- fileEntries.sort(cmp = lambda x, y: cmp(x[0], y[0]))
- directoryEntries.sort(cmp = lambda x, y: cmp(x[0], y[0]))
+ if filelistEntries is not None:
+ files, directories = filelistEntries
+ for file in files:
+ [name, path] = file
+ fileEntries.append(VlcFileListEntry(name, path))
+ for directory in directories:
+ [name, path] = directory
+ directoryEntries.append(VlcFileListEntry(name, path, True))
+ fileEntries.sort(cmp = lambda x, y: cmp(x[0], y[0]))
+ directoryEntries.sort(cmp = lambda x, y: cmp(x[0], y[0]))
+ success = True
self.list = directoryEntries + fileEntries
self.l.setList(self.list)
self.moveToIndex(0)
+ return success
def isVideoTS(self):
for e in self.list:
if self.getCurrent()[0][1]:
previousDirectory = self.currentDirectory
self.currentDirectory = self.getCurrent()[0][0]
- self.update()
- if self.isVideoTS():
- ret = "dvdsimple://" + self.currentDirectory + "/VIDEO_TS", self.currentDirectory
+ try:
+ if self.update():
+ if self.isVideoTS():
+ ret = "dvdsimple://" + self.currentDirectory + "/VIDEO_TS", self.currentDirectory
+ self.currentDirectory = previousDirectory
+ self.update()
+ else:
+ ret = None, self.currentDirectory
+ else:
+ self.currentDirectory = previousDirectory
+ ret = None, None
+ except ExpatError, e:
self.currentDirectory = previousDirectory
self.update()
- else:
ret = None, self.currentDirectory
else:
ret = self.getCurrent()[0][0], self.getCurrent()[1][7]
from Components.MenuList import MenuList
-def VlcPlayListEntry(name, path, id):
- res = [ (path, id) ]
+def VlcPlayListEntry(name, path):
+ res = [ path ]
res.append((eListboxPythonMultiContent.TYPE_TEXT, 35, 1, 470, 20, 0, RT_HALIGN_LEFT, name))
png = LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, "extensions/movie.png"))
class VlcPlayList(MenuList):
- def __init__(self, server):
+ def __init__(self, server, getPlaylistEntriesCB):
MenuList.__init__(self, list, False, eListboxPythonMultiContent)
self.l.setFont(0, gFont("Regular", 18))
self.l.setItemHeight(23)
self.server = server
+ self.getPlaylistEntriesCB = getPlaylistEntriesCB
def update(self):
- files = self.server.getPlaylistEntries()
+ files = self.getPlaylistEntriesCB()
fileEntries = []
- for file in files:
- [name, path, id, isCurrent] = file
- fileEntries.append(VlcPlayListEntry(name, path, id))
- fileEntries.sort(cmp = lambda x, y: cmp(x[1][7], y[1][7]))
+ if files is not None:
+ for file in files:
+ [name, path] = file
+ fileEntries.append(VlcPlayListEntry(name, path))
+ fileEntries.sort(cmp = lambda x, y: cmp(x[1][7], y[1][7]))
self.list = fileEntries
self.l.setList(self.list)
self.moveToIndex(0)
def activate(self):
if self.getCurrent() is not None:
- ret = self.getCurrent()[0][0], self.getCurrent()[1][7]
+ ret = self.getCurrent()[0], self.getCurrent()[1][7]
return ret
def getNextFile(self):
i = self.getSelectedIndex() + 1
if i < len(self.list):
self.moveToIndex(i)
- return self.getCurrent()[0][0], self.getCurrent()[1][7]
+ return self.getCurrent()[0], self.getCurrent()[1][7]
return None, None
def getPrevFile(self):
i = self.getSelectedIndex() - 1
if i < len(self.list):
self.moveToIndex(i)
- return self.getCurrent()[0][0], self.getCurrent()[1][7]
+ return self.getCurrent()[0], self.getCurrent()[1][7]
return None, None
if len(name) >= 50:
name = "..." + name[-50:]
path = e.getAttribute("uri").encode("utf8")
- files.append([name, path, int(e.getAttribute("id")), e.hasAttribute("current")])
+ files.append([name, path])
return files
def getCurrentElement(self):
if e.hasAttribute("current"):
return e
return None
-
- def getCurrentId(self):
- files = self.getPlaylistEntries()
- for file in files:
- [name, path, id, isCurrent] = file
- if isCurrent:
- return id
- return None
def playFile(self, filename, videoPid, audioPid):
streamName = "dream" + str(randint(0, maxint))
def delete(self, id):
self.__xmlRequest("status", {"command": "pl_delete", "id": str(id)})
- def deleteCurrent(self):
- listid = self.getCurrentId()
- self.delete(listid)
-
def deleteCurrentTree(self):
print "[VLC] delete current tree"
currentElement = self.getCurrentElement()