1 from Screen import Screen
2 from Components.Button import Button
3 from Components.EpgList import *
4 from Components.ActionMap import ActionMap
5 from Screens.EventView import EventView
6 from enigma import eServiceReference, eServiceEventPtr
7 from Screens.FixedMenu import FixedMenu
8 from RecordTimer import RecordTimerEntry, parseEvent
9 from TimerEdit import TimerEditList
10 from TimerEntry import TimerEntry
11 from ServiceReference import ServiceReference
12 from Components.config import config, currentConfigSelectionElement
14 import xml.dom.minidom
16 class EPGSelection(Screen):
17 def __init__(self, session, service):
18 Screen.__init__(self, session)
20 self["key_red"] = Button("")
21 self["key_green"] = Button(_("Add timer"))
23 if isinstance(service, eServiceReference):
24 self.type = EPG_TYPE_SINGLE
25 self["key_yellow"] = Button()
26 self["key_blue"] = Button()
27 self.currentService=ServiceReference(service)
29 self.type = EPG_TYPE_MULTI
30 self["key_yellow"] = Button(_("Prev"))
31 self["key_blue"] = Button(_("Next"))
32 self.services = service
34 self["list"] = EPGList(self.type)
36 class ChannelActionMap(ActionMap):
37 def action(self, contexts, action):
38 ActionMap.action(self, contexts, action)
40 self["actions"] = ChannelActionMap(["EPGSelectActions", "OkCancelActions"],
42 "cancel": self.closeScreen,
43 "ok": self.eventSelected,
44 "timerAdd": self.timerAdd,
45 "yellow": self.yellowButtonPressed,
46 "blue": self.blueButtonPressed,
47 "info": self.infoKeyPressed
49 self["actions"].csel = self
51 self.onLayoutFinish.append(self.onCreate)
53 def infoKeyPressed(self):
54 if currentConfigSelectionElement(config.usage.epgtoggle) == "yes":
59 def closeScreen(self):
63 #just used in multipeg
66 if self.type == EPG_TYPE_MULTI:
68 l.fillMultiEPG(self.services)
72 l.fillSingleEPG(self.currentService)
74 def eventViewCallback(self, setEvent, setService, val):
82 if self.type == EPG_TYPE_SINGLE:
85 if self.type == EPG_TYPE_MULTI and cur[0] is None and cur[1].ref != old[1].ref:
86 self.eventViewCallback(setEvent, setService, val)
91 def eventSelected(self):
92 if self.type == EPG_TYPE_SINGLE:
93 event = self["list"].getCurrent()
94 service = self.currentService
95 else: # EPG_TYPE_MULTI
96 cur = self["list"].getCurrent()
100 self.session.open(EventView, event, service, self.eventViewCallback)
102 def yellowButtonPressed(self):
103 if self.type == EPG_TYPE_MULTI:
104 self["list"].updateMultiEPG(-1)
106 def blueButtonPressed(self):
107 if self.type == EPG_TYPE_MULTI:
108 self["list"].updateMultiEPG(1)
111 if self.type == EPG_TYPE_SINGLE:
112 event = self["list"].getCurrent()
113 serviceref = self.currentService
115 cur = self["list"].getCurrent()
120 newEntry = RecordTimerEntry(serviceref, *parseEvent(event))
121 self.session.openWithCallback(self.timerEditFinished, TimerEntry, newEntry)
123 def timerEditFinished(self, answer):
125 self.session.nav.RecordTimer.record(answer[1])
127 print "Timeredit aborted"
130 self["list"].moveUp()
133 self["list"].moveDown()