[hbbtv] reduce CPU usage
[vuplus_openvuplus] / meta-openvuplus / recipes-vuplus / duo2lcd4linux / files / duo2lcd4linux.patch
1 diff -urN LCD4linux_ori/plugin.py LCD4linux/plugin.py
2 --- LCD4linux_ori/plugin.py     2013-05-24 12:11:59.390217149 +0200
3 +++ LCD4linux/plugin.py 2013-05-31 07:22:41.221330788 +0200
4 @@ -46,9 +46,12 @@
5  
6  from twisted.web.client import getPage
7  from xml.dom.minidom import parse, parseString
8 -from urllib import urlencode
9 +from urllib import urlencode, quote
10  import xml.etree.cElementTree
11  
12 +from fcntl import ioctl
13 +from socket import create_connection as socket_create_connection
14 +
15  # globals
16  DPFrefreshrate="/usr/lib/enigma2/python/Plugins/Extensions/LCD4linux/refreshrate"
17  WetterPath = "/usr/lib/enigma2/python/Plugins/Extensions/LCD4linux/wetter/"
18 @@ -80,6 +83,7 @@
19  BilderIndexStandby = 0
20  BilderTime = 0
21  ThreadRunning = 0
22 +WetterThreadRunning = 0
23  LastDemon = ""
24  DemonPID = ["","","",""]
25  SamsungDevice = None
26 @@ -204,17 +208,16 @@
27  config.plugins.LCD4linux.TimerColor = ConfigSelection(choices = Farbe, default="white")
28  config.plugins.LCD4linux.Wetter = ConfigSelection(choices = ScreenSelect, default="0")
29  config.plugins.LCD4linux.WetterLCD = ConfigSelection(choices = LCDSelect, default="1")
30 -config.plugins.LCD4linux.WetterPos = ConfigSlider(default = 50,  increment = 2, limits = (0, 600))
31 -config.plugins.LCD4linux.WetterType = ConfigSelection(choices = [("1", _("4 Days small")), ("2", _("4 Days big")), ("3", _("Current big")), ("4", _("Current full"))], default="1")
32 -config.plugins.LCD4linux.OSCAM = ConfigSelection(choices = ScreenSelect, default="0")
33 -config.plugins.LCD4linux.OSCAMLCD = ConfigSelection(choices = LCDSelect, default="1")
34 -config.plugins.LCD4linux.OSCAMFile = ConfigText(default="/tmp/.oscam/oscam.lcd", fixed_size=False)
35 -config.plugins.LCD4linux.OSCAMSize = ConfigSlider(default = 10,  increment = 1, limits = (9, 20))
36 -config.plugins.LCD4linux.OSCAMPos = ConfigSlider(default = 20,  increment = 2, limits = (0, 600))
37 -config.plugins.LCD4linux.OSCAMAlign = ConfigSelection(choices = [("0", _("left")), ("2", _("right"))], default="0")
38 -config.plugins.LCD4linux.OSCAMSplit = ConfigYesNo(default = False)
39 -config.plugins.LCD4linux.OSCAMColor = ConfigSelection(choices = Farbe, default="white")
40 -config.plugins.LCD4linux.OSCAMBackColor = ConfigSelection(choices = [("0", _("off"))] + Farbe, default="black")
41 +config.plugins.LCD4linux.WetterPosX = ConfigSlider(default = 0,  increment = 2, limits = (0, 600))
42 +config.plugins.LCD4linux.WetterPosY = ConfigSlider(default = 0,  increment = 2, limits = (0, 600))
43 +config.plugins.LCD4linux.WetterType = ConfigSelection(choices = [("1", _("2 Days")), ("2", _("4 Days")), ("3", _("4 Days big")), ("4", _("4 Days only")), ("5", _("2 Days vertical"))], default="1")
44 +config.plugins.LCD4linux.WetterColor = ConfigSelection(choices = Farbe, default="white")
45 +config.plugins.LCD4linux.WetterColorLow = ConfigSelection(choices = Farbe, default="aquamarine")
46 +config.plugins.LCD4linux.WetterColorHigh = ConfigSelection(choices = Farbe, default="violet")
47 +config.plugins.LCD4linux.WetterColorLine = ConfigSelection(choices = Farbe, default="white")
48 +config.plugins.LCD4linux.WetterColorDay = ConfigSelection(choices = Farbe, default="white")
49 +config.plugins.LCD4linux.WetterColorCity = ConfigSelection(choices = Farbe, default="white")
50 +config.plugins.LCD4linux.WetterColorSky = ConfigSelection(choices = Farbe, default="silver")
51  config.plugins.LCD4linux.WetterCity = ConfigText(default="Berlin", fixed_size=False)
52  config.plugins.LCD4linux.Text = ConfigSelection(choices = ScreenSelect, default="0")
53  config.plugins.LCD4linux.TextLCD = ConfigSelection(choices = LCDSelect, default="1")
54 @@ -298,16 +301,9 @@
55  config.plugins.LCD4linux.StandbyTimerColor = ConfigSelection(choices = Farbe, default="white")
56  config.plugins.LCD4linux.StandbyWetter = ConfigSelection(choices = ScreenSelect, default="0")
57  config.plugins.LCD4linux.StandbyWetterLCD = ConfigSelection(choices = LCDSelect, default="1")
58 -config.plugins.LCD4linux.StandbyWetterPos = ConfigSlider(default = 50,  increment = 2, limits = (0, 600))
59 +config.plugins.LCD4linux.StandbyWetterPosX = ConfigSlider(default = 0,  increment = 2, limits = (0, 600))
60 +config.plugins.LCD4linux.StandbyWetterPosY = ConfigSlider(default = 50,  increment = 2, limits = (0, 600))
61  config.plugins.LCD4linux.StandbyWetterType = ConfigSelection(choices = [("1", _("4 Days small")), ("2", _("4 Days big")), ("3", _("Current big")), ("4", _("Current full"))], default="1")
62 -config.plugins.LCD4linux.StandbyOSCAM = ConfigSelection(choices = ScreenSelect, default="0")
63 -config.plugins.LCD4linux.StandbyOSCAMLCD = ConfigSelection(choices = LCDSelect, default="1")
64 -config.plugins.LCD4linux.StandbyOSCAMSize = ConfigSlider(default = 10,  increment = 1, limits = (9, 20))
65 -config.plugins.LCD4linux.StandbyOSCAMPos = ConfigSlider(default = 20,  increment = 2, limits = (0, 600))
66 -config.plugins.LCD4linux.StandbyOSCAMAlign = ConfigSelection(choices = [("0", _("left")), ("2", _("right"))], default="0")
67 -config.plugins.LCD4linux.StandbyOSCAMSplit = ConfigYesNo(default = False)
68 -config.plugins.LCD4linux.StandbyOSCAMColor = ConfigSelection(choices = Farbe, default="white")
69 -config.plugins.LCD4linux.StandbyOSCAMBackColor = ConfigSelection(choices = [("0", _("off"))] + Farbe, default="black")
70  config.plugins.LCD4linux.StandbyText = ConfigSelection(choices = ScreenSelect, default="0")
71  config.plugins.LCD4linux.StandbyTextLCD = ConfigSelection(choices = LCDSelect, default="1")
72  config.plugins.LCD4linux.StandbyTextFile = ConfigText(default="/tmp/lcd4linux.txt", fixed_size=False)
73 @@ -752,18 +748,16 @@
74                         self.list2.append(getConfigListEntry(_("Weather"), config.plugins.LCD4linux.Wetter))
75                         if config.plugins.LCD4linux.Wetter.value != "0":
76                                 self.list2.append(getConfigListEntry(_("- which LCD"), config.plugins.LCD4linux.WetterLCD))
77 -                               self.list2.append(getConfigListEntry(_("- Position"), config.plugins.LCD4linux.WetterPos))
78 +                               self.list2.append(getConfigListEntry(_("- Position X"), config.plugins.LCD4linux.WetterPosX))
79 +                               self.list2.append(getConfigListEntry(_("- Position Y"), config.plugins.LCD4linux.WetterPosY))
80                                 self.list2.append(getConfigListEntry(_("- Weather Type"), config.plugins.LCD4linux.WetterType))
81 -                       self.list2.append(getConfigListEntry(_("Show oscam.lcd"), config.plugins.LCD4linux.OSCAM))
82 -                       if config.plugins.LCD4linux.OSCAM.value != "0":
83 -                               self.list2.append(getConfigListEntry(_("- which LCD"), config.plugins.LCD4linux.OSCAMLCD))
84 -                               self.list2.append(getConfigListEntry(_("- File"), config.plugins.LCD4linux.OSCAMFile))
85 -                               self.list2.append(getConfigListEntry(_("- Font Size"), config.plugins.LCD4linux.OSCAMSize))
86 -                               self.list2.append(getConfigListEntry(_("- Position"), config.plugins.LCD4linux.OSCAMPos))
87 -                               self.list2.append(getConfigListEntry(_("- Alignment"), config.plugins.LCD4linux.OSCAMAlign))
88 -                               self.list2.append(getConfigListEntry(_("- Split Screen"), config.plugins.LCD4linux.OSCAMSplit))
89 -                               self.list2.append(getConfigListEntry(_("- Color"), config.plugins.LCD4linux.OSCAMColor))
90 -                               self.list2.append(getConfigListEntry(_("- Background Color"), config.plugins.LCD4linux.OSCAMBackColor))
91 +                               self.list2.append(getConfigListEntry(_("- Color"), config.plugins.LCD4linux.WetterColor))
92 +                               self.list2.append(getConfigListEntry(_("- Color Low"), config.plugins.LCD4linux.WetterColorLow))
93 +                               self.list2.append(getConfigListEntry(_("- Color High"), config.plugins.LCD4linux.WetterColorHigh))
94 +                               self.list2.append(getConfigListEntry(_("- Color Line"), config.plugins.LCD4linux.WetterColorLine))
95 +                               self.list2.append(getConfigListEntry(_("- Color Day"), config.plugins.LCD4linux.WetterColorDay))
96 +                               self.list2.append(getConfigListEntry(_("- Color City"), config.plugins.LCD4linux.WetterColorCity))
97 +                               self.list2.append(getConfigListEntry(_("- Color Sky"), config.plugins.LCD4linux.WetterColorSky))
98                         self.list2.append(getConfigListEntry(_("Show Textfile") , config.plugins.LCD4linux.Text))
99                         if config.plugins.LCD4linux.Text.value != "0":
100                                 self.list2.append(getConfigListEntry(_("- which LCD"), config.plugins.LCD4linux.TextLCD))
101 @@ -868,17 +862,9 @@
102                         self.list4.append(getConfigListEntry(_("Standby - Weather"), config.plugins.LCD4linux.StandbyWetter))
103                         if config.plugins.LCD4linux.StandbyWetter.value != "0":
104                                 self.list4.append(getConfigListEntry(_("- which LCD"), config.plugins.LCD4linux.StandbyWetterLCD))
105 -                               self.list4.append(getConfigListEntry(_("- Position"), config.plugins.LCD4linux.StandbyWetterPos))
106 +                               self.list4.append(getConfigListEntry(_("- Position X"), config.plugins.LCD4linux.StandbyWetterPosX))
107 +                               self.list4.append(getConfigListEntry(_("- Position Y"), config.plugins.LCD4linux.StandbyWetterPosY))
108                                 self.list4.append(getConfigListEntry(_("- Weather Type"), config.plugins.LCD4linux.StandbyWetterType))
109 -                       self.list4.append(getConfigListEntry(_("Standby - Show oscam.lcd"), config.plugins.LCD4linux.StandbyOSCAM))
110 -                       if config.plugins.LCD4linux.StandbyOSCAM.value != "0":
111 -                               self.list4.append(getConfigListEntry(_("- which LCD"), config.plugins.LCD4linux.StandbyOSCAMLCD))
112 -                               self.list4.append(getConfigListEntry(_("- Font Size"), config.plugins.LCD4linux.StandbyOSCAMSize))
113 -                               self.list4.append(getConfigListEntry(_("- Position"), config.plugins.LCD4linux.StandbyOSCAMPos))
114 -                               self.list4.append(getConfigListEntry(_("- Alignment"), config.plugins.LCD4linux.StandbyOSCAMAlign))
115 -                               self.list4.append(getConfigListEntry(_("- Split Screen"), config.plugins.LCD4linux.StandbyOSCAMSplit))
116 -                               self.list4.append(getConfigListEntry(_("- Color"), config.plugins.LCD4linux.StandbyOSCAMColor))
117 -                               self.list4.append(getConfigListEntry(_("- Background Color"), config.plugins.LCD4linux.StandbyOSCAMBackColor))
118                         self.list4.append(getConfigListEntry(_("Standby - Show Textfile"), config.plugins.LCD4linux.StandbyText))
119                         if config.plugins.LCD4linux.StandbyText.value != "0":
120                                 self.list4.append(getConfigListEntry(_("- which LCD"), config.plugins.LCD4linux.StandbyTextLCD))
121 @@ -998,11 +984,18 @@
122                         self.SavePicon = config.plugins.LCD4linux.PiconType.value
123                         self.SaveAspectRatio = config.plugins.LCD4linux.PiconAspectRatio.value
124                         os.system("rm -f %s" % config.plugins.LCD4linux.PiconCache.value + "*.png")
125 -               if self.SaveWetter != config.plugins.LCD4linux.WetterCity.value or self.SaveWetterType != config.plugins.LCD4linux.WetterType.value or self.SaveStandbyWetterType != config.plugins.LCD4linux.StandbyWetterType.value:
126 +#              if self.SaveWetter != config.plugins.LCD4linux.WetterCity.value or self.SaveWetterType != config.plugins.LCD4linux.WetterType.value or self.SaveStandbyWetterType != config.plugins.LCD4linux.StandbyWetterType.value:
127 +#                      self.SaveWetter = config.plugins.LCD4linux.WetterCity.value
128 +#                      self.SaveWetterType = config.plugins.LCD4linux.WetterType.value
129 +#                      self.SaveStandbyWetterType = config.plugins.LCD4linux.StandbyWetterType.value
130 +#                      wwwWetter = ""
131 +               if self.SaveWetter != config.plugins.LCD4linux.WetterCity.value:
132                         self.SaveWetter = config.plugins.LCD4linux.WetterCity.value
133 -                       self.SaveWetterType = config.plugins.LCD4linux.WetterType.value
134 -                       self.SaveStandbyWetterType = config.plugins.LCD4linux.StandbyWetterType.value
135                         wwwWetter = ""
136 +
137 +               elif config.plugins.LCD4linux.WetterColor.isChanged() or config.plugins.LCD4linux.WetterColorLow.isChanged() or config.plugins.LCD4linux.WetterColorHigh.isChanged() or config.plugins.LCD4linux.WetterColorLine.isChanged() or config.plugins.LCD4linux.WetterColorDay.isChanged() or config.plugins.LCD4linux.WetterColorCity.isChanged() or config.plugins.LCD4linux.WetterColorSky.isChanged():
138 +                       if os.path.isfile(PICwetter):
139 +                               os.system("rm -f %s" % PICwetter)
140                 if self.SaveScreenActive != config.plugins.LCD4linux.ScreenActive.value:
141                         self.SaveScreenActive = config.plugins.LCD4linux.ScreenActive.value
142                         ScreenActive = self.SaveScreenActive
143 @@ -1101,6 +1094,7 @@
144                 self.KeyTime = 0
145                 self.StandbyChanged = False
146                 self.DataMinute = ""
147 +               self.WetterCheckMin = ""
148                 self.ref = ""
149  
150                 self.StatusTimer = eTimer()
151 @@ -1210,10 +1204,15 @@
152                         self.StandbyChanged = Standby.inStandby 
153                         self.restartTimer()
154                         if config.plugins.LCD4linux.StandbyWetter.value != "0" or config.plugins.LCD4linux.Wetter.value != "0":
155 -                               if strftime("%M") == "15" or strftime("%M") == "45" or wwwWetter.find("forecast_information") < 1:
156 -                                       self.downloadWetter()
157 +                               if strftime("%M") != self.WetterCheckMin:
158 +                                       self.WetterCheckMin = strftime("%M")
159 +                                       if strftime("%M") == "15" or strftime("%M") == "45" or wwwWetter.find("forecast") < 1:
160 +                                               self.downloadWetter()
161                 if ConfigMode == True:
162 -                       self.StatusTimer.startLongTimer(2)
163 +                       if config.plugins.LCD4linux.Bild.value.find(ScreenActive) >= 0:
164 +                               self.StatusTimer.startLongTimer(5)
165 +                       else:
166 +                               self.StatusTimer.startLongTimer(3)
167                 else:
168                         self.StatusTimer.startLongTimer(5)
169  
170 @@ -1377,23 +1376,68 @@
171                                         ScreenActive = "1"
172                 ScreenTime += 1
173  
174 +       def cannotConnect(self, port = 80, url = "74.125.71.94", timeout = 5):
175 +               try:
176 +                       sock = socket_create_connection((url, port), timeout)
177 +#                      print "Can be connected to [%s:%d]."%(url,port)
178 +               except Exception, ErrMsg:
179 +                       print "Can't be connected to [%s:%d]. (%s)"%(url, port, ErrMsg)
180 +                       print "    >> Cause: ",ErrMsg
181 +                       return True
182 +               else:
183 +#                      print "    >> sock close, sock : ",sock
184 +                       if sock is not None:
185 +                               print "socket close : ",sock.close()
186 +               return False
187 +
188         def downloadWetter(self):
189 +               global WetterThreadRunning
190 +               if WetterThreadRunning > 0:
191 +                       print "[LCD4linux] downloadWetter already running"
192 +                       return
193 +               WetterThreadRunning += 1
194 +               from threading import Thread
195 +               t = Thread(target=self.downloadWetterThread)
196 +               t.start()
197 +
198 +       def downloadWetterThread(self):
199 +               wetter = 0
200 +#              if self.cannotConnect(80, "173.194.72.94", 1): # www.google.de
201 +               if self.cannotConnect(80, "173.194.72.99", 1): # www.google.com
202 +                       self.downloadWetterThreadEnd()
203 +                       return
204                 print "[LCD4linux] Wetterdownloadstart"
205 -               self.feedurl = "http://www.google.com/ig/api?weather=%s&oe=utf-8&hl=%s" % (config.plugins.LCD4linux.WetterCity.value,language.getLanguage()[:2])
206 -#              self.feedurl = "http://www.google.com/ig/api?weather=%s&oe=utf-8&hl=%s" % (config.plugins.LCD4linux.WetterCity.value,"de")
207 +               wetterCity = config.plugins.LCD4linux.WetterCity.value
208 +               lang = language.getLanguage().replace("_","-")
209 +               if lang in ["no-NO","ca-AD","sr-YU","en-EN"]:
210 +                       lang = "en-us"
211 +               if wetterCity.startswith("wc:"):
212 +                       self.feedurl = "http://weather.service.msn.com/data.aspx?src=vista&weadegreetype=C&culture=%s&wealocations=%s" %(lang,wetterCity)
213 +               else:
214 +                       self.feedurl = "http://weather.service.msn.com/data.aspx?src=vista&weadegreetype=C&culture=%s&weasearchstr=%s" %(lang,quote(wetterCity))
215                 getPage(self.feedurl).addCallback(self.downloadListCallback).addErrback(self.downloadListError)
216 +               self.downloadWetterThreadEnd()
217  
218         def downloadListError(self, error=""):
219 -               print str(error)
220 +               print "download wetter error : ", str(error)
221  #              self.session.open(MessageBox, "Error downloading Feed:\n%s" % str(error), type=MessageBox.TYPE_ERROR)
222 +               self.downloadWetterThreadEnd()
223  
224         def downloadListCallback(self, page=""):
225                 global wwwWetter
226                 wwwWetter = page
227                 wwwWetter = wwwWetter.replace('\xc2\x86', '').replace('\xc2\x87', '').replace('\n','').decode("utf-8", "ignore").encode("utf-8") or ""
228                 wwwWetter=codecs.decode(wwwWetter, 'UTF-8')
229 +#              print wwwWetter
230                 if os.path.isfile(PICwetter):
231                         os.system("rm -f %s" % PICwetter)
232 +#              print " >> downloadListCallback updated.."
233 +               self.downloadWetterThreadEnd()
234 +               self.restartTimer()
235 +
236 +       def downloadWetterThreadEnd(self):
237 +               global WetterThreadRunning
238 +               WetterThreadRunning = 0
239  
240  def LCD4linuxPICThread(self,session):
241         global ThreadRunning
242 @@ -1530,116 +1574,174 @@
243         global BilderTime
244         global OSDon
245  
246 -# Google Wetter
247 -       def putWetter(ConfigPos, ConfigType, draw, im):
248 +# MSN Wetter
249 +       def putWetter((ConfigPosX, ConfigPosY, ConfigType, ConfigColor, 
250 +               ConfigColorLow, ConfigColorHigh, ConfigColorLine, ConfigColorDay, ConfigColorCity, ConfigColorSky), draw, im):
251 +               global wwwWetter
252                 global WetterType
253 +               global WetterThreadRunning
254 +               if WetterThreadRunning:
255 +                       print " Download Wetter thread is running"
256 +                       return
257                 if os.path.isfile(PICwetter) and ConfigType == WetterType:
258                         pil_image = Image.open(PICwetter)
259 -                       im.paste(pil_image,(0,ConfigPos))
260 +                       im.paste(pil_image,(ConfigPosX,ConfigPosY))
261                 else:
262                         WetterType=ConfigType
263 -                       POSX, POSY = 1,0
264 -                       MAX_W,MAX_H = 320,80
265 -                       Wmulti = 1.4 if ConfigType != "1" else 1
266 -                       if ConfigType == "2":
267 -                               MAX_H = 220
268 -                               POSX = 10
269 +                       POSX, POSY = 5,5
270 +                       if ConfigType == "1":
271 +                               MAX_W,MAX_H = 260,110
272 +                       elif ConfigType == "2":
273 +                               MAX_W,MAX_H = 400,110
274                         elif ConfigType == "3":
275 -                               MAX_H = 90
276 -                               POSY = POSY-(20*Wmulti)+1
277 -                       elif ConfigType == "4":
278 -                               Wmulti = 3.5
279 -                               MAX_H = 220
280 -                               POSY = POSY-(20*Wmulti)+1
281 +                               MAX_W,MAX_H = 400,240
282 +                       elif ConfigType == "4" or ConfigType == "5":
283 +                               MAX_W,MAX_H = 180,240
284                         imW = Image.new('RGB', (MAX_W, MAX_H), (0, 0, 0, 0))
285                         drawW = ImageDraw.Draw(imW)
286                         dom = parseString(wwwWetter)
287 -                       for node in dom.getElementsByTagName('forecast_information'):
288 -                               for unitsystem in node.getElementsByTagName('unit_system'):
289 -                                       UnitSystem = unitsystem.getAttribute('data')
290 -                       if ConfigType != "3" and ConfigType != "4":
291 -                               font = ImageFont.truetype(FONT,20*Wmulti, encoding='unic')
292 -                               Day="?"
293 -                               High="?"
294 -                               Low="?"
295 -                               Icon=""
296 -                               for node in dom.getElementsByTagName('forecast_conditions'):
297 -                                       for day_of_week in node.getElementsByTagName('day_of_week'):
298 -                                               Day = day_of_week.getAttribute('data')
299 -                                       for high in node.getElementsByTagName('high'):
300 -                                               High = high.getAttribute('data')
301 -                                               if UnitSystem == "US":
302 -                                                       High = str(int((int(High)-32)*5/9))
303 -                                       for low in node.getElementsByTagName('low'):
304 -                                               Low = low.getAttribute('data')
305 -                                               if UnitSystem == "US":
306 -                                                       Low = str(int((int(Low)-32)*5/9))
307 -                                       for icon in node.getElementsByTagName('icon'):
308 -                                               Icon = os.path.basename(icon.getAttribute('data'))
309 -#                                      print "WetterData", Day, Low, High, Icon
310 -                                       if os.path.isfile(WetterPath + Icon) and Icon.find("gif") > 1:
311 -                                               pil_image = Image.open(WetterPath + Icon)
312 -                                               if Wmulti != 1:
313 -                                                       pil_image = pil_image.resize((int(40*Wmulti), int(40*Wmulti)), Image.ANTIALIAS) #BILINEAR)
314 -#                                              x,y=pil_image.size
315 -                                               imW.paste(pil_image,(POSX,POSY+(20*Wmulti)))
316 -                                       w,h = drawW.textsize(Day, font=font)
317 -                                       drawW.text((POSX, POSY), Day, font=font)
318 -                                       drawW.text((POSX, POSY+(60*Wmulti)), Low, font=font, fill="aquamarine")
319 -                                       drawW.text((POSX+(25*Wmulti), POSY+(60*Wmulti)), High, font=font, fill="violet")
320 -                               
321 -                                       POSX += (54*Wmulti)
322 -                               if Wmulti != 1:
323 -                                       POSX = 10
324 -                                       POSY += 90
325 -                               
326 -                       Hum = "?"
327 -                       Wind = "?"
328 -                       Temp_c = "?"
329 -                       Icon=""
330 -                       for node in dom.getElementsByTagName('current_conditions'):
331 -                               for temp_c in node.getElementsByTagName('temp_c'):
332 -                                       Temp_c = temp_c.getAttribute('data') + "\xc2\xb0C"
333 -                               for hum in node.getElementsByTagName('humidity'):
334 -                                       Hum1 = hum.getAttribute('data').replace("\xc2\xa0","").replace(" ","")
335 -                                       Hum1 = Hum1.split(":")
336 -                                       if len(Hum1) == 2:      
337 -                                               Hum = Hum1[len(Hum1)-1].lstrip()
338 -                               for wind in node.getElementsByTagName('wind_condition'):
339 -                                       Wind = wind.getAttribute('data')
340 -                                       Wind = Wind.split(":")
341 -                                       if len(Wind) == 2:
342 -                                               Wind = Wind[len(Wind)-1].lstrip()
343 -                               for icon in node.getElementsByTagName('icon'):
344 -                                       Icon = os.path.basename(icon.getAttribute('data'))
345 -#                              print "Temp, Hum", Temp_c, Hum, Wind, Icon
346 -                               if os.path.isfile(WetterPath + Icon) and Icon.find("gif") > 1:
347 -                                       pil_image = Image.open(WetterPath + Icon)
348 -                                       if Wmulti != 1:
349 -                                               pil_image = pil_image.resize((int(40*Wmulti), int(40*Wmulti)), Image.ANTIALIAS) #BILINEAR)
350 -#                                      x,y=pil_image.size
351 -                                       if ConfigType == "4":
352 -                                               POSX = 10
353 -                                       imW.paste(pil_image,(POSX,POSY+(20*Wmulti)))
354 -                               if ConfigType == "4":
355 -                                       font = ImageFont.truetype(FONT,(10*Wmulti), encoding='unic')
356 -                               else:
357 -                                       font = ImageFont.truetype(FONT,(15*Wmulti), encoding='unic')
358 -                               minus5 = 0 if Wmulti != 1 else 5
359 -                               drawW.text((POSX-minus5, POSY+(64*Wmulti)), Wind, font=font, fill="silver")
360 -                               if ConfigType == "4":
361 -                                       font = ImageFont.truetype(FONT,(20*Wmulti), encoding='unic')
362 -                               else:
363 -                                       font = ImageFont.truetype(FONT,(25*Wmulti), encoding='unic')
364 -                               drawW.text((POSX+(45*Wmulti), POSY+(16*Wmulti)), Temp_c, font=font, fill="violet")
365 -                               if len(Hum)>3:
366 -                                       if ConfigType == "4":
367 -                                               font = ImageFont.truetype(FONT,(16*Wmulti), encoding='unic')
368 +                       weather = dom.getElementsByTagName("weather")
369 +                       if len(weather) == 0:
370 +                               print "get weather failed"
371 +                               return
372 +                       else:
373 +                               weather = weather[0]
374 +
375 +                       def getFont(size):
376 +                               return ImageFont.truetype(FONT, size, encoding='unic')
377 +
378 +                       if ConfigType in ("1","2","3","4","5"):
379 +# forecast 4 days
380 +                               if ConfigType in ("1","2"):
381 +                                       Day="?"; High="?"; Low="?"; Icon=""
382 +                                       font = getFont(20)
383 +                                       drawW.line((POSX, POSY, POSX, MAX_H), fill=ConfigColorLine)
384 +                                       forecast_num = 0
385 +                                       for node in weather.getElementsByTagName('forecast'):
386 +                                               forecast_num += 1
387 +                                               if ConfigType == "1" and forecast_num > 2:
388 +                                                       break
389 +                                               elif ConfigType == "2" and forecast_num > 4:
390 +                                                       break
391 +                                               Day = node.getAttribute('shortday')
392 +                                               High = node.getAttribute('high')
393 +                                               Low = node.getAttribute('low')
394 +                                               Icon = node.getAttribute('skycodeday')
395 +                                               Skytextday = node.getAttribute('skytextday')
396 +                                               Precip = node.getAttribute('precip')
397 +                                               iconpath = WetterPath + Icon+'.png'
398 +                                               if os.path.isfile(iconpath):
399 +                                                       pil_image = Image.open(iconpath)
400 +                                                       imW.paste(pil_image,(POSX+5,POSY+25), pil_image)
401 +                                               drawW.text((POSX+13, POSY), Day, font=font, fill=ConfigColorDay)
402 +                                               drawW.text((POSX+10, POSY+71), Low, font=font, fill=ConfigColorLow)
403 +                                               drawW.text((POSX+37, POSY+71), High, font=font, fill=ConfigColorHigh)
404 +                                               drawW.line((POSX+65, POSY, POSX+65, MAX_H), fill=ConfigColorLine)
405 +                                               POSX += 65
406 +                               elif ConfigType in ("3", "4", "5"):
407 +                                       Day="?"; High="?"; Low="?"; Icon=""
408 +                                       if ConfigType == "5":
409 +                                               POSX, POSY = 5,120
410 +#                                      if ConfigType in ("3"):
411 +#                                              drawW.line((0, 0, MAX_W/2, 0), fill=ConfigColorLine)
412 +#                                      elif ConfigType in ("4"):
413 +#                                              drawW.line((0, 0, MAX_W, 0), fill=ConfigColorLine)
414 +                                       if ConfigType in ("5"):
415 +                                               drawW.line((0, POSY, MAX_W, POSY), fill=ConfigColorLine)
416 +                                       forecast_num = 0
417 +                                       for node in weather.getElementsByTagName('forecast'):
418 +                                               forecast_num += 1
419 +                                               if ConfigType in ("3", "4") and forecast_num > 4:
420 +                                                       break
421 +                                               elif ConfigType == "5" and forecast_num > 2:
422 +                                                       break
423 +                                               Day = node.getAttribute('day')
424 +                                               Low = node.getAttribute('low') + "\xc2\xb0"
425 +                                               High = node.getAttribute('high') + "\xc2\xb0"
426 +                                               Icon = node.getAttribute('skycodeday')
427 +                                               Skytextday = node.getAttribute('skytextday')
428 +                                               Precip = node.getAttribute('precip')
429 +                                               iconpath = WetterPath + Icon+'.png'
430 +                                               if os.path.isfile(iconpath):
431 +                                                       pil_image = Image.open(iconpath)
432 +#                                                      icon_w, icon_h = 55,45
433 +                                                       icon_w, icon_h = int(55*1.2), int(45*1.2)
434 +                                                       pil_image = pil_image.resize( (icon_w, icon_h), Image.ANTIALIAS) #BILINEAR)
435 +                                                       imW.paste(pil_image,(POSX, POSY), pil_image)
436 +                                               font = getFont(15)
437 +                                               drawW.text((POSX+icon_w-20, POSY-2), Precip, font=font, fill="cyan")
438 +                                               drawW.text((POSX+icon_w+5, POSY+5), Day, font=font, fill=ConfigColorDay)
439 +                                               drawW.text((POSX+icon_w+5, POSY+20), Low, font=font, fill=ConfigColorLow)
440 +                                               drawW.text((POSX+icon_w+30, POSY+20), High, font=font, fill=ConfigColorHigh)
441 +                                               drawW.text((POSX+icon_w+5, POSY+35), Skytextday, font=font, fill=ConfigColorSky)
442 +                                               if ConfigType == "3":
443 +                                                       drawW.line((POSX, POSY+55, MAX_W/2, POSY+55), fill=ConfigColorLine)
444 +                                               else:
445 +                                                       drawW.line((POSX, POSY+55, MAX_W, POSY+55), fill=ConfigColorLine)
446 +                                               POSY += 60
447 +
448 +# current info
449 +                               if ConfigType in ("1","2","5"):
450 +                                       if ConfigType == "5":
451 +                                               POSX, POSY = 15,15
452 +                                       Hum = "?"; Wind = "?"; Temp = "?"; Icon=""
453 +                                       current = weather.getElementsByTagName('current')
454 +                                       if len(current) == 0:
455 +                                               print "get current failed"
456 +                                       else:
457 +                                               current = current[0]
458 +                                               ObservationPoint = current.getAttribute('observationpoint')
459 +                                               ObservationTime = current.getAttribute('observationtime')
460 +                                               Temp = current.getAttribute('temperature') + "\xc2\xb0"
461 +                                               Hum = current.getAttribute('humidity') + "%"
462 +                                               Wind = current.getAttribute('winddisplay')
463 +                                               Icon = current.getAttribute("skycode")
464 +                                               iconpath = WetterPath + Icon+'.png'
465 +                                               if os.path.isfile(iconpath):
466 +                                                       pil_image = Image.open(iconpath)
467 +                                                       pil_image = pil_image.resize((int(55*1.4), int(45*1.4)), Image.ANTIALIAS) #BILINEAR)
468 +                                                       imW.paste(pil_image,(POSX+5, POSY+5+10), pil_image)
469 +                                                       drawW.text((POSX+5, POSY), ObservationPoint+' '+ObservationTime, font=getFont(12), fill=ConfigColorCity)
470 +                                                       drawW.text((POSX+15+62, POSY+5+15), Temp, font=getFont(25), fill=ConfigColorHigh)
471 +                                                       drawW.text((POSX+15+62, POSY+5+40), Hum, font=getFont(22), fill=ConfigColorLow)
472 +                                                       drawW.text((POSX+5, POSY+80), Wind, font=getFont(15), fill=ConfigColorSky)
473 +
474 +                               elif ConfigType in ("3"):
475 +                                       POSX, POSY = 200,5
476 +                                       drawW.line((POSX, POSY, POSX, MAX_H), fill=ConfigColorLine)
477 +                                       Hum = "?"; Wind = "?"; Temp = "?"; Icon=""
478 +                                       current = weather.getElementsByTagName('current')
479 +                                       if len(current) == 0:
480 +                                               print "get current failed"
481 +                                               return
482                                         else:
483 -                                               font = ImageFont.truetype(FONT,(22*Wmulti), encoding='unic')
484 -                               drawW.text((POSX+(45*Wmulti), POSY+(37*Wmulti)), Hum, font=font, fill="silver")
485 +                                               current = current[0]
486 +                                       ObservationPoint = current.getAttribute('observationpoint')
487 +                                       ObservationTime = current.getAttribute('observationtime')
488 +                                       Temp = 'Temp. : '+ current.getAttribute('temperature') + "\xc2\xb0"
489 +                                       Hum = 'Hum : '+ current.getAttribute('humidity') + "%"
490 +                                       Wind = 'Wind : '+ current.getAttribute('winddisplay')
491 +                                       Icon = current.getAttribute("skycode")
492 +                                       Skytext = 'Cond : ' + current.getAttribute('skytext')
493 +                                       Feelslike = 'Feel : '+ current.getAttribute('feelslike')
494 +                                       Date = 'Date : ' + current.getAttribute('date')
495 +                                       iconpath = WetterPath + Icon+'.png'
496 +                                       icon_w, icon_h = int(55*2.8), int(45*2.8)
497 +                                       if os.path.isfile(iconpath):
498 +                                               pil_image = Image.open(iconpath)
499 +                                               pil_image = pil_image.resize( (icon_w, icon_h), Image.ANTIALIAS) #BILINEAR
500 +                                               imW.paste(pil_image,(POSX+5, POSY+5), pil_image)
501 +                                       font = getFont(15)
502 +                                       drawW.text((POSX+20, POSY+3+icon_h), Temp, font=font, fill=ConfigColorHigh)
503 +                                       drawW.text((POSX+20+80, POSY+3+icon_h), Hum, font=font, fill=ConfigColorLow)
504 +                                       drawW.text((POSX+20, POSY+3+icon_h+20), Skytext, font=font, fill=ConfigColorSky)
505 +                                       drawW.text((POSX+20, POSY+3+icon_h+40), Wind, font=font, fill=ConfigColorLow)
506 +                                       drawW.text((POSX+20, POSY+3+icon_h+60), Date, font=font, fill=ConfigColorCity)
507 +                                       font = ImageFont.truetype(FONT,15, encoding='unic')
508 +                                       drawW.text((POSX+20, MAX_H-25), ObservationPoint+' '+ObservationTime, font=font, fill=ConfigColorCity)
509 +# save Image
510                         imW.save(PICwetter)
511 -                       im.paste(imW,(0,ConfigPos))
512 +                       im.paste(imW,(ConfigPosX,ConfigPosY))
513                 return
514  
515  # Text File
516 @@ -1977,51 +2079,6 @@
517                 lx = getSplit(ConfigSplit,ConfigAlign,MAX_W,w)
518                 draw.text((lx, ConfigPos), i, font=font, fill=ConfigColor)
519  
520 -# show OSCAM
521 -       def putOSCAM(ConfigPos, ConfigSize, ConfigColor, ConfigBackColor, ConfigAlign, ConfigSplit, draw, im):
522 -               MAX_W,MAX_H = im.size
523 -               OSCAMrunning = False
524 -               if ConfigSplit == True:
525 -                       MAX_W = int(MAX_W/2)
526 -               POSX = getSplit(ConfigSplit,ConfigAlign,MAX_W,MAX_W)
527 -               if os.path.isfile(config.plugins.LCD4linux.OSCAMFile.value):
528 -                       current_h=ConfigPos
529 -                       if time()-os.path.getmtime(config.plugins.LCD4linux.OSCAMFile.value) < 30:
530 -                               OSCAMrunning = True
531 -                               font = ImageFont.truetype(FONT, ConfigSize, encoding='unic')
532 -                               p=[160,12.8,3.2,2,1.78,1.6,1.45,1.33]
533 -
534 -                               f = open(config.plugins.LCD4linux.OSCAMFile.value,"r")
535 -                               for line in f.readlines():
536 -                                       line = line.replace('\xc2\x86', '').replace('\xc2\x87', '').replace('\n','').decode("utf-8", "ignore").encode("utf-8") or ""
537 -                                       line = codecs.decode(line, 'UTF-8')
538 -                                       w,h = draw.textsize(line, font=font)
539 -                                       if ConfigBackColor !="0":
540 -                                               if line.find(" Label ") > 0:
541 -                                                       draw.rectangle((POSX, current_h, POSX+MAX_W, current_h+h),fill=ConfigColor)
542 -                                               else:
543 -                                                       draw.rectangle((POSX, current_h, POSX+MAX_W, current_h+h),fill=ConfigBackColor)
544 -                                       if line.find("|") >0:
545 -                                               ll = line.split("|")
546 -                                               if len(ll)==4:
547 -                                                       p=[160,10.67,2.91,1.14,1.03]
548 -                                               elif len(ll)==5:
549 -                                                       p=[160,10.67,2.91,1.78,1.14,1.03]
550 -                                               else:   
551 -                                                       p=[160,10.67,2.91,1.78,1.6,1.45,1.33,1.14,1.03]
552 -                                               for x in range(len(ll)):
553 -                                                       if line.find(" Label ") > 0:
554 -                                                               draw.text((POSX+int(MAX_W/p[x]), current_h), ll[x].strip(), font=font, fill=ConfigBackColor)
555 -                                                       else:
556 -                                                               draw.text((POSX+int(MAX_W/p[x]), current_h), ll[x].strip(), font=font, fill=ConfigColor)
557 -                                               current_h+=h
558 -                               f.close()
559 -               if OSCAMrunning == False:
560 -                       font = ImageFont.truetype(FONT, ConfigSize+13, encoding='unic')
561 -                       w,h = draw.textsize(codecs.decode(_("OSCAM not running"), 'UTF-8'), font=font)
562 -                       draw.rectangle((POSX, ConfigPos, POSX+MAX_W, ConfigPos+h),fill=ConfigBackColor)
563 -                       draw.text((POSX+(MAX_W-w)/2, ConfigPos), codecs.decode(_("OSCAM not running"), 'UTF-8'), font=font, fill=ConfigColor)
564 -
565  # show Title
566         def putTitle(ConfigPos, ConfigSize, ConfigLines, ConfigColor, ConfigAlign, ConfigSplit, draw, im):
567                 MAX_W,MAX_H = im.size
568 @@ -2110,13 +2167,23 @@
569                                 if isOffTime(config.plugins.LCD4linux.StandbyLCDoff.value,config.plugins.LCD4linux.StandbyLCDon.value):
570                                         writeHelligkeit(0)
571                                         print "[LCD4linux] LCD off"
572 -# Google Wetter
573 -                       if config.plugins.LCD4linux.StandbyWetter.value.find(ScreenActive) >= 0 and wwwWetter.find("forecast_information") > 1:
574 +# MSN Wetter
575 +                       if config.plugins.LCD4linux.StandbyWetter.value.find(ScreenActive) >= 0 and wwwWetter.find("forecast") > 1:
576 +                               params = (
577 +                                       config.plugins.LCD4linux.StandbyWetterPosX.value,
578 +                                       config.plugins.LCD4linux.StandbyWetterPosY.value,
579 +                                       config.plugins.LCD4linux.StandbyWetterType.value,
580 +                                       config.plugins.LCD4linux.WetterColor.value,
581 +                                       config.plugins.LCD4linux.WetterColorLow.value,
582 +                                       config.plugins.LCD4linux.WetterColorHigh.value,
583 +                                       config.plugins.LCD4linux.WetterColorLine.value,
584 +                                       config.plugins.LCD4linux.WetterColorDay.value,
585 +                                       config.plugins.LCD4linux.WetterColorCity.value,
586 +                                       config.plugins.LCD4linux.WetterColorSky.value)
587                                 if config.plugins.LCD4linux.StandbyWetterLCD.value.find("1") >= 0:
588 -                                       putWetter(config.plugins.LCD4linux.StandbyWetterPos.value,config.plugins.LCD4linux.StandbyWetterType.value,draw,im)
589 +                                       putWetter(params, draw, im)
590                                 if config.plugins.LCD4linux.StandbyWetterLCD.value.find("2") >= 0 and config.plugins.LCD4linux.LCDType2.value != "00":
591 -                                       putWetter(config.plugins.LCD4linux.StandbyWetterPos.value,config.plugins.LCD4linux.StandbyWetterType.value,draw2,im2)
592 -
593 +                                       putWetter(params, draw2, im2)
594  # get clock
595                         if config.plugins.LCD4linux.StandbyClock.value.find(ScreenActive) >= 0:
596                                 if config.plugins.LCD4linux.StandbyClockLCD.value.find("1") >= 0:
597 @@ -2157,12 +2224,6 @@
598                                         putBild(config.plugins.LCD4linux.StandbyBildPos.value, config.plugins.LCD4linux.StandbyBildSize.value, config.plugins.LCD4linux.StandbyBildAlign.value, ShowPicture, im)
599                                 if config.plugins.LCD4linux.StandbyBildLCD.value.find("2") >= 0 and config.plugins.LCD4linux.LCDType2.value != "00":
600                                         putBild(config.plugins.LCD4linux.StandbyBildPos.value, config.plugins.LCD4linux.StandbyBildSize.value, config.plugins.LCD4linux.StandbyBildAlign.value, ShowPicture, im2)
601 -# show OSCAM
602 -                       if config.plugins.LCD4linux.StandbyOSCAM.value.find(ScreenActive) >= 0:
603 -                               if config.plugins.LCD4linux.StandbyOSCAMLCD.value.find("1") >= 0:
604 -                                       putOSCAM(config.plugins.LCD4linux.StandbyOSCAMPos.value, config.plugins.LCD4linux.StandbyOSCAMSize.value, config.plugins.LCD4linux.StandbyOSCAMColor.value, config.plugins.LCD4linux.StandbyOSCAMBackColor.value, config.plugins.LCD4linux.StandbyOSCAMAlign.value, config.plugins.LCD4linux.StandbyOSCAMSplit.value, draw, im)
605 -                               if config.plugins.LCD4linux.StandbyOSCAMLCD.value.find("2") >= 0 and config.plugins.LCD4linux.LCDType2.value != "00":
606 -                                       putOSCAM(config.plugins.LCD4linux.StandbyOSCAMPos.value, config.plugins.LCD4linux.StandbyOSCAMSize.value, config.plugins.LCD4linux.StandbyOSCAMColor.value, config.plugins.LCD4linux.StandbyOSCAMBackColor.value, config.plugins.LCD4linux.StandbyOSCAMAlign.value, config.plugins.LCD4linux.StandbyOSCAMSplit.value, draw2, im2)
607  # show Textfile
608                         if config.plugins.LCD4linux.StandbyText.value.find(ScreenActive) >= 0:
609                                 if config.plugins.LCD4linux.StandbyTextLCD.value.find("1") >= 0:
610 @@ -2240,12 +2301,23 @@
611                                 putPicon(config.plugins.LCD4linux.PiconSize.value, config.plugins.LCD4linux.PiconType.value, config.plugins.LCD4linux.PiconAlign.value, config.plugins.LCD4linux.PiconTextSize.value, draw, im)
612                         if config.plugins.LCD4linux.PiconLCD.value.find("2") >= 0 and config.plugins.LCD4linux.LCDType2.value != "00":
613                                 putPicon(config.plugins.LCD4linux.PiconSize.value, config.plugins.LCD4linux.PiconType.value, config.plugins.LCD4linux.PiconAlign.value, config.plugins.LCD4linux.PiconTextSize.value, draw2, im2)
614 -# Google Wetter
615 -               if config.plugins.LCD4linux.Wetter.value.find(ScreenActive) >= 0 and wwwWetter.find("forecast_information") > 1:
616 +# MSN Wetter
617 +               if config.plugins.LCD4linux.Wetter.value.find(ScreenActive) >= 0 and wwwWetter.find("forecast") > 1:
618 +                       params = (
619 +                               config.plugins.LCD4linux.WetterPosX.value,
620 +                               config.plugins.LCD4linux.WetterPosY.value,
621 +                               config.plugins.LCD4linux.WetterType.value,
622 +                               config.plugins.LCD4linux.WetterColor.value,
623 +                               config.plugins.LCD4linux.WetterColorLow.value,
624 +                               config.plugins.LCD4linux.WetterColorHigh.value,
625 +                               config.plugins.LCD4linux.WetterColorLine.value,
626 +                               config.plugins.LCD4linux.WetterColorDay.value,
627 +                               config.plugins.LCD4linux.WetterColorCity.value,
628 +                               config.plugins.LCD4linux.WetterColorSky.value)
629                         if config.plugins.LCD4linux.WetterLCD.value.find("1") >= 0:
630 -                               putWetter(config.plugins.LCD4linux.WetterPos.value,config.plugins.LCD4linux.WetterType.value,draw,im)
631 +                               putWetter(params, draw, im)
632                         if config.plugins.LCD4linux.WetterLCD.value.find("2") >= 0 and config.plugins.LCD4linux.LCDType2.value != "00":
633 -                               putWetter(config.plugins.LCD4linux.WetterPos.value,config.plugins.LCD4linux.WetterType.value,draw2,im2)
634 +                               putWetter(params, draw2, im2)
635  # get clock
636                 if config.plugins.LCD4linux.Clock.value.find(ScreenActive) >= 0:
637                         if config.plugins.LCD4linux.ClockLCD.value.find("1") >= 0:
638 @@ -2259,11 +2331,11 @@
639                         if config.plugins.LCD4linux.InfoLCD.value.find("2") >= 0 and config.plugins.LCD4linux.LCDType2.value != "00":
640                                 putInfo(config.plugins.LCD4linux.InfoPos.value, config.plugins.LCD4linux.InfoSize.value,config.plugins.LCD4linux.InfoAlign.value,config.plugins.LCD4linux.InfoSplit.value,config.plugins.LCD4linux.InfoColor.value,config.plugins.LCD4linux.InfoTuner.value+config.plugins.LCD4linux.InfoSensor.value, draw2, im2)
641  # next Timer Record
642 -                       if config.plugins.LCD4linux.Timer.value.find(ScreenActive) >= 0:
643 -                               if config.plugins.LCD4linux.TimerLCD.value.find("1") >= 0:
644 -                                       putTimer(config.plugins.LCD4linux.TimerPos.value, config.plugins.LCD4linux.TimerSize.value, config.plugins.LCD4linux.TimerColor.value, draw, im)
645 -                               if config.plugins.LCD4linux.TimerLCD.value.find("2") >= 0 and config.plugins.LCD4linux.LCDType2.value != "00":
646 -                                       putTimer(config.plugins.LCD4linux.TimerPos.value, config.plugins.LCD4linux.TimerSize.value, config.plugins.LCD4linux.TimerColor.value, draw2, im2)
647 +               if config.plugins.LCD4linux.Timer.value.find(ScreenActive) >= 0:
648 +                       if config.plugins.LCD4linux.TimerLCD.value.find("1") >= 0:
649 +                               putTimer(config.plugins.LCD4linux.TimerPos.value, config.plugins.LCD4linux.TimerSize.value, config.plugins.LCD4linux.TimerColor.value, draw, im)
650 +                       if config.plugins.LCD4linux.TimerLCD.value.find("2") >= 0 and config.plugins.LCD4linux.LCDType2.value != "00":
651 +                               putTimer(config.plugins.LCD4linux.TimerPos.value, config.plugins.LCD4linux.TimerSize.value, config.plugins.LCD4linux.TimerColor.value, draw2, im2)
652  # aktive Sendernummer
653                 if config.plugins.LCD4linux.ChannelNum.value.find(ScreenActive) >= 0:
654                         if config.plugins.LCD4linux.ChannelNumLCD.value.find("1") >= 0:
655 @@ -2324,12 +2396,6 @@
656                                 putBild(config.plugins.LCD4linux.BildPos.value, config.plugins.LCD4linux.BildSize.value, config.plugins.LCD4linux.BildAlign.value, ShowPicture, im)
657                         if config.plugins.LCD4linux.BildLCD.value.find("2") >= 0 and config.plugins.LCD4linux.LCDType2.value != "00":
658                                 putBild(config.plugins.LCD4linux.BildPos.value, config.plugins.LCD4linux.BildSize.value, config.plugins.LCD4linux.BildAlign.value, ShowPicture, im2)
659 -# show OSCAM
660 -               if config.plugins.LCD4linux.OSCAM.value.find(ScreenActive) >= 0:
661 -                       if config.plugins.LCD4linux.OSCAMLCD.value.find("1") >= 0:
662 -                               putOSCAM(config.plugins.LCD4linux.OSCAMPos.value, config.plugins.LCD4linux.OSCAMSize.value, config.plugins.LCD4linux.OSCAMColor.value, config.plugins.LCD4linux.OSCAMBackColor.value, config.plugins.LCD4linux.OSCAMAlign.value, config.plugins.LCD4linux.OSCAMSplit.value, draw, im)
663 -                       if config.plugins.LCD4linux.OSCAMLCD.value.find("2") >= 0 and config.plugins.LCD4linux.LCDType2.value != "00":
664 -                               putOSCAM(config.plugins.LCD4linux.OSCAMPos.value, config.plugins.LCD4linux.OSCAMSize.value, config.plugins.LCD4linux.OSCAMColor.value, config.plugins.LCD4linux.OSCAMBackColor.value, config.plugins.LCD4linux.OSCAMAlign.value, config.plugins.LCD4linux.OSCAMSplit.value, draw2, im2)
665  # show Textfile
666                 if config.plugins.LCD4linux.Text.value.find(ScreenActive) >= 0:
667                         if config.plugins.LCD4linux.TextLCD.value.find("1") >= 0:
668 @@ -2440,3 +2506,4 @@
669         icon = "plugin.png",
670         fnc = main))
671         return list
672 +