X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/b356016054ad071ce47cdc9028ea305019f270f4..b68fe12ef5f0587353988eac7619adcb8e38ce58:/lib/python/Plugins/Extensions/DVDPlayer/plugin.py diff --git a/lib/python/Plugins/Extensions/DVDPlayer/plugin.py b/lib/python/Plugins/Extensions/DVDPlayer/plugin.py index 2169cc8c..4c66a5c4 100644 --- a/lib/python/Plugins/Extensions/DVDPlayer/plugin.py +++ b/lib/python/Plugins/Extensions/DVDPlayer/plugin.py @@ -244,6 +244,7 @@ class DVDPlayer(Screen, InfoBarBase, InfoBarNotifications, InfoBarSeek, InfoBarP self.__event_tracker = ServiceEventTracker(screen=self, eventmap= { + iPlayableService.evStopped: self.__serviceStopped, iPlayableService.evUser: self.__timeUpdated, iPlayableService.evUser+1: self.__statePlay, iPlayableService.evUser+2: self.__statePause, @@ -317,10 +318,20 @@ class DVDPlayer(Screen, InfoBarBase, InfoBarNotifications, InfoBarSeek, InfoBarP }) self.onClose.append(self.__onClose) + + if fileExists("/dev/cdroms/cdrom0"): + print "physical dvd found (/dev/cdroms/cdrom0)" + self.physicalDVD = True + else: + self.physicalDVD = False + self.onFirstExecBegin.append(self.showFileBrowser) self.service = None self.in_menu = False - + self.old_aspect = open("/proc/stb/video/aspect", "r").read() + self.old_policy = open("/proc/stb/video/policy", "r").read() + self.old_wss = open("/proc/stb/denc/0/wss", "r").read() + def keyNumberGlobal(self, number): print "You pressed number " + str(number) self.session.openWithCallback(self.numberEntered, ChapterZap, number) @@ -330,8 +341,13 @@ class DVDPlayer(Screen, InfoBarBase, InfoBarNotifications, InfoBarSeek, InfoBarP if retval > 0: self.zapToNumber(retval) + def __serviceStopped(self): + self.dvdScreen.hide() + self.service.subtitle().disableSubtitles(self.session.current_dialog.instance) + def serviceStarted(self): #override InfoBarShowHide function - pass + self.dvdScreen.show() + self.service.subtitle().enableSubtitles(self.dvdScreen.instance, None) def doEofInternal(self, playing): if self.in_menu: @@ -389,28 +405,28 @@ class DVDPlayer(Screen, InfoBarBase, InfoBarNotifications, InfoBarSeek, InfoBarP print "StringAvail" def __osdAudioInfoAvail(self): - audioString = self.service.info().getInfoString(iPlayableService.evUser+6) + audioString = self.service.info().getInfoString(iServiceInformation.sUser+6) print "AudioInfoAvail "+audioString self["audioLabel"].setText(audioString) if not self.in_menu: self.doShow() def __osdSubtitleInfoAvail(self): - subtitleString = self.service.info().getInfoString(iPlayableService.evUser+7) + subtitleString = self.service.info().getInfoString(iServiceInformation.sUser+7) print "SubtitleInfoAvail "+subtitleString self["subtitleLabel"].setText(subtitleString) if not self.in_menu: self.doShow() def __chapterUpdated(self): - self.currentChapter = self.service.info().getInfo(iPlayableService.evUser+8) - self.totalChapters = self.service.info().getInfo(iPlayableService.evUser+80) + self.currentChapter = self.service.info().getInfo(iServiceInformation.sUser+8) + self.totalChapters = self.service.info().getInfo(iServiceInformation.sUser+80) self.setChapterLabel() print "__chapterUpdated: %d/%d" % (self.currentChapter, self.totalChapters) def __titleUpdated(self): - self.currentTitle = self.service.info().getInfo(iPlayableService.evUser+9) - self.totalTitles = self.service.info().getInfo(iPlayableService.evUser+90) + self.currentTitle = self.service.info().getInfo(iServiceInformation.sUser+9) + self.totalTitles = self.service.info().getInfo(iServiceInformation.sUser+90) self.setChapterLabel() print "__titleUpdated: %d/%d" % (self.currentTitle, self.totalTitles) if not self.in_menu: @@ -454,13 +470,13 @@ class DVDPlayer(Screen, InfoBarBase, InfoBarNotifications, InfoBarSeek, InfoBarP def enterDVDMenu(self): if self.service: self.service.keys().keyPressed(iServiceKeys.keyUser+7) - + def seekBeginning(self): if self.service: seekable = self.getSeek() if seekable is not None: seekable.seekTo(0) - + def zapToNumber(self, number): if self.service: seekable = self.getSeek() @@ -495,7 +511,16 @@ class DVDPlayer(Screen, InfoBarBase, InfoBarNotifications, InfoBarSeek, InfoBarP self.askLeavePlayer() def showFileBrowser(self): - self.session.openWithCallback(self.FileBrowserClosed, FileBrowser) + if self.physicalDVD: + self.session.openWithCallback(self.DVDdriveCB, MessageBox, text=_("Do you want to play DVD in drive?"), timeout=5 ) + else: + self.session.openWithCallback(self.FileBrowserClosed, FileBrowser) + + def DVDdriveCB(self, answer): + if answer == True: + self.FileBrowserClosed("/dev/cdroms/cdrom0") + else: + self.session.openWithCallback(self.FileBrowserClosed, FileBrowser) def FileBrowserClosed(self, val): curref = self.session.nav.getCurrentlyPlayingServiceReference() @@ -510,15 +535,11 @@ class DVDPlayer(Screen, InfoBarBase, InfoBarNotifications, InfoBarSeek, InfoBarP self.service = self.session.nav.getCurrentService() print "self.service", self.service print "cur_dlg", self.session.current_dialog - self.dvdScreen.show() - self.service.subtitle().enableSubtitles(self.dvdScreen.instance, None) def exitCB(self, answer): if answer is not None: if answer[1] == "exit": if self.service: - self.dvdScreen.hide() - self.service.subtitle().disableSubtitles(self.session.current_dialog.instance) self.service = None self.close() if answer[1] == "browser": @@ -529,6 +550,11 @@ class DVDPlayer(Screen, InfoBarBase, InfoBarNotifications, InfoBarSeek, InfoBarP pass def __onClose(self): + for i in (("/proc/stb/video/aspect", self.old_aspect), ("/proc/stb/video/policy", self.old_policy), ("/proc/stb/denc/0/wss", self.old_wss)): + try: + open(i[0], "w").write(i[1]) + except IOError: + print "restore", i[0], "failed" self.restore_infobar_seek_config() self.session.nav.playService(self.oldService)