3deb072d196343a1fe12254512e20fed3c3f575f
[vuplus_dvbapp-plugin] / vlcplayer / src / VlcServerConfig.py
1 # -*- coding: ISO-8859-1 -*-
2 #===============================================================================
3 # VLC Player Plugin by A. Lätsch 2007
4 #                   modified by Volker Christian 2008
5 #
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
9 # version.
10 #===============================================================================
11
12
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
27
28 from VlcServer import VlcServer
29
30 import gettext
31
32 def _(txt):
33         t = gettext.dgettext("VlcPlayer", txt)
34         if t == txt:
35                 print "[VLC] fallback to default translation for", txt
36                 t = gettext.gettext(txt)
37         return t
38
39
40 class VlcPluginInfo():
41         def __init__(self):
42                 pass
43
44 vlcPluginInfo = VlcPluginInfo()
45
46
47 class VlcServerConfig():
48         def __init__(self):
49                 self.serverlist = []
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):
54                         self.new()
55
56         # Add a new server or load a configsection if existing
57         def new(self):
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)
79
80                 self.serverlist.append(newServer)
81
82                 return newServer
83
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)
88                 self.__save()
89
90         # Edit or Add should complete
91         def save(self, server):
92                 server.getCfg().save()
93                 self.__save()
94
95         # Edit was canceled
96         def cancel(self, server):
97                 server.getCfg().load()
98
99         def getServerlist(self):
100                 return self.serverlist
101
102         def __save(self):
103                 config.plugins.vlcplayer.servercount.value = self.__getServerCount()
104                 config.plugins.vlcplayer.servercount.save()
105                 configfile.save()
106
107         def __getServerCount(self):
108                 return len(config.plugins.vlcplayer.servers)
109
110
111 class VlcServerConfigScreen(Screen, ConfigListScreen):
112         skin = """
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" />
123                 </screen>"""
124
125         def __init__(self, session, server):
126                 Screen.__init__(self, session)
127                 self.server = server
128                 self["actions"] = ActionMap(["SetupActions", "ColorActions"],
129                 {
130                         "green": self.keySave,
131                         "red": self.keyCancel,
132                         "cancel": self.keyCancel
133                 }, -2)
134
135                 self["key_red"] = Button(_("Cancel"))
136                 self["key_green"] = Button(_("OK"))
137                 self["key_yellow"] = Button("")
138                 self["key_blue"] = Button("")
139
140                 cfglist = []
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()))
146
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()))
155
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()))
161
162                 ConfigListScreen.__init__(self, cfglist, session)
163
164         def keySave(self):
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)
170
171         def keyCancel(self):
172                 result = [ False, self.server ]
173                 self.close(False, self.server)