reload bouquets in python to enable the default bouquets
[enigma2.git] / lib / python / Screens / EpgSelection.py
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
13 import xml.dom.minidom
14
15 class EPGSelection(Screen):
16         def __init__(self, session, service):
17                 Screen.__init__(self, session)
18
19                 self["key_red"] = Button("")
20                 self["key_green"] = Button(_("Add timer"))
21
22                 if isinstance(service, eServiceReference):
23                         self.type = EPG_TYPE_SINGLE
24                         self["key_yellow"] = Button()
25                         self["key_blue"] = Button()
26                         self.currentService=ServiceReference(service)
27                 else:
28                         self.type = EPG_TYPE_MULTI
29                         self["key_yellow"] = Button(_("Prev"))
30                         self["key_blue"] = Button(_("Next"))
31                         self.services = service
32
33                 self["list"] = EPGList(self.type)
34
35                 class ChannelActionMap(ActionMap):
36                         def action(self, contexts, action):
37                                 ActionMap.action(self, contexts, action)
38
39                 self["actions"] = ChannelActionMap(["EPGSelectActions", "OkCancelActions"],
40                         {
41                                 "cancel": self.closeClose,
42                                 "ok": self.eventSelected,
43                                 "timerAdd": self.timerAdd,
44                                 "yellow": self.yellowButtonPressed,
45                                 "blue": self.blueButtonPressed,
46                                 "info": self.closeInfo
47                         })
48                 self["actions"].csel = self
49
50                 self.onLayoutFinish.append(self.onCreate)
51
52         def closeClose(self):
53                 self.close(False)
54                 
55         def closeInfo(self):
56                 self.close(True)
57
58         #just used in multipeg
59         def onCreate(self):
60                 l = self["list"]
61                 if self.type == EPG_TYPE_MULTI:
62                         l.recalcEntrySize()
63                         l.fillMultiEPG(self.services)
64                 else:
65                         if SINGLE_CPP == 0:
66                                 l.recalcEntrySize()
67                         l.fillSingleEPG(self.currentService)
68
69         def eventViewCallback(self, setEvent, setService, val):
70                 l = self["list"]
71                 old = l.getCurrent()
72                 if val == -1:
73                         self.moveUp()
74                 elif val == +1:
75                         self.moveDown()
76                 cur = l.getCurrent()
77                 if self.type == EPG_TYPE_SINGLE:
78                         setEvent(cur)
79                 else:
80                         if self.type == EPG_TYPE_MULTI and cur[0] is None and cur[1].ref != old[1].ref:
81                                 self.eventViewCallback(setEvent, setService, val)
82                         else:
83                                 setEvent(cur[0])
84                                 setService(cur[1])
85
86         def eventSelected(self):
87                 if self.type == EPG_TYPE_SINGLE:
88                         event = self["list"].getCurrent()
89                         service = self.currentService
90                 else: # EPG_TYPE_MULTI
91                         cur = self["list"].getCurrent()
92                         event = cur[0]
93                         service = cur[1]
94                 if event is not None:
95                         self.session.open(EventView, event, service, self.eventViewCallback)
96
97         def yellowButtonPressed(self):
98                 if self.type == EPG_TYPE_MULTI:
99                         self["list"].updateMultiEPG(-1)
100
101         def blueButtonPressed(self):
102                 if self.type == EPG_TYPE_MULTI:
103                         self["list"].updateMultiEPG(1)
104
105         def timerAdd(self):
106                 if self.type == EPG_TYPE_SINGLE:
107                         event = self["list"].getCurrent()
108                         serviceref = self.currentService
109                 else:
110                         cur = self["list"].getCurrent()
111                         event = cur[0]
112                         serviceref = cur[1]
113                 if event is None:
114                         return
115                 newEntry = RecordTimerEntry(serviceref, *parseEvent(event))
116                 self.session.openWithCallback(self.timerEditFinished, TimerEntry, newEntry)
117
118         def timerEditFinished(self, answer):
119                 if (answer[0]):
120                         self.session.nav.RecordTimer.record(answer[1])
121                 else:
122                         print "Timeredit aborted"       
123
124         def moveUp(self):
125                 self["list"].moveUp()
126
127         def moveDown(self):
128                 self["list"].moveDown()