from Screens.Screen import Screen
from Components.ActionMap import ActionMap
from Components.Label import Label
from Components.MenuList import MenuList
from Components.Pixmap import Pixmap
from Components.Sources.StaticText import StaticText
from enigma import eTimer, eActionMap

try:
	from Screens.MessageBox import MessageBox
	print "[PowerMetrixFHD] 022 -OK-- MessageBox"
except:
	print "[PowerMetrixFHD] 022 -NOK- MessageBox"

TYPE_YESNO = 0
TYPE_INFO = 1
TYPE_WARNING = 2
TYPE_ERROR = 3

#######################################################################################################################################################

def MessageBox__init__(self, session, text, type = TYPE_YESNO, timeout = -1, close_on_any_key = False, default = True, enable_input = True, msgBoxID = None, windowTitle = None, additionalActionMap=None, title = _("Message")):
	if not windowTitle:
		windowTitle = title
	Screen.__init__(self, session, windowTitle = windowTitle)

	self.type = type
	self.msgBoxID = msgBoxID

	self["title"] = Label(windowTitle)
	self["titleback"] = Label()
	self["titleborder"] = Pixmap()
	self["text"] = Label(text)
	self["textback"] = Label()
	self["textborder"] = Pixmap()
	self["Text"] = StaticText(text)
	self["selectedChoice"] = StaticText()

	self.text = text
	self.close_on_any_key = close_on_any_key
	self.tmr = eTimer()
	self.tmr_conn = self.tmr.timeout.connect(self.delayedAdditionalActionMapEnd)

	self["ErrorPixmap"] = Pixmap()
	self["QuestionPixmap"] = Pixmap()
	self["InfoPixmap"] = Pixmap()
	self["WarningPixmap"] = Pixmap()
	self.timerRunning = False
	self.initTimeout(timeout)

	self.list = []
	if type != self.TYPE_ERROR:
		self["ErrorPixmap"].hide()
	if type != self.TYPE_YESNO:
		self["QuestionPixmap"].hide()
	if type != self.TYPE_INFO:
		self["InfoPixmap"].hide()
	if type != self.TYPE_WARNING:
		self["WarningPixmap"].hide()

	if type == self.TYPE_YESNO:
		if default == True:
			self.list = [ (_("yes"), 0), (_("no"), 1) ]
		else:
			self.list = [ (_("no"), 1), (_("yes"), 0) ]

	if self.list:
		self["selectedChoice"].setText(self.list[0][0])
	self["list"] = MenuList(self.list)
	self["listback"] = Label()
	self["listborder"] = Pixmap()

	self.additionalActionMap = None
	if enable_input:
		if close_on_any_key:
			self.additionalActionMap = additionalActionMap
			self.onShow.append(self.connectHighPrioAction)
			self.onHide.append(self.disconnectHighPrioAction)
		else:
			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 MessageBoxstopTimer(self):
	if self.timerRunning:
		del self.timer
		self.onExecBegin.remove(self.startTimer)
		self.setTitle(self.origTitle)
		self["title"].setText(self.origTitle)
		self.timerRunning = False

#######################################################################################################################################################

def MessageBoxtimerTick(self):
	if self.execing:
		self.timeout -= 1
		if self.origTitle is None:
			self.origTitle = self.instance.getTitle()
		self.setTitle(self.origTitle + " (" + str(self.timeout) + ")")
		self["title"].setText(self.origTitle + " (" + str(self.timeout) + ")")
		if self.timeout == 0:
			self.timer.stop()
			self.timerRunning = False
			self.timeoutCallback()

#######################################################################################################################################################

def doMessageBoxChange():
	try:
		MessageBox.__init__ = MessageBox__init__
		MessageBox.stopTimer = MessageBoxstopTimer
		MessageBox.timerTick = MessageBoxtimerTick
		print "[PowerMetrixFHD] 022 -OK-- MessageBox"
	except:
		print "[PowerMetrixFHD] 022 -NOK- MessageBox"
