class MC_VideoPlayer(Screen, HelpableScreen): def __init__(self, session): Screen.__init__(self, session) HelpableScreen.__init__(self) # self.oldService = self.session.nav.getCurrentlyPlayingServiceReference() # self.session.nav.stopService() self["key_red"] = Button(_("Favorites")) self["key_yellow"] = Button("") self["key_blue"] = Button(_("Settings")) self["currentfolder"] = Label("") self["currentfavname"] = Label("") self.curfavfolder = -1 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) self.aspect = getAspect() currDir = config.plugins.mc_vp.lastDir.value if not pathExists(currDir): currDir = "/" self["currentfolder"].setText(str(currDir)) self.filelist = FileList(currDir, useServiceRef = True, showDirectories = True, showFiles = True, matchingPattern = "(?i)^.*\.(ts|vob|mpg|mpeg|avi|mkv|dat|iso|mp4|flv|divx)") self["filelist"] = self.filelist self.__event_tracker = ServiceEventTracker(screen=self, eventmap= { iPlayableService.evUser+11: self.__evDecodeError, iPlayableService.evUser+12: self.__evPluginError }) 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 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 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): if self.filelist.canDescent(): self.filelist.descent() else: self.session.open(BonkelPlayer, self["filelist"].getServiceRef()) # screen adjustment os.system("echo " + hex(config.plugins.mc_globalsettings.dst_top.value)[2:] + " > /proc/stb/vmpeg/0/dst_top") os.system("echo " + hex(config.plugins.mc_globalsettings.dst_left.value)[2:] + " > /proc/stb/vmpeg/0/dst_left") os.system("echo " + hex(config.plugins.mc_globalsettings.dst_width.value)[2:] + " > /proc/stb/vmpeg/0/dst_width") os.system("echo " + hex(config.plugins.mc_globalsettings.dst_height.value)[2:] + " > /proc/stb/vmpeg/0/dst_height") 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) 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 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 KeySettings(self): self.session.open(VideoPlayerSettings) 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 = 10 ) def __evPluginError(self): currPlay = self.session.nav.getCurrentService() message = currPlay.info().getInfoString(iServiceInformation.sUser+12) print "[__evPluginError]" , message self.session.open(MessageBox, ("GStreamer Error: missing %s") % message, type = MessageBox.TYPE_INFO,timeout = 20 ) 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() self.close()
class MC_VideoPlayer(Screen, HelpableScreen): def __init__(self, session): Screen.__init__(self, session) HelpableScreen.__init__(self) # self.oldService = self.session.nav.getCurrentlyPlayingServiceReference() # self.session.nav.stopService() self["key_red"] = Button(_("Favorites")) self["key_yellow"] = Button("") self["key_blue"] = Button(_("Settings")) self["currentfolder"] = Label("") self["currentfavname"] = Label("") self.curfavfolder = -1 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) self.aspect = getAspect() currDir = config.plugins.mc_vp.lastDir.value if not pathExists(currDir): currDir = "/" self["currentfolder"].setText(str(currDir)) self.filelist = FileList( currDir, useServiceRef=True, showDirectories=True, showFiles=True, matchingPattern= "(?i)^.*\.(ts|vob|mpg|mpeg|avi|mkv|dat|iso|mp4|flv|divx)") self["filelist"] = self.filelist self.__event_tracker = ServiceEventTracker( screen=self, eventmap={ iPlayableService.evUser + 11: self.__evDecodeError, iPlayableService.evUser + 12: self.__evPluginError }) 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 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 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): if self.filelist.canDescent(): self.filelist.descent() else: self.session.open(BonkelPlayer, self["filelist"].getServiceRef()) # screen adjustment os.system("echo " + hex(config.plugins.mc_globalsettings.dst_top.value)[2:] + " > /proc/stb/vmpeg/0/dst_top") os.system( "echo " + hex(config.plugins.mc_globalsettings.dst_left.value)[2:] + " > /proc/stb/vmpeg/0/dst_left") os.system( "echo " + hex(config.plugins.mc_globalsettings.dst_width.value)[2:] + " > /proc/stb/vmpeg/0/dst_width") os.system( "echo " + hex(config.plugins.mc_globalsettings.dst_height.value)[2:] + " > /proc/stb/vmpeg/0/dst_height") 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) 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 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 KeySettings(self): self.session.open(VideoPlayerSettings) 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=10) def __evPluginError(self): currPlay = self.session.nav.getCurrentService() message = currPlay.info().getInfoString(iServiceInformation.sUser + 12) print "[__evPluginError]", message self.session.open(MessageBox, ("GStreamer Error: missing %s") % message, type=MessageBox.TYPE_INFO, timeout=20) 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() self.close()
class EVOMC_PictureViewer(Screen, HelpableScreen): def __init__(self, session): Screen.__init__(self, session) HelpableScreen.__init__(self) # Show Background MVI #system("/usr/bin/showiframe /usr/lib/enigma2/python/Plugins/Extensions/EVOMediaCenter/icons/background.mvi &") 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, "EVOMC_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["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions", { "cancel": (self.Exit, "Exit Picture Viewer"), }, -2) self.aspect = getAspect() currDir = config.plugins.EVOMC_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() evfd.getInstance().vfd_write_string("EVO-PICVIEWER") 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 , EVOMC_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.EVOMC_favorites.foldercount.value: self.curfavfolder += 1 self.favname = config.plugins.EVOMC_favorites.folders[self.curfavfolder].name.value self.folder = config.plugins.EVOMC_favorites.folders[self.curfavfolder].basedir.value self["currentfolder"].setText(("%s") % (self.folder)) self["currentfavname"].setText(("%s") % (self.favname)) if pathExists(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.EVOMC_favorites.folders[self.curfavfolder].name.value self.folder = config.plugins.EVOMC_favorites.folders[self.curfavfolder].basedir.value self["currentfolder"].setText(("%s") % (self.folder)) self["currentfavname"].setText(("%s") % (self.favname)) if pathExists(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.EVOMC_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, EVOMC_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] foldername = self.currentDirectory.split('/') foldername = foldername[-2] self.session.open(EVOMC_FolderOptions,self.currentDirectory, foldername) def StartThumb(self): self.session.openWithCallback(self.returnVal, EVOMC_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, EVOMC_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(EVOMC_PicSetup) def Exit(self): if self.filelist.getCurrentDirectory() is None: config.plugins.EVOMC_pp.lastDir.value = "/" else: config.plugins.EVOMC_pp.lastDir.value = self.filelist.getCurrentDirectory() config.plugins.EVOMC_pp.save() self.close()
class EVOMC_AudioPlayer(Screen, HelpableScreen): def __init__(self, session): Screen.__init__(self, session) HelpableScreen.__init__(self) self.bScreen = self.session.instantiateDialog(Blackscreen) self.bScreen.show() self.myaudioScreenSaverconfig = int(config.plugins.EVOMC_saver.myaudioScreenSaver.value) self.myaudioScreenSaverTimer = eTimer() self.myaudioScreenSaverTimer.timeout.get().append(self.myaudioScreenSaverTimer_Timeout) self.ResetmyaudioScreenSaverTimer() self.start_timer = eTimer() self.moveTimer = eTimer() self.start_timer.timeout.get().append(self.onLayoutFinished) self.isVisible = True self.oldService = self.session.nav.getCurrentlyPlayingServiceReference() self.skindir = "/usr/lib/enigma2/python/Plugins/Extensions/EVOMediaCenter/skins/basic" self.coverArtFileName = "" self["PositionGauge"] = ServicePositionGauge(self.session.nav) self["key_red"] = Button(_("Delete")) self["key_green"] = Button(_("Play All")) self["key_yellow"] = Button(_("Favorites")) self["key_blue"] = Button(_("Settings")) self["fileinfo"] = Label() self["coverArt"] = MediaPixmap() self["currentfolder"] = Label() self["currentfavname"] = Label() self.playlist = MyPlayList() self.currList = "filelist" self.curfavfolder = -1 self["play"] = Pixmap() self["stop"] = Pixmap() self["curplayingtitle"] = Label() self.currPlaying = 0 self.PlaySingle = 0 self.PlaySingleRUN = 0 self.PlayAll = 0 self.__event_tracker = ServiceEventTracker(screen=self, eventmap= { iPlayableService.evEOF: self.doEOF, iPlayableService.evStopped: self.StopPlayback, iPlayableService.evUser+11: self.__evDecodeError, iPlayableService.evUser+12: self.__evPluginError, iPlayableService.evUser+13: self["coverArt"].embeddedCoverArt }) self["actions"] = HelpableActionMap(self, "EVOMC_AudioPlayerActions", { "ok": (self.KeyPlaySingle, "Play selected file"), "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"), "video": (self.visibility, "Show / Hide Player"), "nextBouquet": (self.NextFavFolder, "Next Favorite Folder"), "prevBouquet": (self.PrevFavFolder, "Previous Favorite Folder"), "red": (self.deleteFile, "Delete File"), "green": (self.KeyPlayAll, "Play All"), "yellow": (self.FavoriteFolders, "Favorite Folders"), "blue": (self.Settings, "Settings"), }, -2) self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions", { "cancel": (self.Exit, "Exit Audio Player"), }, -2) self["InfobarShowHideActions"] = HelpableActionMap(self, "InfobarShowHideActions", { "toggleShow": (self.showFileInfo, "Show File Info"), }, -2) self["MediaPlayerActions"] = HelpableActionMap(self, "MediaPlayerActions", { "stop": (self.StopPlayback, "Stop Playback"), }, -2) self.aspect = getAspect() currDir = config.plugins.EVOMC_ap.lastDir.value if not pathExists(currDir): currDir = "/" self["currentfolder"].setText(str(currDir)) self.filelist = FileList(currDir, useServiceRef = True, showDirectories = True, showFiles = True, matchingPattern = "(?i)^.*\.(mp3|ogg|wma|wav|wave|flac|m4a)") self["filelist"] = self.filelist self["thumbnail"] = Pixmap() evfd.getInstance().vfd_write_string("EVO-AUDIOPLAYER") self.ThumbTimer = eTimer() self.ThumbTimer.callback.append(self.showThumb) self.ThumbTimer.start(config.plugins.EVOMC_ap.preview_delay.getValue() * 1000, True) self.DimmerTimer = eTimer() self.DimmerTimer.callback.append(self.showDimmer) self.DimmerTimer.start(config.plugins.EVOMC_all.dimmer_delay.getValue() * 1000, True) self.BlinkingPlayIconTimer = eTimer() self.BlinkingPlayIconTimer.callback.append(self.BlinkingPlayIcon) self.blinking=False self.FileInfoTimer = eTimer() self.FileInfoTimer.callback.append(self.updateFileInfo) self.myaudioScreenSaverconfig = int(config.plugins.EVOMC_saver.myaudioScreenSaver.value) self.ResetmyaudioScreenSaverTimer() def onLayoutFinished(self): global startindex self.startindex = startindex self.num += 1 if startindex is not None: self.start_timer.stop() else: if self.num < 30: self.start_timer.start(2000) else: self.start_timer.stop() fehler = "Fehler beim automatischen Start" self.session.open(MessageBox,_("%s" %fehler), MessageBox.TYPE_INFO) def myaudioScreenSaverTimer_Timeout(self): if self.myaudioScreenSaverTimer.isActive(): self.myaudioScreenSaverTimer.stop() self.session.openWithCallback(self.ResetmyaudioScreenSaverTimer,myaudioScreenSaver) def ResetmyaudioScreenSaverTimer(self): if onmyaudioScreenSaver: pass if self.myaudioScreenSaverconfig != 0: if self.myaudioScreenSaverTimer.isActive(): self.myaudioScreenSaverTimer.stop() self.myaudioScreenSaverTimer.start(self.myaudioScreenSaverconfig * 1000) def deleteFile(self): if self.currList == "filelist": self.service = self.filelist.getServiceRef() else: self.service = self.playlist.getSelection() if self.service is None: return if self.service.type != 4098 and self.session.nav.getCurrentlyPlayingServiceReference() is not None: if self.service == self.session.nav.getCurrentlyPlayingServiceReference(): self.stopEntry() serviceHandler = eServiceCenter.getInstance() offline = serviceHandler.offlineOperations(self.service) info = serviceHandler.info(self.service) name = info and info.getName(self.service) result = False if offline is not None: # simulate first if not offline.deleteFromDisk(1): result = True if result == True: self.session.openWithCallback(self.deleteConfirmed_offline, MessageBox, _("Do you really want to delete %s?") % (name)) else: self.session.openWithCallback(self.close, MessageBox, _("You cannot delete this!"), MessageBox.TYPE_ERROR) def deleteConfirmed_offline(self, confirmed): if confirmed: serviceHandler = eServiceCenter.getInstance() offline = serviceHandler.offlineOperations(self.service) result = False if offline is not None: # really delete! if not offline.deleteFromDisk(0): result = True if result == False: self.session.open(MessageBox, _("Delete failed!"), MessageBox.TYPE_ERROR) else: self.removeListEntry() def removeListEntry(self): self.savePlaylistOnExit = True currdir = self.filelist.getCurrentDirectory() self.filelist.changeDir(currdir) deleteend = False while not deleteend: index = 0 deleteend = True if len(self.playlist) > 0: for x in self.playlist.list: if self.service == x[0]: self.playlist.deleteFile(index) deleteend = False break index += 1 self.playlist.updateList() if self.currList == "playlist": if len(self.playlist) == 0: self.switchToFileList() def up(self): self["filelist"].up() system("stfbcontrol a 255") self.ThumbTimer.start(config.plugins.EVOMC_ap.preview_delay.getValue() * 1000, True) self.DimmerTimer.start(config.plugins.EVOMC_all.dimmer_delay.getValue() * 1000, True) def down(self): self["filelist"].down() system("stfbcontrol a 255") self.ThumbTimer.start(config.plugins.EVOMC_ap.preview_delay.getValue() * 1000, True) self.DimmerTimer.start(config.plugins.EVOMC_all.dimmer_delay.getValue() * 1000, True) def leftUp(self): self["filelist"].pageUp() system("stfbcontrol a 255") self.ThumbTimer.start(config.plugins.EVOMC_ap.preview_delay.getValue() * 1000, True) self.DimmerTimer.start(config.plugins.EVOMC_all.dimmer_delay.getValue() * 1000, True) def rightDown(self): self["filelist"].pageDown() system("stfbcontrol a 255") self.ThumbTimer.start(config.plugins.EVOMC_ap.preview_delay.getValue() * 1000, True) self.DimmerTimer.start(config.plugins.EVOMC_all.dimmer_delay.getValue() * 1000, True) def showDimmer(self): if config.plugins.EVOMC_all.showDimmer.value: system("stfbcontrol a 80") # else: # pass def NextFavFolder(self): system("stfbcontrol a 255") if self.curfavfolder + 1 < config.plugins.EVOMC_favorites.foldercount.value: self.curfavfolder += 1 self.favname = config.plugins.EVOMC_favorites.folders[self.curfavfolder].name.value self.folder = config.plugins.EVOMC_favorites.folders[self.curfavfolder].basedir.value self["currentfolder"].setText(("%s") % (self.folder)) self["currentfavname"].setText(("%s") % (self.favname)) if pathExists(self.folder) == True: self["filelist"].changeDir(self.folder) else: return def PrevFavFolder(self): system("stfbcontrol a 255") if self.curfavfolder <= 0: return else: self.curfavfolder -= 1 self.favname = config.plugins.EVOMC_favorites.folders[self.curfavfolder].name.value self.folder = config.plugins.EVOMC_favorites.folders[self.curfavfolder].basedir.value self["currentfolder"].setText(("%s") % (self.folder)) self["currentfavname"].setText(("%s") % (self.favname)) if pathExists(self.folder) == True: self["filelist"].changeDir(self.folder) def KeyPlaySingle(self): filename = self["filelist"].getFilename() print "filename", filename print "self.PlaySingle", self.PlaySingle if self.PlaySingleRUN == 0: if self.PlaySingle == 1 or config.plugins.EVOMC_ap.showPreview.getValue(): if filename.upper().endswith(".MP3") or filename.upper().endswith(".OGG") or filename.upper().endswith(".WAV") or filename.upper().endswith(".WAVE") or filename.upper().endswith(".FLAC") or filename.upper().endswith(".M4A"): return else: if config.plugins.EVOMC_ap.showPreview.getValue(): if filename.upper().endswith(".MP3") or filename.upper().endswith(".OGG") or filename.upper().endswith(".WAV") or filename.upper().endswith(".WAVE") or filename.upper().endswith(".FLAC") or filename.upper().endswith(".M4A"): return system("stfbcontrol a 255") self.ThumbTimer.stop() if self["filelist"].canDescent(): self["currentfavname"].setText("") self.curfavfolder = -1 self.filelist.descent() self["currentfolder"].setText(str(self.filelist.getCurrentDirectory())) else: self.PlaySingle = 1 self.PlaySingleRUN = 1 self.PlayService() self.BlinkingPlayIconTimer.stop() def KeyPlayAll(self): self.ThumbTimer.stop() if not self["filelist"].canDescent(): self.PlaySingle = 0 self.PlayAll = 1 self.PlayService() self.BlinkingPlayIconTimer.start(1000, True) def PlayService(self): system("stfbcontrol a 255") self.StopPlayback() self.filelist.refresh() self.currPlaying = 1 if self.PlayAll == 1: self.BlinkingPlayIconTimer.start(1000, True) evfd.getInstance().vfd_write_string("PLAY") self.session.nav.playService(self["filelist"].getServiceRef()) self.FileInfoTimer.start(2000, True) self["play"].instance.setPixmapFromFile(str(self.skindir) + "/images/icons/play_enabled.png") self["stop"].instance.setPixmapFromFile(str(self.skindir) + "/images/icons/stop_disabled.png") system("vfdctl +play") system("vfdctl +mp3") system("vfdctl +music") path = self["filelist"].getFilename() self["coverArt"].updateCoverArt(path) 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, EVOMC_FavoriteFolders) def StartThumb(self): self.session.openWithCallback(self.returnVal, ThumbView, self.filelist.getFileList(), self.filelist.getFilename(), self.filelist.getCurrentDirectory()) def showThumb(self): if config.plugins.EVOMC_ap.showPreview.getValue() == False: return if self["filelist"].canDescent(): return else: if self["filelist"].getServiceRef() is not None: system("stfbcontrol a 255") self.ThumbTimer.stop() system("killall -9 showiframe") system("stfbcontrol a 255") self.filelist.refresh() self.session.nav.stopService() self.session.nav.playService(self["filelist"].getServiceRef()) self.currPlaying = 1 self["play"].instance.setPixmapFromFile(str(self.skindir) + "/images/icons/play_enabled.png") self["stop"].instance.setPixmapFromFile(str(self.skindir) + "/images/icons/stop_disabled.png") self.FileInfoTimer.start(2000, True) self.BlinkingPlayIconTimer.start(1000, True) 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(ExifView, self.filelist.getCurrentDirectory() + self.filelist.getFilename(), self.filelist.getFilename()) def visibility(self, force=1): if self.isVisible == True: self.isVisible = False self.hide() else: self.isVisible = True self.show() def BlinkingPlayIcon(self): if self.blinking: self.blinking=False self["play"].instance.setPixmapFromFile(str(self.skindir) + "/images/icons/play_disabled.png") self.BlinkingPlayIconTimer.start(1000, True) else: self.blinking=True self["play"].instance.setPixmapFromFile(str(self.skindir) + "/images/icons/play_enabled.png") self.BlinkingPlayIconTimer.start(1000, True) def StopPlayback(self): evfd.getInstance().vfd_write_string("STOP") if self.isVisible == False: self.show() self.isVisible = True if self.session.nav.getCurrentService() is None: return else: self.session.nav.stopService() self["play"].instance.setPixmapFromFile(str(self.skindir) + "/images/icons/play_disabled.png") self["stop"].instance.setPixmapFromFile(str(self.skindir) + "/images/icons/stop_enabled.png") self.currPlaying = 0 self.BlinkingPlayIconTimer.stop() self.ThumbTimer.stop() system("killall -9 showiframe") system("stfbcontrol a 255") self.ThumbTimer.start(config.plugins.EVOMC_ap.preview_delay.getValue() * 1000, True) self.DimmerTimer.start(config.plugins.EVOMC_all.dimmer_delay.getValue() * 1000, True) system("vfdctl -play") system("vfdctl -mp3") system("vfdctl -music") self.StopPlayback() def showFileInfo(self): if self["filelist"].canDescent(): return else: system("stfbcontrol a 255") self.ThumbTimer.start(config.plugins.EVOMC_ap.preview_delay.getValue() * 1000, True) self.DimmerTimer.start(config.plugins.EVOMC_all.dimmer_delay.getValue() * 1000, True) self.session.open(EVOMC_AudioInfoView, self["filelist"].getCurrentDirectory() + self["filelist"].getFilename() , self["filelist"].getFilename(), self["filelist"].getServiceRef()) def updateFileInfo(self): if self["filelist"].canDescent(): return 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) sYear = currPlay.info().getInfoString(iServiceInformation.sTimeCreate) # sComment = currPlay.info().getInfoString(iServiceInformation.sTagComment) if stitle == "": stitle = currPlay.info().getName().split('/')[-1] self["fileinfo"].setText("Title: " + stitle + "\nArtist: " + sArtist + "\nAlbum: " + sAlbum + "\nGenre: " + sGenre) self["curplayingtitle"].setText(stitle) else: pass def doEOF(self): try: print "EVO-MediaCenter: EOF Event ..." if self.PlaySingle == 0: print "Play Next File ..." self.ThumbTimer.stop() self.down() try: self.PlayService() except: pass else: print "Stop Playback ..." self.StopPlayback() system("vfdctl -play") system("vfdctl -mp3") system("vfdctl -music") except: pass def __evDecodeError(self): currPlay = self.session.nav.getCurrentService() sAudioType = currPlay.info().getInfoString(iServiceInformation.sUser+10) print "[__evAudioDecodeError] audio-codec %s can't be decoded by hardware" % (sAudioType) self.session.open(MessageBox, _("This UFS can't decode %s streams!") % sAudioType, type = MessageBox.TYPE_INFO,timeout = 5 ) 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 ) def Playlists(self): evfd.getInstance().vfd_write_string("PLAYLIST") self.ThumbTimer.stop() self.session.open(MessageBox,"Coming soon ... :)", MessageBox.TYPE_INFO) def KeyMenu(self): self.ThumbTimer.stop() if self["filelist"].canDescent(): if self.filelist.getCurrent()[0][1]: self.currentDirectory = self.filelist.getCurrent()[0][0] self.foldername = self.currentDirectory.split('/') self.foldername = self.foldername[-2] self.session.open(EVOMC_FolderOptions, self.currentDirectory, self.foldername) def Settings(self): evfd.getInstance().vfd_write_string("SETTINGS") system("stfbcontrol a 255") self.ThumbTimer.stop() self.session.open(AudioPlayerSettings) config.plugins.EVOMC_ap.save() config.plugins.EVOMC_all.save() def Exit(self): if self.isVisible == False: self.visibility() return if self.filelist.getCurrentDirectory() is None: config.plugins.EVOMC_ap.lastDir.value = "/" else: config.plugins.EVOMC_ap.lastDir.value = self.filelist.getCurrentDirectory() system("killall -9 showiframe") system("stfbcontrol a 255") system("vfdctl -play") system("vfdctl -mp3") system("vfdctl -music") self.ThumbTimer.stop() self.DimmerTimer.stop() self.FileInfoTimer.stop() del self["coverArt"].picload config.plugins.EVOMC_ap.save() config.plugins.EVOMC_all.save() self.session.nav.stopService() evfd.getInstance().vfd_write_string("EVO-MediaCenter") self.close()
class EVOMC_VideoPlayer(Screen, InfoBarBase, InfoBarSeek, InfoBarNotifications, HelpableScreen): def __init__(self, session): Screen.__init__(self, session) HelpableScreen.__init__(self) InfoBarNotifications.__init__(self) InfoBarBase.__init__(self) InfoBarSeek.__init__(self, actionmap="MediaPlayerSeekActions") self.isVisible = True self.oldService = self.session.nav.getCurrentlyPlayingServiceReference() self.session.nav.stopService() self.playlistparsers = {} self.addPlaylistParser(PlaylistIOM3U, "m3u") self.playlist = MyPlayList() self["fileinfo"] = Label() self["key_red"] = Button(_("Delete")) self["key_green"] = Button(_("")) self["key_yellow"] = Button("Favorites") self["key_blue"] = Button(_("Settings")) self["currentfolder"] = Label("") self["currentfavname"] = Label("") self.currList = "filelist" self.curfavfolder = -1 self["actions"] = HelpableActionMap( self, "EVOMC_VideoPlayerActions", { "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"), "menu": (self.KeyMenu, "File / Folder Options"), "video": (self.visibility, "Show / Hide Player"), "nextBouquet": (self.NextFavFolder, "Next Favorite Folder"), "prevBouquet": (self.PrevFavFolder, "Previous Favorite Folder"), "stop": (self.StopPlayback, "Stop Playback"), "red": (self.deleteFile, "Delete File"), "yellow": (self.FavoriteFolders, "Favorite Folders"), # "green": (self.showPreview, "Preview"), "blue": (self.KeySettings, "Settings"), }, -2, ) self["InfobarShowHideActions"] = HelpableActionMap( self, "InfobarShowHideActions", {"toggleShow": (self.showFileInfo, "Show File Info")}, -2 ) self["OkCancelActions"] = HelpableActionMap( self, "OkCancelActions", {"cancel": (self.Exit, "Exit Video Player")}, -2 ) self.aspect = getAspect() currDir = config.plugins.EVOMC_vp.lastDir.value if not pathExists(currDir): currDir = "/" self["currentfolder"].setText(str(currDir)) if pathExists("/usr/lib/enigma2/python/Plugins/Extensions/DVDPlayer") is True: self.filelist = FileList( currDir, useServiceRef=True, showDirectories=True, showFiles=True, matchingPattern="(?i)^.*\.(mp4|ts|trp|wmv|mpg|vob|avi|mkv|dat|flac|m2ts|trp|flv)", ) else: self.filelist = FileList( currDir, useServiceRef=True, showDirectories=True, showFiles=True, matchingPattern="(?i)^.*\.(mp4|ts|trp|wmv|mpg|vob|avi|mkv|dat|flac|m2ts|trp|flv)", ) self["filelist"] = self.filelist self["thumbnail"] = Pixmap() evfd.getInstance().vfd_write_string("EVO-VIDEOPLAYER") # self.filelist.refresh() # self.ThumbTimer = eTimer() # self.ThumbTimer.callback.append(self.showThumb) # self.ThumbTimer.start(config.plugins.EVOMC_vp.preview_delay.getValue() * 1000, True) # self.filelistTimer = eTimer() # self.filelistTimer.callback.append(self.filelist.refresh()) # self.filelistTimer.start(60, True) self.DimmerTimer = eTimer() self.DimmerTimer.callback.append(self.showDimmer) self.DimmerTimer.start(config.plugins.EVOMC_all.dimmer_delay.getValue() * 1000, True) self.__event_tracker = ServiceEventTracker( screen=self, eventmap={ iPlayableService.evUser + 11: self.__evDecodeError, iPlayableService.evUser + 12: self.__evPluginError, }, ) def addPlaylistParser(self, parser, extension): self.playlistparsers[extension] = parser def deleteFile(self): if self.currList == "filelist": self.service = self.filelist.getServiceRef() else: self.service = self.playlist.getSelection() if self.service is None: return if self.service.type != 4098 and self.session.nav.getCurrentlyPlayingServiceReference() is not None: if self.service == self.session.nav.getCurrentlyPlayingServiceReference(): self.stopEntry() serviceHandler = eServiceCenter.getInstance() offline = serviceHandler.offlineOperations(self.service) info = serviceHandler.info(self.service) name = info and info.getName(self.service) result = False if offline is not None: # simulate first if not offline.deleteFromDisk(1): result = True if result == True: self.session.openWithCallback( self.deleteConfirmed_offline, MessageBox, _("Do you really want to delete %s?") % (name) ) else: self.session.openWithCallback(self.close, MessageBox, _("You cannot delete this!"), MessageBox.TYPE_ERROR) def deleteConfirmed_offline(self, confirmed): if confirmed: serviceHandler = eServiceCenter.getInstance() offline = serviceHandler.offlineOperations(self.service) result = False if offline is not None: # really delete! if not offline.deleteFromDisk(0): result = True if result == False: self.session.open(MessageBox, _("Delete failed!"), MessageBox.TYPE_ERROR) else: self.removeListEntry() def removeListEntry(self): self.savePlaylistOnExit = True currdir = self.filelist.getCurrentDirectory() self.filelist.changeDir(currdir) deleteend = False while not deleteend: index = 0 deleteend = True if len(self.playlist) > 0: for x in self.playlist.list: if self.service == x[0]: self.playlist.deleteFile(index) deleteend = False break index += 1 self.playlist.updateList() if self.currList == "playlist": if len(self.playlist) == 0: self.switchToFileList() def up(self): system("stfbcontrol a 255") self["filelist"].up() # self.ThumbTimer.start(config.plugins.EVOMC_vp.preview_delay.getValue() * 1000, True) self.DimmerTimer.start(config.plugins.EVOMC_all.dimmer_delay.getValue() * 1000, True) def down(self): system("stfbcontrol a 255") self["filelist"].down() # self.ThumbTimer.start(config.plugins.EVOMC_vp.preview_delay.getValue() * 1000, True) self.DimmerTimer.start(config.plugins.EVOMC_all.dimmer_delay.getValue() * 1000, True) def leftUp(self): system("stfbcontrol a 255") self["filelist"].pageUp() # self.ThumbTimer.start(config.plugins.EVOMC_vp.preview_delay.getValue() * 1000, True) self.DimmerTimer.start(config.plugins.EVOMC_all.dimmer_delay.getValue() * 1000, True) def rightDown(self): system("stfbcontrol a 255") self["filelist"].pageDown() # self.ThumbTimer.start(config.plugins.EVOMC_vp.preview_delay.getValue() * 1000, True) self.DimmerTimer.start(config.plugins.EVOMC_all.dimmer_delay.getValue() * 1000, True) def showDimmer(self): if config.plugins.EVOMC_all.showDimmer.getValue(): system("stfbcontrol a 80") def NextFavFolder(self): system("stfbcontrol a 255") if self.curfavfolder + 1 < config.plugins.EVOMC_favorites.foldercount.value: self.curfavfolder += 1 self.favname = config.plugins.EVOMC_favorites.folders[self.curfavfolder].name.value self.folder = config.plugins.EVOMC_favorites.folders[self.curfavfolder].basedir.value self["currentfolder"].setText(("%s") % (self.folder)) self["currentfavname"].setText(("%s") % (self.favname)) if pathExists(self.folder) == True: self["filelist"].changeDir(self.folder) else: return def PrevFavFolder(self): system("stfbcontrol a 255") if self.curfavfolder <= 0: return else: self.curfavfolder -= 1 self.favname = config.plugins.EVOMC_favorites.folders[self.curfavfolder].name.value self.folder = config.plugins.EVOMC_favorites.folders[self.curfavfolder].basedir.value self["currentfolder"].setText(("%s") % (self.folder)) self["currentfavname"].setText(("%s") % (self.favname)) if pathExists(self.folder) == True: self["filelist"].changeDir(self.folder) # def showPreview(self): # system("stfbcontrol a 255") # if self["filelist"].canDescent(): # return # else: # if self["filelist"].getServiceRef() is not None: # self.DimmerTimer.stop() # self.session.nav.stopService() # self.session.nav.playService(self["filelist"].getServiceRef()) # def showThumb(self): # if config.plugins.EVOMC_vp.showPreview.getValue() == False: # return # if self["filelist"].canDescent(): # return # else: # if self["filelist"].getServiceRef() is not None: # self.DimmerTimer.stop() # self.session.nav.stopService() # self.session.nav.playService(self["filelist"].getServiceRef()) def showFileInfo(self): if self["filelist"].canDescent(): return else: system("stfbcontrol a 255") # self.ThumbTimer.start(config.plugins.EVOMC_vp.preview_delay.getValue() * 1000, True) self.DimmerTimer.start(config.plugins.EVOMC_all.dimmer_delay.getValue() * 1000, True) self.session.open( EVOMC_VideoInfoView, self["filelist"].getCurrentDirectory() + self["filelist"].getFilename(), self["filelist"].getFilename(), self["filelist"].getServiceRef(), ) def KeyOk(self): system("stfbcontrol a 255") system("echo 3 -> /dev/ttyAS1") self.filelist.refresh() if self.isVisible == False: self.visibility() return # self.ThumbTimer.stop() self.DimmerTimer.stop() if self.filelist.canDescent(): self.filelist.descent() else: evfd.getInstance().vfd_write_string("PLAY") if self.filelist.getServiceRef().type == 4098: 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() currref = self.playlist.getServiceRefList()[self.playlist.getCurrentIndex()] print "currref !!!!!!!!!!!!!!!!!!!!!!!!!", currref self.session.open(MoviePlayer, currref) # system("echo " + hex(config.plugins.EVOMC_globalsettings.dst_top.value)[2:] + " > /proc/stb/vmpeg/0/dst_top") # system("echo " + hex(config.plugins.EVOMC_globalsettings.dst_left.value)[2:] + " > /proc/stb/vmpeg/0/dst_left") # system("echo " + hex(config.plugins.EVOMC_globalsettings.dst_width.value)[2:] + " > /proc/stb/vmpeg/0/dst_width") # system("echo " + hex(config.plugins.EVOMC_globalsettings.dst_height.value)[2:] + " > /proc/stb/vmpeg/0/dst_height") def KeyMenu(self): # self.ThumbTimer.stop() if self["filelist"].canDescent(): if self.filelist.getCurrent()[0][1]: self.currentDirectory = self.filelist.getCurrent()[0][0] foldername = self.currentDirectory.split("/") foldername = foldername[-2] self.session.open(EVOMC_FolderOptions, self.currentDirectory, foldername) # def StartThumb(self): # self.session.openWithCallback(self.returnVal, ThumbView, self.filelist.getFileList(), self.filelist.getFilename(), self.filelist.getCurrentDirectory()) # 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(ExifView, self.filelist.getCurrentDirectory() + self.filelist.getFilename(), self.filelist.getFilename()) def visibility(self, force=1): if self.isVisible == True: self.isVisible = False self.hide() else: self.isVisible = True self.show() def StopPlayback(self): # self.ThumbTimer.stop() system("echo C -> /dev/ttyAS1") self.session.nav.stopService() self.session.nav.playService(self.oldService) # self.ThumbTimer.start(config.plugins.EVOMC_vp.preview_delay.getValue() * 1000, True) self.DimmerTimer.start(config.plugins.EVOMC_all.dimmer_delay.getValue() * 1000, True) system("stfbcontrol a 255") self.show() 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, EVOMC_FavoriteFolders) def KeySettings(self): self.session.open(VideoPlayerSettings) config.plugins.EVOMC_vp.save() config.plugins.EVOMC_all.save() 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=10, ) def __evPluginError(self): currPlay = self.session.nav.getCurrentService() message = currPlay.info().getInfoString(iServiceInformation.sUser + 12) print "[__evPluginError]", message self.session.open(MessageBox, ("GStreamer Error: missing %s") % message, type=MessageBox.TYPE_INFO, timeout=20) def Exit(self): system("stfbcontrol a 255") if self.isVisible == False: self.visibility() return if self.filelist.getCurrentDirectory() is None: config.plugins.EVOMC_vp.lastDir.value = "/" else: config.plugins.EVOMC_vp.lastDir.value = self.filelist.getCurrentDirectory() self.session.nav.stopService() self.DimmerTimer.stop() config.plugins.EVOMC_vp.save() config.plugins.EVOMC_all.save() self.close() def showAfterSeek(self): self.show() def checkSkipShowHideLock(self): self.updatedSeekState() def unPauseService(self): self.setSeekState(self.SEEK_STATE_PLAY) def updatedSeekState(self): if self.seekstate == self.SEEK_STATE_PAUSE: self.playlist.pauseFile() elif self.seekstate == self.SEEK_STATE_PLAY: self.playlist.playFile() elif self.isStateForward(self.seekstate): self.playlist.forwardFile() elif self.isStateBackward(self.seekstate): self.playlist.rewindFile() def addPlaylistParser(self, parser, extension): self.playlistparsers[extension] = parser
class EVOMC_PictureViewer(Screen, HelpableScreen): def __init__(self, session): Screen.__init__(self, session) HelpableScreen.__init__(self) # Show Background MVI #system("/usr/bin/showiframe /usr/lib/enigma2/python/Plugins/Extensions/EVOMediaCenter/icons/background.mvi &") 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, "EVOMC_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["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions", { "cancel": (self.Exit, "Exit Picture Viewer"), }, -2) self.aspect = getAspect() currDir = config.plugins.EVOMC_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() evfd.getInstance().vfd_write_string("EVO-PICVIEWER") 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, EVOMC_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.EVOMC_favorites.foldercount.value: self.curfavfolder += 1 self.favname = config.plugins.EVOMC_favorites.folders[ self.curfavfolder].name.value self.folder = config.plugins.EVOMC_favorites.folders[ self.curfavfolder].basedir.value self["currentfolder"].setText(("%s") % (self.folder)) self["currentfavname"].setText(("%s") % (self.favname)) if pathExists(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.EVOMC_favorites.folders[ self.curfavfolder].name.value self.folder = config.plugins.EVOMC_favorites.folders[ self.curfavfolder].basedir.value self["currentfolder"].setText(("%s") % (self.folder)) self["currentfavname"].setText(("%s") % (self.favname)) if pathExists(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.EVOMC_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, EVOMC_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] foldername = self.currentDirectory.split('/') foldername = foldername[-2] self.session.open(EVOMC_FolderOptions, self.currentDirectory, foldername) def StartThumb(self): self.session.openWithCallback(self.returnVal, EVOMC_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, EVOMC_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(EVOMC_PicSetup) def Exit(self): if self.filelist.getCurrentDirectory() is None: config.plugins.EVOMC_pp.lastDir.value = "/" else: config.plugins.EVOMC_pp.lastDir.value = self.filelist.getCurrentDirectory( ) config.plugins.EVOMC_pp.save() self.close()
class EVOMC_VideoPlayer(Screen, InfoBarBase, InfoBarSeek, InfoBarNotifications, HelpableScreen): def __init__(self, session): Screen.__init__(self, session) HelpableScreen.__init__(self) InfoBarNotifications.__init__(self) InfoBarBase.__init__(self) InfoBarSeek.__init__(self, actionmap="MediaPlayerSeekActions") self.isVisible = True self.oldService = self.session.nav.getCurrentlyPlayingServiceReference( ) self.session.nav.stopService() self.playlistparsers = {} self.addPlaylistParser(PlaylistIOM3U, "m3u") self.playlist = MyPlayList() self["fileinfo"] = Label() self["key_red"] = Button(_("Delete")) self["key_green"] = Button(_("")) self["key_yellow"] = Button("Favorites") self["key_blue"] = Button(_("Settings")) self["currentfolder"] = Label("") self["currentfavname"] = Label("") self.currList = "filelist" self.curfavfolder = -1 self["actions"] = HelpableActionMap( self, "EVOMC_VideoPlayerActions", { "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"), "menu": (self.KeyMenu, "File / Folder Options"), "video": (self.visibility, "Show / Hide Player"), "nextBouquet": (self.NextFavFolder, "Next Favorite Folder"), "prevBouquet": (self.PrevFavFolder, "Previous Favorite Folder"), "stop": (self.StopPlayback, "Stop Playback"), "red": (self.deleteFile, "Delete File"), "yellow": (self.FavoriteFolders, "Favorite Folders"), # "green": (self.showPreview, "Preview"), "blue": (self.KeySettings, "Settings"), }, -2) self["InfobarShowHideActions"] = HelpableActionMap( self, "InfobarShowHideActions", { "toggleShow": (self.showFileInfo, "Show File Info"), }, -2) self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions", { "cancel": (self.Exit, "Exit Video Player"), }, -2) self.aspect = getAspect() currDir = config.plugins.EVOMC_vp.lastDir.value if not pathExists(currDir): currDir = "/" self["currentfolder"].setText(str(currDir)) if pathExists("/usr/lib/enigma2/python/Plugins/Extensions/DVDPlayer" ) is True: self.filelist = FileList( currDir, useServiceRef=True, showDirectories=True, showFiles=True, matchingPattern= "(?i)^.*\.(mp4|ts|trp|wmv|mpg|vob|avi|mkv|dat|flac|m2ts|trp|flv)" ) else: self.filelist = FileList( currDir, useServiceRef=True, showDirectories=True, showFiles=True, matchingPattern= "(?i)^.*\.(mp4|ts|trp|wmv|mpg|vob|avi|mkv|dat|flac|m2ts|trp|flv)" ) self["filelist"] = self.filelist self["thumbnail"] = Pixmap() evfd.getInstance().vfd_write_string("EVO-VIDEOPLAYER") # self.filelist.refresh() # self.ThumbTimer = eTimer() # self.ThumbTimer.callback.append(self.showThumb) # self.ThumbTimer.start(config.plugins.EVOMC_vp.preview_delay.getValue() * 1000, True) # self.filelistTimer = eTimer() # self.filelistTimer.callback.append(self.filelist.refresh()) # self.filelistTimer.start(60, True) self.DimmerTimer = eTimer() self.DimmerTimer.callback.append(self.showDimmer) self.DimmerTimer.start( config.plugins.EVOMC_all.dimmer_delay.getValue() * 1000, True) self.__event_tracker = ServiceEventTracker( screen=self, eventmap={ iPlayableService.evUser + 11: self.__evDecodeError, iPlayableService.evUser + 12: self.__evPluginError }) def addPlaylistParser(self, parser, extension): self.playlistparsers[extension] = parser def deleteFile(self): if self.currList == "filelist": self.service = self.filelist.getServiceRef() else: self.service = self.playlist.getSelection() if self.service is None: return if self.service.type != 4098 and self.session.nav.getCurrentlyPlayingServiceReference( ) is not None: if self.service == self.session.nav.getCurrentlyPlayingServiceReference( ): self.stopEntry() serviceHandler = eServiceCenter.getInstance() offline = serviceHandler.offlineOperations(self.service) info = serviceHandler.info(self.service) name = info and info.getName(self.service) result = False if offline is not None: # simulate first if not offline.deleteFromDisk(1): result = True if result == True: self.session.openWithCallback( self.deleteConfirmed_offline, MessageBox, _("Do you really want to delete %s?") % (name)) else: self.session.openWithCallback(self.close, MessageBox, _("You cannot delete this!"), MessageBox.TYPE_ERROR) def deleteConfirmed_offline(self, confirmed): if confirmed: serviceHandler = eServiceCenter.getInstance() offline = serviceHandler.offlineOperations(self.service) result = False if offline is not None: # really delete! if not offline.deleteFromDisk(0): result = True if result == False: self.session.open(MessageBox, _("Delete failed!"), MessageBox.TYPE_ERROR) else: self.removeListEntry() def removeListEntry(self): self.savePlaylistOnExit = True currdir = self.filelist.getCurrentDirectory() self.filelist.changeDir(currdir) deleteend = False while not deleteend: index = 0 deleteend = True if len(self.playlist) > 0: for x in self.playlist.list: if self.service == x[0]: self.playlist.deleteFile(index) deleteend = False break index += 1 self.playlist.updateList() if self.currList == "playlist": if len(self.playlist) == 0: self.switchToFileList() def up(self): system("stfbcontrol a 255") self["filelist"].up() # self.ThumbTimer.start(config.plugins.EVOMC_vp.preview_delay.getValue() * 1000, True) self.DimmerTimer.start( config.plugins.EVOMC_all.dimmer_delay.getValue() * 1000, True) def down(self): system("stfbcontrol a 255") self["filelist"].down() # self.ThumbTimer.start(config.plugins.EVOMC_vp.preview_delay.getValue() * 1000, True) self.DimmerTimer.start( config.plugins.EVOMC_all.dimmer_delay.getValue() * 1000, True) def leftUp(self): system("stfbcontrol a 255") self["filelist"].pageUp() # self.ThumbTimer.start(config.plugins.EVOMC_vp.preview_delay.getValue() * 1000, True) self.DimmerTimer.start( config.plugins.EVOMC_all.dimmer_delay.getValue() * 1000, True) def rightDown(self): system("stfbcontrol a 255") self["filelist"].pageDown() # self.ThumbTimer.start(config.plugins.EVOMC_vp.preview_delay.getValue() * 1000, True) self.DimmerTimer.start( config.plugins.EVOMC_all.dimmer_delay.getValue() * 1000, True) def showDimmer(self): if config.plugins.EVOMC_all.showDimmer.getValue(): system("stfbcontrol a 80") def NextFavFolder(self): system("stfbcontrol a 255") if self.curfavfolder + 1 < config.plugins.EVOMC_favorites.foldercount.value: self.curfavfolder += 1 self.favname = config.plugins.EVOMC_favorites.folders[ self.curfavfolder].name.value self.folder = config.plugins.EVOMC_favorites.folders[ self.curfavfolder].basedir.value self["currentfolder"].setText(("%s") % (self.folder)) self["currentfavname"].setText(("%s") % (self.favname)) if pathExists(self.folder) == True: self["filelist"].changeDir(self.folder) else: return def PrevFavFolder(self): system("stfbcontrol a 255") if self.curfavfolder <= 0: return else: self.curfavfolder -= 1 self.favname = config.plugins.EVOMC_favorites.folders[ self.curfavfolder].name.value self.folder = config.plugins.EVOMC_favorites.folders[ self.curfavfolder].basedir.value self["currentfolder"].setText(("%s") % (self.folder)) self["currentfavname"].setText(("%s") % (self.favname)) if pathExists(self.folder) == True: self["filelist"].changeDir(self.folder) # def showPreview(self): # system("stfbcontrol a 255") # if self["filelist"].canDescent(): # return # else: # if self["filelist"].getServiceRef() is not None: # self.DimmerTimer.stop() # self.session.nav.stopService() # self.session.nav.playService(self["filelist"].getServiceRef()) # def showThumb(self): # if config.plugins.EVOMC_vp.showPreview.getValue() == False: # return # if self["filelist"].canDescent(): # return # else: # if self["filelist"].getServiceRef() is not None: # self.DimmerTimer.stop() # self.session.nav.stopService() # self.session.nav.playService(self["filelist"].getServiceRef()) def showFileInfo(self): if self["filelist"].canDescent(): return else: system("stfbcontrol a 255") # self.ThumbTimer.start(config.plugins.EVOMC_vp.preview_delay.getValue() * 1000, True) self.DimmerTimer.start( config.plugins.EVOMC_all.dimmer_delay.getValue() * 1000, True) self.session.open( EVOMC_VideoInfoView, self["filelist"].getCurrentDirectory() + self["filelist"].getFilename(), self["filelist"].getFilename(), self["filelist"].getServiceRef()) def KeyOk(self): system("stfbcontrol a 255") system("echo 3 -> /dev/ttyAS1") self.filelist.refresh() if self.isVisible == False: self.visibility() return # self.ThumbTimer.stop() self.DimmerTimer.stop() if self.filelist.canDescent(): self.filelist.descent() else: evfd.getInstance().vfd_write_string("PLAY") if self.filelist.getServiceRef().type == 4098: 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() currref = self.playlist.getServiceRefList()[ self.playlist.getCurrentIndex()] print "currref !!!!!!!!!!!!!!!!!!!!!!!!!", currref self.session.open(MoviePlayer, currref) # system("echo " + hex(config.plugins.EVOMC_globalsettings.dst_top.value)[2:] + " > /proc/stb/vmpeg/0/dst_top") # system("echo " + hex(config.plugins.EVOMC_globalsettings.dst_left.value)[2:] + " > /proc/stb/vmpeg/0/dst_left") # system("echo " + hex(config.plugins.EVOMC_globalsettings.dst_width.value)[2:] + " > /proc/stb/vmpeg/0/dst_width") # system("echo " + hex(config.plugins.EVOMC_globalsettings.dst_height.value)[2:] + " > /proc/stb/vmpeg/0/dst_height") def KeyMenu(self): # self.ThumbTimer.stop() if self["filelist"].canDescent(): if self.filelist.getCurrent()[0][1]: self.currentDirectory = self.filelist.getCurrent()[0][0] foldername = self.currentDirectory.split('/') foldername = foldername[-2] self.session.open(EVOMC_FolderOptions, self.currentDirectory, foldername) # def StartThumb(self): # self.session.openWithCallback(self.returnVal, ThumbView, self.filelist.getFileList(), self.filelist.getFilename(), self.filelist.getCurrentDirectory()) # 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(ExifView, self.filelist.getCurrentDirectory() + self.filelist.getFilename(), self.filelist.getFilename()) def visibility(self, force=1): if self.isVisible == True: self.isVisible = False self.hide() else: self.isVisible = True self.show() def StopPlayback(self): # self.ThumbTimer.stop() system("echo C -> /dev/ttyAS1") self.session.nav.stopService() self.session.nav.playService(self.oldService) # self.ThumbTimer.start(config.plugins.EVOMC_vp.preview_delay.getValue() * 1000, True) self.DimmerTimer.start( config.plugins.EVOMC_all.dimmer_delay.getValue() * 1000, True) system("stfbcontrol a 255") self.show() 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, EVOMC_FavoriteFolders) def KeySettings(self): self.session.open(VideoPlayerSettings) config.plugins.EVOMC_vp.save() config.plugins.EVOMC_all.save() 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=10) def __evPluginError(self): currPlay = self.session.nav.getCurrentService() message = currPlay.info().getInfoString(iServiceInformation.sUser + 12) print "[__evPluginError]", message self.session.open(MessageBox, ("GStreamer Error: missing %s") % message, type=MessageBox.TYPE_INFO, timeout=20) def Exit(self): system("stfbcontrol a 255") if self.isVisible == False: self.visibility() return if self.filelist.getCurrentDirectory() is None: config.plugins.EVOMC_vp.lastDir.value = "/" else: config.plugins.EVOMC_vp.lastDir.value = self.filelist.getCurrentDirectory( ) self.session.nav.stopService() self.DimmerTimer.stop() config.plugins.EVOMC_vp.save() config.plugins.EVOMC_all.save() self.close() def showAfterSeek(self): self.show() def checkSkipShowHideLock(self): self.updatedSeekState() def unPauseService(self): self.setSeekState(self.SEEK_STATE_PLAY) def updatedSeekState(self): if self.seekstate == self.SEEK_STATE_PAUSE: self.playlist.pauseFile() elif self.seekstate == self.SEEK_STATE_PLAY: self.playlist.playFile() elif self.isStateForward(self.seekstate): self.playlist.forwardFile() elif self.isStateBackward(self.seekstate): self.playlist.rewindFile() def addPlaylistParser(self, parser, extension): self.playlistparsers[extension] = parser