+ if enable_input:
+ self["actions"] = ActionMap(["MsgBoxActions", "DirectionActions"],
+ {
+ "cancel": self.cancel,
+ "ok": self.ok,
+ "alwaysOK": self.alwaysOK,
+ "up": self.up,
+ "down": self.down,
+ "left": self.left,
+ "right": self.right,
+ "upRepeated": self.up,
+ "downRepeated": self.down,
+ "leftRepeated": self.left,
+ "rightRepeated": self.right
+ }, -1)
+
+ def initTimeout(self, timeout):
+ self.timeout = timeout
+ if timeout > 0:
+ self.timer = eTimer()
+ self.timer.callback.append(self.timerTick)
+ self.onExecBegin.append(self.startTimer)
+ self.origTitle = None
+ if self.execing:
+ self.timerTick()
+ else:
+ self.onShown.append(self.__onShown)
+ self.timerRunning = True
+ else:
+ self.timerRunning = False
+
+ def __onShown(self):
+ self.onShown.remove(self.__onShown)
+ self.timerTick()
+
+ def startTimer(self):
+ self.timer.start(1000)
+
+ def stopTimer(self):
+ if self.timerRunning:
+ del self.timer
+ self.onExecBegin.remove(self.startTimer)
+ self.setTitle(self.origTitle)
+ self.timerRunning = False
+
+ def timerTick(self):
+ if self.execing:
+ self.timeout -= 1
+ if self.origTitle is None:
+ self.origTitle = self.instance.getTitle()
+ self.setTitle(self.origTitle + " (" + str(self.timeout) + ")")
+ if self.timeout == 0:
+ self.timer.stop()
+ self.timerRunning = False
+ self.timeoutCallback()
+
+ def timeoutCallback(self):
+ print "Timeout!"
+ self.ok()