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
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)
18 class UIPositionSetupInit:
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))
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
32 file = open("/proc/stb/fb/dst_left", "w")
33 file.write('%X' % dst_left)
35 file = open("/proc/stb/fb/dst_width", "w")
36 file.write('%X' % dst_width)
38 file = open("/proc/stb/fb/dst_top", "w")
39 file.write('%X' % dst_top)
41 file = open("/proc/stb/fb/dst_height", "w")
42 file.write('%X' % dst_height)
47 uipositionsetupinit = UIPositionSetupInit()
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()
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>"
64 Screen.__init__(self,session)
65 self.session = session
66 self["shortcuts"] = ActionMap(["ShortcutActions", "SetupActions" ],
69 "cancel": self.keyCancel,
70 "red": self.keyCancel,
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(_(" "))
80 def createSetup(self):
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
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))
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))
98 self["config"].list = self.list
99 self["config"].l.setList(self.list)
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))
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))
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()
118 if self["config"].isChanged():
119 self.session.openWithCallback(self.cancelConfirm, MessageBox, _("Really close without saving settings?"))
123 def cancelConfirm(self,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))
128 def main(session, **kwargs):
129 session.open(UIPositionSetup)
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)]