class Selectmusic(Screen): def __init__(self, session): Screen.__init__(self, session) self["actions"] = HelpableActionMap(self, "MC_AudioPlayerActions", { "ok": (self.KeyOk, "Play selected file"), "left": (self.leftUp, "List Top"), "right": (self.rightDown, "List Bottom"), "up": (self.up, "List up"), "down": (self.down, "List down"), }, -2) self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions", { "cancel": self.close }, -2) currDir = config.plugins.mc_ap.lastDir.value if not pathExists(currDir): currDir = "/" inhibitDirs = ["/bin", "/boot", "/dev", "/dev.static", "/etc", "/lib" , "/proc", "/ram", "/root" , "/sbin", "/sys", "/tmp", "/usr", "/var"] self.filelist = FileList(currDir, useServiceRef = True, showDirectories = True, showFiles = True, matchingPattern = "(?i)^.*\.(m3u|mp2|mp3|wav|wave|wma|m4a|ogg|ra|flac)", inhibitDirs = inhibitDirs) self["filelist"] = self.filelist self["currentfolder"] = Label() self["currentfolder"].setText(str(currDir)) def up(self): self["filelist"].up() def down(self): self["filelist"].down() def leftUp(self): self["filelist"].pageUp() def rightDown(self): self["filelist"].pageDown() def KeyOk(self): self.filename = self.filelist.getFilename() self["currentfolder"].setText(str(self.filelist.getCurrentDirectory())) if self.filelist.getFilename() is not None: if self.filelist.canDescent(): self.filelist.descent() else: config.plugins.mc_pp.music.value = self.filename config.plugins.mc_pp.save() self.close() else: if self.filelist.canDescent(): self.filelist.descent() else: config.plugins.mc_pp.music.value = self.filename config.plugins.mc_pp.save() self.close()
class MC_VideoPlayer(Screen, HelpableScreen): def __init__(self, session): Screen.__init__(self, session) HelpableScreen.__init__(self) self["key_red"] = Button(_("Favorites")) self["key_yellow"] = Button("") self["key_blue"] = Button(_("Settings")) self["currentfolder"] = Label("") self["currentfavname"] = Label("") self.showiframe = Showiframe() self.mvion = False self.curfavfolder = -1 os.system("touch /tmp/bmcmovie") self["actions"] = HelpableActionMap(self, "MC_VideoPlayerActions", { "ok": (self.KeyOk, "Play selected file"), "cancel": (self.Exit, "Exit Video Player"), "left": (self.leftUp, "List Top"), "right": (self.rightDown, "List Bottom"), "up": (self.up, "List up"), "down": (self.down, "List down"), "menu": (self.KeyMenu, "File / Folder Options"), "info": (self.showFileInfo, "Show File Info"), "nextBouquet": (self.NextFavFolder, "Next Favorite Folder"), "prevBouquet": (self.PrevFavFolder, "Previous Favorite Folder"), # "red": (self.FavoriteFolders, "Favorite Folders"), "blue": (self.KeySettings, "Settings"), }, -2) currDir = config.plugins.mc_vp.lastDir.value if not pathExists(currDir): currDir = "/" self["currentfolder"].setText(str(currDir)) sort = config.plugins.mc_vp_sortmode.enabled.value self.filelist = [] self["filelist"] = [] inhibitDirs = ["/bin", "/boot", "/dev", "/dev.static", "/etc", "/lib", "/proc", "/ram", "/root", "/sbin", "/sys", "/tmp", "/usr", "/var"] self.filelist = FileList(currDir, useServiceRef=True, showDirectories=True, showFiles=True, matchingPattern="(?i)^.*\.(ts|vob|mpg|mpeg|avi|mkv|dat|iso|img|mp4|wmv|flv|divx|mov|ogm|m2ts)", additionalExtensions=None, sort=sort) self["filelist"] = self.filelist self["filelist"].show() def up(self): self["filelist"].up() if self.mvion == True: self.showiframe.finishStillPicture() if self["filelist"].canDescent(): return else: self.cover() def down(self): self["filelist"].down() if self.mvion == True: self.showiframe.finishStillPicture() if self["filelist"].canDescent(): return else: self.cover() def leftUp(self): self["filelist"].pageUp() if self.mvion == True: self.showiframe.finishStillPicture() if self["filelist"].canDescent(): return else: if self.mvion == True: self.showiframe.finishStillPicture() self.cover() def rightDown(self): self["filelist"].pageDown() if self.mvion == True: self.showiframe.finishStillPicture() if self["filelist"].canDescent(): if self.mvion == True: self.showiframe.finishStillPicture() else: self.cover() def NextFavFolder(self): return def PrevFavFolder(self): return def showFileInfo(self): if self["filelist"].canDescent(): return else: self.session.open(MC_VideoInfoView, self["filelist"].getCurrentDirectory() + self["filelist"].getFilename(), self["filelist"].getFilename(), self["filelist"].getServiceRef()) def KeyOk(self): self.filename = self.filelist.getFilename() print(self.filename) try: if self.filename.endswith('.img') or self.filename.endswith('.iso') or self.filename.endswith('VIDEO_TS/') and config.plugins.mc_vp.dvd.value == "dvd": self.showiframe.finishStillPicture() from Screens import DVD if self.filename.endswith('VIDEO_TS/'): path = os.path.split(self.filename.rstrip('/'))[0] else: path = self.filename self.session.open(DVD.DVDPlayer, dvd_filelist=[path]) return except Exception as e: print("DVD Player error:", e) if self.filelist.canDescent(): self.filelist.descent() else: self.showiframe.finishStillPicture() self.session.open(MoviePlayer, self["filelist"].getServiceRef(), slist=None, lastservice=None) def cover(self): filename = self["filelist"].getName() short = shortname(filename) newshort = short.lower() newshort = newshort.replace(" ", "") movienameserie = re.sub("e[0-9]{2}", "", newshort.lower()) covername = "/hdd/bmcover/" + str(movienameserie) + "/backcover.mvi" if fileExists(covername): self.showiframe.showStillpicture(covername) self.mvion = True else: if self.mvion == True: self.showiframe.showStillpicture("/usr/share/enigma2/black.mvi") self.mvion = False def KeyMenu(self): # if self["filelist"].canDescent(): # if self.filelist.getCurrent()[0][1]: # self.currentDirectory = self.filelist.getCurrent()[0][0] # if self.currentDirectory is not None: # foldername = self.currentDirectory.split('/') # foldername = foldername[-2] # self.session.open(MC_FolderOptions,self.currentDirectory, foldername) return def updd(self): sort = config.plugins.mc_vp_sortmode.enabled.value self.filelist.refresh(sort) def KeySettings(self): self.session.openWithCallback(self.updd, VideoPlayerSettings) def Exit(self): if self.filelist.getCurrentDirectory() is None: config.plugins.mc_vp.lastDir.value = "/" else: config.plugins.mc_vp.lastDir.value = self.filelist.getCurrentDirectory() config.plugins.mc_vp.save() try: os.remove("/tmp/bmcmovie") except: pass self.showiframe.finishStillPicture() self.close()
class MC_PictureViewer(Screen, HelpableScreen): def __init__(self, session): Screen.__init__(self, session) HelpableScreen.__init__(self) self["key_red"] = Button("Favorites") self["key_green"] = Button("Slide Show") self["key_yellow"] = Button("Thumb View") self["key_blue"] = Button(_("Settings")) self["currentfolder"] = Label("") self["currentfavname"] = Label("") self.curfavfolder = -1 self["actions"] = HelpableActionMap(self, "MC_PictureViewerActions", { "ok": (self.KeyOk, "Show Picture"), "cancel": (self.Exit, "Exit Picture Viewer"), "left": (self.leftUp, "List Top"), "right": (self.rightDown, "List Bottom"), "up": (self.up, "List up"), "down": (self.down, "List down"), "menu": (self.KeyMenu, "File / Folder Options"), "info": (self.StartExif, "Show File Info"), "nextBouquet": (self.NextFavFolder, "Next Favorite Folder"), "prevBouquet": (self.PrevFavFolder, "Previous Favorite Folder"), "red": (self.FavoriteFolders, "Favorite Folders"), "green": (self.startslideshow, "Start Slideshow"), "yellow": (self.StartThumb, "Thumb View"), "blue": (self.Settings, "Settings"), }, -2) self.aspect = getAspect() currDir = config.plugins.mc_pp.lastDir.value if not pathExists(currDir): currDir = "/" self["currentfolder"].setText(str(currDir)) self.filelist = FileList(currDir, matchingPattern = "(?i)^.*\.(jpeg|jpg|jpe|png|bmp)") self["filelist"] = self.filelist self["thumbnail"] = Pixmap() self.ThumbTimer = eTimer() self.ThumbTimer.callback.append(self.showThumb) self.ThumbTimer.start(500, True) self.picload = ePicLoad() #self.picload.PictureData.get().append(self.showPic) def startslideshow(self): self.session.openWithCallback(self.returnVal , MC_PicView, self.filelist.getFileList(), self.filelist.getSelectionIndex(), self.filelist.getCurrentDirectory(), True) def up(self): self["filelist"].up() self.ThumbTimer.start(500, True) def down(self): self["filelist"].down() self.ThumbTimer.start(500, True) def leftUp(self): self["filelist"].pageUp() self.ThumbTimer.start(500, True) def rightDown(self): self["filelist"].pageDown() self.ThumbTimer.start(500, True) def NextFavFolder(self): if self.curfavfolder + 1 < config.plugins.mc_favorites.foldercount.value: self.curfavfolder += 1 self.favname = config.plugins.mc_favorites.folders[self.curfavfolder].name.value self.folder = config.plugins.mc_favorites.folders[self.curfavfolder].basedir.value self["currentfolder"].setText(("%s") % (self.folder)) self["currentfavname"].setText(("%s") % (self.favname)) if os.path.exists(self.folder) == True: self["filelist"].changeDir(self.folder) else: return def PrevFavFolder(self): if self.curfavfolder <= 0: return else: self.curfavfolder -= 1 self.favname = config.plugins.mc_favorites.folders[self.curfavfolder].name.value self.folder = config.plugins.mc_favorites.folders[self.curfavfolder].basedir.value self["currentfolder"].setText(("%s") % (self.folder)) self["currentfavname"].setText(("%s") % (self.favname)) if os.path.exists(self.folder) == True: self["filelist"].changeDir(self.folder) def showPic(self, picInfo=""): ptr = self.picload.getData() if ptr != None: self["thumbnail"].instance.setPixmap(ptr.__deref__()) self["thumbnail"].show() def showThumb(self): return if not self.filelist.canDescent(): if self.picload.getThumbnail(self.filelist.getCurrentDirectory() + self.filelist.getFilename()) == 1: ptr = self.picload.getData() else: ptr = None #ptr = loadPic(self.filelist.getCurrentDirectory() + self.filelist.getFilename(), 180, 160, self.aspect, int(config.plugins.mc_pp.resize.value), 0, 0, cachefile) if ptr != None: self["thumbnail"].instance.setPixmap(ptr.__deref__()) self["thumbnail"].show() else: self["thumbnail"].hide() def KeyOk(self): if self.filelist.canDescent(): self.filelist.descent() else: self.session.openWithCallback(self.returnVal, MC_PicView, self.filelist.getFileList(), self.filelist.getSelectionIndex(), self.filelist.getCurrentDirectory(), False) def KeyMenu(self): self.ThumbTimer.stop() if self["filelist"].canDescent(): if self.filelist.getCurrent()[0][1]: self.currentDirectory = self.filelist.getCurrent()[0][0] if self.currentDirectory is not None: foldername = self.currentDirectory.split('/') foldername = foldername[-2] self.session.open(MC_FolderOptions,self.currentDirectory, foldername) def StartThumb(self): self.session.openWithCallback(self.returnVal, MC_PicThumbViewer, self.filelist.getFileList(), self.filelist.getSelectionIndex(), self.filelist.getCurrentDirectory()) def JumpToFolder(self, jumpto = None): if jumpto is None: return else: self["filelist"].changeDir(jumpto) self["currentfolder"].setText(("%s") % (jumpto)) def FavoriteFolders(self): self.session.openWithCallback(self.JumpToFolder, MC_FavoriteFolders) def returnVal(self, val=0): if val > 0: for x in self.filelist.getFileList(): if x[0][1] == True: val += 1 self.filelist.moveToIndex(val) def StartExif(self): if not self.filelist.canDescent(): #self.session.open(Pic_Exif, self.filelist.getCurrentDirectory() + self.filelist.getFilename(), self.filelist.getFilename()) #self.session.open(Pic_Exif, self.picload.getInfo(self.filelist.getSelectionIndex())) self.session.open(MessageBox, "Oh no, bugged in this version :(", MessageBox.TYPE_ERROR) def Settings(self): self.session.open(MC_PicSetup) def Exit(self): if self.filelist.getCurrentDirectory() is None: config.plugins.mc_pp.lastDir.value = "/" else: config.plugins.mc_pp.lastDir.value = self.filelist.getCurrentDirectory() config.plugins.mc_pp.save() self.close()
class MC_PictureViewer(Screen, HelpableScreen): def __init__(self, session): Screen.__init__(self, session) HelpableScreen.__init__(self) self["key_green"] = Button("Slide Show") self["key_yellow"] = Button("Thumb View") self["currentfolder"] = Label("") self["actions"] = HelpableActionMap(self, "MC_PictureViewerActions", { "ok": (self.KeyOk, "Show Picture"), "cancel": (self.Exit, "Exit Picture Viewer"), "left": (self.leftUp, "List Top"), "right": (self.rightDown, "List Bottom"), "up": (self.up, "List up"), "down": (self.down, "List down"), "info": (self.StartExif, "Show File Info"), "green": (self.startslideshow, "Start Slideshow"), "yellow": (self.StartThumb, "Thumb View"), "blue": (self.Settings, "Settings"), }, -2) self.aspect = getAspect() currDir = config.plugins.mc_pp.lastDir.value if not pathExists(currDir): currDir = "/" self["currentfolder"].setText(str(currDir)) inhibitDirs = ["/bin", "/boot", "/dev", "/dev.static", "/etc", "/lib" , "/proc", "/ram", "/root" , "/sbin", "/sys", "/tmp", "/usr", "/var"] self.filelist = FileList(currDir, matchingPattern = "(?i)^.*\.(jpeg|jpg|jpe|png|bmp)", inhibitDirs = inhibitDirs) self["filelist"] = self.filelist self["thumbnail"] = Pixmap() self.ThumbTimer = eTimer() self.ThumbTimer.callback.append(self.showThumb) self.ThumbTimer.start(500, True) self.picload = ePicLoad() #self.picload.PictureData.get().append(self.showPic) def startslideshow(self): self.session.openWithCallback(self.returnVal , MC_PicView, self.filelist.getFileList(), self.filelist.getSelectionIndex(), self.filelist.getCurrentDirectory(), True) def up(self): self["filelist"].up() self.ThumbTimer.start(500, True) def down(self): self["filelist"].down() self.ThumbTimer.start(500, True) def leftUp(self): self["filelist"].pageUp() self.ThumbTimer.start(500, True) def rightDown(self): self["filelist"].pageDown() self.ThumbTimer.start(500, True) def showPic(self, picInfo=""): ptr = self.picload.getData() if ptr != None: self["thumbnail"].instance.setPixmap(ptr.__deref__()) self["thumbnail"].show() def showThumb(self): return if not self.filelist.canDescent(): if self.picload.getThumbnail(self.filelist.getCurrentDirectory() + self.filelist.getFilename()) == 1: ptr = self.picload.getData() else: ptr = None #ptr = loadPic(self.filelist.getCurrentDirectory() + self.filelist.getFilename(), 180, 160, self.aspect, int(config.plugins.mc_pp.resize.value), 0, 0, cachefile) if ptr != None: self["thumbnail"].instance.setPixmap(ptr.__deref__()) self["thumbnail"].show() else: self["thumbnail"].hide() def KeyOk(self): if self.filelist.canDescent(): self.filelist.descent() else: self.session.openWithCallback(self.returnVal, MC_PicView, self.filelist.getFileList(), self.filelist.getSelectionIndex(), self.filelist.getCurrentDirectory(), False) def StartThumb(self): self.session.openWithCallback(self.returnVal, MC_PicThumbViewer, self.filelist.getFileList(), self.filelist.getSelectionIndex(), self.filelist.getCurrentDirectory()) def JumpToFolder(self, jumpto = None): if jumpto is None: return else: self["filelist"].changeDir(jumpto) self["currentfolder"].setText(("%s") % (jumpto)) def returnVal(self, val=0): if val > 0: for x in self.filelist.getFileList(): if x[0][1] == True: val += 1 self.filelist.moveToIndex(val) def StartExif(self): if not self.filelist.canDescent(): #self.session.open(Pic_Exif, self.filelist.getCurrentDirectory() + self.filelist.getFilename(), self.filelist.getFilename()) #self.session.open(Pic_Exif, self.picload.getInfo(self.filelist.getSelectionIndex())) self.session.open(MessageBox, "Oh no, bugged in this version :(", MessageBox.TYPE_ERROR) def Settings(self): self.session.open(MC_PicSetup) def Exit(self): if self.filelist.getCurrentDirectory() is None: config.plugins.mc_pp.lastDir.value = "/" else: config.plugins.mc_pp.lastDir.value = self.filelist.getCurrentDirectory() config.plugins.mc_pp.save() self.close()
class MC_PictureViewer(Screen, HelpableScreen): def __init__(self, session): Screen.__init__(self, session) HelpableScreen.__init__(self) self["key_red"] = Button("Favorites") self["key_green"] = Button("Slide Show") self["key_yellow"] = Button("Thumb View") self["key_blue"] = Button(_("Settings")) self["currentfolder"] = Label("") self["currentfavname"] = Label("") self.curfavfolder = -1 self["actions"] = HelpableActionMap( self, "MC_PictureViewerActions", { "ok": (self.KeyOk, "Show Picture"), "cancel": (self.Exit, "Exit Picture Viewer"), "left": (self.leftUp, "List Top"), "right": (self.rightDown, "List Bottom"), "up": (self.up, "List up"), "down": (self.down, "List down"), "menu": (self.KeyMenu, "File / Folder Options"), "info": (self.StartExif, "Show File Info"), "nextBouquet": (self.NextFavFolder, "Next Favorite Folder"), "prevBouquet": (self.PrevFavFolder, "Previous Favorite Folder"), "red": (self.FavoriteFolders, "Favorite Folders"), "green": (self.startslideshow, "Start Slideshow"), "yellow": (self.StartThumb, "Thumb View"), "blue": (self.Settings, "Settings"), }, -2, ) self.aspect = getAspect() currDir = config.plugins.mc_pp.lastDir.value if not pathExists(currDir): currDir = "/" self["currentfolder"].setText(str(currDir)) self.filelist = FileList(currDir, matchingPattern="(?i)^.*\.(jpeg|jpg|jpe|png|bmp)") self["filelist"] = self.filelist self["thumbnail"] = Pixmap() self.ThumbTimer = eTimer() self.ThumbTimer.callback.append(self.showThumb) self.ThumbTimer.start(500, True) self.picload = ePicLoad() # self.picload.PictureData.get().append(self.showPic) def startslideshow(self): self.session.openWithCallback( self.returnVal, MC_PicView, self.filelist.getFileList(), self.filelist.getSelectionIndex(), self.filelist.getCurrentDirectory(), True, ) def up(self): self["filelist"].up() self.ThumbTimer.start(500, True) def down(self): self["filelist"].down() self.ThumbTimer.start(500, True) def leftUp(self): self["filelist"].pageUp() self.ThumbTimer.start(500, True) def rightDown(self): self["filelist"].pageDown() self.ThumbTimer.start(500, True) def NextFavFolder(self): if self.curfavfolder + 1 < config.plugins.mc_favorites.foldercount.value: self.curfavfolder += 1 self.favname = config.plugins.mc_favorites.folders[self.curfavfolder].name.value self.folder = config.plugins.mc_favorites.folders[self.curfavfolder].basedir.value self["currentfolder"].setText(("%s") % (self.folder)) self["currentfavname"].setText(("%s") % (self.favname)) if os.path.exists(self.folder) == True: self["filelist"].changeDir(self.folder) else: return def PrevFavFolder(self): if self.curfavfolder <= 0: return else: self.curfavfolder -= 1 self.favname = config.plugins.mc_favorites.folders[self.curfavfolder].name.value self.folder = config.plugins.mc_favorites.folders[self.curfavfolder].basedir.value self["currentfolder"].setText(("%s") % (self.folder)) self["currentfavname"].setText(("%s") % (self.favname)) if os.path.exists(self.folder) == True: self["filelist"].changeDir(self.folder) def showPic(self, picInfo=""): ptr = self.picload.getData() if ptr != None: self["thumbnail"].instance.setPixmap(ptr.__deref__()) self["thumbnail"].show() def showThumb(self): return if not self.filelist.canDescent(): if self.picload.getThumbnail(self.filelist.getCurrentDirectory() + self.filelist.getFilename()) == 1: ptr = self.picload.getData() else: ptr = None # ptr = loadPic(self.filelist.getCurrentDirectory() + self.filelist.getFilename(), 180, 160, self.aspect, int(config.plugins.mc_pp.resize.value), 0, 0, cachefile) if ptr != None: self["thumbnail"].instance.setPixmap(ptr.__deref__()) self["thumbnail"].show() else: self["thumbnail"].hide() def KeyOk(self): if self.filelist.canDescent(): self.filelist.descent() else: self.session.openWithCallback( self.returnVal, MC_PicView, self.filelist.getFileList(), self.filelist.getSelectionIndex(), self.filelist.getCurrentDirectory(), False, ) def KeyMenu(self): self.ThumbTimer.stop() if self["filelist"].canDescent(): if self.filelist.getCurrent()[0][1]: self.currentDirectory = self.filelist.getCurrent()[0][0] if self.currentDirectory is not None: foldername = self.currentDirectory.split("/") foldername = foldername[-2] self.session.open(MC_FolderOptions, self.currentDirectory, foldername) def StartThumb(self): self.session.openWithCallback( self.returnVal, MC_PicThumbViewer, self.filelist.getFileList(), self.filelist.getSelectionIndex(), self.filelist.getCurrentDirectory(), ) def JumpToFolder(self, jumpto=None): if jumpto is None: return else: self["filelist"].changeDir(jumpto) self["currentfolder"].setText(("%s") % (jumpto)) def FavoriteFolders(self): self.session.openWithCallback(self.JumpToFolder, MC_FavoriteFolders) def returnVal(self, val=0): if val > 0: for x in self.filelist.getFileList(): if x[0][1] == True: val += 1 self.filelist.moveToIndex(val) def StartExif(self): if not self.filelist.canDescent(): # self.session.open(Pic_Exif, self.filelist.getCurrentDirectory() + self.filelist.getFilename(), self.filelist.getFilename()) # self.session.open(Pic_Exif, self.picload.getInfo(self.filelist.getSelectionIndex())) self.session.open(MessageBox, "Oh no, bugged in this version :(", MessageBox.TYPE_ERROR) def Settings(self): self.session.open(MC_PicSetup) def Exit(self): if self.filelist.getCurrentDirectory() is None: config.plugins.mc_pp.lastDir.value = "/" else: config.plugins.mc_pp.lastDir.value = self.filelist.getCurrentDirectory() config.plugins.mc_pp.save() self.close()
class MC_PictureViewer(Screen, HelpableScreen): def __init__(self, session): Screen.__init__(self, session) HelpableScreen.__init__(self) self.oldService = self.session.nav.getCurrentlyPlayingServiceReference() self.session.nav.stopService() # Show Background MVI os.system("/usr/bin/showiframe /usr/share/enigma2/black.mvi &") self["key_red"] = Button(_(" ")) self["key_green"] = Button(_("Slide Show")) self["key_yellow"] = Button(_("Thumb View")) self["key_blue"] = Button(_("Settings")) self["currentfolder"] = Label("") self["currentfavname"] = Label("") self.curfavfolder = -1 self["actions"] = HelpableActionMap(self, "MC_PictureViewerActions", { "ok": (self.KeyOk, _("Show Picture")), "cancel": (self.Exit, _("Directory Up")), "left": (self.leftUp, _("List Top")), "right": (self.rightDown, _("List Bottom")), "up": (self.up, _("List up")), "down": (self.down, _("List down")), "menu": (self.KeyMenu, _("File / Folder Options")), "info": (self.StartExif, _("Show File Info")), #"red": (self.Exit, _("Exit Pictures")), "green": (self.startslideshow, _("Start Slideshow")), "yellow": (self.StartThumb, _("Thumb View")), "blue": (self.Settings, _("Settings")), }, -2) currDir = config.plugins.mc_pp.lastDir.value if not pathExists(currDir): currDir = None self["currentfolder"].setText(str(currDir)) self.filelist = FileList(currDir, showMountpoints = True, matchingPattern = "(?i)^.*\.(jpeg|jpg|jpe|png|bmp)") self["filelist"] = self.filelist self["filelist"].onSelectionChanged.append(self.selectionChanged) self["thumbnail"] = Pixmap() self["datelabel"] = StaticText("") self["cameralabel"] = StaticText("") self["sizelabel"] = StaticText("") self["date"] = StaticText("") self["camera"] = StaticText("") self["size"] = StaticText("") list = [] self["fileinfo"] = List(list, enableWrapAround = False) self.ThumbTimer = eTimer() self.ThumbTimer.callback.append(self.showThumb) self.picload = ePicLoad() self.picload.PictureData.get().append(self.showPic) self.onLayoutFinish.append(self.setConf) def startslideshow(self): self.session.openWithCallback(self.returnVal , MC_PicView, self.filelist.getFileList(), self.filelist.getSelectionIndex(), self.filelist.getCurrentDirectory(), True) def up(self): self["filelist"].up() def down(self): self["filelist"].down() def leftUp(self): self["filelist"].pageUp() def rightDown(self): self["filelist"].pageDown() def showPic(self, picInfo=""): ptr = self.picload.getData() if ptr != None: self["thumbnail"].instance.setPixmap(ptr.__deref__()) self["thumbnail"].show() exiflist = self.picload.getInfo(self.filelist.getCurrentDirectory() + self.filelist.getFilename()) self["datelabel"].setText("Date/Time:") self["cameralabel"].setText("Camera:") self["sizelabel"].setText("Width/Heigth:") try: self["date"].setText(exiflist[4]) except: pass try: self["camera"].setText(exiflist[3]) except: pass try: self["size"].setText(exiflist[5]) except: pass def showThumb(self): if not self.filelist.canDescent(): if self.filelist.getCurrentDirectory() and self.filelist.getFilename(): if self.picload.getThumbnail(self.filelist.getCurrentDirectory() + self.filelist.getFilename()) == 1: self.ThumbTimer.start(500, True) def selectionChanged(self): if not self.filelist.canDescent(): self.ThumbTimer.start(500, True) else: self["thumbnail"].hide() self["datelabel"].setText("") self["cameralabel"].setText("") self["sizelabel"].setText("") self["date"].setText("") self["camera"].setText("") self["size"].setText("") def KeyOk(self): if self.filelist.canDescent(): self.filelist.descent() else: self.session.openWithCallback(self.returnVal, MC_PicView, self.filelist.getFileList(), self.filelist.getSelectionIndex(), self.filelist.getCurrentDirectory(), False) def KeyExit(self): self.filelist.gotoParent() def KeyMenu(self): self.ThumbTimer.stop() if self["filelist"].canDescent(): if self.filelist.getCurrent()[0][1]: self.currentDirectory = self.filelist.getCurrent()[0][0] if self.currentDirectory is not None: foldername = self.currentDirectory.split('/') foldername = foldername[-2] self.session.open(MC_FolderOptions,self.currentDirectory, foldername) def StartThumb(self): self.session.openWithCallback(self.returnVal, MC_PicThumbViewer, self.filelist.getFileList(), self.filelist.getSelectionIndex(), self.filelist.getCurrentDirectory()) def returnVal(self, val=0, home=False): if home: self.Exit() else: if val > 0: for x in self.filelist.getFileList(): if x[0][1] == True: val += 1 self.filelist.moveToIndex(val) def StartExif(self): if not self.filelist.canDescent(): self.session.open(Pic_Exif, self.picload.getInfo(self.filelist.getCurrentDirectory() + self.filelist.getFilename())) def Settings(self): self.session.open(MC_PicSetup) def setConf(self): sc = getScale() self.picload.setPara((self["thumbnail"].instance.size().width(), self["thumbnail"].instance.size().height(), sc[0], sc[1], config.plugins.mc_pp.cache.value, int(config.plugins.mc_pp.resize.value), "#00000000")) def Exit(self): try: config.plugins.mc_pp.lastDir.value = self.filelist.getCurrentDirectory() except: config.plugins.mc_pp.lastDir.value = 'mountpoint' config.plugins.mc_pp.save() configfile.save() self.session.nav.playService(self.oldService) self.close()
class MC_VideoPlayer(Screen, HelpableScreen): def __init__(self, session): global currDir Screen.__init__(self, session) HelpableScreen.__init__(self) self['key_red'] = Button(_('Delete Movie')) self['key_yellow'] = Button('') self['key_blue'] = Button(_('Settings')) self['currentfolder'] = Label('') self['currentfavname'] = Label('') self.showiframe = Showiframe() self.mvion = False self.curfavfolder = -1 os.system('touch /tmp/bmcmovie') self['actions'] = HelpableActionMap(self, 'MC_VideoPlayerActions', {'ok': (self.KeyOk, 'Play selected file'), 'cancel': (self.Exit, 'Exit Video Player'), 'left': (self.leftUp, 'List Top'), 'right': (self.rightDown, 'List Bottom'), 'up': (self.up, 'List up'), 'down': (self.down, 'List down'), 'menu': (self.KeyMenu, 'File / Folder Options'), 'info': (self.showFileInfo, 'Show File Info'), 'nextBouquet': (self.NextFavFolder, 'Next Favorite Folder'), 'prevBouquet': (self.PrevFavFolder, 'Previous Favorite Folder'), 'red': (self.SelDelete, 'Delete Movie'), 'blue': (self.KeySettings, 'Settings')}, -2) currDir = config.plugins.mc_vp.lastDir.value if not pathExists(currDir): currDir = '/' self['currentfolder'].setText(str(currDir)) sort = config.plugins.mc_vp_sortmode.enabled.value self.filelist = [] self['filelist'] = [] inhibitDirs = ['/bin', '/boot', '/dev', '/dev.static', '/etc', '/lib', '/proc', '/ram', '/root', '/sbin', '/sys', '/tmp', '/usr', '/var'] self.filelist = FileList(currDir, useServiceRef=True, showDirectories=True, showFiles=True, matchingPattern='(?i)^.*\\.(ts|vob|mpg|mpeg|avi|mkv|dat|iso|img|mp4|wmv|flv|divx|mov|ogm|m2ts)', additionalExtensions=None, sort=sort) self['filelist'] = self.filelist self['filelist'].show() return def up(self): self['filelist'].up() if self.mvion == True: self.showiframe.finishStillPicture() if self['filelist'].canDescent(): return self.cover() def down(self): self['filelist'].down() if self.mvion == True: self.showiframe.finishStillPicture() if self['filelist'].canDescent(): return self.cover() def leftUp(self): self['filelist'].pageUp() if self.mvion == True: self.showiframe.finishStillPicture() if self['filelist'].canDescent(): return if self.mvion == True: self.showiframe.finishStillPicture() self.cover() def rightDown(self): self['filelist'].pageDown() if self.mvion == True: self.showiframe.finishStillPicture() if self['filelist'].canDescent(): if self.mvion == True: self.showiframe.finishStillPicture() else: self.cover() def NextFavFolder(self): pass def SelDelete(self): self.filename = self.filelist.getFilename() path = self.filename self.session.openWithCallback(self.selremove, MessageBox, _('Do you really want to delete\n%s ?') % path, MessageBox.TYPE_YESNO) def selremove(self, ret): if ret is True: self.filename = self.filelist.getFilename() if self.filename.endswith('.ts'): path = self.filename.replace('.ts', '') for fdelete in glob(path + '.*'): os.remove(fdelete) elif self.filename.endswith('.vob'): path = self.filename.replace('.vob', '') print 'path:', path for fdelete in glob(path + '.*'): print 'fdelete:', fdelete os.remove(fdelete) else: path = self.filename os.remove(path) self.updd() def PrevFavFolder(self): pass def showFileInfo(self): if self['filelist'].canDescent(): return self.session.open(MC_VideoInfoView, self['filelist'].getCurrentDirectory() + self['filelist'].getFilename(), self['filelist'].getFilename(), self['filelist'].getServiceRef()) def KeyOk(self): self.filename = self.filelist.getFilename() print self.filename try: if self.filename.endswith('.img') or self.filename.endswith('.iso') or self.filename.endswith('VIDEO_TS/') and config.plugins.mc_vp.dvd.value == 'dvd': self.showiframe.finishStillPicture() from Screens import DVD if self.filename.endswith('VIDEO_TS/'): path = os.path.split(self.filename.rstrip('/'))[0] else: path = self.filename self.session.open(DVD.DVDPlayer, dvd_filelist=[path]) return except Exception as e: print 'DVD Player error:', e if self.filelist.canDescent(): self.filelist.descent() else: self.showiframe.finishStillPicture() self.session.open(MoviePlayer, self['filelist'].getServiceRef(), slist=None, lastservice=None) return def cover(self): filename = self['filelist'].getName() short = shortname(filename) newshort = short.lower() newshort = newshort.replace(' ', '') movienameserie = re.sub('e[0-9]{2}', '', newshort.lower()) covername = '/hdd/bmcover/' + str(movienameserie) + '/backcover.mvi' if fileExists(covername): self.showiframe.showStillpicture(covername) self.mvion = True elif self.mvion == True: self.showiframe.showStillpicture('/usr/share/enigma2/black.mvi') self.mvion = False def KeyMenu(self): pass def updd(self): sort = config.plugins.mc_vp_sortmode.enabled.value self.filelist.refresh(sort) def KeySettings(self): self.session.openWithCallback(self.updd, VideoPlayerSettings) def Exit(self): if self.filelist.getCurrentDirectory() is None: config.plugins.mc_vp.lastDir.value = '/' else: config.plugins.mc_vp.lastDir.value = self.filelist.getCurrentDirectory() config.plugins.mc_vp.save() try: os.remove('/tmp/bmcmovie') except: pass self.showiframe.finishStillPicture() self.close() return
class MC_VideoPlayer(Screen, HelpableScreen): def __init__(self, session): Screen.__init__(self, session) HelpableScreen.__init__(self) self["key_red"] = Button(_("Exit")) self["key_green"] = Button(_("Info")) self["key_yellow"] = Button(_("IMDb")) self["key_blue"] = Button(_("Menu")) self["currentfolder"] = Label("") #Check if AzBox because of using MRUA if os.path.exists("/proc/player"): self.azbox = True else: self.azbox = False #Check if we have a saved last dir currDir = config.plugins.mc_vp.lastDir.value if not pathExists(currDir): currDir = None self["currentfolder"].setText(str(currDir)) self.filelist = FileList(currDir, showMountpoints = True, useServiceRef = True, showDirectories = True, showFiles = True, matchingPattern = "(?i)^.*\.(vob|mpg|mpeg|avi|mkv|dat|iso|img|mp4|divx|m2ts|wmv|flv|mov)") self["filelist"] = self.filelist self["filelist"].onSelectionChanged.append(self.selectionChanged) self["actions"] = HelpableActionMap(self, "MC_VideoPlayerActions", { "ok": (self.KeyOk, _("Play selected file")), "cancel": (self.Exit, _("Exit Video Player")), "left": (self.leftUp, _("List Top")), "right": (self.rightDown, _("List Bottom")), "up": (self.up, _("List up")), "down": (self.down, _("List down")), "menu": (self.showMenu, _("File / Folder Options")), "info": (self.showFileInfo, _("Show File Info")), #"red": (self.Exit, _("Exit Videos")), "yellow": (self.startIMDb, ("Start IMDb")), "home": (self.Exit, _("Exit Videos")), }, -2) def selectionChanged(self): pass def up(self): self["filelist"].up() def down(self): self["filelist"].down() def leftUp(self): self["filelist"].pageUp() def rightDown(self): self["filelist"].pageDown() def showFileInfo(self): if self["filelist"].canDescent(): return else: self.session.open(MC_VideoInfoView, self["filelist"].getCurrentDirectory() + self["filelist"].getFilename() , self["filelist"].getFilename(), self["filelist"].getServiceRef()) def KeyExit(self): self.filelist.gotoParent() def KeyOk(self): self.isDVD = False self.isIso = False self.isFile = False self.pathname = "" filename = self["filelist"].getFilename() if filename is not None: if filename.lower().endswith("iso") or filename.lower().endswith("img"): os.system("mkdir /tmp/discmount") os.system("umount -f /tmp/discmount") os.system("losetup -d /dev/loop0") os.system("losetup /dev/loop0 \"" + str(filename) + "\"") os.system("mount -t udf /dev/loop0 /tmp/discmount") self.pathname = "/tmp/discmount/" self.isIso = True elif self.filelist.canDescent(): self.filelist.descent() self["filelist"].refresh() self.pathname = self["filelist"].getCurrentDirectory() or "" else: self.isFile = True elif self.filelist.canDescent(): self.filelist.descent() self["filelist"].refresh() if self.pathname != "": dvdFilelist = [ ] dvdDevice = None if fileExists(self.pathname+"VIDEO_TS.IFO"): dvdFilelist.append(str(self.pathname[0:-1])) self.isDVD = True elif fileExists(self.pathname+"VIDEO_TS/VIDEO_TS.IFO"): dvdFilelist.append(str(self.pathname+"VIDEO_TS")) self.isDVD = True elif self.isIso: self["filelist"].setIsoDir(filename, self["filelist"].getCurrentDirectory()) self.JumpToFolder("/tmp/discmount/") self["filelist"].up() if self.isDVD: self.filelist.gotoParent() if self.azbox == True: from AZ_DVDPlayer import AZDVDPlayer self.session.open(AZDVDPlayer, dvd_device = dvdDevice, dvd_filelist = dvdFilelist) else: print "Play dvd normal" from Screens import DVD self.session.open(DVD.DVDPlayer, dvd_filelist=dvdFilelist) elif self.isFile: if self.azbox == True: from AZ_MRUAPlayer import MRUAPlayer self.session.open(MRUAPlayer, ref=self["filelist"].getFilename()) else: from MC_MoviePlayer import MC_MoviePlayer self.session.open(MC_MoviePlayer, self["filelist"].getServiceRef()) def JumpToFolder(self, jumpto = None): if jumpto is None: return else: self["filelist"].changeDir(jumpto) self["currentfolder"].setText(("%s") % (jumpto)) def KeySettings(self): self.session.open(VideoPlayerSettings) def Exit(self): try: config.plugins.mc_vp.lastDir.value = self.filelist.getCurrentDirectory() except: config.plugins.mc_vp.lastDir.value = 'mountpoint' config.plugins.mc_vp.save() configfile.save() self.close() def showMenu(self): menu = [] menu.append((_("Check IMDB"), "imdblookup")) if self.filelist.canDescent(): x = self.filelist.getName() if x == "..": return menu.append((_("delete directory"), "deletedir")) else: menu.append((_("delete file"), "deletefile")) self.session.openWithCallback(self.menuCallback, ChoiceBox, title="", list=menu) def menuCallback(self, choice): if choice is None: return if choice[1] == "deletedir": self.deleteDir() elif choice[1] == "deletefile": self.deleteFile() elif choice[1] == "imdblookup": try: from MC_Imdb import IMDB name = self["filelist"].getName() self.session.open(IMDB, name.partition('(')[0]) except ImportError: self.session.open(MessageBox, _("Cannot load IMDB, please check if python-html is installed"), MessageBox.TYPE_INFO, timeout = 5) def deleteDir(self): self.session.openWithCallback(self.deleteDirConfirmed, MessageBox, _("Do you really want to delete this directory and it's content ?")) def deleteDirConfirmed(self, confirmed): if confirmed: import shutil deldir = self.filelist.getSelection()[0] shutil.rmtree(deldir) self["filelist"].refresh() def deleteFile(self): self.session.openWithCallback(self.deleteFileConfirmed, MessageBox, _("Do you really want to delete this file ?")) def deleteFileConfirmed(self, confirmed): if confirmed: delfile = self["filelist"].getFilename() os.remove(delfile) self["filelist"].refresh() def startIMDb(self): from MC_Imdb import IMDB name = self["filelist"].getName() self.session.open(IMDB, name.partition('(')[0])
class MC_AudioPlayer(Screen, HelpableScreen): def __init__(self, session): Screen.__init__(self, session) HelpableScreen.__init__(self) self.isVisible = True self.coverArtFileName = "" self["key_red"] = Button(_(" ")) self["key_green"] = Button(_(" ")) self["key_yellow"] = Button(_("Add to Playlist")) self["key_blue"] = Button(_("Go to Playlist")) self["fileinfo"] = Label() self["coverArt"] = MediaPixmap() self["currentfolder"] = Label() self["play"] = Pixmap() self["stop"] = Pixmap() self["curplayingtitle"] = Label() self.PlaySingle = 0 MC_AudioPlayer.STATE = "NONE" self.playlist = PlayList() self["playlist"] = self.playlist MC_AudioPlayer.playlistplay = 0 MC_AudioPlayer.currPlaying = -1 self.__event_tracker = ServiceEventTracker(screen=self, eventmap= { iPlayableService.evStopped: self.doEOF, iPlayableService.evEOF: self.doEOF, iPlayableService.evUpdatedInfo: self.__evUpdatedInfo, iPlayableService.evUser+11: self.__evDecodeError, iPlayableService.evUser+12: self.__evPluginError, iPlayableService.evUser+13: self["coverArt"].embeddedCoverArt }) self["actions"] = HelpableActionMap(self, "MC_AudioPlayerActions", { "ok": (self.KeyOK, _("Play selected file")), "cancel": (self.Exit, _("Exit Audio Player")), "left": (self.leftUp, _("List Top")), "right": (self.rightDown, _("List Bottom")), "up": (self.up, _("List up")), "down": (self.down, _("List down")), "menu": (self.showMenu, _("File / Folder Options")), "video": (self.visibility, _("Show / Hide Player")), "info": (self.showFileInfo, _("Show File Info")), "stop": (self.StopPlayback, _("Stop Playback")), #"red": (self.Exit, _("Exit Music")), #"green": (self.KeyPlayAll, _("Play All")), "yellow": (self.addFiletoPls, _("Add file to playlist")), "blue": (self.Playlists, _("Playlists")), "next": (self.KeyNext, _("Next song")), "previous": (self.KeyPrevious, _("Previous song")), "playpause": (self.PlayPause, _("Play / Pause")), "stop": (self.StopPlayback, _("Stop")), "seekFwd": (self.seekFwd, _("skip forward")), "seekBwd": (self.seekBwd, _("skip backward")), }, -2) self.playlistparsers = {} self.addPlaylistParser(PlaylistIOM3U, "m3u") self.addPlaylistParser(PlaylistIOPLS, "pls") self.addPlaylistParser(PlaylistIOInternal, "e2pls") currDir = config.plugins.mc_ap.lastDir.value if not pathExists(currDir): currDir = None self["currentfolder"].setText(str(currDir)) self.filelist = FileList(currDir, showMountpoints = True, useServiceRef = True, showDirectories = True, showFiles = True, matchingPattern = "(?i)^.*\.(mp3|ogg|wav|wave|flac|m4a|m3u|pls|e2pls)", additionalExtensions = "4098:m3u 4098:e2pls 4098:pls") self["filelist"] = self.filelist self["thumbnail"] = Pixmap() def up(self): self["filelist"].up() def down(self): self["filelist"].down() def leftUp(self): self["filelist"].pageUp() def rightDown(self): self["filelist"].pageDown() def KeyOK(self): if self["filelist"].canDescent(): self.filelist.descent() self["currentfolder"].setText(str(self.filelist.getCurrentDirectory())) else: if self.filelist.getServiceRef().type == 4098: # playlist ServiceRef = self.filelist.getServiceRef() extension = ServiceRef.getPath()[ServiceRef.getPath().rfind('.') + 1:] if self.playlistparsers.has_key(extension): self.playlist.clear() playlist = self.playlistparsers[extension]() list = playlist.open(ServiceRef.getPath()) for x in list: self.playlist.addFile(x.ref) self.playlist.updateList() MC_AudioPlayer.currPlaying = 0 self.PlayServicepls() else: self.PlaySingle = 0 self.PlayService() def PlayPause(self): if MC_AudioPlayer.STATE == "PLAY": service = self.session.nav.getCurrentService() pausable = service.pause() pausable.pause() MC_AudioPlayer.STATE = "PAUSED" elif MC_AudioPlayer.STATE == "PAUSED" or MC_AudioPlayer.STATE == "SEEKBWD" or MC_AudioPlayer.STATE == "SEEKFWD": service = self.session.nav.getCurrentService() pausable = service.pause() pausable.unpause() MC_AudioPlayer.STATE = "PLAY" else: self.KeyOK() def seekFwd(self): if MC_AudioPlayer.STATE == "PLAY" or MC_AudioPlayer.STATE == "SEEKBWD": service = self.session.nav.getCurrentService() pausable = service.pause() pausable.setFastForward(4) MC_AudioPlayer.STATE = "SEEKFWD" def seekBwd(self): if MC_AudioPlayer.STATE == "PLAY" or MC_AudioPlayer.STATE == "SEEKFWD": service = self.session.nav.getCurrentService() pausable = service.pause() pausable.setFastForward(-4) MC_AudioPlayer.STATE = "SEEKBWD" def KeyNext(self): if MC_AudioPlayer.STATE != "NONE": if MC_AudioPlayer.playlistplay == 1: next = self.playlist.getCurrentIndex() + 1 if next < len(self.playlist): MC_AudioPlayer.currPlaying = MC_AudioPlayer.currPlaying + 1 else: MC_AudioPlayer.currPlaying = 0 self.PlayServicepls() else: print "Play Next File ..." self.down() self.PlayService() def KeyPrevious(self): if MC_AudioPlayer.STATE != "NONE": if MC_AudioPlayer.playlistplay == 1: next = self.playlist.getCurrentIndex() - 1 if next != -1: MC_AudioPlayer.currPlaying = MC_AudioPlayer.currPlaying - 1 else: MC_AudioPlayer.currPlaying = 0 self.PlayServicepls() else: print "Play previous File ..." self.up() self.PlayService() def KeyPlayAll(self): if not self["filelist"].canDescent(): self.PlaySingle = 0 self.PlayService() def KeyExit(self): self.filelist.gotoParent() def KeyYellow(self): print "yellow" def visibility(self, force=1): if self.isVisible == True: self.isVisible = False self.hide() else: self.isVisible = True self.show() def Playlists(self): self.session.openWithCallback(self.updateFileInfo, MC_AudioPlaylist) def PlayService(self): playlistplay = 0 self.session.nav.playService(self["filelist"].getServiceRef()) MC_AudioPlayer.STATE = "PLAY" self.updateFileInfo() path = self["filelist"].getCurrentDirectory() + self["filelist"].getFilename() self["coverArt"].updateCoverArt(path) def PlayServicepls(self): MC_AudioPlayer.playlistplay = 1 x = self.playlist.getCurrentIndex() print "x is %s" % (x) x = len(self.playlist) print "x is %s" % (x) ref = self.playlist.getServiceRefList()[self.playlist.getCurrentIndex()] self.session.nav.playService(ref) MC_AudioPlayer.STATE = "PLAY" self.updateFileInfo() #path = self["filelist"].getCurrentDirectory() + self["filelist"].getFilename() #self["coverArt"].updateCoverArt(path) def StopPlayback(self): if self.isVisible == False: self.show() self.isVisible = True if self.session.nav.getCurrentService() is None: return else: self.session.nav.stopService() MC_AudioPlayer.STATE = "NONE" def showFileInfo(self): if self["filelist"].canDescent(): return else: self.session.open(MC_AudioInfoView, self["filelist"].getCurrentDirectory() + self["filelist"].getFilename() , self["filelist"].getFilename(), self["filelist"].getServiceRef()) def JumpToFolder(self, jumpto = None): if jumpto is None: return else: self["filelist"].changeDir(jumpto) self["currentfolder"].setText(("%s") % (jumpto)) def updateFileInfo(self): currPlay = self.session.nav.getCurrentService() if currPlay is not None: sTitle = currPlay.info().getInfoString(iServiceInformation.sTagTitle) sArtist = currPlay.info().getInfoString(iServiceInformation.sTagArtist) sAlbum = currPlay.info().getInfoString(iServiceInformation.sTagAlbum) sGenre = currPlay.info().getInfoString(iServiceInformation.sTagGenre) sComment = currPlay.info().getInfoString(iServiceInformation.sTagComment) sYear = currPlay.info().getInfoString(iServiceInformation.sTagDate) if sTitle == "": sTitle = currPlay.info().getName().split('/')[-1] self["fileinfo"].setText(_("Title:") + " " + sTitle + "\n" + _("Artist:") + " " + sArtist + "\n" + _("Album:") + " " + sAlbum + "\n" + _("Genre:") + " " + sGenre + "\n" + _("Comment:") + " " + sComment) self["curplayingtitle"].setText(_("Now Playing:") + " " + sArtist + " - " + sTitle) def addFiletoPls(self): if self.filelist.getServiceRef().type == 4098: # playlist ServiceRef = self.filelist.getServiceRef() extension = ServiceRef.getPath()[ServiceRef.getPath().rfind('.') + 1:] if self.playlistparsers.has_key(extension): playlist = self.playlistparsers[extension]() list = playlist.open(ServiceRef.getPath()) for x in list: self.playlist.addFile(x.ref) self.playlist.updateList() else: self.playlist.addFile(self.filelist.getServiceRef()) self.playlist.updateList() def addDirtoPls(self, directory, recursive = True): print "copyDirectory", directory if directory == '/': print "refusing to operate on /" return filelist = FileList(directory, useServiceRef = True, showMountpoints = False, isTop = True) for x in filelist.getFileList(): if x[0][1] == True: #isDir if recursive: if x[0][0] != directory: self.copyDirectory(x[0][0]) elif filelist.getServiceRef() and filelist.getServiceRef().type == 4097: self.playlist.addFile(x[0][0]) self.playlist.updateList() def deleteFile(self): self.service = self.filelist.getServiceRef() if self.service.type != 4098 and self.session.nav.getCurrentlyPlayingServiceReference() is not None: if self.service == self.session.nav.getCurrentlyPlayingServiceReference(): self.StopPlayback() self.session.openWithCallback(self.deleteFileConfirmed, MessageBox, _("Do you really want to delete this file ?")) def deleteFileConfirmed(self, confirmed): if confirmed: delfile = self["filelist"].getFilename() os.remove(delfile) def deleteDir(self): self.session.openWithCallback(self.deleteDirConfirmed, MessageBox, _("Do you really want to delete this directory and it's content ?")) def deleteDirConfirmed(self, confirmed): if confirmed: import shutil deldir = self.filelist.getSelection()[0] shutil.rmtree(deldir) def addPlaylistParser(self, parser, extension): self.playlistparsers[extension] = parser def Exit(self): if self.isVisible == False: self.visibility() return try: config.plugins.mc_ap.lastDir.value = self.filelist.getCurrentDirectory() except: config.plugins.mc_ap.lastDir.value = 'mountpoint' config.plugins.mc_ap.save() configfile.save() del self["coverArt"].picload self.session.nav.stopService() MC_AudioPlayer.STATE = "NONE" self.close() def showMenu(self): menu = [] if self.filelist.canDescent(): x = self.filelist.getName() if x == "..": return menu.append((_("add directory to playlist"), "copydir")) menu.append((_("delete directory"), "deletedir")) else: menu.append((_("add file to playlist"), "copyfile")) menu.append((_("add file to playlist and play"), "copyandplay")) menu.append((_("add all files in directory to playlist"), "copyfiles")) menu.append((_("delete file"), "deletefile")) self.session.openWithCallback(self.menuCallback, ChoiceBox, title="", list=menu) def menuCallback(self, choice): if choice is None: return if choice[1] == "copydir": self.addDirtoPls(self.filelist.getSelection()[0]) elif choice[1] == "deletedir": self.deleteDir() elif choice[1] == "copyfile": self.addFiletoPls() elif choice[1] == "copyandplay": self.addFiletoPls() MC_AudioPlayer.currPlaying = len(self.playlist) - 1 print "curplay is %s" % (MC_AudioPlayer.currPlaying) self.PlayServicepls() elif choice[1] == "copyfiles": self.addDirtoPls(os_path.dirname(self.filelist.getSelection()[0].getPath()) + "/", recursive = False) elif choice[1] == "deletefile": self.deleteFile() def doEOF(self): print "MediaCenter: EOF Event AUDIO..." if MC_AudioPlayer.playlistplay == 1: next = self.playlist.getCurrentIndex() + 1 if next < len(self.playlist): MC_AudioPlayer.currPlaying = MC_AudioPlayer.currPlaying + 1 self.PlayServicepls() elif self.PlaySingle == 0: print "Play Next File ..." self.down() if not self["filelist"].canDescent(): self.PlayService() else: self.StopPlayback() else: print "Stop Playback ..." self.StopPlayback() def __evUpdatedInfo(self): self.updateFileInfo() def __evDecodeError(self): currPlay = self.session.nav.getCurrentService() sVideoType = currPlay.info().getInfoString(iServiceInformation.sVideoType) print "[__evDecodeError] video-codec %s can't be decoded by hardware" % (sVideoType) self.session.open(MessageBox, _("This Dreambox can't decode %s video streams!") % sVideoType, type = MessageBox.TYPE_INFO,timeout = 20 ) def __evPluginError(self): currPlay = self.session.nav.getCurrentService() message = currPlay.info().getInfoString(iServiceInformation.sUser+12) print "[__evPluginError]" , message self.session.open(MessageBox, message, type = MessageBox.TYPE_INFO,timeout = 20 )