aboutsummaryrefslogtreecommitdiff
path: root/lib/python/Components/Pixmap.py
blob: 211b772c2be02edd02c9b348ea1b7c069e6f69f0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
from ConditionalWidget import *

from enigma import *

class Pixmap(Widget):
	def __init__(self):
		Widget.__init__(self)

	def getePixmap(self, parent):
		#pixmap = ePixmap(parent)
		#pixmap.setPixmapFromFile(self.filename)
		return ePixmap(parent)
	
	def createWidget(self, parent):
		return self.getePixmap(parent)

	def removeWidget(self, w):
		pass

class PixmapConditional(ConditionalWidget, Pixmap):
	def __init__(self, withTimer = True):
		ConditionalWidget.__init__(self)
		Pixmap.__init__(self)

class MovingPixmap(Pixmap):
	def __init__(self):
		Pixmap.__init__(self)
		
		self.moving = False
		
		# TODO: get real values
		self.x = 0.0
		self.y = 0.0
		
		self.clearPath()
		
		self.moveTimer = eTimer()
		self.moveTimer.timeout.get().append(self.doMove)
		
	def clearPath(self, repeated = False):
		if (self.moving):
			self.moving = False
			self.moveTimer.stop()
			
		self.path = []
		self.currDest = 0
		self.repeated = repeated
		
	def addMovePoint(self, x, y, time = 20):
		self.path.append((x, y, time))
	
	def moveTo(self, x, y, time = 20):
		self.clearPath()
		self.addMovePoint(x, y, time)
		
	def startMoving(self):
		if not self.moving:
			self.time = self.path[self.currDest][2]
			self.stepX = (self.path[self.currDest][0] - self.x) / float(self.time)
			self.stepY = (self.path[self.currDest][1] - self.y) / float(self.time)

			self.moving = True
			self.moveTimer.start(100)
			
	def stopMoving(self):
		self.moving = False
		self.moveTimer.stop()
		
	def doMove(self):
		self.x += self.stepX
		self.y += self.stepY
		self.time -= 1
		try:
			self.move(int(self.x), int(self.y))
		except: # moving not possible... widget not there any more... stop moving
			self.stopMoving()
			
		if (self.time == 0):
			self.currDest += 1
			self.moveTimer.stop()
			self.moving = False
			if (self.currDest >= len(self.path)): # end of path
				if (self.repeated):
					self.currDest = 0
					self.moving = False
					self.startMoving()
			else:
				self.moving = False
				self.startMoving()