UIPositionSetup : Add new plugin
[vuplus_dvbapp] / lib / python / Plugins / SystemPlugins / OSD3DSetup / plugin.py
1 from Screens.Screen import Screen
2 from Components.ConfigList import ConfigListScreen
3 from Components.config import config, ConfigSubsection, ConfigInteger, ConfigSelection, ConfigSlider, getConfigListEntry
4 from Components.Sources.StaticText import StaticText
5
6 modelist = {"off": _("Off"), "auto": _("Auto"), "sidebyside": _("Side by Side"), "topandbottom": _("Top and Bottom")}
7 setmodelist = {"mode1": _("Mode 1"), "mode2": _("Mode 2")}
8
9 config.plugins.OSD3DSetup = ConfigSubsection()
10 config.plugins.OSD3DSetup.mode = ConfigSelection(choices = modelist, default = "auto")
11 config.plugins.OSD3DSetup.znorm = ConfigInteger(default = 0)
12 config.plugins.OSD3DSetup.setmode = ConfigSelection(choices = setmodelist, default = "mode1")
13
14 class OSD3DSetupScreen(Screen, ConfigListScreen):
15         skin = """
16                 <screen position="center,center" size="560,300" title="OSD 3D setup" >
17                         <ePixmap pixmap="Vu_HD/buttons/red.png" position="10,10" size="25,25" alphatest="on" />
18                         <ePixmap pixmap="Vu_HD/buttons/green.png" position="290,10" size="25,25" alphatest="on" />
19                         <widget source="key_red" render="Label" position="40,10" zPosition="1" size="140,25" font="Regular;20" halign="center" valign="center" transparent="1" />
20                         <widget source="key_green" render="Label" position="320,10" zPosition="1" size="140,25" font="Regular;20" halign="center" valign="center" transparent="1" />
21                         <widget name="config" zPosition="2" position="5,50" size="550,200" scrollbarMode="showOnDemand" transparent="1" />
22                 </screen>"""
23
24         def __init__(self, session):
25                 self.skin = OSD3DSetupScreen.skin
26                 Screen.__init__(self, session)
27
28                 from Components.ActionMap import ActionMap
29                 from Components.Button import Button
30                 self["key_red"] = StaticText(_("Cancel"))
31                 self["key_green"] = StaticText(_("Save"))
32
33                 self["actions"] = ActionMap(["SetupActions", "ColorActions"],
34                 {
35                         "ok": self.keyGo,
36                         "save": self.keyGo,
37                         "cancel": self.keyCancel,
38                         "green": self.keyGo,
39                         "red": self.keyCancel,
40                 }, -2)
41
42                 self.list = []
43                 ConfigListScreen.__init__(self, self.list, session = self.session)
44
45                 mode = config.plugins.OSD3DSetup.mode.value
46                 znorm = config.plugins.OSD3DSetup.znorm.value
47                 setmode = config.plugins.OSD3DSetup.setmode.value
48
49                 self.mode = ConfigSelection(choices = modelist, default = mode)
50                 self.znorm = ConfigSlider(default = znorm + 50, increment = 1, limits = (0, 100))
51                 self.setmode = ConfigSelection(choices = setmodelist, default = setmode)
52                 self.list.append(getConfigListEntry(_("Setup mode"), self.setmode))
53                 self.list.append(getConfigListEntry(_("3d mode"), self.mode))
54                 self.list.append(getConfigListEntry(_("Depth"), self.znorm))
55                 self["config"].list = self.list
56                 self["config"].l.setList(self.list)
57
58         def keyLeft(self):
59                 ConfigListScreen.keyLeft(self)
60                 self.setPreviewSettings()
61
62         def keyRight(self):
63                 ConfigListScreen.keyRight(self)
64                 self.setPreviewSettings()
65
66         def setPreviewSettings(self):
67                 applySettings(self.mode.value, int(self.znorm.value) - 50, self.setmode.value)
68
69         def keyGo(self):
70                 config.plugins.OSD3DSetup.mode.value = self.mode.value
71                 config.plugins.OSD3DSetup.znorm.value = int(self.znorm.value) - 50
72                 config.plugins.OSD3DSetup.setmode.value = self.setmode.value
73                 config.plugins.OSD3DSetup.save()
74                 self.close()
75
76         def keyCancel(self):
77                 setConfiguredSettings()
78                 self.close()
79
80 def applySettings(mode, znorm, setmode):
81         try:
82                 if setmode == "mode1":
83                         file = open("/proc/stb/fb/3dmode", "w")
84                         file.write(mode)
85                         file.close()
86                         file = open("/proc/stb/fb/znorm", "w")
87                         file.write('%d' % znorm)
88                         file.close()
89                 elif setmode == "mode2":
90                         file = open("/proc/stb/fb/primary/3d","w")
91                         if mode == "sidebyside" :
92                                 mode = "sbs"
93                         elif mode == "topandbottom":
94                                 mode = "tab"
95                         file.write(mode)
96                         file.close()
97                         file = open("/proc/stb/fb/primary/zoffset","w")
98                         file.write('%d' % znorm)
99                         file.close()
100         except:
101                 return
102
103 def setConfiguredSettings():
104         applySettings(config.plugins.OSD3DSetup.mode.value, 
105                 int(config.plugins.OSD3DSetup.znorm.value), config.plugins.OSD3DSetup.setmode.value)
106
107 def main(session, **kwargs):
108         session.open(OSD3DSetupScreen)
109
110 def startup(reason, **kwargs):
111         setConfiguredSettings()
112
113 def Plugins(**kwargs):
114         from os import path
115         if path.exists("/proc/stb/fb/3dmode") or path.exists("/proc/stb/fb/primary/3d"):
116                 from Plugins.Plugin import PluginDescriptor
117                 return [PluginDescriptor(name = "OSD 3D setup", description = _("Adjust 3D settings"), where = PluginDescriptor.WHERE_PLUGINMENU, fnc = main),
118                                         PluginDescriptor(name = "OSD 3D setup", description = "", where = PluginDescriptor.WHERE_SESSIONSTART, fnc = startup)]
119         return []