1 # -*- coding: ISO-8859-1 -*-
2 #===============================================================================
3 # VLC Player Plugin by A. Lätsch 2007
4 # modified by Volker Christian 2008
6 # This is free software; you can redistribute it and/or modify it under
7 # the terms of the GNU General Public License as published by the Free
8 # Software Foundation; either version 2, or (at your option) any later
10 #===============================================================================
13 from Screens.Screen import Screen
14 from Components.config import config
15 from Components.config import ConfigSubsection
16 from Components.config import ConfigSubList
17 from Components.config import ConfigInteger
18 from Components.config import ConfigText
19 from Components.config import ConfigIP
20 from Components.config import ConfigSelection
21 from Components.config import ConfigYesNo
22 from Components.config import configfile
23 from Components.config import getConfigListEntry
24 from Components.ConfigList import ConfigListScreen
25 from Components.ActionMap import ActionMap
26 from Components.Button import Button
28 from VlcServer import VlcServer
33 t = gettext.dgettext("VlcPlayer", txt)
35 print "[VLC] fallback to default translation for", txt
36 t = gettext.gettext(txt)
40 class VlcPluginInfo():
44 vlcPluginInfo = VlcPluginInfo()
47 class VlcServerConfig():
50 config.plugins.vlcplayer = ConfigSubsection()
51 config.plugins.vlcplayer.servercount = ConfigInteger(0)
52 config.plugins.vlcplayer.servers = ConfigSubList()
53 for servernum in range(0, config.plugins.vlcplayer.servercount.value):
56 # Add a new server or load a configsection if existing
58 newServerConfigSubsection = ConfigSubsection()
59 config.plugins.vlcplayer.servers.append(newServerConfigSubsection)
60 newServerConfigSubsection.name = ConfigText("Server " + str(self.__getServerCount()), False)
61 newServerConfigSubsection.hostip = ConfigIP([0,0,0,0])
62 newServerConfigSubsection.httpport = ConfigInteger(8080, (0,65535))
63 newServerConfigSubsection.basedir = ConfigText("/", False)
64 newServerConfigSubsection.dvdPath = ConfigText("", False)
65 newServerConfigSubsection.transcodeVideo = ConfigYesNo()
66 newServerConfigSubsection.transcodeAudio = ConfigYesNo(True)
67 newServerConfigSubsection.videocodec = ConfigSelection({"mp1v": "MPEG1", "mp2v": "MPEG2"}, "mp2v")
68 newServerConfigSubsection.videobitrate = ConfigInteger(1000, (100, 9999))
69 newServerConfigSubsection.audiocodec = ConfigSelection({"mpga":"MP1", "mp2a": "MP2", "mp3": "MP3"}, "mp2a")
70 newServerConfigSubsection.audiobitrate = ConfigInteger(128, (64, 320))
71 newServerConfigSubsection.samplerate = ConfigSelection({"0":"as Input", "44100": "44100", "48000": "48000"}, "0")
72 newServerConfigSubsection.audiochannels = ConfigInteger(2, (1, 9))
73 newServerConfigSubsection.videowidth = ConfigSelection(["352", "704", "720"])
74 newServerConfigSubsection.videoheight = ConfigSelection(["288", "576"])
75 newServerConfigSubsection.framespersecond = ConfigInteger(25, (1, 99))
76 newServerConfigSubsection.aspectratio = ConfigSelection(["none", "16:9", "4:3"], "none")
77 newServerConfigSubsection.soverlay = ConfigYesNo()
78 newServer = VlcServer(newServerConfigSubsection)
80 self.serverlist.append(newServer)
84 # Add was canceled or existing server should be removed
85 def delete(self, server):
86 config.plugins.vlcplayer.servers.remove(server.getCfg())
87 self.serverlist.remove(server)
90 # Edit or Add should complete
91 def save(self, server):
92 server.getCfg().save()
96 def cancel(self, server):
97 server.getCfg().load()
99 def getServerlist(self):
100 return self.serverlist
103 config.plugins.vlcplayer.servercount.value = self.__getServerCount()
104 config.plugins.vlcplayer.servercount.save()
107 def __getServerCount(self):
108 return len(config.plugins.vlcplayer.servers)
111 class VlcServerConfigScreen(Screen, ConfigListScreen):
113 <screen name="VLCServerConfigScreen" position="80,100" size="560,320" title="Edit VLC Server">
114 <widget name="config" position="10,10" size="520,250" scrollbarMode="showOnDemand" />
115 <ePixmap name="red" position="0,280" zPosition="4" size="140,40" pixmap="skin_default/buttons/red.png" transparent="1" alphatest="on" />
116 <ePixmap name="green" position="140,280" zPosition="4" size="140,40" pixmap="skin_default/buttons/green.png" transparent="1" alphatest="on" />
117 <ePixmap name="yellow" position="280,280" zPosition="4" size="140,40" pixmap="skin_default/buttons/yellow.png" transparent="1" alphatest="on" />
118 <ePixmap name="blue" position="420,280" zPosition="4" size="140,40" pixmap="skin_default/buttons/blue.png" transparent="1" alphatest="on" />
119 <widget name="key_red" position="0,280" zPosition="5" size="140,40" valign="center" halign="center" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
120 <widget name="key_green" position="140,280" zPosition="5" size="140,40" valign="center" halign="center" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
121 <widget name="key_yellow" position="280,280" zPosition="5" size="140,40" valign="center" halign="center" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
122 <widget name="key_blue" position="420,280" zPosition="5" size="140,40" valign="center" halign="center" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
125 def __init__(self, session, server):
126 Screen.__init__(self, session)
128 self["actions"] = ActionMap(["SetupActions", "ColorActions"],
130 "green": self.keySave,
131 "red": self.keyCancel,
132 "cancel": self.keyCancel
135 self["key_red"] = Button(_("Cancel"))
136 self["key_green"] = Button(_("OK"))
137 self["key_yellow"] = Button("")
138 self["key_blue"] = Button("")
141 cfglist.append(getConfigListEntry(_("Symbolic Servername"), server.name()))
142 cfglist.append(getConfigListEntry(_("Server IP"), server.host()))
143 cfglist.append(getConfigListEntry(_("HTTP Port"), server.httpPort()))
144 cfglist.append(getConfigListEntry(_("Movie Directory"), server.basedir()))
145 cfglist.append(getConfigListEntry(_("DVD Device (leave empty for default)"), server.dvdPath()))
147 cfglist.append(getConfigListEntry(_("Transcode MPEG/DVD Video"), server.transcodeVideo()))
148 cfglist.append(getConfigListEntry(_("Video Codec"), server.videoCodec()))
149 cfglist.append(getConfigListEntry(_("Video Bitrate"), server.videoBitrate()))
150 cfglist.append(getConfigListEntry(_("Video Width"), server.videoWidth()))
151 cfglist.append(getConfigListEntry(_("Video Height"), server.videoHeight()))
152 #cfglist.append(getConfigListEntry(_("Frames per Second"), config.plugins.vlcplayer.fps))
153 cfglist.append(getConfigListEntry(_("Correct aspect ratio to"), server.aspectRatio()))
154 cfglist.append(getConfigListEntry(_("Subtitle overlay"), server.sOverlay()))
156 cfglist.append(getConfigListEntry(_("Transcode MPEG/DVD Audio"), server.transcodeAudio()))
157 cfglist.append(getConfigListEntry(_("Audio Codec"), server.audioCodec()))
158 cfglist.append(getConfigListEntry(_("Audio Bitrate"), server.audioBitrate()))
159 cfglist.append(getConfigListEntry(_("Audio Samplerate"), server.samplerate()))
160 cfglist.append(getConfigListEntry(_("Audio Channels"), server.audioChannels()))
162 ConfigListScreen.__init__(self, cfglist, session)
165 for x in self["config"].list:
166 if isinstance(x[1].value, str):
167 x[1].value = x[1].value.strip()
168 result = [ True, self.server ]
169 self.close(True, self.server)
172 result = [ False, self.server ]
173 self.close(False, self.server)