aboutsummaryrefslogtreecommitdiff
path: root/lib/python/Screens/PictureInPicture.py
blob: ce959209733c87de0c160b50d89eff5f83109fd5 (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
from Screens.Screen import Screen
from enigma import ePoint, eSize, eServiceCenter
from Components.VideoWindow import VideoWindow
from Components.config import config, ConfigPosition

class PictureInPicture(Screen):
	def __init__(self, session):
		Screen.__init__(self, session)
		self["video"] = VideoWindow()
		self.currentService = None
		config.av.pip = ConfigPosition(default=[-1, -1, -1, -1], limits = (719, 567, 720, 568))
		self.onLayoutFinish.append(self.LayoutFinished)

	def LayoutFinished(self):
		self.onLayoutFinish.remove(self.LayoutFinished)
		x = config.av.pip.value[0]
		y = config.av.pip.value[1]
		w = config.av.pip.value[2]
		h = config.av.pip.value[3]
		if x != -1 and y != -1 and w != -1 and h != -1:
			self.move(x, y)
			self.resize(w, h)

	def move(self, x, y):
		config.av.pip.value[0] = x
		config.av.pip.value[1] = y
		config.av.pip.save()
		self.instance.move(ePoint(x, y))
		
	def resize(self, w, h):
		config.av.pip.value[2] = w
		config.av.pip.value[3] = h
		config.av.pip.save()
		self.instance.resize(eSize(*(w, h)))
		self["video"].instance.resize(eSize(*(w, h)))
		
	def getPosition(self):
		return ((self.instance.position().x(), self.instance.position().y()))
		
	def getSize(self):
		return (self.instance.size().width(), self.instance.size().height())
		
	def playService(self, service):
		self.pipservice = eServiceCenter.getInstance().play(service)
		if self.pipservice and not self.pipservice.setTarget(1):
			self.pipservice.start()
			self.currentService = service
			return True
		else:
			self.pipservice = None
			return False
		
	def getCurrentService(self):
		return self.currentService