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