lib/python/Plugins/Extensions/DVDPlayer/plugin.py: smaller fontsize for "DVD Player...
[enigma2.git] / lib / python / Plugins / Extensions / DVDPlayer / plugin.py
old mode 100644 (file)
new mode 100755 (executable)
index ebcf4f8..e092e82
@@ -7,6 +7,7 @@ from Screens.HelpMenu import HelpableScreen
 from Screens.InfoBarGenerics import InfoBarSeek, InfoBarPVRState, InfoBarCueSheetSupport, InfoBarShowHide, InfoBarNotifications
 from Components.ActionMap import ActionMap, NumberActionMap, HelpableActionMap
 from Components.Label import Label
 from Screens.InfoBarGenerics import InfoBarSeek, InfoBarPVRState, InfoBarCueSheetSupport, InfoBarShowHide, InfoBarNotifications
 from Components.ActionMap import ActionMap, NumberActionMap, HelpableActionMap
 from Components.Label import Label
+from Components.Sources.StaticText import StaticText
 from Components.Pixmap import Pixmap
 from Components.FileList import FileList
 from Components.MenuList import MenuList
 from Components.Pixmap import Pixmap
 from Components.FileList import FileList
 from Components.MenuList import MenuList
@@ -14,20 +15,19 @@ from Components.ServiceEventTracker import ServiceEventTracker, InfoBarBase
 from Components.config import config
 from Tools.Directories import pathExists, fileExists
 from Components.Harddisk import harddiskmanager
 from Components.config import config
 from Tools.Directories import pathExists, fileExists
 from Components.Harddisk import harddiskmanager
-from Plugins.SystemPlugins.Hotplug.plugin import hotplugNotifier
 
 import servicedvd # load c++ part of dvd player plugin
 
 lastpath = ""
 
 class FileBrowser(Screen):
 
 import servicedvd # load c++ part of dvd player plugin
 
 lastpath = ""
 
 class FileBrowser(Screen):
-       skin = """
-       <screen name="FileBrowser" position="100,100" size="520,376" title="DVD File Browser" >
-               <widget name="filelist" position="0,0" size="520,376" scrollbarMode="showOnDemand" />
-       </screen>"""
+
        def __init__(self, session, dvd_filelist = [ ]):
                Screen.__init__(self, session)
 
        def __init__(self, session, dvd_filelist = [ ]):
                Screen.__init__(self, session)
 
+               # for the skin: first try FileBrowser_DVDPlayer, then FileBrowser, this allows individual skinning
+               self.skinName = ["FileBrowser_DVDPlayer", "FileBrowser" ]
+
                self.dvd_filelist = dvd_filelist
                if len(dvd_filelist):   
                        self["filelist"] = MenuList(self.dvd_filelist)
                self.dvd_filelist = dvd_filelist
                if len(dvd_filelist):   
                        self["filelist"] = MenuList(self.dvd_filelist)
@@ -43,11 +43,18 @@ class FileBrowser(Screen):
                        self.filelist = FileList(currDir, matchingPattern = "(?i)^.*\.(iso)", useServiceRef = True)
                        self["filelist"] = self.filelist
 
                        self.filelist = FileList(currDir, matchingPattern = "(?i)^.*\.(iso)", useServiceRef = True)
                        self["filelist"] = self.filelist
 
-               self["FilelistActions"] = ActionMap(["OkCancelActions"],
+               self["FilelistActions"] = ActionMap(["SetupActions"],
                        {
                        {
+                               "save": self.ok,
                                "ok": self.ok,
                                "cancel": self.exit
                        })
                                "ok": self.ok,
                                "cancel": self.exit
                        })
+               self["key_red"] = StaticText(_("Cancel"))
+               self["key_green"] = StaticText(_("OK"))
+               self.onLayoutFinish.append(self.layoutFinished)
+
+       def layoutFinished(self):
+               self.setTitle(_("DVD File Browser"))
 
        def ok(self):
                if len(self.dvd_filelist):
 
        def ok(self):
                if len(self.dvd_filelist):
@@ -86,7 +93,7 @@ class DVDSummary(Screen):
                <widget source="session.CurrentService" render="Label" position="5,4" size="120,28" font="Regular;12" transparent="1" >
                        <convert type="ServiceName">Name</convert>
                </widget>
                <widget source="session.CurrentService" render="Label" position="5,4" size="120,28" font="Regular;12" transparent="1" >
                        <convert type="ServiceName">Name</convert>
                </widget>
-               <widget name="DVDPlayer" position="5,30" size="66,16" font="Regular;12" transparent="1" />
+               <widget name="DVDPlayer" position="5,30" size="66,16" font="Regular;11" transparent="1" />
                <widget name="Chapter" position="72,30" size="54,16" font="Regular;12" transparent="1" halign="right" />
                <widget source="session.CurrentService" render="Label" position="66,46" size="60,18" font="Regular;16" transparent="1" halign="right" >
                        <convert type="ServicePosition">Position</convert>
                <widget name="Chapter" position="72,30" size="54,16" font="Regular;12" transparent="1" halign="right" />
                <widget source="session.CurrentService" render="Label" position="66,46" size="60,18" font="Regular;16" transparent="1" halign="right" >
                        <convert type="ServicePosition">Position</convert>
@@ -167,7 +174,7 @@ class ChapterZap(Screen):
                self.Timer.start(3000, True)
 
 class DVDPlayer(Screen, InfoBarBase, InfoBarNotifications, InfoBarSeek, InfoBarPVRState, InfoBarShowHide, HelpableScreen, InfoBarCueSheetSupport):
                self.Timer.start(3000, True)
 
 class DVDPlayer(Screen, InfoBarBase, InfoBarNotifications, InfoBarSeek, InfoBarPVRState, InfoBarShowHide, HelpableScreen, InfoBarCueSheetSupport):
-#      ALLOW_SUSPEND = True
+       ALLOW_SUSPEND = Screen.SUSPEND_PAUSES
        ENABLE_RESUME_SUPPORT = True
        
        skin = """
        ENABLE_RESUME_SUPPORT = True
        
        skin = """
@@ -346,8 +353,12 @@ class DVDPlayer(Screen, InfoBarBase, InfoBarNotifications, InfoBarSeek, InfoBarP
                        })
 
                self.onClose.append(self.__onClose)
                        })
 
                self.onClose.append(self.__onClose)
+
+               from Plugins.SystemPlugins.Hotplug.plugin import hotplugNotifier
                hotplugNotifier.append(self.hotplugCB)
                
                hotplugNotifier.append(self.hotplugCB)
                
+               self.autoplay = dvd_device or dvd_filelist
+
                if dvd_device:
                        self.physicalDVD = True
                else:
                if dvd_device:
                        self.physicalDVD = True
                else:
@@ -501,8 +512,10 @@ class DVDPlayer(Screen, InfoBarBase, InfoBarNotifications, InfoBarSeek, InfoBarP
                choices = [(_("Exit"), "exit"), (_("Continue playing"), "play")]
                if True or not self.physicalDVD:
                        choices.insert(1,(_("Return to file browser"), "browser"))
                choices = [(_("Exit"), "exit"), (_("Continue playing"), "play")]
                if True or not self.physicalDVD:
                        choices.insert(1,(_("Return to file browser"), "browser"))
-               if self.physicalDVD and not self.session.nav.getCurrentlyPlayingServiceReference().toString().endswith(harddiskmanager.getAutofsMountpoint(harddiskmanager.getCD())):
-                       choices.insert(0,(_("Play DVD"), "playPhysical" ))
+               if self.physicalDVD:
+                       cur = self.session.nav.getCurrentlyPlayingServiceReference()
+                       if cur and not cur.toString().endswith(harddiskmanager.getAutofsMountpoint(harddiskmanager.getCD())):
+                           choices.insert(0,(_("Play DVD"), "playPhysical" ))
                self.session.openWithCallback(self.exitCB, ChoiceBox, title=_("Leave DVD Player?"), list = choices)
 
        def sendKey(self, key):
                self.session.openWithCallback(self.exitCB, ChoiceBox, title=_("Leave DVD Player?"), list = choices)
 
        def sendKey(self, key):
@@ -572,9 +585,11 @@ class DVDPlayer(Screen, InfoBarBase, InfoBarNotifications, InfoBarSeek, InfoBarP
                self.askLeavePlayer()
 
        def opened(self):
                self.askLeavePlayer()
 
        def opened(self):
-               if len(self.dvd_filelist) == 1:
+               if self.autoplay and self.dvd_filelist:
                        # opened via autoplay
                        self.FileBrowserClosed(self.dvd_filelist[0])
                        # opened via autoplay
                        self.FileBrowserClosed(self.dvd_filelist[0])
+               elif self.autoplay and self.physicalDVD:
+                       self.playPhysicalCB(True)
                elif self.physicalDVD:
                        # opened from menu with dvd in drive
                        self.session.openWithCallback(self.playPhysicalCB, MessageBox, text=_("Do you want to play DVD in drive?"), timeout=5 )
                elif self.physicalDVD:
                        # opened from menu with dvd in drive
                        self.session.openWithCallback(self.playPhysicalCB, MessageBox, text=_("Do you want to play DVD in drive?"), timeout=5 )
@@ -627,6 +642,7 @@ class DVDPlayer(Screen, InfoBarBase, InfoBarNotifications, InfoBarSeek, InfoBarP
        def __onClose(self):
                self.restore_infobar_seek_config()
                self.session.nav.playService(self.oldService)
        def __onClose(self):
                self.restore_infobar_seek_config()
                self.session.nav.playService(self.oldService)
+               from Plugins.SystemPlugins.Hotplug.plugin import hotplugNotifier
                hotplugNotifier.remove(self.hotplugCB)
 
        def playLastCB(self, answer): # overwrite infobar cuesheet function
                hotplugNotifier.remove(self.hotplugCB)
 
        def playLastCB(self, answer): # overwrite infobar cuesheet function
@@ -720,6 +736,7 @@ def filescan(**kwargs):
                        paths_to_scan =
                                [
                                        ScanPath(path = "video_ts", with_subdirs = False),
                        paths_to_scan =
                                [
                                        ScanPath(path = "video_ts", with_subdirs = False),
+                                       ScanPath(path = "VIDEO_TS", with_subdirs = False),
                                        ScanPath(path = "", with_subdirs = False),
                                ],
                        name = "DVD",
                                        ScanPath(path = "", with_subdirs = False),
                                ],
                        name = "DVD",