Merge branch 'master' into obi/master
[vuplus_dvbapp] / lib / python / Plugins / Extensions / DVDPlayer / plugin.py
old mode 100644 (file)
new mode 100755 (executable)
index ce5fa9d..e1ab3ef
@@ -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
@@ -20,13 +21,13 @@ import servicedvd # load c++ part of dvd player plugin
 lastpath = ""
 
 class FileBrowser(Screen):
 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)
@@ -38,15 +39,25 @@ class FileBrowser(Screen):
                                currDir = "/media/dvd/"
                        if not pathExists(currDir):
                                currDir = "/"
                                currDir = "/media/dvd/"
                        if not pathExists(currDir):
                                currDir = "/"
+                       if lastpath == "":  # 'None' is magic to start at the list of mountpoints
+                               currDir = None
 
 
-                       self.filelist = FileList(currDir, matchingPattern = "(?i)^.*\.(iso)", useServiceRef = True)
+                       inhibitDirs = ["/bin", "/boot", "/dev", "/etc", "/home", "/lib", "/proc", "/sbin", "/share", "/sys", "/tmp", "/usr", "/var"]
+                       self.filelist = FileList(currDir, matchingPattern = "(?i)^.*\.(iso|img)", useServiceRef = True)
                        self["filelist"] = self.filelist
 
                        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):
@@ -71,6 +82,12 @@ class FileBrowser(Screen):
                                        lastpath = (pathname.rstrip("/").rsplit("/",1))[0]
                                        print "lastpath video_ts.ifo=", lastpath
                                        self.close(pathname)
                                        lastpath = (pathname.rstrip("/").rsplit("/",1))[0]
                                        print "lastpath video_ts.ifo=", lastpath
                                        self.close(pathname)
+                               if fileExists(pathname+"VIDEO_TS/VIDEO_TS.IFO"):
+                                       print "dvd structure found, trying to open..."
+                                       lastpath = (pathname.rstrip("/").rsplit("/",1))[0]
+                                       print "lastpath video_ts.ifo=", lastpath
+                                       pathname += "VIDEO_TS"
+                                       self.close(pathname)
                        else:
                                lastpath = filename[0:filename.rfind("/")]
                                print "lastpath directory=", lastpath
                        else:
                                lastpath = filename[0:filename.rfind("/")]
                                print "lastpath directory=", lastpath
@@ -80,12 +97,12 @@ class FileBrowser(Screen):
                self.close(None)
 
 class DVDSummary(Screen):
                self.close(None)
 
 class DVDSummary(Screen):
-       skin = """
-       <screen position="0,0" size="132,64">
+       skin = (
+       """<screen name="DVDSummary" position="0,0" size="132,64" id="1">
                <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>
@@ -93,7 +110,20 @@ class DVDSummary(Screen):
                <widget source="session.CurrentService" render="Progress" position="6,46" size="60,18" borderWidth="1" >
                        <convert type="ServicePosition">Position</convert>
                </widget>
                <widget source="session.CurrentService" render="Progress" position="6,46" size="60,18" borderWidth="1" >
                        <convert type="ServicePosition">Position</convert>
                </widget>
-       </screen>"""
+       </screen>""",
+       """<screen name="DVDSummary" position="0,0" size="96,64" id="2">
+               <widget source="session.CurrentService" render="Label" position="0,0" size="96,25" font="Regular;12" transparent="1" >
+                       <convert type="ServiceName">Name</convert>
+               </widget>
+               <widget name="DVDPlayer" position="0,26" size="96,12" font="Regular;10" transparent="1" />
+               <widget name="Chapter" position="0,40" size="66,12" font="Regular;10" transparent="1" halign="left" />
+               <widget source="session.CurrentService" render="Label" position="66,40" size="30,12" font="Regular;10" transparent="1" halign="right" >
+                       <convert type="ServicePosition">Position</convert>
+               </widget>
+               <widget source="session.CurrentService" render="Progress" position="0,52" size="96,12" borderWidth="1" >
+                       <convert type="ServicePosition">Position</convert>
+               </widget>
+       </screen>""")
 
        def __init__(self, session, parent):
                Screen.__init__(self, session, parent)
 
        def __init__(self, session, parent):
                Screen.__init__(self, session, parent)
@@ -604,6 +634,14 @@ class DVDPlayer(Screen, InfoBarBase, InfoBarNotifications, InfoBarSeek, InfoBarP
                        newref = eServiceReference(4369, 0, val)
                        print "play", newref.toString()
                        if curref is None or curref != newref:
                        newref = eServiceReference(4369, 0, val)
                        print "play", newref.toString()
                        if curref is None or curref != newref:
+                               if newref.toString().endswith("/VIDEO_TS") or newref.toString().endswith("/"):
+                                       names = newref.toString().rsplit("/",3)
+                                       if names[2].startswith("Disk ") or names[2].startswith("DVD "):
+                                               name = str(names[1]) + " - " + str(names[2])
+                                       else:
+                                               name = names[2]
+                                       print "setting name to: ", self.service
+                                       newref.setName(str(name))
                                self.session.nav.playService(newref)
                                self.service = self.session.nav.getCurrentService()
                                print "self.service", self.service
                                self.session.nav.playService(newref)
                                self.service = self.session.nav.getCurrentService()
                                print "self.service", self.service
@@ -728,6 +766,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",