backend performance optimizations and enclosure improvements
[vuplus_dvbapp-plugin] / webinterface / src / WebScreens.py
1 from enigma import eServiceReference
2 from Screens.Screen import Screen
3 from WebComponents.Sources.RequestData import RequestData
4
5 class WebScreen(Screen):
6         def __init__(self, session, request):
7                 Screen.__init__(self, session)
8                 self.stand_alone = True
9                 self.request = request
10                 self.instance = None
11
12 class DummyWebScreen(WebScreen):
13         #use it, if you dont need any source, just to can do a static file with an xml-file
14         def __init__(self, session, request):
15                 WebScreen.__init__(self, session, request)
16
17 class UpdateWebScreen(WebScreen):
18         def __init__(self, session, request):
19                 WebScreen.__init__(self, session, request)
20                 from Components.Sources.Clock import Clock
21
22                 self["CurrentTime"] = Clock()
23
24
25 class MessageWebScreen(WebScreen):
26         def __init__(self, session, request):
27                 WebScreen.__init__(self, session, request)
28                 from WebComponents.Sources.Message import Message
29
30                 self["Message"] = Message(session, func=Message.PRINT)
31                 self["GetAnswer"] = Message(session, func=Message.ANSWER)
32
33 class ServiceListReloadWebScreen(WebScreen):
34         def __init__(self, session, request):
35                 WebScreen.__init__(self, session, request)
36                 from WebComponents.Sources.ServiceListReload import ServiceListReload
37
38                 self["ServiceListReload"] = ServiceListReload(session)
39
40 class AudioWebScreen(WebScreen):
41         def __init__(self, session, request):
42                 WebScreen.__init__(self, session, request)
43                 from WebComponents.Sources.AudioTracks import AudioTracks
44
45                 self["AudioTracks"] = AudioTracks(session, func=AudioTracks.GET)
46                 self["SelectAudioTrack"] = AudioTracks(session, func=AudioTracks.SET)
47
48 class AboutWebScreen(WebScreen):
49         def __init__(self, session, request):
50                 WebScreen.__init__(self, session, request)
51                 from WebComponents.Sources.About import About
52                 from WebComponents.Sources.Frontend import Frontend
53                 from WebComponents.Sources.Hdd import Hdd
54                 from WebComponents.Sources.Network import Network
55                 from Components.config import config
56                 from Components.About import about
57                 from Components.Sources.StaticText import StaticText
58                 from Tools.DreamboxHardware import getFPVersion
59                 from Tools.HardwareInfo import HardwareInfo
60
61                 hw = HardwareInfo()
62
63                 self["About"] = About(session)
64
65                 self["Network"] = Network()
66                 self["Hdd"] = Hdd()
67                 self["Frontends"] = Frontend()
68                 self["EnigmaVersion"] = StaticText(about.getEnigmaVersionString())
69                 self["ImageVersion"] = StaticText(about.getVersionString())
70                 self["WebIfVersion"] = StaticText(config.plugins.Webinterface.version.value)
71                 self["FpVersion"] = StaticText(str(getFPVersion()))
72                 self["DeviceName"] = StaticText(hw.get_device_name())
73
74 class VolumeWebScreen(WebScreen):
75         def __init__(self, session, request):
76                 WebScreen.__init__(self, session, request)
77
78                 from WebComponents.Sources.Volume import Volume
79                 self["Volume"] = Volume(session)
80
81 class SettingsWebScreen(WebScreen):
82         def __init__(self, session, request):
83                 WebScreen.__init__(self, session, request)
84                 from WebComponents.Sources.Settings import Settings
85
86                 self["Settings"] = Settings(session)
87
88 class SubServiceWebScreen(WebScreen):
89         def __init__(self, session, request):
90                 WebScreen.__init__(self, session, request)
91                 from WebComponents.Sources.SubServices import SubServices
92
93                 self["SubServices"] = SubServices(session)
94
95 class StreamSubServiceWebScreen(WebScreen):
96         def __init__(self, session, request):
97                 WebScreen.__init__(self, session, request)
98                 from WebComponents.Sources.SubServices import SubServices
99
100                 self["StreamSubServices"] = SubServices(session, streamingScreens)
101
102 class ServiceListWebScreen(WebScreen):
103         def __init__(self, session, request):
104                 WebScreen.__init__(self, session, request)
105                 
106                 from Components.Sources.ServiceList import ServiceList
107                 from Screens.ChannelSelection import service_types_tv
108         
109                 fav = eServiceReference(service_types_tv + ' FROM BOUQUET "bouquets.tv" ORDER BY bouquet')
110                 self["ServiceList"] = ServiceList(fav, command_func=self.getServiceList, validate_commands=False)
111                 self["localip"] = RequestData(request, what=RequestData.HOST)
112                 
113         def getServiceList(self, sRef):
114                 self["ServiceList"].root = sRef 
115
116 class ServiceListRecursiveWebScreen(WebScreen):
117         def __init__(self, session, request):
118                 WebScreen.__init__(self, session, request)
119                 
120                 from WebComponents.Sources.ServiceListRecursive import ServiceListRecursive
121                 self["ServiceListRecursive"] = ServiceListRecursive(session, func=ServiceListRecursive.FETCH)
122
123 class SwitchServiceWebScreen(WebScreen):
124         def __init__(self, session, request):
125                 WebScreen.__init__(self, session, request)
126                 
127                 from WebComponents.Sources.SwitchService import SwitchService
128                 self["SwitchService"] = SwitchService(session)
129
130 class ReadPluginListWebScreen(WebScreen):
131         def __init__(self, session, request):
132                 WebScreen.__init__(self, session, request)
133                 from WebComponents.Sources.ReadPluginList import ReadPluginList
134                 self["ReadPluginList"] = ReadPluginList(session)
135
136 class LocationsAndTagsWebScreen(WebScreen):
137         def __init__(self, session, request):
138                 WebScreen.__init__(self, session, request)
139                 from WebComponents.Sources.LocationsAndTags import LocationsAndTags
140
141                 self["CurrentLocation"] = LocationsAndTags(session, LocationsAndTags.CURRLOCATION)
142                 self["Locations"] = LocationsAndTags(session, LocationsAndTags.LOCATIONS)
143                 self["AddLocation"] = LocationsAndTags(session, LocationsAndTags.ADDLOCATION)
144                 self["RemoveLocation"] = LocationsAndTags(session, LocationsAndTags.REMOVELOCATION)
145                 self["Tags"] = LocationsAndTags(session, LocationsAndTags.TAGS)
146
147 class EpgWebScreen(WebScreen):
148         def __init__(self, session, request):
149                 WebScreen.__init__(self, session, request)
150                 from WebComponents.Sources.EPG import EPG
151
152                 self["EpgSearch"] = EPG(session, func=EPG.SEARCH)
153                 self["EpgSearchSimilar"] = EPG(session, func=EPG.SEARCHSIMILAR)
154                 self["EpgService"] = EPG(session, func=EPG.SERVICE)
155                 self["EpgBouquetNow"] = EPG(session, func=EPG.BOUQUETNOW)
156                 self["EpgBouquetNext"] = EPG(session, func=EPG.BOUQUETNEXT)
157                 self["EpgServiceNow"] = EPG(session, func=EPG.SERVICENOW)
158                 self["EpgServiceNext"] = EPG(session, func=EPG.SERVICENEXT)
159                 self["EpgBouquet"] = EPG(session, func=EPG.BOUQUET)
160                 self["localip"] = RequestData(request, what=RequestData.HOST)
161
162                 self["EPGSERVICEWAP"] = EPG(session, func=EPG.SERVICE, endtm=True)
163
164         def getServiceList(self, sRef):
165                 self["ServiceList"].root = sRef
166
167 class MovieWebScreen(WebScreen):
168         def __init__(self, session, request):
169                 WebScreen.__init__(self, session, request)
170                 from Components.MovieList import MovieList
171                 from Tools.Directories import resolveFilename, SCOPE_HDD
172                 from WebComponents.Sources.Movie import Movie
173
174                 movielist = MovieList(eServiceReference("2:0:1:0:0:0:0:0:0:0:" + resolveFilename(SCOPE_HDD)))
175                 self["MovieList"] = Movie(session, movielist, func=Movie.LIST)
176                 self["MovieFileDel"] = Movie(session, movielist, func=Movie.DEL)
177                 self["localip"] = RequestData(request, what=RequestData.HOST)
178
179 class MediaPlayerWebScreen(WebScreen):
180         def __init__(self, session, request):
181                 WebScreen.__init__(self, session, request)
182                 from WebComponents.Sources.MP import MP
183
184                 self["FileList"] = MP(session, func=MP.LIST)
185                 self["PlayFile"] = MP(session, func=MP.PLAY)
186                 self["RemoveFile"] = MP(session, func=MP.REMOVE)
187                 self["Command"] = MP(session, func=MP.COMMAND)
188                 self["WritePlaylist"] = MP(session, func=MP.WRITEPLAYLIST)
189
190 class AutoTimerWebScreen(WebScreen):
191         def __init__(self, session, request):
192                 WebScreen.__init__(self, session, request)
193                 from WebComponents.Sources.AT import AT
194
195                 self["AutoTimerList"] = AT(session, func=AT.LIST)
196                 self["AutoTimerWrite"] = AT(session, func=AT.WRITE)
197
198 class TimerWebScreen(WebScreen):
199         def __init__(self, session, request):
200                 WebScreen.__init__(self, session, request)
201                 from WebComponents.Sources.Timer import Timer
202
203                 self["TimerList"] = Timer(session, func=Timer.LIST)
204                 self["TimerAddEventID"] = Timer(session, func=Timer.ADDBYID)
205                 self["TimerAdd"] = Timer(session, func=Timer.ADD)
206                 self["TimerDel"] = Timer(session, func=Timer.DEL)
207                 self["TimerChange"] = Timer(session, func=Timer.CHANGE)
208                 self["TimerListWrite"] = Timer(session, func=Timer.WRITE)
209                 self["TVBrowser"] = Timer(session, func=Timer.TVBROWSER)
210                 self["RecordNow"] = Timer(session, func=Timer.RECNOW)
211                 self["TimerCleanup"] = Timer(session, func=Timer.CLEANUP)
212
213 class RemoteWebScreen(WebScreen):
214         def __init__(self, session, request):
215                 WebScreen.__init__(self, session, request)
216                 from WebComponents.Sources.RemoteControl import RemoteControl
217
218                 self["RemoteControl"] = RemoteControl(session)
219
220 class PowerWebScreen(WebScreen):
221         def __init__(self, session, request):
222                 WebScreen.__init__(self, session, request)
223                 from WebComponents.Sources.PowerState import PowerState
224
225                 self["PowerState"] = PowerState(session)
226
227 class ParentControlWebScreen(WebScreen):
228         def __init__(self, session, request):
229                 WebScreen.__init__(self, session, request)
230                 from WebComponents.Sources.ParentControl import ParentControl
231
232                 self["ParentControlList"] = ParentControl(session)
233
234 class WapWebScreen(WebScreen):
235         def __init__(self, session, request):
236                 WebScreen.__init__(self, session, request)
237                 from WebComponents.Sources.WAPfunctions import WAPfunctions
238
239                 self["WAPFillOptionListYear"] = WAPfunctions(session, func=WAPfunctions.LISTTIME)
240                 self["WAPFillOptionListDay"] = WAPfunctions(session, func=WAPfunctions.LISTTIME)
241                 self["WAPFillOptionListMonth"] = WAPfunctions(session, func=WAPfunctions.LISTTIME)
242                 self["WAPFillOptionListShour"] = WAPfunctions(session, func=WAPfunctions.LISTTIME)
243                 self["WAPFillOptionListSmin"] = WAPfunctions(session, func=WAPfunctions.LISTTIME)
244                 self["WAPFillOptionListEhour"] = WAPfunctions(session, func=WAPfunctions.LISTTIME)
245                 self["WAPFillOptionListEmin"] = WAPfunctions(session, func=WAPfunctions.LISTTIME)
246
247                 self["WAPFillOptionListRecord"] = WAPfunctions(session, func=WAPfunctions.OPTIONLIST)
248                 self["WAPFillOptionListAfterEvent"] = WAPfunctions(session, func=WAPfunctions.OPTIONLIST)
249
250                 self["WAPFillValueName"] = WAPfunctions(session, func=WAPfunctions.FILLVALUE)
251                 self["WAPFillValueDescr"] = WAPfunctions(session, func=WAPfunctions.FILLVALUE)
252                 self["WAPFillLocation"] = WAPfunctions(session, func=WAPfunctions.LOCATIONLIST)
253                 self["WAPFillTags"] = WAPfunctions(session, func=WAPfunctions.TAGLIST)
254
255                 self["WAPFillOptionListRepeated"] = WAPfunctions(session, func=WAPfunctions.REPEATED)
256                 self["WAPServiceList"] = WAPfunctions(session, func=WAPfunctions.SERVICELIST)
257
258                 self["WAPdeleteOldOnSave"] = WAPfunctions(session, func=WAPfunctions.DELETEOLD)
259
260 streamingScreens = []
261
262 class StreamingWebScreen(WebScreen):
263         def __init__(self, session, request):
264                 WebScreen.__init__(self, session, request)
265                 from Components.Sources.StreamService import StreamService
266                 self["StreamService"] = StreamService(self.session.nav)
267                 streamingScreens.append(self)
268                 self.screenIndex = len(streamingScreens) - 1
269
270         def getRecordService(self):
271                 if self.has_key("StreamService"):
272                         return self["StreamService"].getService()
273                 return None
274
275         def getRecordServiceRef(self):
276                 if self.has_key("StreamService"):
277                         return self["StreamService"].ref
278                 return None
279
280 class M3uStreamingWebScreen(WebScreen):
281         def __init__(self, session, request):
282                 WebScreen.__init__(self, session, request)
283                 from Components.Sources.StaticText import StaticText
284                 from Components.Sources.Config import Config
285                 from Components.config import config
286                 self["ref"] = StaticText()
287                 self["localip"] = RequestData(request, what=RequestData.HOST)
288
289 class M3uStreamingCurrentServiceWebScreen(WebScreen):
290         def __init__(self, session, request):
291                 WebScreen.__init__(self, session, request)
292                 from WebComponents.Sources.CurrentService import CurrentService
293
294                 self["CurrentService"] = CurrentService(session)
295                 self["localip"] = RequestData(request, what=RequestData.HOST)
296
297 class TsM3uWebScreen(WebScreen):
298         def __init__(self, session, request):
299                 WebScreen.__init__(self, session, request)
300                 from Components.Sources.StaticText import StaticText
301                 from Components.Sources.Config import Config
302                 from Components.config import config
303                 self["file"] = StaticText()
304                 self["localip"] = RequestData(request, what=RequestData.HOST)
305                 self["localport"] = RequestData(request, what=RequestData.PORT)
306
307 class RestartWebScreen(WebScreen):
308         def __init__(self, session, request):
309                 WebScreen.__init__(self, session, request)
310                 import plugin
311                 plugin.restartWebserver(session)
312
313 class GetPidWebScreen(WebScreen):
314         def __init__(self, session, request):
315                  WebScreen.__init__(self, session, request)
316                  from Components.Sources.StaticText import StaticText
317                  from enigma import iServiceInformation
318                  pids = self.session.nav.getCurrentService()
319                  if pids is not None:
320                         pidinfo = pids.info()
321                         VPID = hex(pidinfo.getInfo(iServiceInformation.sVideoPID))
322                         APID = hex(pidinfo.getInfo(iServiceInformation.sAudioPID))
323                         PPID = hex(pidinfo.getInfo(iServiceInformation.sPMTPID))
324                         self["pids"] = StaticText("%s,%s,%s" % (PPID.lstrip("0x"), VPID.lstrip("0x"), APID.lstrip("0x")))
325                  else:
326                         self["pids"] = StaticText("0x,0x,0x")
327
328                  self["localip"] = RequestData(request, what=RequestData.HOST)
329
330 class DeviceInfoWebScreen(WebScreen):
331         def __init__(self, session, request):
332                 WebScreen.__init__(self, session, request)
333                 from WebComponents.Sources.Network import Network
334                 from WebComponents.Sources.Hdd import Hdd
335                 from WebComponents.Sources.Frontend import Frontend
336                 from Components.config import config
337                 from Components.About import about
338                 from Components.Sources.StaticText import StaticText
339                 from Tools.DreamboxHardware import getFPVersion
340                 from Tools.HardwareInfo import HardwareInfo
341
342                 hw = HardwareInfo()
343
344                 self["Network"] = Network()
345                 self["Hdd"] = Hdd()
346                 self["Frontends"] = Frontend()
347                 self["EnigmaVersion"] = StaticText(about.getEnigmaVersionString())
348                 self["ImageVersion"] = StaticText(about.getVersionString())
349                 self["WebIfVersion"] = StaticText(config.plugins.Webinterface.version.value)
350                 self["FpVersion"] = StaticText(str(getFPVersion()))
351                 self["DeviceName"] = StaticText(hw.get_device_name())
352
353 class ServicePlayableWebScreen(WebScreen):
354         def __init__(self, session, request):
355                 WebScreen.__init__(self, session, request)
356                 from WebComponents.Sources.ServicePlayable import ServicePlayable
357                 
358                 self["ServicePlayable"] = ServicePlayable(session, type=ServicePlayable.SINGLE)
359
360 class ServiceListPlayableWebScreen(WebScreen):
361         def __init__(self, session, request):
362                 WebScreen.__init__(self, session, request)
363                 from WebComponents.Sources.ServicePlayable import ServicePlayable
364                 
365                 self["ServiceListPlayable"] = ServicePlayable(session, type=ServicePlayable.BOUQUET)
366