import runtime
import uiconfig
import widget
import utils
import status

class Cursor(widget.Widget):
	def __init__(self, edit):
		widget.Widget.__init__(self)

		self._edit = edit
		self._rect = runtime.evas.rectangle()
		self._rect.layer_set(99)
		self._rect.color = uiconfig.cursor_color
		self._blink_tag = None
		self._blink_show = True
		self._update_tag = None

	def free(self):
		widget.Widget.free(self)

		self._blink_tag = None
		self._update_tag = None

		self._edit = None
		self._rect.free()
		self._rect = None

	def queue_update(self):
		def update():
			x,y,height = self._edit.cursor_pos_height()
			width = 2

			self._rect.pos = x,y
			self._rect.size = width, height

			self.move(x,y)
			self._rect.show()
			runtime.evas.render()

			self._update_tag = None
			return False

		if not self.hidden:
			update()

	def blink_cb(self):

		if status.slideshow_running == True:
			self._rect.hide()
			return True
		self._blink_show = not self._blink_show
		if self._blink_show:
			self._rect.show()
		else:
			self._rect.hide()
#Roxia Begin smyook 06.06.19
		runtime.evas.render_now()
#Roxia End smyook
		return True

	def show(self):
		widget.Widget.show(self)
		self._blink_tag = utils.Timer(500, self.blink_cb)
		self.queue_update()

	def hide(self):
		widget.Widget.hide(self)
		self._rect.hide()
		self._blink_tag = None
		self._update_tag = None

	def move(self, x, y):
		self._rect.move(x,y)
