0ad18d05016a54585d5bc830b2215d8035b02a63
[vuplus_dvbapp] / lib / python / Plugins / SystemPlugins / UIPositionSetup / plugin.py
1 from Screens.Screen import Screen
2 from Components.ConfigList import ConfigListScreen
3 from Components.config import config, getConfigListEntry, ConfigSubsection, ConfigSelection, ConfigInteger, ConfigSlider
4 from Components.ActionMap import ActionMap
5 from Screens.MessageBox import MessageBox
6 from Components.Sources.StaticText import StaticText
7 from Plugins.Plugin import PluginDescriptor
8 from Tools.Directories import fileExists
9 from enigma import eTimer
10 from Plugins.Plugin import PluginDescriptor
11
12 config.plugins.UIPositionSetup = ConfigSubsection()
13 config.plugins.UIPositionSetup.dst_left = ConfigInteger(default = 0)
14 config.plugins.UIPositionSetup.dst_width = ConfigInteger(default = 720)
15 config.plugins.UIPositionSetup.dst_top = ConfigInteger(default = 0)
16 config.plugins.UIPositionSetup.dst_height = ConfigInteger(default = 576)
17
18 class UIPositionSetupInit:
19         def __init__(self):
20                 self.setPosition(int(config.plugins.UIPositionSetup.dst_left.value), int(config.plugins.UIPositionSetup.dst_width.value), int(config.plugins.UIPositionSetup.dst_top.value), int(config.plugins.UIPositionSetup.dst_height.value))
21
22         def setPosition(self,dst_left, dst_width, dst_top, dst_height):
23                 if dst_left + dst_width > 720:
24                         dst_width = 720 - dst_left
25                 if dst_top + dst_height > 576:
26                         dst_height = 576 - dst_top
27                 print "[UIPositionSetup] write dst_left : ",dst_left
28                 print "[UIPositionSetup] write dst_width : ",dst_width
29                 print "[UIPositionSetup] write dst_top : ",dst_top
30                 print "[UIPositionSetup] write dst_height : ",dst_height
31                 try:
32                         file = open("/proc/stb/fb/dst_left", "w")
33                         file.write('%X' % dst_left)
34                         file.close()
35                         file = open("/proc/stb/fb/dst_width", "w")
36                         file.write('%X' % dst_width)
37                         file.close()
38                         file = open("/proc/stb/fb/dst_top", "w")
39                         file.write('%X' % dst_top)
40                         file.close()
41                         file = open("/proc/stb/fb/dst_height", "w")
42                         file.write('%X' % dst_height)
43                         file.close()
44                 except:
45                         return
46
47 uipositionsetupinit = UIPositionSetupInit()
48
49 class UIPositionSetup(Screen, ConfigListScreen, UIPositionSetupInit):
50         def __init__(self,session):
51                 size_w = session.desktop.size().width()
52                 size_h = session.desktop.size().height()
53                 xpos = (size_w-500)/2
54                 ypos = (size_h-300)/2
55                 self.skin=""
56                 self.skin += "<screen position=\"0,0\" size=\"" + str(size_w) + "," + str(size_h) + "\" title=\"Screen Position Setup\" backgroundColor=\"#27d8dee2\">"
57                 self.skin += "<ePixmap pixmap=\"Vu_HD/buttons/red.png\" position=\""+str(xpos+10) + "," + str(ypos+10) + "\" size=\"25,25\" alphatest=\"on\" />"
58                 self.skin += "<ePixmap pixmap=\"Vu_HD/buttons/green.png\" position=\""+str(xpos+290) + "," + str(ypos+10) + "\" size=\"25,25\" alphatest=\"on\" />"
59                 self.skin += "<widget source=\"key_red\" render=\"Label\" position=\""+str(xpos+40) + "," + str(ypos+10) + "\" zPosition=\"1\" size=\"140,25\" font=\"Regular;20\" halign=\"center\" valign=\"center\" foregroundColor=\"#1c1c1c\" transparent=\"1\" />"
60                 self.skin += "<widget source=\"key_green\" render=\"Label\" position=\""+str(xpos+320) + "," + str(ypos+10) + "\" zPosition=\"1\" size=\"140,25\" font=\"Regular;20\" halign=\"center\" valign=\"center\" foregroundColor=\"#1c1c1c\" transparent=\"1\" />"
61                 self.skin += "<widget name=\"config\" zPosition=\"2\" position=\""+str(xpos+5) + "," + str(ypos+50) + "\" size=\"550,200\" scrollbarMode=\"showOnDemand\" foregroundColor=\"#1c1c1c\" transparent=\"1\" />"
62                 self.skin += "</screen>"
63
64                 Screen.__init__(self,session)
65                 self.session = session
66                 self["shortcuts"] = ActionMap(["ShortcutActions", "SetupActions" ],
67                 {
68                         "ok": self.keyOk,
69                         "cancel": self.keyCancel,
70                         "red": self.keyCancel,
71                         "green": self.keyOk,
72                 }, -2)
73                 self.list = []
74                 ConfigListScreen.__init__(self, self.list,session = self.session)
75                 self["key_red"] = StaticText(_("Cancel"))
76                 self["key_green"] = StaticText(_("Save"))
77                 self["current"] = StaticText(_(" "))
78                 self.createSetup()
79
80         def createSetup(self):
81                 self.list = []
82
83                 left = config.plugins.UIPositionSetup.dst_left.value
84                 width = config.plugins.UIPositionSetup.dst_width.value
85                 top = config.plugins.UIPositionSetup.dst_top.value
86                 height = config.plugins.UIPositionSetup.dst_height.value
87
88                 self.dst_left = ConfigSlider(default = left, increment = 5, limits = (0, 720))
89                 self.dst_width = ConfigSlider(default = width, increment = 5, limits = (0, 720))
90                 self.dst_top = ConfigSlider(default = top, increment = 5, limits = (0, 576))
91                 self.dst_height = ConfigSlider(default = height, increment = 5, limits = (0, 576))
92
93                 self.list.append(getConfigListEntry(_("left"), self.dst_left))
94                 self.list.append(getConfigListEntry(_("width"), self.dst_width))
95                 self.list.append(getConfigListEntry(_("top"), self.dst_top))
96                 self.list.append(getConfigListEntry(_("height"), self.dst_height))
97
98                 self["config"].list = self.list
99                 self["config"].l.setList(self.list)
100
101         def keyLeft(self):
102                 ConfigListScreen.keyLeft(self)
103                 self.setPosition(int(self.dst_left.value), int(self.dst_width.value), int(self.dst_top.value), int(self.dst_height.value))
104
105         def keyRight(self):
106                 ConfigListScreen.keyRight(self)
107                 self.setPosition(int(self.dst_left.value), int(self.dst_width.value), int(self.dst_top.value), int(self.dst_height.value))
108
109         def keyOk(self):
110                 config.plugins.UIPositionSetup.dst_left.value = self.dst_left.value
111                 config.plugins.UIPositionSetup.dst_width.value = self.dst_width.value
112                 config.plugins.UIPositionSetup.dst_top.value = self.dst_top.value
113                 config.plugins.UIPositionSetup.dst_height.value = self.dst_height.value
114                 config.plugins.UIPositionSetup.save()
115                 self.close()
116
117         def keyCancel(self):
118                 if self["config"].isChanged():
119                         self.session.openWithCallback(self.cancelConfirm, MessageBox, _("Really close without saving settings?"))
120                 else:
121                         self.close()
122
123         def cancelConfirm(self,ret):
124                 if ret:
125                         self.setPosition(int(config.plugins.UIPositionSetup.dst_left.value), int(config.plugins.UIPositionSetup.dst_width.value), int(config.plugins.UIPositionSetup.dst_top.value), int(config.plugins.UIPositionSetup.dst_height.value))
126                         self.close()
127
128 def main(session, **kwargs):
129         session.open(UIPositionSetup)
130
131 def Plugins(**kwargs):
132         if fileExists("/proc/stb/fb/dst_left"):
133                 return [PluginDescriptor(name = "UI position setup", description = "Adjust screen position", where = PluginDescriptor.WHERE_PLUGINMENU, fnc = main)]
134         return []
135