- Some minor problems fixed
authorVolker Christian <voc@users.schwerkraft.elitedvb.net>
Sun, 29 Jun 2008 23:22:46 +0000 (23:22 +0000)
committerVolker Christian <voc@users.schwerkraft.elitedvb.net>
Sun, 29 Jun 2008 23:22:46 +0000 (23:22 +0000)
- Started to add a simpler API to be used by extern plugins

vlcplayer/src/VlcMediaList.py
vlcplayer/src/VlcPlayer.py
vlcplayer/src/VlcServer.py
vlcplayer/src/VlcServerConfig.py
vlcplayer/src/VlcServerList.py
vlcplayer/src/plugin.py

index 95dc3b2..ea27fb4 100644 (file)
@@ -142,8 +142,7 @@ class VlcMediaListScreen(Screen):
                self.currentList.pageDown()
 
        def play(self, media, name):
-               dlg = self.session.open(VlcPlayer, self.server, self.currentList)
-               dlg.playfile(media, name)
+               self.server.play(self, media, name, self.currentList)
 
        def ok(self):
                media, name = self.currentList.activate()
index 6780376..75192de 100755 (executable)
@@ -216,7 +216,7 @@ class VlcPlayerSummary(Screen):
        def __init__(self, session, parent):
                Screen.__init__(self, session)
                self.skinName = "InfoBarMoviePlayerSummary"
-
+               
 
 class VlcPlayer(Screen, InfoBarNotifications, InfoBarAudioSelection):
        screen_timeout = 5000
@@ -356,7 +356,7 @@ class VlcPlayer(Screen, InfoBarNotifications, InfoBarAudioSelection):
                print "[VLC] unpause"
                try:
                        self.server.seek("-2")
-                       self.server.play()
+                       self.server.unpause()
                except Exception, e:
                        self.session.open(
                                MessageBox, _("Error with VLC server:\n%s" % e), MessageBox.TYPE_ERROR
@@ -436,15 +436,16 @@ class VlcPlayer(Screen, InfoBarNotifications, InfoBarAudioSelection):
                        self.playfile(url, "DVD")
                        self.showInfobar()
                else:
-                       media, name = self.currentList.getNextFile()
-                       if media is None:
-                               self.session.open(
-                                               MessageBox, _("No more files in this directory"), MessageBox.TYPE_INFO
-                               )
-                               self.close()
-                       else:
-                               self.playfile(media, name)
-                               self.showInfobar()
+                       if self.currentList != None:
+                               media, name = self.currentList.getNextFile()
+                               if media is None:
+                                       self.session.open(
+                                                       MessageBox, _("No more files in this directory"), MessageBox.TYPE_INFO
+                                       )
+                                       self.close()
+                               else:
+                                       self.playfile(media, name)
+                                       self.showInfobar()
 
        def playPrevFile(self):
                print "[VLC] playPrevFile"
@@ -462,15 +463,16 @@ class VlcPlayer(Screen, InfoBarNotifications, InfoBarAudioSelection):
                        self.playfile(url, "DVD")
                        self.showInfobar()
                else:
-                       media, name = self.currentList.getPrevFile()
-                       if media is None:
-                               self.session.open(
-                                               MessageBox, _("No previous file in this directory"), MessageBox.TYPE_INFO
+                       if self.currentList != None:
+                               media, name = self.currentList.getPrevFile()
+                               if media is None:
+                                       self.session.open(
+                                                       MessageBox, _("No previous file in this directory"), MessageBox.TYPE_INFO
                                        )
-                               self.close()
-                       else:
-                               self.playfile(media, name)
-                               self.showInfobar()
+                                       self.close()
+                               else:
+                                       self.playfile(media, name)
+                                       self.showInfobar()
 
        def audioTracks(self):
                return self.session.nav.getCurrentService() and self.session.nav.getCurrentService().audioTracks();
index 1546446..051f2d0 100644 (file)
@@ -17,7 +17,7 @@ from random import randint, seed
 from urllib import urlencode
 from urllib import urlopen
 from xml.dom.minidom import parse
-from VlcPlayer import isDvdUrl
+from VlcPlayer import VlcPlayer, isDvdUrl
 
 seed()
 
@@ -205,6 +205,10 @@ class VlcServer:
                                return e
                return None
 
+       def play(self, screen, media, name, currentList = None):
+               dlg = screen.session.open(VlcPlayer, self, currentList)
+               dlg.playfile(media, name)
+       
        def playFile(self, filename, videoPid, audioPid):
                streamName = "dream" + str(randint(0, maxint))
                transcode = []
@@ -266,7 +270,7 @@ class VlcServer:
                        self.lastError = None
                return "http://%s:%d/%s.ts" % (self.getHost(), self.getHttpPort(), streamName)
 
-       def play(self):
+       def unpause(self):
                self.__xmlRequest("status", {"command": "pl_pause"})
 
        def stop(self):
index e7f5113..de93c8f 100644 (file)
@@ -22,7 +22,6 @@ from Components.config import ConfigSubsection
 from Components.config import ConfigText
 from Components.config import ConfigYesNo
 from Components.config import config
-from Components.config import configfile
 from Components.config import getConfigListEntry
 from Screens.Screen import Screen
 from VlcServer import VlcServer
@@ -129,7 +128,7 @@ class ConfigSelectionExtended(ConfigSelection):
                self.notifiers.remove(notifier)
 
 
-class VlcServerConfig():
+class __VlcServerConfig():
        def __init__(self):
                self.serverlist = []
                config.plugins.vlcplayer = ConfigSubsection()
@@ -187,15 +186,22 @@ class VlcServerConfig():
        def getServerlist(self):
                return self.serverlist
 
+       def getServerByName(self, name):
+               for server in self.serverlist:
+                       if server.getName() == name:
+                               return server
+               return None
+
        def __save(self):
                config.plugins.vlcplayer.servercount.value = self.__getServerCount()
                config.plugins.vlcplayer.servercount.save()
-               configfile.save()
 
        def __getServerCount(self):
                return len(config.plugins.vlcplayer.servers)
 
 
+vlcServerConfig = __VlcServerConfig()
+
 class VlcServerConfigScreen(Screen, ConfigListScreen):
        skin = """
                <screen name="VlcServerConfigScreen" position="80,100" size="560,320" title="Edit VLC Server">
@@ -226,7 +232,7 @@ class VlcServerConfigScreen(Screen, ConfigListScreen):
                self["key_blue"] = Button("")
 
                cfglist = []
-               cfglist.append(getConfigListEntry(_("Symbolic Servername"), server.name()))
+               cfglist.append(getConfigListEntry(_("Server Profile Name"), server.name()))
                cfglist.append(getConfigListEntry(_("Enter VLC-Server as FQDN or IP-Address"), server.addressType()))
                self.hostConfigListEntry = getConfigListEntry(_("Server Address"), server.host())
                cfglist.append(self.hostConfigListEntry)
index 80bbf1a..081bf4a 100644 (file)
@@ -19,7 +19,7 @@ from Screens.Screen import Screen
 from Tools.Directories import resolveFilename, SCOPE_PLUGINS
 from Tools.LoadPixmap import LoadPixmap
 from VlcMediaList import VlcMediaListScreen
-from VlcServerConfig import VlcServerConfig
+from VlcServerConfig import vlcServerConfig
 from VlcServerConfig import VlcServerConfigScreen
 from enigma import eListboxPythonMultiContent, RT_HALIGN_LEFT, gFont
 from . import _
@@ -56,7 +56,7 @@ class VlcServerList(MenuList):
 
 class VlcServerListScreen(Screen):
        skin = """
-               <screen position="80,100" size="560,400" title="VLC Video Player V2.5" >
+               <screen position="80,100" size="560,400" title="VLC Video Player V2.5 - Select a VLC-Server Profile" >
                        <widget name="serverlabel" position="10,10" size="550,20" font="Regular;18"/>
                        <widget name="serverlist" position="10,35" size="550,310"  scrollbarMode="showOnDemand"/>
                        <ePixmap name="red"    position="0,355"   zPosition="4" size="140,40" pixmap="skin_default/buttons/red.png" transparent="1" alphatest="on" />
@@ -69,22 +69,22 @@ class VlcServerListScreen(Screen):
                        <widget name="key_blue" position="420,355" zPosition="5" size="140,40" valign="center" halign="center" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
                </screen>"""
 
-       def __init__(self, session):
+       def __init__(self, session, asConfigDialog = False):
                Screen.__init__(self, session)
                self.session = session
+               self.asConfigDialog = asConfigDialog
                self.serverlist = VlcServerList()
-               self.vlcServerConfig = VlcServerConfig()
 
-               self["serverlabel"] = Label(_("List of known VLC-Servers"))
+               self["serverlabel"] = Label(_("List of known VLC-Server Profiles"))
                self["serverlist"] = self.serverlist
                self["key_red"] = Button(_("delete server"))
                self["key_green"] = Button(_("add server"))
                self["key_yellow"] = Button(_("edit server"))
                self["key_blue"] = Button("")
 
-               self["actions"] = ActionMap(["WizardActions", "MenuActions", "ShortcutActions", "MoviePlayerActions"],
+               self["actions"] = ActionMap(["WizardActions", "ColorActions"],
                        {
-                        "back":        self.close,
+                        "back":        self.doRealClose,
                         "red":         self.keyDelete,
                         "green":       self.keyAddServer,
                         "yellow":      self.keyEditServer,
@@ -98,25 +98,25 @@ class VlcServerListScreen(Screen):
                self.onLayoutFinish.append(self.updateServerlist)
 
        def updateServerlist(self):
-               self.serverlist.update(self.vlcServerConfig.getServerlist())
+               self.serverlist.update(vlcServerConfig.getServerlist())
 
        def keyAddServer(self):
-               newServer = self.vlcServerConfig.new()
+               newServer = vlcServerConfig.new()
                self.session.openWithCallback(self.addCallback, VlcServerConfigScreen, newServer)
 
        def addCallback(self, result, server):
                if result:
-                       self.vlcServerConfig.save(server)
+                       vlcServerConfig.save(server)
                        self.updateServerlist()
                else:
-                       self.vlcServerConfig.delete(server)
+                       vlcServerConfig.delete(server)
 
        def keyDelete(self):
                self.session.openWithCallback(self.deleteCallback, MessageBox, _("Really delete this Server?"))
 
        def deleteCallback(self, result):
                if result:
-                       self.vlcServerConfig.delete(self.serverlist.getSelection())
+                       vlcServerConfig.delete(self.serverlist.getSelection())
                        self.updateServerlist()
 
        def keyEditServer(self):
@@ -126,10 +126,12 @@ class VlcServerListScreen(Screen):
 
        def editCallback(self, result, server):
                if result:
-                       self.vlcServerConfig.save(server)
+                       vlcServerConfig.save(server)
+                       index = self.serverlist.getSelectedIndex()
                        self.updateServerlist()
+                       self.serverlist.moveToIndex(index)
                else:
-                       self.vlcServerConfig.cancel(server)
+                       vlcServerConfig.cancel(server)
 
        def up(self):
                self.serverlist.up()
@@ -143,6 +145,12 @@ class VlcServerListScreen(Screen):
        def right(self):
                self.serverlist.pageDown()
 
+       def doRealClose(self):
+               self.close(None)
+
        def ok(self):
-               if self.serverlist.getSelection() is not None:
-                       self.session.open(VlcMediaListScreen, self.serverlist.getSelection()).update()
+               if self.asConfigDialog:
+                       self.close(self.serverlist.getSelection())
+               else:
+                       if self.serverlist.getSelection() is not None:
+                               self.session.open(VlcMediaListScreen, self.serverlist.getSelection()).update()
index 61ed7c5..b65598d 100755 (executable)
@@ -23,9 +23,11 @@ def _(txt):
                t = gettext.gettext(txt)
        return t
 
+
 def main(session, **kwargs):
        session.open(VlcServerListScreen)
 
+
 def Plugins(**kwargs):
        return PluginDescriptor(
                name="VLC Video Player",