from Components.ServicePosition import ServicePositionGauge
from Components.ServiceEventTracker import ServiceEventTracker, InfoBarBase
from Components.Playlist import PlaylistIOInternal, PlaylistIOM3U, PlaylistIOPLS
-from Screens.InfoBarGenerics import InfoBarSeek, InfoBarAudioSelection, InfoBarCueSheetSupport, InfoBarNotifications
+from Screens.InfoBarGenerics import InfoBarSeek, InfoBarAudioSelection, InfoBarCueSheetSupport, InfoBarNotifications, InfoBarSubtitleSupport
from ServiceReference import ServiceReference
from Screens.ChoiceBox import ChoiceBox
from Screens.HelpMenu import HelpableScreen
self.default_pixmap = resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/no_coverArt.png")
return Pixmap.applySkin(self, desktop, screen)
-class MediaPlayer(Screen, InfoBarBase, InfoBarSeek, InfoBarAudioSelection, InfoBarCueSheetSupport, InfoBarNotifications, HelpableScreen):
+class MediaPlayer(Screen, InfoBarBase, InfoBarSeek, InfoBarAudioSelection, InfoBarCueSheetSupport, InfoBarNotifications, InfoBarSubtitleSupport, HelpableScreen):
ALLOW_SUSPEND = True
ENABLE_RESUME_SUPPORT = True
InfoBarCueSheetSupport.__init__(self, actionmap = "MediaPlayerCueSheetActions")
InfoBarNotifications.__init__(self)
InfoBarBase.__init__(self)
+ InfoBarSubtitleSupport.__init__(self)
HelpableScreen.__init__(self)
self.summary = None
self.oldService = self.session.nav.getCurrentlyPlayingServiceReference()
self.addPlaylistParser(PlaylistIOInternal, "e2pls")
# 'None' is magic to start at the list of mountpoints
- self.filelist = FileList(None, matchingPattern = "(?i)^.*\.(mp3|ogg|ts|wav|wave|m3u|pls|e2pls|mpg|vob|avi)", useServiceRef = True, additionalExtensions = "4098:m3u 4098:e2pls 4098:pls")
+ self.filelist = FileList(None, matchingPattern = "(?i)^.*\.(mp3|ogg|ts|wav|wave|m3u|pls|e2pls|mpg|vob|avi|mkv|dat)", useServiceRef = True, additionalExtensions = "4098:m3u 4098:e2pls 4098:pls")
self["filelist"] = self.filelist
self.playlist = MyPlayList()
"delete": (self.deletePlaylistEntry, _("delete playlist entry")),
"shift_stop": (self.clear_playlist, _("clear playlist")),
"shift_record": (self.playlist.PlayListShuffle, _("shuffle playlist")),
+ "subtitles": (self.subtitleSelection, _("Subtitle selection")),
}, -2)
self["InfobarEPGActions"] = HelpableActionMap(self, "InfobarEPGActions",
self.coverArtFileName = ""
self.isAudioCD = False
self.AudioCD_albuminfo = {}
+ self.savePlaylistOnExit = True
self.playlistIOInternal = PlaylistIOInternal()
list = self.playlistIOInternal.open(resolveFilename(SCOPE_CONFIG, "playlist.e2pls"))
self.__event_tracker = ServiceEventTracker(screen=self, eventmap=
{
- iPlayableService.evUpdatedInfo: self.__evUpdatedInfo
+ iPlayableService.evUpdatedInfo: self.__evUpdatedInfo,
+ iPlayableService.evUser+11: self.__evDecodeError
})
def doNothing(self):
self.playlistIOInternal.clear()
for x in self.playlist.list:
self.playlistIOInternal.addService(ServiceReference(x[0]))
- if not self.isAudioCD:
+ if self.savePlaylistOnExit:
self.playlistIOInternal.save(resolveFilename(SCOPE_CONFIG, "playlist.e2pls"))
self.close()
print "[__evUpdatedInfo] title %d of %d (%s)" % (currenttitle, totaltitles, sTitle)
self.readTitleInformation()
+ 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 delMPTimer(self):
del self.rightKeyTimer
del self.leftKeyTimer
def pauseEntry(self):
self.pauseService()
- self.show()
+ if self.seekstate == self.SEEK_STATE_PAUSE:
+ self.show()
+ else:
+ self.hide()
def stopEntry(self):
self.playlist.stopFile()
def unPauseService(self):
self.setSeekState(self.SEEK_STATE_PLAY)
+
+ def subtitleSelection(self):
+ from Screens.Subtitles import Subtitles
+ self.session.open(Subtitles)
class MediaPlayerLCDScreen(Screen):
skin = """
from enigma import eServiceReference
mp = session.open(MediaPlayer)
+ mp.playlist.clear()
+ mp.savePlaylistOnExit = False
- mp.switchToPlayList()
for file in list:
if file.mimetype == "video/MP2T":
stype = 1
ref = eServiceReference(stype, 0, file.path)
mp.playlist.addFile(ref)
- # TODO: rather play first than last file?
- mp.playServiceRefEntry(ref)
- mp.playlist.updateList()
+ mp.changeEntry(0)
+ mp.switchToPlayList()
def audioCD_open(list, session, **kwargs):
from enigma import eServiceReference
mp = session.open(MediaPlayer)
mp.playlist.clear()
+ mp.savePlaylistOnExit = False
mp.isAudioCD = True
for file in list:
description = "View Movies...",
openfnc = filescan_open,
),
+ Scanner(mimetypes = ["video/x-vcd"],
+ paths_to_scan =
+ [
+ ScanPath(path = "mpegav", with_subdirs = False),
+ ],
+ name = "Video CD",
+ description = "View Video CD...",
+ openfnc = filescan_open,
+ ),
Scanner(mimetypes = ["audio/mpeg", "audio/x-wav", "application/ogg"],
paths_to_scan =
[
)]
try:
from Plugins.Extensions.CDInfo.plugin import Query
- mediatypes.insert(0,Scanner(mimetypes = ["audio/x-cda", "audio/x-wav"],
+ mediatypes.append(
+ Scanner(mimetypes = ["audio/x-cda"],
paths_to_scan =
[
ScanPath(path = "", with_subdirs = False),