Repository URL to install this package:
|
Version:
1.7-r7 ▾
|
enigma2-plugin-extensions-valisepg
/
usr
/
lib
/
enigma2
/
python
/
Plugins
/
Extensions
/
ValisEPG
/
plugin.py
|
|---|
from __future__ import print_function
from __future__ import division
#
# Vali's EPG Plugin
# modded by SvenH aka Dreamy
#
valisepg_version="1.7-r7"
#
from Plugins.Plugin import PluginDescriptor
from Screens.Screen import Screen
from Screens.ChannelSelection import ChannelSelection
from Screens.ChoiceBox import ChoiceBox
from Screens.MessageBox import MessageBox
from Screens.TimerEntry import TimerEntry
from Screens.TimerEdit import TimerSanityConflict
from Screens.EpgSelection import EPGSelection as impotedEPGSelection
from Screens.InfoBar import InfoBar
from Components.EpgList import EPG_TYPE_SINGLE, EPGList, EPG_TYPE_MULTI
from Components.Button import Button
from Components.Label import Label
from Components.Sources.Event import Event
from Components.ActionMap import NumberActionMap, HelpableActionMap
from Components.Pixmap import MultiPixmap
from Components.config import config, ConfigSubsection, getConfigListEntry, ConfigInteger, ConfigSelection
from Components.ConfigList import ConfigListScreen
from Components.PluginComponent import plugins
from os import environ, listdir, remove, rename, system, path
from Tools.Directories import fileExists
from Tools.LoadPixmap import LoadPixmap
from Tools.BoundFunction import boundFunction
from ServiceReference import ServiceReference
from RecordTimer import RecordTimerEntry, parseEvent, AFTEREVENT
from enigma import eEPGCache, eServiceReference, eServiceCenter, eListboxPythonMultiContent, gFont, RT_HALIGN_LEFT, RT_VALIGN_CENTER, RT_WRAP, getDesktop, eTimer, ePoint
from time import localtime, mktime, time
from datetime import datetime
from skin import TemplatedListFonts, componentSizes
import Screens.InfoBarGenerics
YELLOWC = '\033[33m'
ENDC = '\033[m'
def cprint(text):
print(YELLOWC+"[ValisEPG] "+text+ENDC)
valisepg_setup=_("Vali's EPG")+" "+_("Setup")
sz_w = getDesktop(0).size().width()
config.valisepg = ConfigSubsection()
valisopt=[]
valisopt.append(( "default",_("default") ))
valisopt.append(( "valis",_("Vali's EPG") ))
config.valisepg.channellist = ConfigSelection(default = "default", choices = valisopt)
bouquetopt=[]
bouquetopt.append(( "default",_("default") ))
bouquetopt.append(( "providers",_("Providers") ))
bouquetopt.append(( "favourites",_("Favourites") ))
bouquetopt.append(( "satellites",_("Satellites") ))
bouquetopt.append(( "next",_("next channel") ))
bouquetopt.append(( "previous",_("previous channel") ))
bouquetopt.append(( "valis",_("Vali's EPG") ))
config.valisepg.bouquetup = ConfigSelection(default = "default", choices = bouquetopt)
config.valisepg.bouquetdown = ConfigSelection(default = "default", choices = bouquetopt)
config.valisepg.ptH = ConfigInteger(default=20, limits=(0, 23))
config.valisepg.ptM = ConfigInteger(default=15, limits=(0, 56))
config.valisepg.autozap = ConfigInteger(default=10, limits=(3, 20))
lineopt=[]
lineopt.append(( "-----------------------",_("--------") ))
lineopt.append(( "=======================",_("========") ))
lineopt.append(( "#######################",_("########") ))
lineopt.append(( "***********************",_("********") ))
lineopt.append(( "IIIIIIIIIIIIIIIIIIIIIII",_("IIIIIIII") ))
lineopt.append(( "XXXXXXXXXXXXXXXXXXXXXXX",_("XXXXXXXX") ))
lineopt.append(( "",_(" ") ))
config.valisepg.line= ConfigSelection(default = "-----------------------", choices = lineopt)
def Valis_InfoBarChannelSelection__init__(self):
cprint("InfoBarChannelSelection.__init__")
#instantiate forever
Screens.InfoBarGenerics.InfoBarChannelSelection.valisinstance=self
if config.valisepg.channellist.value == "valis":
self.servicelist = self.session.instantiateDialog(ValisEPG, zPosition=0)
else:
self.servicelist = self.session.instantiateDialog(ChannelSelection, zPosition=0)
self.onServiceListRootChanged = []
self.servicelist.onRootChanged.append(self._InfoBarChannelSelection__onServiceListRootChanged)
if config.misc.initialchannelselection.value:
self.onShown.append(self.firstRun)
self["ChannelSelectActions"] = HelpableActionMap(self, "InfobarChannelSelection",
{
"switchChannelUp": (self.switchChannelUp, _("open servicelist(up)")),
"switchChannelDown": (self.switchChannelDown, _("open servicelist(down)")),
"zapUp": (self.zapUp, _("previous channel")),
"zapDown": (self.zapDown, _("next channel")),
"historyBack": (self.historyBack, _("previous channel in history")),
"historyNext": (self.historyNext, _("next channel in history")),
# "openServiceList": (self.openServiceList, _("open servicelist")),
})
self["ChannelSelectActions_"] = HelpableActionMap(self, "ChannelSelectBaseActions",
{
# "switchChannelUp": (self.switchChannelUp, _("open servicelist(up)")),
# "switchChannelDown": (self.switchChannelDown, _("open servicelist(down)")),
# "selectServiceUp": (self.switchChannelUp, _("open servicelist(up)")),
# "selectServiceDown": (self.switchChannelDown, _("open servicelist(down)")),
# "selectServicePageUp": (self.zapUp, _("previous channel")),
# "selectServicePageDown": (self.zapDown, _("next channel")),
# "prevMarker": (self.historyBack, _("previous channel in history")),
# "nextMarker": (self.historyNext, _("next channel in history")),
"nextBouquet": (self.ValisBouquetUp, "Vali's"+" "+_("Bouquet")+" "+_("up")),
"prevBouquet": (self.ValisBouquetDown, "Vali's"+" "+_("Bouquet")+" "+_("down")),
})
if not self._InfoBarChannelSelection__delChannelSelectionScreen in self.onClose:
self.onClose.append(self._InfoBarChannelSelection__delChannelSelectionScreen)
def Valis_InfoBarChannelSelection_ValisBouquetUp(self):
cprint("Bouquet up %s" % config.valisepg.bouquetup.value)
if config.valisepg.bouquetup.value == "default":
self.openServiceList()
elif config.valisepg.bouquetup.value == "favourites":
self.servicelist.showFavourites()
self.openServiceList()
elif config.valisepg.bouquetup.value == "providers":
self.servicelist.showProviders()
self.openServiceList()
elif config.valisepg.bouquetup.value == "satellites":
self.servicelist.showSatellites()
self.openServiceList()
elif config.valisepg.bouquetup.value == "next":
self.zapDown()
elif config.valisepg.bouquetup.value == "previous":
self.zapUp()
elif config.valisepg.bouquetup.value == "valis":
from Plugins.Extensions.ValisEPG.plugin import ValisEPG
self.session.open(ValisEPG, zPosition=0)
else:
self.openServiceList()
def Valis_InfoBarChannelSelection_ValisBouquetDown(self):
cprint("Bouquet down %s" % config.valisepg.bouquetdown.value)
if config.valisepg.bouquetdown.value == "default":
self.openServiceList()
elif config.valisepg.bouquetdown.value == "favourites":
self.servicelist.showFavourites()
self.openServiceList()
elif config.valisepg.bouquetdown.value == "providers":
self.servicelist.showProviders()
self.openServiceList()
elif config.valisepg.bouquetdown.value == "satellites":
self.servicelist.showSatellites()
self.openServiceList()
elif config.valisepg.bouquetdown.value == "next":
self.zapDown()
elif config.valisepg.bouquetdown.value == "previous":
self.zapUp()
elif config.valisepg.bouquetdown.value == "valis":
from Plugins.Extensions.ValisEPG.plugin import ValisEPG
self.session.open(ValisEPG, zPosition=0)
else:
self.openServiceList()
# rename on startup
Screens.InfoBarGenerics.InfoBarChannelSelection.__init__=Valis_InfoBarChannelSelection__init__
Screens.InfoBarGenerics.InfoBarChannelSelection.ValisBouquetUp=Valis_InfoBarChannelSelection_ValisBouquetUp
Screens.InfoBarGenerics.InfoBarChannelSelection.ValisBouquetDown=Valis_InfoBarChannelSelection_ValisBouquetDown
# import methods from ChannelSelectionPlus ==========
useChannelSelectionPlus=False
showPrimeTime=False
if path.exists("/usr/lib/enigma2/python/Plugins/Extensions/ChannelSelectionPlus"):
try:
useChannelSelectionPlus=True
from Plugins.Extensions.ChannelSelectionPlus.plugin import ServiceListOwn
CSP_ServiceListOwn_getEventFromService_orig = ServiceListOwn.getEventFromService
CSP_ServiceListOwn_getEventNameFromEvent_ori = ServiceListOwn.getEventNameFromEvent
except:
useChannelSelectionPlus=False
def CSP_ServiceListOwn_getEventFromService(self, service):
self.showPrimeTime = showPrimeTime
if not showPrimeTime:
return CSP_ServiceListOwn_getEventFromService_orig(self, service)
#load PrimeTime-Event
epgcache = eEPGCache.getInstance()
now_time = localtime()
jahr, monat, tag = now_time[0:3]
primetime_h = int(config.valisepg.ptH.value)
primetime_m = int(config.valisepg.ptM.value)
primetime_val = jahr, monat, tag, primetime_h, primetime_m, 0, 0, 0, -1
epgtime = int(mktime(primetime_val))
event = epgcache.lookupEventTime(service, epgtime)
self.PrimeTime = epgtime
return event
def CSP_ServiceListOwn_getEventNameFromEvent(self, event):
if not showPrimeTime:
return CSP_ServiceListOwn_getEventNameFromEvent_ori(self, event)
# return EventName with eventTimes for PrimeTime
beginTime = localtime(event.getBeginTime())
endTime = localtime(event.getBeginTime()+event.getDuration())
eventTimeName = "%02d:%02d - %02d:%02d %s" % (beginTime[3],beginTime[4],endTime[3],endTime[4], event.getEventName())
return eventTimeName
if useChannelSelectionPlus:
ServiceListOwn.getEventFromService = CSP_ServiceListOwn_getEventFromService
ServiceListOwn.getEventNameFromEvent = CSP_ServiceListOwn_getEventNameFromEvent
# ende import ChannelSelectionPlus ==================
class newEPGlist(EPGList):
SKIN_COMPONENT_KEY = "newEPGlist"
SKIN_COMPONENT_ICON_HEIGHT = "iconHeight"
SKIN_COMPONENT_ICON_WIDTH = "iconWidth"
SKIN_COMPONENT_TIME_WIDTH = "timeWidth"
SKIN_COMPONENT_TEXT_HEIGHT = "textHeight"
SKIN_COMPONENT_EVENT_WIDTH = "eventWidth"
SKIN_COMPONENT_EVENT_HEIGHT = "eventHeight"
SKIN_COMPONENT_ITEM_MARGIN = "itemMargin"
def __init__(self, type=EPG_TYPE_SINGLE, selChangedCB=None, timer = None):
EPGList.__init__(self, type, selChangedCB, timer)
tlf = TemplatedListFonts()
self.l.setFont(0, gFont(tlf.face(tlf.MEDIUM), tlf.size(tlf.MEDIUM)))
self.l.setItemHeight(componentSizes.itemHeight(self.SKIN_COMPONENT_KEY, 60))
self.l.setBuildFunc(self.buildSingleEntry)
self.breite = 200
self.primetime_pixmap = LoadPixmap(cached=True, path='/usr/lib/enigma2/python/Plugins/Extensions/ValisEPG/primetime.svg')
self.search_pixmap = LoadPixmap(cached=True, path='/usr/lib/enigma2/python/Plugins/Extensions/ValisEPG/search.svg')
try:
self.searchtext = config.plugins.epgsearch.history.value[0].lower()
except:
self.searchtext = None
sizes = componentSizes[newEPGlist.SKIN_COMPONENT_KEY]
self._iconWidth = sizes.get(newEPGlist.SKIN_COMPONENT_ICON_WIDTH, 20)
self._iconHeight = sizes.get(newEPGlist.SKIN_COMPONENT_ICON_HEIGHT, 20)
self._timeWidth = sizes.get(newEPGlist.SKIN_COMPONENT_TIME_WIDTH, 165) + 20
self._textHeight = sizes.get(newEPGlist.SKIN_COMPONENT_TEXT_HEIGHT, 24)
self._eventWidth = sizes.get(newEPGlist.SKIN_COMPONENT_EVENT_WIDTH, 300)
self._eventHeight = sizes.get(newEPGlist.SKIN_COMPONENT_EVENT_HEIGHT, 26)
self._itemMargin = sizes.get(newEPGlist.SKIN_COMPONENT_ITEM_MARGIN, 5)
def fillSingleEPG(self, service):
if showPrimeTime:
now_time = localtime()
jahr, monat, tag = now_time[0:3]
primetime_h = int(config.valisepg.ptH.value)
primetime_m = int(config.valisepg.ptM.value)
primetime_val = jahr, monat, tag, primetime_h, primetime_m, 0, 0, 0, -1
t = int(mktime(primetime_val))
else:
t = time()
test = [ 'RIBDT', (service.ref.toString(), 0, t, -1) ]
#test = [ 'RIBDT', (service.ref.toString(), 0, -1, -1) ]
self.list = self.queryEPG(test)
self.l.setList(self.list)
self.selectionChanged()
def buildSingleEntry(self, service, eventId, beginTime, duration, EventName):
(clock_pic, rec) = self.getPixmapForEntry(service, eventId, beginTime, duration)
t = localtime(beginTime)
evCHT = float(str(t[3])+"."+str("%0.2d" % t[4]))
myPT = float(str(config.valisepg.ptH.value)+"."+str("%0.2d" % config.valisepg.ptM.value))
Primetime1 = myPT - 0.05
Primetime2 = myPT + 0.05
res = [None,(eListboxPythonMultiContent.TYPE_TEXT,self._itemMargin,2,self._timeWidth, self._textHeight,0,RT_HALIGN_LEFT|RT_VALIGN_CENTER,self.days[t[6]] + ' ' + '%02d.%02d, %02d:%02d' % (t[2],t[1],t[3],t[4]))]
if rec:
res.append((eListboxPythonMultiContent.TYPE_PIXMAP_ALPHATEST, self._itemMargin+self._timeWidth, 2, self._iconWidth, self._iconHeight, clock_pic))
if (evCHT >= Primetime1) and (evCHT <= Primetime2):
res.append((eListboxPythonMultiContent.TYPE_PIXMAP_ALPHATEST, self._itemMargin+self._timeWidth+self._iconWidth+self._itemMargin, 2, self._iconWidth, self._iconHeight, self.primetime_pixmap))
elif self.searchtext and (self.searchtext in EventName.lower()):
res.append((eListboxPythonMultiContent.TYPE_PIXMAP_ALPHATEST, self._itemMargin+self._timeWidth+self._iconWidth+self._itemMargin, 2, self._iconWidth, self._iconHeight, self.search_pixmap))
res.append((eListboxPythonMultiContent.TYPE_TEXT, self._itemMargin+self._timeWidth+self._iconWidth*2.5+self._itemMargin, 0, self._eventWidth, self._textHeight, 0, RT_VALIGN_CENTER, config.valisepg.line.value))
res.append((eListboxPythonMultiContent.TYPE_TEXT, self._itemMargin, self._textHeight, self._eventWidth, self._eventHeight, 0 ,RT_HALIGN_LEFT, EventName))
return res
class ChannelSelection_summary(Screen):
pass
class ValisEPG(ChannelSelection):
if sz_w == 1920:
skin = """
<screen name="ValisEPG" position="center,110" size="1800,930" title="Channels">
<eLabel backgroundColor="grey" position="10,80" size="1780,1" />
<eLabel backgroundColor="grey" position="1285,80" size="1,660" />
<ePixmap pixmap="Default-FHD/skin_default/buttons/red.svg" position="10,5" size="300,70" />
<ePixmap pixmap="Default-FHD/skin_default/buttons/green.svg" position="310,5" size="300,70" />
<ePixmap pixmap="Default-FHD/skin_default/buttons/yellow.svg" position="610,5" size="300,70" />
<ePixmap pixmap="Default-FHD/skin_default/buttons/blue.svg" position="910,5" size="300,70" />
<widget backgroundColor="#9f1313" font="Regular;30" halign="center" name="key_red" position="10,5" foregroundColor="white" shadowColor="black" shadowOffset="-2,-2" size="300,70" transparent="1" valign="center" zPosition="1" />
<widget backgroundColor="#1f771f" font="Regular;30" halign="center" name="key_green" position="310,5" foregroundColor="white" shadowColor="black" shadowOffset="-2,-2" size="300,70" transparent="1" valign="center" zPosition="1" />
<widget backgroundColor="#a08500" font="Regular;30" halign="center" name="key_yellow" position="610,5" foregroundColor="white" shadowColor="black" shadowOffset="-2,-2" size="300,70" transparent="1" valign="center" zPosition="1" />
<widget backgroundColor="#18188b" font="Regular;30" halign="center" name="key_blue" position="910,5" foregroundColor="white" shadowColor="black" shadowOffset="-2,-2" size="300,70" transparent="1" valign="center" zPosition="1" />
<widget font="Regular;34" halign="right" position="1650,25" render="Label" size="120,40" source="global.CurrentTime">
<convert type="ClockToText">Default</convert>
</widget>
<widget font="Regular;34" halign="right" position="1240,25" render="Label" size="400,40" source="global.CurrentTime" >
<convert type="ClockToText">Date</convert>
</widget>
<widget serviceItemHeight="49" additionalInfoFont="Regular;30" colorEventProgressbarBorder="grey" colorEventProgressbarBorderSelected="white" colorServiceDescription="grey" colorServiceDescriptionSelected="#d3d3d9" enableWrapAround="1" foregroundColorServiceNotAvail="#525252" name="list" picServiceEventProgressbar="skin_default/progcl.svg" position="10,90" scrollbarMode="showOnDemand" serviceInfoFont="Regular;30" serviceNameFont="Regular;31" serviceNumberFont="Regular;32" size="1260,640" />
<widget name="epglist" position="1300,90" size="490,640" scrollbarMode="showOnDemand" enableWrapAround="1"/>
<eLabel backgroundColor="grey" position="10,740" size="1780,1" />
<widget font="Regular;32" foregroundColor="yellow" halign="center" position="10,750" size="200,40" render="Label" source="Event">
<convert type="EventTime">Remaining</convert>
<convert type="RemainingToText">InMinutes</convert>
</widget>
<widget source="ServiceEvent" render="Picon" position="10,800" size="200,120">
<convert type="ServiceName">Reference</convert>
</widget>
<widget font="Regular;30" position="240,750" render="Label" size="100,35" source="Event">
<convert type="EventTime">StartTime</convert>
<convert type="ClockToText" />
</widget>
<widget borderColor="grey" borderWidth="1" position="340,768" render="Progress" size="1350,2" source="Event">
<convert type="EventTime">Progress</convert>
</widget>
<widget pixmap="Default-FHD/skin_default/progress.svg" position="340,763" render="Progress" size="1350,10" source="Event" transparent="1" zPosition="1">
<convert type="EventTime">Progress</convert>
</widget>
<widget font="Regular;30" halign="right" position="1690,750" render="Label" size="100,35" source="Event">
<convert type="EventTime">EndTime</convert>
<convert type="ClockToText">Format:%H:%M</convert>
</widget>
<widget font="Regular;29" position="240,790" size="1550,135" name="NewDescription"/>
<widget name="slider1" pixmaps="/usr/share/enigma2/Default-FHD/skin_default/buttons/button_off.svg,/usr/share/enigma2/Default-FHD/skin_default/buttons/button_green.svg" position="1240,40" size="30,30"/>
<widget name="slider2" pixmaps="/usr/share/enigma2/Default-FHD/skin_default/buttons/button_off.svg,/usr/share/enigma2/Default-FHD/skin_default/buttons/button_green.svg" position="1300,40" size="30,30"/>
</screen>"""
elif sz_w == 2560:
skin = """
<screen name="ValisEPG" position="center,160" size="2400,1220" title="Channels">
<ePixmap pixmap="skin_default/buttons/red.png" position="20,10" size="400,80" />
<ePixmap pixmap="skin_default/buttons/green.png" position="420,10" size="400,80" />
<ePixmap pixmap="skin_default/buttons/yellow.png" position="820,10" size="400,80" />
<ePixmap pixmap="skin_default/buttons/blue.png" position="1220,10" size="400,80" />
<widget name="key_red" position="20,10" size="400,80" zPosition="1" font="Regular;40" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-4,-4" />
<widget name="key_green" position="420,10" size="400,80" zPosition="1" font="Regular;40" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-4,-4" />
<widget name="key_yellow" position="820,10" size="400,80" zPosition="1" font="Regular;40" halign="center" valign="center" backgroundColor="#a08500" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-4,-4" />
<widget name="key_blue" position="1220,10" size="400,80" zPosition="1" font="Regular;40" halign="center" valign="center" backgroundColor="#18188b" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-4,-4" />
<widget source="global.CurrentTime" render="Label" position="2220,24" size="160,50" font="Regular;44" halign="right">
<convert type="ClockToText">Default</convert>
</widget>
<widget source="global.CurrentTime" render="Label" position="1800,24" size="400,50" font="Regular;44" halign="right">
<convert type="ClockToText">Format:%a %d. %B</convert>
</widget>
<widget name="list" position="20,120" size="1680,816" enableWrapAround="1" scrollbarMode="showOnDemand" backgroundColor="background" serviceInfoFont="Regular;40" colorServiceDescription="grey" colorServiceDescriptionSelected="#d3d3d9" foregroundColorServiceNotAvail="#525252" picServiceEventProgressbar="Default-FHD/skin_default/progress.svg" colorEventProgressbarBorder="grey" colorEventProgressbarBorderSelected="white" transparent="1" />
<eLabel position="20,100" size="2360,2" backgroundColor="grey" />
<eLabel position="1720,100" size="2,860" backgroundColor="grey" />
<widget name="epglist" position="1740,110" size="640,840" scrollbarMode="showOnDemand" enableWrapAround="1" />
<eLabel position="20,960" size="2360,2" backgroundColor="grey" />
<widget font="Regular;68" halign="right" position="2480,50" render="Label" size="800,80" source="global.CurrentTime">
<convert type="ClockToText">Date</convert>
</widget>
<widget font="Regular;44" foregroundColor="yellow" halign="center" position="20,970" size="266,60" render="Label" source="Event">
<convert type="EventTime">Remaining</convert>
<convert type="RemainingToText">InMinutes</convert>
</widget>
<widget source="ServiceEvent" render="Picon" position="20,1040" size="266,160">
<convert type="ServiceName">Reference</convert>
</widget>
<widget font="Regular;40" position="320,970" render="Label" size="180,50" source="Event">
<convert type="EventTime">StartTime</convert>
<convert type="ClockToText" />
</widget>
<widget borderColor="grey" borderWidth="2" position="520,992" render="Progress" size="1660,4" source="Event">
<convert type="EventTime">Progress</convert>
</widget>
<widget pixmap="Default-FHD/skin_default/progress.svg" position="520,984" render="Progress" size="1660,16" source="Event" transparent="1" zPosition="1">
<convert type="EventTime">Progress</convert>
</widget>
<widget font="Regular;40" halign="right" position="2200,970" render="Label" size="180,50" source="Event">
<convert type="EventTime">EndTime</convert>
<convert type="ClockToText">Format:%H:%M</convert>
</widget>
<widget font="Regular;38" position="320,1030" size="2060,180" name="NewDescription" />
<widget name="slider1" pixmaps="/usr/share/enigma2/skin_default/buttons/button_off.png,/usr/share/enigma2/skin_default/buttons/button_green.png" position="1660,50" size="40,40" />
<widget name="slider2" pixmaps="/usr/share/enigma2/skin_default/buttons/button_off.png,/usr/share/enigma2/skin_default/buttons/button_green.png" position="1740,50" size="40,40" />
</screen>"""
else:
skin = """
<screen name="ValisEPG" position="center,80" size="1200,610" title="Channels">
<ePixmap pixmap="skin_default/buttons/red.png" position="10,5" size="200,40" />
<ePixmap pixmap="skin_default/buttons/green.png" position="210,5" size="200,40" />
<ePixmap pixmap="skin_default/buttons/yellow.png" position="410,5" size="200,40" />
<ePixmap pixmap="skin_default/buttons/blue.png" position="610,5" size="200,40" />
<widget name="key_red" position="10,5" size="200,40" zPosition="1" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-2,-2" />
<widget name="key_green" position="210,5" size="200,40" zPosition="1" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-2,-2" />
<widget name="key_yellow" position="410,5" size="200,40" zPosition="1" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-2,-2" />
<widget name="key_blue" position="610,5" size="200,40" zPosition="1" font="Regular;20" halign="center" valign="center" backgroundColor="#18188b" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-2,-2" />
<widget source="global.CurrentTime" render="Label" position="1110,12" size="80,25" font="Regular;22" halign="right">
<convert type="ClockToText">Default</convert>
</widget>
<widget source="global.CurrentTime" render="Label" position="900,12" size="200,25" font="Regular;22" halign="right">
<convert type="ClockToText">Format:%a %d. %B</convert>
</widget>
<widget name="list" position="10,60" size="840,408" enableWrapAround="1" scrollbarMode="showOnDemand" backgroundColor="background" serviceInfoFont="Regular;20" colorServiceDescription="grey" colorServiceDescriptionSelected="#d3d3d9" foregroundColorServiceNotAvail="#525252" picServiceEventProgressbar="skin_default/progcl.png" colorEventProgressbarBorder="grey" colorEventProgressbarBorderSelected="white" />
<eLabel position="10,50" size="1180,1" backgroundColor="grey" />
<eLabel position="860,50" size="1,430" backgroundColor="grey" />
<widget name="epglist" position="870,55" size="320,420" scrollbarMode="showOnDemand" enableWrapAround="1"/>
<eLabel position="10,480" size="1180,1" backgroundColor="grey" />
<widget font="Regular;34" halign="right" position="1240,25" render="Label" size="400,40" source="global.CurrentTime" >
<convert type="ClockToText">Date</convert>
</widget>
<widget font="Regular;22" foregroundColor="yellow" halign="center" position="10,485" size="133,30" render="Label" source="Event">
<convert type="EventTime">Remaining</convert>
<convert type="RemainingToText">InMinutes</convert>
</widget>
<widget source="ServiceEvent" render="Picon" position="10,520" size="133,80">
<convert type="ServiceName">Reference</convert>
</widget>
<widget font="Regular;20" position="160,485" render="Label" size="90,25" source="Event">
<convert type="EventTime">StartTime</convert>
<convert type="ClockToText" />
</widget>
<widget borderColor="grey" borderWidth="1" position="260,496" render="Progress" size="830,2" source="Event">
<convert type="EventTime">Progress</convert>
</widget>
<widget pixmap="skin_default/progress.png" position="260,492" render="Progress" size="830,8" source="Event" transparent="1" zPosition="1">
<convert type="EventTime">Progress</convert>
</widget>
<widget font="Regular;20" halign="right" position="1100,485" render="Label" size="90,25" source="Event">
<convert type="EventTime">EndTime</convert>
<convert type="ClockToText">Format:%H:%M</convert>
</widget>
<widget font="Regular;19" position="160,515" size="1030,90" name="NewDescription"/>
<widget name="slider1" pixmaps="/usr/share/enigma2/skin_default/buttons/button_off.png,/usr/share/enigma2/skin_default/buttons/button_green.png" position="830,25" size="20,20"/>
<widget name="slider2" pixmaps="/usr/share/enigma2/skin_default/buttons/button_off.png,/usr/share/enigma2/skin_default/buttons/button_green.png" position="870,25" size="20,20"/>
</screen>"""
def __init__(self, session):
ChannelSelection.__init__(self, session)
# prevent PipZap crashes
self.dopipzap = False
self.enable_pipzap = False
#
self["epglist"] = newEPGlist(type = EPG_TYPE_SINGLE, selChangedCB = self.onEPGLSelectionChanged, timer = session.nav.RecordTimer)
self.aktCurrentService = ServiceReference(self.getCurrentSelection())
self.aktListBox = 1
self.RedBtnMode = "FAVO"
self["key_red"] = Button(_("Similar"))
self["key_green"] = Button(_("Add timer"))
self["key_yellow"] = Button(_("Today")+" "+str(config.valisepg.ptH.value)+":"+str("%0.2d" % config.valisepg.ptM.value))
self["key_blue"] = Button(_("Favourites"))
self["Event"] = Event()
self["NewDescription"] = Label(" ")
self["slider1"] = MultiPixmap()
self["slider2"] = MultiPixmap()
self.AutoZap = eTimer()
self.AutoZap_conn = self.AutoZap.timeout.connect(self.zapForRefresh)
self.AZpos = 1
self.updateEPGlist = True
self.movemode = False
#self.onShown.append(self.onVEPGshow)
self.onHide.append(self.onVEPGhide)
self.lastservice = config.tv.lastservice
self["actions"] = NumberActionMap(["ChannelSelectBaseActions", "OkCancelActions", "DirectionActions", "InfobarActions", "InfobarTeletextActions", "InfobarInstantRecord"],
{
"showFavourites": self.keyRedAction,
"showAllServices": self.runEPGsearch,
"showProviders": self.goPT,
"showSatellites": self.AddConfirmedTimer,
"instantRecord": self.instantRecord,
"nextBouquet": self.nextBouquet,
"prevBouquet": self.prevBouquet,
"nextMarker": self.rightList,
"prevMarker": self.leftList,
"cancel": self.cancel,
"ok": self.pressOK,
"right": self.pageDown0,
"rightRepeated": self.pageDown0,
"left": self.pageUp0,
"leftRepeated": self.pageUp0,
"up": self.moveUp0,
"upRepeated": self.moveUp0,
"down": self.moveDown0,
"downRepeated": self.moveDown0,
"showMovies": self.OptionsMenu,
"gotAsciiCode": self.keyAsciiCode,
"1": self.keyNumberGlobal,
"2": self.keyNumberGlobal,
"3": self.keyNumberGlobal,
"4": self.keyNumberGlobal,
"5": self.keyNumberGlobal,
"6": self.keyNumberGlobal,
"7": self.keyNumberGlobal,
"8": self.keyNumberGlobal,
"9": self.keyNumberGlobal,
"0": self.keyNumber0,
"startTeletext": self.showSinEPG,
"showTv": self.setModeTv
}, -1)
#self.onLayoutFinish.append(self.AfterCreate)
self.onFirstExecBegin.append(self.AfterCreate)
#set redkey to multiple action from WHERE_CHANNEL_SELECTION_RED
if hasattr(PluginDescriptor, "WHERE_CHANNEL_SELECTION_RED"):
actions = self["actions"].actions
del actions['showAllServices'] #delete redKeyFunction
self._pluginList = []
self._checkPlugins()
def _checkPlugins(self):
self._pluginList = [(p.name, p, False) for p in plugins.getPlugins(where = PluginDescriptor.WHERE_CHANNEL_SELECTION_RED)]
#check if is already exist an entry for EPGSearch
if len([x for x in self._pluginList if x[1].path.endswith("/EPGSearch")]) == 0:
self._pluginList.append((_("Similar"), self.runEPGsearch, True))
if self._pluginList:
if len(self._pluginList) > 1:
self["key_red"].setText(_("More ..."))
else:
self["key_red"].setText(self._pluginList[0][0])
else:
self["key_red"].setText("")
def _openPlugins(self):
if self._pluginList:
if len(self._pluginList) > 1:
self.session.openWithCallback(self._onPluginSelected, ChoiceBox, list=self._pluginList, windowTitle=_("More ..."))
else:
self._onPluginSelected(self._pluginList[0])
def _onPluginSelected(self, p=None):
noargs = p and p[2]
fnc = p and p[1]
if not fnc:
return
if noargs: #noarg for multiepgcallback backwards compat
fnc()
return
event = self["epglist"].getCurrent()[0]
if not event:
self.session.toastManager.showToast(_("This feature requires valid EPG!"))
return
fnc(self.session, event, self["epglist"].getCurrent()[1])
def createSummary(self):
return ChannelSelection_summary
def cancel(self):
if self.movemode: #movemode active?
self.toggleMoveMode()
lastservice=eServiceReference(self.lastservice.value)
if lastservice.valid() and self.getCurrentSelection() != lastservice:
self.setCurrentSelection(lastservice)
self.setModeTv()
if showPrimeTime:
self.togglePrimTime()
self.close(None)
def leftList(self):
self.aktListBox = 1
self["slider1"].setPixmapNum(1)
self["slider2"].setPixmapNum(0)
self["epglist"].l.setSelectionEnable(False)
self["list"].l.setSelectionEnable(True)
def rightList(self):
self.aktListBox = 2
self["slider1"].setPixmapNum(0)
self["slider2"].setPixmapNum(1)
self["epglist"].l.setSelectionEnable(True)
self["list"].l.setSelectionEnable(False)
def moveUp0(self):
if self.aktListBox==1:
self["list"].moveUp()
else:
self["epglist"].moveUp()
def moveDown0(self):
if self.aktListBox==1:
self["list"].moveDown()
else:
self["epglist"].moveDown()
def pageUp0(self):
if self.aktListBox==1:
self["list"].instance.moveSelection(self["list"].instance.pageUp)
else:
self["epglist"].instance.moveSelection(self["list"].instance.pageUp)
def pageDown0(self):
if self.aktListBox==1:
self["list"].instance.moveSelection(self["list"].instance.pageDown)
else:
self["epglist"].instance.moveSelection(self["list"].instance.pageDown)
def nextBouquet(self):
self.leftList()
self.changeBouquet(+1)
def prevBouquet(self):
self.leftList()
self.changeBouquet(-1)
def AfterCreate(self):
self["slider1"].setPixmapNum(1)
self["slider2"].setPixmapNum(0)
self.setModeTv()
self.UpdateInfos()
self["epglist"].l.setSelectionEnable(False)
def onVEPGshow(self):
pass
def onVEPGhide(self):
if self.updateEPGlist:
self.leftList()
else:
self.updateEPGlist = True
#if self.movemode:
# self.toggleMoveMode()
def UpdateInfos(self):
l = self["epglist"]
l.recalcEntrySize()
aktRef=self.getCurrentSelection()
self.aktCurrentService=ServiceReference(aktRef)
l.fillSingleEPG(self.aktCurrentService)
self["epglist"].instance.moveSelectionTo(0)
def onEPGLSelectionChanged(self):
self["NewDescription"].setText(" ")
cur = self["epglist"].getCurrent()
event = cur[0]
self["Event"].newEvent(event)
if cur is None:
self["key_green"].setText(" ")
return
else:
event = cur[0]
if event is None:
self["key_green"].setText(" ")
return
else:
if cur[1] is None or cur[1].getServiceName() == "":
self["key_green"].setText(" ")
return
serviceref = cur[1]
eventid = event.getEventId()
refstr = serviceref.ref.toString()
isRecordEvent = False
for timer in self.session.nav.RecordTimer.timer_list:
if timer.eit == eventid and timer.service_ref.ref.toString() == refstr:
isRecordEvent = True
break
if isRecordEvent:
self["key_green"].setText(_("Remove timer"))
elif not isRecordEvent:
self["key_green"].setText(_("Add timer"))
if event is None:
return
text = ""
short = event.getShortDescription()
ext = event.getExtendedDescription()
if short and short != text:
text += short
if ext:
if text:
text += ' -> '
text += ext
self["NewDescription"].setText(text)
def updateEventInfo(self):
if self.aktListBox==1:
cur = self.getCurrentSelection()
self["ServiceEvent"].newService(cur)
self.UpdateInfos()
def pressOK(self):
if self.aktListBox==1:
self.channelSelected()
if showPrimeTime:
self.togglePrimTime()
else:
self.showEPGList()
def showEPGList(self):
self.updateEPGlist = False
cprint(">>>> ValisEPG showEPGList")
cur = self["epglist"].getCurrent()
event = cur[0]
service = cur[1]
if event is not None:
from Screens.EventView import EventViewEPGSelect
self.session.open(EventViewEPGSelect, event, service, self.eventViewCallback, self.openSingleServiceEPG, InfoBar.instance.openMultiServiceEPG, InfoBar.instance.openSimilarList)
def openSingleServiceEPG(self):
self.savedService = self.getCurrentSelection()
self.session.openWithCallback(self.SingleServiceEPGClosed, impotedEPGSelection, self.getCurrentSelection(), serviceChangeCB=self.changeServiceCB)
def SingleServiceEPGClosed(self, ret=False):
self.setCurrentSelection(self.savedService)
def OpenSimiList(self, eventid, refstr):
self.session.open(impotedEPGSelection, refstr, None, eventid)
def eventViewCallback(self, setEvent, setService, val):
l = self["epglist"]
old = l.getCurrent()
if val == -1:
self["epglist"].moveUp()
elif val == +1:
self["epglist"].moveDown()
cur = l.getCurrent()
setService(cur[1])
setEvent(cur[0])
def OptionsMenu(self):
cur_service = ServiceReference(self.getCurrentSelection())
name = cur_service.getServiceName()
askList = []
#askList.append((_("Channel Selection")+" - "+_("Favourites"), "FAVO"))
askList.append((_("Channel Selection")+" - "+_("Providers"), "PROV"))
askList.append((_("Channel Selection")+" - "+_("Satellites"), "SAT"))
askList.append((_("Channel Selection")+" - "+_("All") +" "+_("Services"), "ALL"))
askList.append((_("Single EPG")+": "+name, "SINGLE"))
askList.append((_("Timer selection"), "TIMER"))
askList.append((_("Load")+" "+_("EPG")+" "+_("Automatic"), "REFRESH"))
self.session.openWithCallback(self.OptionsCallback, ChoiceBox, title=("Vali's EPG "+_("Advanced Options")), list = askList)
def OptionsCallback(self, choice):
choice = choice and choice[1]
if choice:
if choice=="PROV":
#self["key_blue"].setText(_("Providers"))
#self.RedBtnMode = choice
self.showProviders()
self.RedBtnMode = "FAVO"
elif choice=="SAT":
#self["key_blue"].setText(_("Satellites"))
#self.RedBtnMode = choice
self.showSatellites()
self.RedBtnMode = "FAVO"
elif choice=="ALL":
#self["key_blue"].setText(_("All"))
#self.RedBtnMode = choice
self.showAllServices()
self.RedBtnMode = "FAVO"
#elif choice=="FAVO":
# self["key_blue"].setText(_("Favourites"))
# #self.RedBtnMode = choice
# self.showFavourites()
# self.RedBtnMode = "FAVO"
elif choice=="TIMER":
from Screens.TimerEdit import TimerEditList
self.session.open(TimerEditList)
elif choice=="SINGLE":
ref=self.getCurrentSelection()
if ref:
self.savedService = ref
self.session.openWithCallback(self.SingleServiceEPGClosed, impotedEPGSelection, ref, serviceChangeCB = self.changeServiceCB)
elif choice=="REFRESH":
az = self.session.openWithCallback(self.clbAutoZap, ChoiceBox, title=(_("Load")+" "+_("EPG")+" "+_("Automatic")), list = [(_("Cancel"), "DUMMY")])
az.setTitle("Vali's EPG"+" "+_("Load"))
if az.instance.size().width()<1000:
az.instance.move(ePoint(50,70))
self.AZpos = self["list"].getCurrentIndex()
self.AutoZap.start(config.valisepg.autozap.value*1000)
def clbAutoZap(self, dummy):
self["list"].moveToIndex(self.AZpos)
self.zap()
self.AutoZap.stop()
def zapForRefresh(self):
self["list"].moveDown()
NewService = self.getCurrentSelection()
if (NewService.flags & 7) == 7:
self.enterPath(NewService)
elif not (NewService.flags & eServiceReference.isMarker):
self.zap()
def keyRedAction(self):
if self.RedBtnMode=="PROV":
self.showProviders()
elif self.RedBtnMode=="SAT":
self.showSatellites()
elif self.RedBtnMode=="ALL":
self.showAllServices()
elif self.RedBtnMode=="FAVO":
if not self.pathChangeDisabled:
self.preEnterPath(self.bouquet_rootstr) #pseudo-code to showFavourites every time
self.showFavourites()
def runEPGsearch(self):
if fileExists("/usr/lib/enigma2/python/Plugins/Extensions/EPGSearch/plugin.pyo"):
self.updateEPGlist = False
from Plugins.Extensions.EPGSearch.EPGSearch import EPGSearch
service = self.getCurrentSelection()
epg_cur = self["epglist"].getCurrent()
epg_event = epg_cur[0]
if epg_event:
epg_name = epg_event and epg_event.getEventName() or ''
self.session.open(EPGSearch, epg_name, False)
else:
self.session.open(MessageBox, _("A required tool (%s) was not found.") % ("EPGSearch"), MessageBox.TYPE_INFO)
def instantRecord(self):
pass
def AddConfirmedTimer(self):
self.updateEPGlist = False
ref=self.getCurrentSelection()
cur = self["epglist"].getCurrent()
event = cur[0]
if event is None:
return
serviceref = cur[1]
eventid = event.getEventId()
refstr = serviceref.ref.toString()
for timer in self.session.nav.RecordTimer.timer_list:
if timer.eit == eventid and timer.service_ref.ref.toString() == refstr:
cb_func = lambda ret : not ret or self.removeTimer(timer)
self.session.openWithCallback(cb_func, MessageBox, _("Do you really want to delete %s?") % event.getEventName())
break
else:
newEntry = RecordTimerEntry(serviceref, checkOldTimers = True, *parseEvent(event))
self.session.openWithCallback(self.finishedAdd, TimerEntry, newEntry)
def removeTimer(self, timer):
timer.afterEvent = AFTEREVENT.NONE
self.session.nav.RecordTimer.removeEntry(timer)
self["key_green"].setText(_("Add timer"))
def finishedAdd(self, answer):
if answer[0]:
entry = answer[1]
simulTimerList = self.session.nav.RecordTimer.record(entry)
if simulTimerList is not None:
for x in simulTimerList:
if x.setAutoincreaseEnd(entry):
self.session.nav.RecordTimer.timeChanged(x)
simulTimerList = self.session.nav.RecordTimer.record(entry)
if simulTimerList is not None:
self.session.openWithCallback(self.finishSanityCorrection, TimerSanityConflict, simulTimerList)
self["key_green"].setText(_("Remove timer"))
def finishSanityCorrection(self, answer):
self.finishedAdd(answer)
def getBqtServices(self, bouquet):
services = [ ]
servicelist = eServiceCenter.getInstance().list(bouquet)
if not servicelist is None:
while True:
service = servicelist.getNext()
if not service.valid():
break
if service.flags & (eServiceReference.isDirectory | eServiceReference.isMarker): #ignore non playable services
continue
services.append(ServiceReference(service))
return services
def showSinEPG(self):
ref=self.getCurrentSelection()
if ref:
self.savedService = ref
self.session.openWithCallback(self.SingleServiceEPGClosed, impotedEPGSelection, ref, serviceChangeCB = self.changeServiceCB)
def togglePrimTime(self):
global showPrimeTime
if showPrimeTime:
showPrimeTime = False
self["key_yellow"].setText(_("Today")+" "+str(config.valisepg.ptH.value)+":"+str("%0.2d" % config.valisepg.ptM.value))
else:
showPrimeTime = True
self["key_yellow"].setText(_("Now"))
def goPT(self):
if useChannelSelectionPlus:
self.togglePrimTime()
self["list"].l.refresh()
self["epglist"].fillSingleEPG(self.aktCurrentService)
self["epglist"].instance.moveSelectionTo(0)
return
self.updateEPGlist = False
bouquets = self.servicelist.getRoot()
newservices = self.getBqtServices(bouquets)
class EPGSelection(impotedEPGSelection):
def __init__(self, session, service=None, zapFunc=None, eventid=None, bouquetChangeCB=None, serviceChangeCB=None):
impotedEPGSelection.__init__(self, session, newservices, zapFunc, eventid, bouquetChangeCB, serviceChangeCB)
def onCreate(self):
if self.type == EPG_TYPE_MULTI:
heute = localtime(time())
ptheute = datetime(heute[0],heute[1],heute[2],heute[3],heute[4])
heute_time = int(mktime(ptheute.timetuple()))
pt = datetime(heute[0],heute[1],heute[2],config.valisepg.ptH.value,config.valisepg.ptM.value)
pt_ask_time = int(mktime(pt.timetuple()))
if pt_ask_time<heute_time:
pt_ask_time = pt_ask_time + 86400
self["key_red"].hide()
self["key_yellow"].hide()
self["key_blue"].hide()
self["now_text"].hide()
self["next_text"].hide()
self["more_text"].hide()
l = self["list"]
l.recalcEntrySize()
l.fillMultiEPG(self.services, pt_ask_time)
l.moveToService(self.session.nav.getCurrentlyPlayingServiceReference())
def zapTo(self):
pass
def yellowButtonPressed(self):
pass
def blueButtonPressed(self):
pass
def enterDateTime(self):
pass
#def prevBouquet(self):
#pass
#def nextService(self):
#pass
self.session.open(EPGSelection, newservices)
class ValisEPGconfig(ConfigListScreen, Screen):
if sz_w == 1920:
skin = """
<screen name="ValisEPGconfig" position="center,center" size="1030,450" title="Vali's EPG Setup">
<ePixmap pixmap="Default-FHD/skin_default/buttons/red.svg" position="20,10" size="320,70" />
<ePixmap pixmap="Default-FHD/skin_default/buttons/green.svg" position="355,10" size="320,70" />
<ePixmap pixmap="Default-FHD/skin_default/buttons/blue.svg" position="690,10" size="320,70" />
<eLabel backgroundColor="#9f1313" font="Regular;30" halign="center" position="20,10" foregroundColor="white" shadowColor="black" shadowOffset="-2,-2" size="320,70" text="Cancel" transparent="1" valign="center" zPosition="1" />
<eLabel backgroundColor="#1f771f" font="Regular;30" halign="center" position="355,10" foregroundColor="white" shadowColor="black" shadowOffset="-2,-2" size="320,70" text="Save" transparent="1" valign="center" zPosition="1" />
<eLabel backgroundColor="#1f771f" font="Regular;30" halign="center" position="690,10" foregroundColor="white" shadowColor="black" shadowOffset="-2,-2" size="320,70" text="About" transparent="1" valign="center" zPosition="1" />
<eLabel backgroundColor="grey" position="10,90" size="1010,1" />
<widget enableWrapAround="1" name="config" position="20,100" scrollbarMode="showOnDemand" size="990,340" />
</screen>"""
elif sz_w == 2560:
skin = """
<screen name="ValisEPGconfig" position="center,center" size="1640,580" title="Vali's EPG Setup">
<ePixmap pixmap="skin_default/buttons/red.png" position="20,10" size="520,100" />
<ePixmap pixmap="skin_default/buttons/green.png" position="560,10" size="520,100" />
<ePixmap pixmap="skin_default/buttons/blue.png" position="1100,10" size="520,100" />
<eLabel text="Cancel" position="20,10" size="520,100" zPosition="1" font="Regular;40" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-4,-4" />
<eLabel text="Save" position="560,10" size="520,100" zPosition="1" font="Regular;40" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-4,-4" />
<eLabel text="About" position="1100,10" size="520,100" zPosition="1" font="Regular;40" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-4,-4" />
<eLabel backgroundColor="grey" position="20,120" size="1600,2" />
<widget name="config" position="20,140" size="1600,420" enableWrapAround="1" scrollbarMode="showOnDemand" />
</screen>"""
else:
skin = """
<screen name="ValisEPGconfig" position="center,center" size="820,290" title="Vali's EPG Setup">
<ePixmap pixmap="skin_default/buttons/red.png" position="10,5" size="260,50"/>
<ePixmap pixmap="skin_default/buttons/green.png" position="280,5" size="260,50"/>
<ePixmap pixmap="skin_default/buttons/blue.png" position="550,5" size="260,50"/>
<eLabel text="Cancel" position="10,5" size="260,50" zPosition="1" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-2,-2" />
<eLabel text="Save" position="280,5" size="260,50" zPosition="1" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-2,-2" />
<eLabel text="About" position="550,5" size="260,50" zPosition="1" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-2,-2" />
<eLabel backgroundColor="grey" position="10,60" size="800,1" />
<widget name="config" position="10,70" size="800,210" enableWrapAround="1" scrollbarMode="showOnDemand"/>
</screen>"""
def __init__(self, session):
self.session = session
Screen.__init__(self, session)
self.onShown.append(self.setWindowTitle)
self.isVEPGactive = False
self.ConfigDreamboxPluginDetection()
list = []
list.append(getConfigListEntry(_("Channel Selection"), config.valisepg.channellist))
list.append(getConfigListEntry("Primetime"+" ["+_("hour")+"]", config.valisepg.ptH))
list.append(getConfigListEntry("Primetime"+" ["+_("minutes")+"]", config.valisepg.ptM))
list.append(getConfigListEntry(_("Load")+" "+_("EPG")+" "+_("Automatic")+" ["+_("seconds")+"]", config.valisepg.autozap))
if self.has_geminiqbutton:
list.append(getConfigListEntry(_("Bouquet")+" "+_("up"), config.valisepg.bouquetup))
if self.has_geminiqbutton:
list.append(getConfigListEntry(_("Bouquet")+" "+_("down"), config.valisepg.bouquetdown))
list.append(getConfigListEntry(_("Show")+" "+_("filling line"), config.valisepg.line))
ConfigListScreen.__init__(self, list)
self["actions"] = NumberActionMap(["OkCancelActions", "ColorActions"],
{
"red": self.exit,
"green": self.save,
"yellow": self.save,
"blue": self.about,
"cancel": self.exit
}, -1)
def setWindowTitle(self):
self.setTitle(valisepg_setup+" V"+valisepg_version)
def save(self):
servicelistchanged = config.valisepg.channellist.isChanged() == True
for x in self["config"].list:
x[1].save()
if servicelistchanged:
if config.valisepg.channellist.value == "valis":
InfoBar.instance.servicelist = InfoBar.instance.session.instantiateDialog(ValisEPG, zPosition=0)
else:
InfoBar.instance.servicelist = InfoBar.instance.session.instantiateDialog(ChannelSelection, zPosition=0)
self.close(servicelistchanged)
def exit(self):
for x in self["config"].list:
x[1].cancel()
self.close()
def about(self):
self.session.open(MessageBox, _("Vali's EPG")+" "+_("Plugin")+" "+_("Version")+" "+valisepg_version+"\n\n"+_("modded by SvenH aka Dreamy"), MessageBox.TYPE_INFO)
def ConfigDreamboxPluginDetection(self):
if path.exists("/usr/lib/enigma2/python/Plugins/GP4/geminiqbutton"):
self.has_geminiqbutton=False
else:
self.has_geminiqbutton=True
def extensionlonginfo(session,service=None, **kwargs):
cprint(">>>> Long Info Menu")
session.open(ValisEPG, zPosition=0)
def openValisEPG_ChannelContextMenu(session, service=None, **kwargs):
session.openWithCallback(boundFunction(ValisEPGconfig_Callback,session.current_dialog), ValisEPGconfig)
def ValisEPGconfig_Callback(ChannelContextMenu, retValue=None):
if retValue:
ChannelContextMenu.hide()
InfoBar.instance.openServiceList()
ChannelContextMenu.close(retValue)
def Plugins(**kwargs):
setup_name = _("ValisEPGsetup")
return [PluginDescriptor(name=setup_name, description = valisepg_setup, where=[ PluginDescriptor.WHERE_CHANNEL_CONTEXT_MENU ], fnc = openValisEPG_ChannelContextMenu),
PluginDescriptor(name=setup_name, description=valisepg_setup, where=PluginDescriptor.WHERE_MENU, fnc=main),
PluginDescriptor(name=_("Vali's EPG"), description=_("Vali's EPG"), where = PluginDescriptor.WHERE_EVENTINFO, fnc=extensionlonginfo)]
def main(menuid):
if menuid != "osd_video_audio":
return [ ]
return [(valisepg_setup, VEPGhandle, "valisepg", None)]
def VEPGhandle(session, **kwargs):
session.open(ValisEPGconfig)