3 ServiceEventTracker.setActiveInfoBar(self)
4 self.onClose.append(self.__close)
7 ServiceEventTracker.popActiveInfoBar()
9 class ServiceEventTracker:
10 """Tracks service events into a screen"""
14 def __init__(self, screen, eventmap):
15 self.__eventmap = eventmap
17 screen.session.nav.event.append(self.__event)
18 screen.onClose.append(self.__del_event)
20 def __del_event(self):
21 self.screen.session.nav.event.remove(self.__event)
23 def __event(self, ev):
24 set = ServiceEventTracker
25 ssize = set.InfoBarStackSize
26 stack = set.InfoBarStack
27 if ev in self.__eventmap:
28 if not isinstance(self.screen, InfoBarBase) or (ssize and stack[ssize-1] == self.screen):
31 # print "ignore event", ev, "for inactive infobar '" + str(self.screen) + "'"
34 def setActiveInfoBar(infobar):
35 set = ServiceEventTracker
36 assert infobar not in set.InfoBarStack, "FATAL: Infobar '" + str(infobar) + "' is already active!"
37 set.InfoBarStack.append(infobar)
38 set.InfoBarStackSize += 1
39 # print "ServiceEventTracker set active '" + str(infobar) + "'"
42 def popActiveInfoBar():
43 set = ServiceEventTracker
44 stack = set.InfoBarStack
45 if set.InfoBarStackSize:
46 set.InfoBarStackSize -= 1
47 del stack[set.InfoBarStackSize]
48 # if set.InfoBarStackSize:
49 # print "ServiceEventTracker reset active '" + str(stack[set.InfoBarStackSize-1]) + "'"