2 from Screens.MessageBox import MessageBox
5 from enigma import eTimer
8 """Simple Plugin to automatically zap back to a Service after a given amount
11 def __init__(self, session, servicelist, cleanupfnc = None):
12 # Save Session&Servicelist
13 self.session = session
14 self.servicelist = servicelist
17 self.zap_timer = eTimer()
18 self.zap_timer.callback.append(self.zap)
21 self.zap_service = None
22 self.move_service = None
26 self.cleanupfnc = cleanupfnc
28 def showSelection(self):
29 # Check if timer is active
30 if self.zap_timer.isActive():
31 # Ask if we should stop the running timer
32 self.session.openWithCallback(
35 _("Timer already running.\nStop it?")
38 from Screens.ChoiceBox import ChoiceBox
41 self.session.openWithCallback(
44 _("When to Zap back?"),
47 ' '.join([str(x), _("minutes")]),
52 ( _("Custom"), 'custom')
56 def confirmStop(self, result):
62 self.zap_service = None
63 self.move_service = None
65 # Clean up if possible
69 def choiceCallback(self, result):
70 result = result and result[1]
71 if result == "custom":
72 from Screens.InputBox import InputBox
73 from Components.Input import Input
75 self.session.openWithCallback(
78 title=_("How many minutes to wait until zapping back?"),
83 elif result is not None:
84 self.confirmStart(result)
85 # Clean up if possible
89 def inputCallback(self, result):
90 if result is not None:
91 self.confirmStart(int(result))
92 # Clean up if possible
97 def confirmStart(self, duration):
98 # Remind the User of what he just did
101 _("Zapping back in %d Minutes") % (duration),
102 type = MessageBox.TYPE_INFO,
106 # Keep any service related information (zap_service might not equal move_service -> subservices)
107 self.zap_service = self.session.nav.getCurrentlyPlayingServiceReference()
108 self.move_service = self.servicelist.getCurrentSelection()
109 self.root = self.servicelist.getRoot()
111 #import ServiceReference
112 #print [str(ServiceReference.ServiceReference(x)) for x in self.servicelist.getCurrentServicePath()]
113 #print ServiceReference.ServiceReference(self.servicelist.getRoot())
116 self.zap_timer.startLongTimer(duration*60)
119 if self.zap_service is not None:
121 import ServiceReference
122 if not self.servicelist.preEnterPath(str(ServiceReference.ServiceReference(self.root))):
123 if self.servicelist.isBasePathEqual(self.root):
124 self.servicelist.pathUp()
125 self.servicelist.enterPath(self.root)
127 currentRoot = self.servicelist.getRoot()
128 if currentRoot is None or currentRoot != self.root:
129 self.servicelist.clearPath()
130 self.servicelist.enterPath(self.root)
132 if self.move_service:
133 self.servicelist.setCurrentSelection(self.move_service)
134 self.servicelist.zap()
136 # Play zap_service (won't rezap if service equals to move_service)
137 self.session.nav.playService(self.zap_service)
140 self.zap_service = None
141 self.move_service = None
144 # Clean up if possible
149 self.zap_timer.callback.remove(self.zap)
150 self.zap_timer = None