b5762529f332a541893bae3f3e0a401a420bf2bc
[enigma2.git] / lib / python / Plugins / SystemPlugins / TempFanControl / plugin.py
1 from Components.ActionMap import ActionMap
2 from Components.Sensors import sensors
3 from Components.Sources.Sensor import SensorSource
4 from Components.Sources.StaticText import StaticText
5 from Components.ConfigList import ConfigListScreen
6 from Components.config import getConfigListEntry
7
8 from Screens.Screen import Screen
9
10 from Plugins.Plugin import PluginDescriptor
11 from Components.FanControl import fancontrol
12
13 class TempFanControl(Screen, ConfigListScreen):
14         skin = """
15                 <screen position="100,100" size="550,400" title="Fan Control" >
16                         <!--widget name="text" position="0,0" size="550,400" font="Regular;15" /-->
17                         
18                         <widget source="SensorTempText0" render="Label" position="10,150" zPosition="1" size="90,40" font="Regular;20" halign="left" valign="top" backgroundColor="#9f1313" transparent="1" />
19                         <widget source="SensorTemp0" render="Label" position="100,150" zPosition="1" size="100,20" font="Regular;19" halign="right">
20                                 <convert type="SensorToText"></convert>
21                         </widget>
22                         <widget source="SensorTempText1" render="Label" position="10,170" zPosition="1" size="90,40" font="Regular;20" halign="left" valign="top" backgroundColor="#9f1313" transparent="1" />
23                         <widget source="SensorTemp1" render="Label" position="100,170" zPosition="1" size="100,20" font="Regular;19" halign="right">
24                                 <convert type="SensorToText"></convert>
25                         </widget>
26                         <widget source="SensorTempText2" render="Label" position="10,190" zPosition="1" size="90,40" font="Regular;20" halign="left" valign="top" backgroundColor="#9f1313" transparent="1" />
27                         <widget source="SensorTemp2" render="Label" position="100,190" zPosition="1" size="100,20" font="Regular;19" halign="right">
28                                 <convert type="SensorToText"></convert>
29                         </widget>
30                         <widget source="SensorTempText3" render="Label" position="10,210" zPosition="1" size="90,40" font="Regular;20" halign="left" valign="top" backgroundColor="#9f1313" transparent="1" />
31                         <widget source="SensorTemp3" render="Label" position="100,210" zPosition="1" size="100,20" font="Regular;19" halign="right">
32                                 <convert type="SensorToText"></convert>
33                         </widget>
34                         <widget source="SensorTempText4" render="Label" position="10,230" zPosition="1" size="90,40" font="Regular;20" halign="left" valign="top" backgroundColor="#9f1313" transparent="1" />
35                         <widget source="SensorTemp4" render="Label" position="100,230" zPosition="1" size="100,20" font="Regular;19" halign="right">
36                                 <convert type="SensorToText"></convert>
37                         </widget>
38                         <widget source="SensorTempText5" render="Label" position="10,250" zPosition="1" size="90,40" font="Regular;20" halign="left" valign="top" backgroundColor="#9f1313" transparent="1" />
39                         <widget source="SensorTemp5" render="Label" position="100,250" zPosition="1" size="100,20" font="Regular;19" halign="right">
40                                 <convert type="SensorToText"></convert>
41                         </widget>
42                         <widget source="SensorTempText6" render="Label" position="10,270" zPosition="1" size="90,40" font="Regular;20" halign="left" valign="top" backgroundColor="#9f1313" transparent="1" />
43                         <widget source="SensorTemp6" render="Label" position="100,270" zPosition="1" size="100,20" font="Regular;19" halign="right">
44                                 <convert type="SensorToText"></convert>
45                         </widget>
46                         <widget source="SensorTempText7" render="Label" position="10,290" zPosition="1" size="90,40" font="Regular;20" halign="left" valign="top" backgroundColor="#9f1313" transparent="1" />
47                         <widget source="SensorTemp7" render="Label" position="100,290" zPosition="1" size="100,20" font="Regular;19" halign="right">
48                                 <convert type="SensorToText"></convert>
49                         </widget>
50                         
51                         <widget source="SensorFanText0" render="Label" position="290,150" zPosition="1" size="90,40" font="Regular;20" halign="left" valign="top" backgroundColor="#9f1313" transparent="1" />
52                         <widget source="SensorFan0" render="Label" position="380,150" zPosition="1" size="150,20" font="Regular;19" halign="right">
53                                 <convert type="SensorToText"></convert>
54                         </widget>
55                         <widget source="SensorFanText1" render="Label" position="290,170" zPosition="1" size="90,40" font="Regular;20" halign="left" valign="top" backgroundColor="#9f1313" transparent="1" />
56                         <widget source="SensorFan1" render="Label" position="380,170" zPosition="1" size="150,20" font="Regular;19" halign="right">
57                                 <convert type="SensorToText"></convert>
58                         </widget>
59                         <widget source="SensorFanText2" render="Label" position="290,190" zPosition="1" size="90,40" font="Regular;20" halign="left" valign="top" backgroundColor="#9f1313" transparent="1" />
60                         <widget source="SensorFan2" render="Label" position="380,190" zPosition="1" size="150,20" font="Regular;19" halign="right">
61                                 <convert type="SensorToText"></convert>
62                         </widget>
63                         <widget source="SensorFanText3" render="Label" position="290,210" zPosition="1" size="90,40" font="Regular;20" halign="left" valign="top" backgroundColor="#9f1313" transparent="1" />
64                         <widget source="SensorFan3" render="Label" position="380,210" zPosition="1" size="150,20" font="Regular;19" halign="right">
65                                 <convert type="SensorToText"></convert>
66                         </widget>
67                         <widget source="SensorFanText4" render="Label" position="290,230" zPosition="1" size="90,40" font="Regular;20" halign="left" valign="top" backgroundColor="#9f1313" transparent="1" />
68                         <widget source="SensorFan4" render="Label" position="380,230" zPosition="1" size="150,20" font="Regular;19" halign="right">
69                                 <convert type="SensorToText"></convert>
70                         </widget>
71                         <widget source="SensorFanText5" render="Label" position="290,250" zPosition="1" size="90,40" font="Regular;20" halign="left" valign="top" backgroundColor="#9f1313" transparent="1" />
72                         <widget source="SensorFan5" render="Label" position="380,250" zPosition="1" size="150,20" font="Regular;19" halign="right">
73                                 <convert type="SensorToText"></convert>
74                         </widget>
75                         <widget source="SensorFanText6" render="Label" position="290,270" zPosition="1" size="90,40" font="Regular;20" halign="left" valign="top" backgroundColor="#9f1313" transparent="1" />
76                         <widget source="SensorFan6" render="Label" position="380,270" zPosition="1" size="150,20" font="Regular;19" halign="right">
77                                 <convert type="SensorToText"></convert>
78                         </widget>
79                         <widget source="SensorFanText7" render="Label" position="290,290" zPosition="1" size="90,40" font="Regular;20" halign="left" valign="top" backgroundColor="#9f1313" transparent="1" />
80                         <widget source="SensorFan7" render="Label" position="380,290" zPosition="1" size="150,20" font="Regular;19" halign="right">
81                                 <convert type="SensorToText"></convert>
82                         </widget>
83                         <widget name="config" position="10,10" size="500,225" scrollbarMode="showOnDemand" />
84                 </screen>"""
85         
86         def __init__(self, session, args = None):
87                 Screen.__init__(self, session)
88                 
89                 templist = sensors.getSensorsList(sensors.TYPE_TEMPERATURE)
90                 tempcount = len(templist)
91                 fanlist = sensors.getSensorsList(sensors.TYPE_FAN_RPM)
92                 fancount = len(fanlist)
93                 
94                 for count in range(8):
95                         if count < tempcount:
96                                 id = templist[count]
97                                 self["SensorTempText%d" % count] = StaticText(sensors.getSensorName(id))                
98                                 self["SensorTemp%d" % count] = SensorSource(sensorid = id)
99                         else:
100                                 self["SensorTempText%d" % count] = StaticText("")
101                                 self["SensorTemp%d" % count] = SensorSource()
102                                 
103                         if count < fancount:
104                                 id = fanlist[count]
105                                 self["SensorFanText%d" % count] = StaticText(sensors.getSensorName(id))         
106                                 self["SensorFan%d" % count] = SensorSource(sensorid = id)
107                         else:
108                                 self["SensorFanText%d" % count] = StaticText("")
109                                 self["SensorFan%d" % count] = SensorSource()
110                 
111                 self.list = []
112                 for count in range(fancontrol.getFanCount()):
113                         self.list.append(getConfigListEntry(_("Fan %d Voltage") % (count + 1), fancontrol.getConfig(count).vlt))
114                         self.list.append(getConfigListEntry(_("Fan %d PWM") % (count + 1), fancontrol.getConfig(count).pwm))
115                 ConfigListScreen.__init__(self, self.list, session = self.session)
116                 #self["config"].list = self.list
117                 #self["config"].setList(self.list)
118                 
119                 self["actions"] = ActionMap(["OkCancelActions"], 
120                 {
121                         "ok": self.save,
122                         "cancel": self.revert
123                 }, -1)
124                 
125         def save(self):
126                 fancontrol.getConfig(0).vlt.save()
127                 fancontrol.getConfig(0).pwm.save()
128                 self.close()
129                 
130         def revert(self):
131                 fancontrol.getConfig(0).vlt.load()
132                 fancontrol.getConfig(0).pwm.load()
133                 self.close()
134
135 def main(session, **kwargs):
136         session.open(TempFanControl)
137
138 def Plugins(**kwargs):
139         return PluginDescriptor(name = "Temperature and Fan control", description = _("Temperature and Fan control"), where = PluginDescriptor.WHERE_EXTENSIONSMENU, fnc = main)
140