Changes:
[vuplus_dvbapp-plugin] / webinterface / src / WebScreens.py
diff --git a/webinterface/src/WebScreens.py b/webinterface/src/WebScreens.py
new file mode 100644 (file)
index 0000000..82c6d67
--- /dev/null
@@ -0,0 +1,342 @@
+from enigma import eServiceReference
+from Screens.Screen import Screen
+from WebComponents.Sources.RequestData import RequestData
+
+class WebScreen(Screen):
+       def __init__(self, session, request):
+               Screen.__init__(self, session)
+               self.stand_alone = True
+               self.request = request
+               self.instance = None            
+
+class DummyWebScreen(WebScreen):
+       #use it, if you dont need any source, just to can do a static file with an xml-file
+       def __init__(self, session, request):
+               WebScreen.__init__(self, session, request)
+
+class UpdateWebScreen(WebScreen):
+       def __init__(self, session, request):
+               WebScreen.__init__(self, session, request)
+               from Components.Sources.Clock import Clock
+               
+               self["CurrentTime"] = Clock()
+               
+
+class MessageWebScreen(WebScreen):
+       def __init__(self, session, request):
+               WebScreen.__init__(self, session, request)
+               from WebComponents.Sources.Message import Message
+               
+               self["Message"] = Message(session, func=Message.PRINT)
+               self["GetAnswer"] = Message(session, func=Message.ANSWER)
+
+class ServiceListReloadWebScreen(WebScreen):
+       def __init__(self, session, request):
+               WebScreen.__init__(self, session, request)
+               from WebComponents.Sources.ServiceListReload import ServiceListReload
+               
+               self["ServiceListReload"] = ServiceListReload(session)
+
+class AudioWebScreen(WebScreen):
+       def __init__(self, session, request):
+               WebScreen.__init__(self, session, request)
+               from WebComponents.Sources.AudioTracks import AudioTracks
+               
+               self["AudioTracks"] = AudioTracks(session, func=AudioTracks.GET)
+               self["SelectAudioTrack"] = AudioTracks(session, func=AudioTracks.SET)
+
+class AboutWebScreen(WebScreen):
+       def __init__(self, session, request):
+               WebScreen.__init__(self, session, request)
+               from WebComponents.Sources.About import About
+               from WebComponents.Sources.Frontend import Frontend
+               from WebComponents.Sources.Hdd import Hdd
+               from WebComponents.Sources.Network import Network               
+               from Components.config import config
+               from Components.About import about
+               from Components.Sources.StaticText import StaticText
+               from Tools.DreamboxHardware import getFPVersion
+               from Tools.HardwareInfo import HardwareInfo
+               
+               hw = HardwareInfo()
+               
+               self["About"] = About(session)          
+               
+               self["Network"] = Network()
+               self["Hdd"] = Hdd()
+               self["Frontends"] = Frontend()                                  
+               self["EnigmaVersion"] = StaticText(about.getEnigmaVersionString())
+               self["ImageVersion"] = StaticText(about.getVersionString())
+               self["WebIfVersion"] = StaticText(config.plugins.Webinterface.version.value)
+               self["FpVersion"] = StaticText(str(getFPVersion()))
+               self["DeviceName"] = StaticText(hw.get_device_name())           
+
+class VolumeWebScreen(WebScreen):
+       def __init__(self, session, request):
+               WebScreen.__init__(self, session, request)
+               
+               from WebComponents.Sources.Volume import Volume         
+               self["Volume"] = Volume(session)
+
+class SettingsWebScreen(WebScreen):
+       def __init__(self, session, request):
+               WebScreen.__init__(self, session, request)
+               from WebComponents.Sources.Settings import Settings
+               
+               self["Settings"] = Settings(session)
+
+class SubServiceWebScreen(WebScreen):
+       def __init__(self, session, request):
+               WebScreen.__init__(self, session, request)
+               from WebComponents.Sources.SubServices import SubServices
+               
+               self["SubServices"] = SubServices(session)
+
+class StreamSubServiceWebScreen(WebScreen):
+       def __init__(self, session, request):
+               WebScreen.__init__(self, session, request)
+               from WebComponents.Sources.SubServices import SubServices
+               
+               self["StreamSubServices"] = SubServices(session, streamingScreens)
+
+class ServiceWebScreen(WebScreen):
+       def __init__(self, session, request):
+               WebScreen.__init__(self, session, request)
+               from WebComponents.Sources.ServiceListRecursive import ServiceListRecursive
+               from Components.Sources.ServiceList import ServiceList
+               from Screens.ChannelSelection import service_types_tv
+               
+               fav = eServiceReference(service_types_tv + ' FROM BOUQUET "bouquets.tv" ORDER BY bouquet')
+               self["SwitchService"] = ServiceList(fav, command_func=self.zapTo, validate_commands=False)
+               self["ServiceList"] = ServiceList(fav, command_func=self.getServiceList, validate_commands=False)
+               self["ServiceListRecursive"] = ServiceListRecursive(session, func=ServiceListRecursive.FETCH)
+               self["localip"] = RequestData(request, what=RequestData.HOST)
+
+       def getServiceList(self, sRef):
+               self["ServiceList"].root = sRef
+
+       def zapTo(self, reftozap):
+               from Components.config import config
+               pc = config.ParentalControl.configured.value
+               if pc:
+                       config.ParentalControl.configured.value = False
+               if config.plugins.Webinterface.allowzapping.value:
+                       self.session.nav.playService(reftozap)
+               if pc:
+                       config.ParentalControl.configured.value = pc
+               """
+               switching config.ParentalControl.configured.value
+               ugly, but necessary :(
+               """
+
+class LocationsAndTagsWebScreen(WebScreen):
+       def __init__(self, session, request):
+               WebScreen.__init__(self, session, request)
+               from WebComponents.Sources.LocationsAndTags import LocationsAndTags
+               
+               self["CurrentLocation"] = LocationsAndTags(session, LocationsAndTags.CURRLOCATION)
+               self["Locations"] = LocationsAndTags(session, LocationsAndTags.LOCATIONS)
+               self["Tags"] = LocationsAndTags(session, LocationsAndTags.TAGS)
+
+class EpgWebScreen(WebScreen):
+       def __init__(self, session, request):
+               WebScreen.__init__(self, session, request)
+               from WebComponents.Sources.EPG import EPG
+
+               self["EpgSearch"] = EPG(session, func=EPG.SEARCH)
+               self["EpgService"] = EPG(session, func=EPG.SERVICE)             
+               self["EpgBouquetNow"] = EPG(session, func=EPG.BOUQUETNOW)
+               self["EpgBouquetNext"] = EPG(session, func=EPG.BOUQUETNEXT)
+               self["EpgServiceNow"] = EPG(session, func=EPG.SERVICENOW)
+               self["EpgServiceNext"] = EPG(session, func=EPG.SERVICENEXT)
+               self["EpgBouquet"] = EPG(session, func=EPG.BOUQUET)
+               self["localip"] = RequestData(request, what=RequestData.HOST)
+               
+               self["EPGSERVICEWAP"] = EPG(session, func=EPG.SERVICE, endtm=True)
+
+       def getServiceList(self, sRef):
+               self["ServiceList"].root = sRef
+
+class MovieWebScreen(WebScreen):
+       def __init__(self, session, request):
+               WebScreen.__init__(self, session, request)              
+               from Components.MovieList import MovieList
+               from Tools.Directories import resolveFilename, SCOPE_HDD
+               from WebComponents.Sources.Movie import Movie
+               
+               movielist = MovieList(eServiceReference("2:0:1:0:0:0:0:0:0:0:" + resolveFilename(SCOPE_HDD)))
+               self["MovieList"] = Movie(session, movielist, func=Movie.LIST)
+               self["MovieFileDel"] = Movie(session, movielist, func=Movie.DEL)
+               self["localip"] = RequestData(request, what=RequestData.HOST)
+
+class MediaPlayerWebScreen(WebScreen):
+       def __init__(self, session, request):
+               WebScreen.__init__(self, session, request)
+               from WebComponents.Sources.MP import MP
+               
+               self["FileList"] = MP(session, func=MP.LIST)
+               self["PlayFile"] = MP(session, func=MP.PLAY)
+               self["Command"] = MP(session, func=MP.COMMAND)
+               self["WritePlaylist"] = MP(session, func=MP.WRITEPLAYLIST)
+
+class AutoTimerWebScreen(WebScreen):
+       def __init__(self, session, request):
+               WebScreen.__init__(self, session, request)
+               from WebComponents.Sources.AT import AT
+               
+               self["AutoTimerList"] = AT(session, func=AT.LIST)
+               self["AutoTimerWrite"] = AT(session, func=AT.WRITE)
+
+class TimerWebScreen(WebScreen):
+       def __init__(self, session, request):
+               WebScreen.__init__(self, session, request)              
+               from WebComponents.Sources.Timer import Timer
+               
+               self["TimerList"] = Timer(session, func=Timer.LIST)
+               self["TimerAddEventID"] = Timer(session, func=Timer.ADDBYID)
+               self["TimerAdd"] = Timer(session, func=Timer.ADD)
+               self["TimerDel"] = Timer(session, func=Timer.DEL)
+               self["TimerChange"] = Timer(session, func=Timer.CHANGE)
+               self["TimerListWrite"] = Timer(session, func=Timer.WRITE)
+               self["TVBrowser"] = Timer(session, func=Timer.TVBROWSER)
+               self["RecordNow"] = Timer(session, func=Timer.RECNOW)
+               self["TimerCleanup"] = Timer(session, func=Timer.CLEANUP)
+
+class RemoteWebScreen(WebScreen):
+       def __init__(self, session, request):
+               WebScreen.__init__(self, session, request)
+               from WebComponents.Sources.RemoteControl import RemoteControl
+               
+               self["RemoteControl"] = RemoteControl(session)
+
+class PowerWebScreen(WebScreen):
+       def __init__(self, session, request):
+               WebScreen.__init__(self, session, request)
+               from WebComponents.Sources.PowerState import PowerState
+               
+               self["PowerState"] = PowerState(session)
+
+class ParentControlWebScreen(WebScreen):
+       def __init__(self, session, request):
+               WebScreen.__init__(self, session, request)
+               from WebComponents.Sources.ParentControl import ParentControl
+               
+               self["ParentControlList"] = ParentControl(session)
+
+class WapWebScreen(WebScreen):
+       def __init__(self, session, request):
+               WebScreen.__init__(self, session, request)
+               from WebComponents.Sources.WAPfunctions import WAPfunctions
+               
+               self["WAPFillOptionListYear"] = WAPfunctions(session, func=WAPfunctions.LISTTIME)
+               self["WAPFillOptionListDay"] = WAPfunctions(session, func=WAPfunctions.LISTTIME)
+               self["WAPFillOptionListMonth"] = WAPfunctions(session, func=WAPfunctions.LISTTIME)
+               self["WAPFillOptionListShour"] = WAPfunctions(session, func=WAPfunctions.LISTTIME)
+               self["WAPFillOptionListSmin"] = WAPfunctions(session, func=WAPfunctions.LISTTIME)
+               self["WAPFillOptionListEhour"] = WAPfunctions(session, func=WAPfunctions.LISTTIME)
+               self["WAPFillOptionListEmin"] = WAPfunctions(session, func=WAPfunctions.LISTTIME)
+
+               self["WAPFillOptionListRecord"] = WAPfunctions(session, func=WAPfunctions.OPTIONLIST)
+               self["WAPFillOptionListAfterEvent"] = WAPfunctions(session, func=WAPfunctions.OPTIONLIST)
+
+               self["WAPFillValueName"] = WAPfunctions(session, func=WAPfunctions.FILLVALUE)
+               self["WAPFillValueDescr"] = WAPfunctions(session, func=WAPfunctions.FILLVALUE)
+               self["WAPFillLocation"] = WAPfunctions(session, func=WAPfunctions.LOCATIONLIST)
+               self["WAPFillTags"] = WAPfunctions(session, func=WAPfunctions.TAGLIST)
+
+               self["WAPFillOptionListRepeated"] = WAPfunctions(session, func=WAPfunctions.REPEATED)
+               self["WAPServiceList"] = WAPfunctions(session, func=WAPfunctions.SERVICELIST)
+
+               self["WAPdeleteOldOnSave"] = WAPfunctions(session, func=WAPfunctions.DELETEOLD)
+
+streamingScreens = []
+
+class StreamingWebScreen(WebScreen):
+       def __init__(self, session, request):
+               WebScreen.__init__(self, session, request)
+               from Components.Sources.StreamService import StreamService
+               self["StreamService"] = StreamService(self.session.nav)         
+               streamingScreens.append(self)
+               self.screenIndex = len(streamingScreens) - 1
+       
+       def getRecordService(self):
+               if self.has_key("StreamService"):
+                       return self["StreamService"].getService()
+               return None
+       
+       def getRecordServiceRef(self):
+               if self.has_key("StreamService"):
+                       return self["StreamService"].ref
+               return None
+
+class M3uStreamingWebScreen(WebScreen):
+       def __init__(self, session, request):
+               WebScreen.__init__(self, session, request)
+               from Components.Sources.StaticText import StaticText
+               from Components.Sources.Config import Config
+               from Components.config import config
+               self["ref"] = StaticText()
+               self["localip"] = RequestData(request, what=RequestData.HOST)
+
+class M3uStreamingCurrentServiceWebScreen(WebScreen):
+       def __init__(self, session, request):
+               WebScreen.__init__(self, session, request)
+               from WebComponents.Sources.CurrentService import CurrentService
+               
+               self["CurrentService"] = CurrentService(session)
+               self["localip"] = RequestData(request, what=RequestData.HOST)
+
+class TsM3uWebScreen(WebScreen):
+       def __init__(self, session, request):
+               WebScreen.__init__(self, session, request)
+               from Components.Sources.StaticText import StaticText
+               from Components.Sources.Config import Config
+               from Components.config import config
+               self["file"] = StaticText()
+               self["localip"] = RequestData(request, what=RequestData.HOST)
+
+class RestartWebScreen(WebScreen):
+       def __init__(self, session, request):
+               WebScreen.__init__(self, session, request)
+               import plugin
+               plugin.restartWebserver(session)
+
+class GetPidWebScreen(WebScreen):
+       def __init__(self, session, request):
+                WebScreen.__init__(self, session, request)
+                from Components.Sources.StaticText import StaticText
+                from enigma import iServiceInformation
+                pids = self.session.nav.getCurrentService()
+                if pids is not None:
+                       pidinfo = pids.info()
+                       VPID = hex(pidinfo.getInfo(iServiceInformation.sVideoPID))
+                       APID = hex(pidinfo.getInfo(iServiceInformation.sAudioPID))
+                       PPID = hex(pidinfo.getInfo(iServiceInformation.sPMTPID))
+                       self["pids"] = StaticText("%s,%s,%s" % (PPID.lstrip("0x"), VPID.lstrip("0x"), APID.lstrip("0x")))
+                else:
+                       self["pids"] = StaticText("0x,0x,0x")
+
+                self["localip"] = RequestData(request, what=RequestData.HOST)
+
+class DeviceInfoWebScreen(WebScreen):
+       def __init__(self, session, request):
+               WebScreen.__init__(self, session, request)
+               from WebComponents.Sources.Network import Network
+               from WebComponents.Sources.Hdd import Hdd
+               from WebComponents.Sources.Frontend import Frontend             
+               from Components.config import config
+               from Components.About import about
+               from Components.Sources.StaticText import StaticText
+               from Tools.DreamboxHardware import getFPVersion
+               from Tools.HardwareInfo import HardwareInfo
+               
+               hw = HardwareInfo()
+               
+               self["Network"] = Network()
+               self["Hdd"] = Hdd()
+               self["Frontends"] = Frontend()                          
+               self["EnigmaVersion"] = StaticText(about.getEnigmaVersionString())
+               self["ImageVersion"] = StaticText(about.getVersionString())
+               self["WebIfVersion"] = StaticText(config.plugins.Webinterface.version.value)
+               self["FpVersion"] = StaticText(str(getFPVersion()))
+               self["DeviceName"] = StaticText(hw.get_device_name())
\ No newline at end of file