def startRun(self): if self.weatherPluginEntry is not None: self["statustext"].text = _("Getting weather information...") if self.weatherData is not None: self.weatherData.cancel() self.weatherData = None self.weatherData = MSNWeather() self.weatherData.getWeatherData(self.weatherPluginEntry.degreetype.value, self.weatherPluginEntry.weatherlocationcode.value, self.weatherPluginEntry.city.value, self.getWeatherDataCallback, self.showIcon) else: self["statustext"].text = _("No locations defined...\nPress 'Menu' to do that.")
class MSNWeatherPlugin(Screen): skin = '\n\t\t<screen name="MSNWeatherPlugin" position="center,center" size="664,364" title="Weather Plugin">\n\t\t\t<widget render="Label" source="caption" position="10,20" zPosition="1" size="600,28" font="Regular;24" transparent="1"/>\n\t\t\t<widget render="Label" source="observationtime" position="374,45" zPosition="1" size="280,20" font="Regular;14" transparent="1" halign="right" />\n\t\t\t<widget render="Label" source="observationpoint" position="204,65" zPosition="1" size="450,40" font="Regular;14" transparent="1" halign="right" />\n\t\t\t<widget name="currenticon" position="10,95" zPosition="1" size="55,45" alphatest="blend"/>\n\t\t\t<widget render="Label" source="currentTemp" position="90,95" zPosition="1" size="100,23" font="Regular;22" transparent="1"/>\n\t\t\t<widget render="Label" source="feelsliketemp" position="90,120" zPosition="1" size="140,20" font="Regular;14" transparent="1"/>\n\t\t\t<widget render="Label" source="condition" position="270,95" zPosition="1" size="300,20" font="Regular;18" transparent="1"/>\n\t\t\t<widget render="Label" source="wind_condition" position="270,115" zPosition="1" size="300,20" font="Regular;18" transparent="1"/>\n\t\t\t<widget render="Label" source="humidity" position="270,135" zPosition="1" size="300,20" font="Regular;18" valign="bottom" transparent="1"/>\n\t\t\t<widget render="Label" source="weekday1" position="32,170" zPosition="1" size="111,40" halign="center" valign="center" font="Regular;18" transparent="1"/>\n\t\t\t<widget name="weekday1_icon" position="60,215" zPosition="1" size="55,45" alphatest="blend"/>\n\t\t\t<widget render="Label" source="weekday1_temp" position="32,270" zPosition="1" size="111,90" halign="center" valign="top" font="Regular;16" transparent="1"/>\n\t\t\t<widget render="Label" source="weekday2" position="154,170" zPosition="1" size="111,40" halign="center" valign="center" font="Regular;18" transparent="1"/>\n\t\t\t<widget name="weekday2_icon" position="182,215" zPosition="1" size="55,45" alphatest="blend"/>\n\t\t\t<widget render="Label" source="weekday2_temp" position="154,270" zPosition="1" size="111,90" halign="center" valign="top" font="Regular;16" transparent="1"/>\n\t\t\t<widget render="Label" source="weekday3" position="276,170" zPosition="1" size="111,40" halign="center" valign="center" font="Regular;18" transparent="1"/>\n\t\t\t<widget name="weekday3_icon" position="304,215" zPosition="1" size="55,45" alphatest="blend"/>\n\t\t\t<widget render="Label" source="weekday3_temp" position="276,270" zPosition="1" size="111,90" halign="center" valign="top" font="Regular;16" transparent="1"/>\n\t\t\t<widget render="Label" source="weekday4" position="398,170" zPosition="1" size="111,40" halign="center" valign="center" font="Regular;18" transparent="1"/>\n\t\t\t<widget name="weekday4_icon" position="426,215" zPosition="1" size="55,45" alphatest="blend"/>\n\t\t\t<widget render="Label" source="weekday4_temp" position="398,270" zPosition="1" size="111,90" halign="center" valign="top" font="Regular;16" transparent="1"/>\n\t\t\t<widget render="Label" source="weekday5" position="520,170" zPosition="1" size="111,40" halign="center" valign="center" font="Regular;18" transparent="1"/>\n\t\t\t<widget name="weekday5_icon" position="548,215" zPosition="1" size="55,45" alphatest="blend"/>\n\t\t\t<widget render="Label" source="weekday5_temp" position="520,270" zPosition="1" size="111,90" halign="center" valign="top" font="Regular;16" transparent="1"/>\n\t\t\t<widget render="Label" source="statustext" position="0,0" zPosition="1" size="664,364" font="Regular;20" halign="center" valign="center" transparent="1"/>\n\t\t</screen>' def __init__(self, session): Screen.__init__(self, session) self.title = _('Weather Plugin') self['actions'] = ActionMap(['WizardActions', 'DirectionActions', 'ColorActions', 'EPGSelectActions'], {'ok': self.close, 'back': self.close, 'input_date_time': self.config, 'menu': self.config, 'right': self.nextItem, 'left': self.previousItem, 'info': self.showWebsite}, -1) self['statustext'] = StaticText() self['currenticon'] = WeatherIcon() self['caption'] = StaticText() self['currentTemp'] = StaticText() self['condition'] = StaticText() self['wind_condition'] = StaticText() self['humidity'] = StaticText() self['observationtime'] = StaticText() self['observationpoint'] = StaticText() self['feelsliketemp'] = StaticText() i = 1 while i <= 5: self['weekday%s' % i] = StaticText() self['weekday%s_icon' % i] = WeatherIcon() self['weekday%s_temp' % i] = StaticText() i += 1 del i self.weatherPluginEntryIndex = -1 self.weatherPluginEntryCount = config.plugins.WeatherPlugin.entrycount.value if self.weatherPluginEntryCount >= 1: self.weatherPluginEntry = config.plugins.WeatherPlugin.Entry[0] self.weatherPluginEntryIndex = 1 else: self.weatherPluginEntry = None self.webSite = '' self.weatherData = None self.onLayoutFinish.append(self.startRun) self.onClose.append(self.__onClose) return def __onClose(self): if self.weatherData is not None: self.weatherData.cancel() return def startRun(self): if self.weatherPluginEntry is not None: self['statustext'].text = _('Getting weather information...') if self.weatherData is not None: self.weatherData.cancel() self.weatherData = None self.weatherData = MSNWeather() self.weatherData.getWeatherData(self.weatherPluginEntry.degreetype.value, self.weatherPluginEntry.weatherlocationcode.value, self.weatherPluginEntry.city.value, self.getWeatherDataCallback, self.showIcon) else: self['statustext'].text = _("No locations defined...\nPress 'Menu' to do that.") return def nextItem(self): if self.weatherPluginEntryCount != 0: if self.weatherPluginEntryIndex < self.weatherPluginEntryCount: self.weatherPluginEntryIndex = self.weatherPluginEntryIndex + 1 else: self.weatherPluginEntryIndex = 1 self.setItem() def previousItem(self): if self.weatherPluginEntryCount != 0: if self.weatherPluginEntryIndex >= 2: self.weatherPluginEntryIndex = self.weatherPluginEntryIndex - 1 else: self.weatherPluginEntryIndex = self.weatherPluginEntryCount self.setItem() def setItem(self): self.weatherPluginEntry = config.plugins.WeatherPlugin.Entry[self.weatherPluginEntryIndex - 1] self.clearFields() self.startRun() def clearFields(self): self['caption'].text = '' self['currentTemp'].text = '' self['condition'].text = '' self['wind_condition'].text = '' self['humidity'].text = '' self['observationtime'].text = '' self['observationpoint'].text = '' self['feelsliketemp'].text = '' self['currenticon'].hide() self.webSite = '' i = 1 while i <= 5: self['weekday%s' % i].text = '' self['weekday%s_icon' % i].hide() self['weekday%s_temp' % i].text = '' i += 1 def showIcon(self, index, filename): if index != -1: self['weekday%s_icon' % index].updateIcon(filename) self['weekday%s_icon' % index].show() else: self['currenticon'].updateIcon(filename) self['currenticon'].show() def getWeatherDataCallback(self, result, errortext): self['statustext'].text = '' if result == MSNWeather.ERROR: self.error(errortext) else: self['caption'].text = self.weatherData.city self.webSite = self.weatherData.url for weatherData in self.weatherData.weatherItems.items(): item = weatherData[1] if weatherData[0] == '-1': self['currentTemp'].text = '%s\xc2\xb0%s' % (item.temperature, self.weatherData.degreetype) self['condition'].text = item.skytext self['humidity'].text = _('Humidity: %s %%') % item.humidity self['wind_condition'].text = item.winddisplay c = time.strptime(item.observationtime, '%H:%M:%S') self['observationtime'].text = _('Observation time: %s') % time.strftime('%H:%M', c) self['observationpoint'].text = _('Observation point: %s') % item.observationpoint self['feelsliketemp'].text = _('Feels like %s') % item.feelslike + '\xc2\xb0' + self.weatherData.degreetype else: index = weatherData[0] c = time.strptime(item.date, '%Y-%m-%d') self['weekday%s' % index].text = '%s\n%s' % (item.day, time.strftime('%d. %b', c)) lowTemp = item.low highTemp = item.high self['weekday%s_temp' % index].text = '%s\xc2\xb0%s|%s\xc2\xb0%s\n%s' % (highTemp, self.weatherData.degreetype, lowTemp, self.weatherData.degreetype, item.skytextday) if self.weatherPluginEntryIndex == 1 and WeatherMSNComp is not None: WeatherMSNComp.updateWeather(self.weatherData, result, errortext) return def config(self): self.session.openWithCallback(self.setupFinished, MSNWeatherPluginEntriesListConfigScreen) def setupFinished(self, index, entry = None): self.weatherPluginEntryCount = config.plugins.WeatherPlugin.entrycount.value if self.weatherPluginEntryCount >= 1: if entry is not None: self.weatherPluginEntry = entry self.weatherPluginEntryIndex = index + 1 if self.weatherPluginEntry is None: self.weatherPluginEntry = config.plugins.WeatherPlugin.Entry[0] self.weatherPluginEntryIndex = 1 else: self.weatherPluginEntry = None self.weatherPluginEntryIndex = -1 self.clearFields() self.startRun() return def error(self, errortext): self.clearFields() self['statustext'].text = errortext def showWebsite(self): try: from Plugins.Extensions.Browser.Browser import Browser if self.webSite: self.session.open(Browser, config.plugins.WebBrowser.fullscreen.value, self.webSite, False) except: pass
class MSNWeatherPlugin(Screen): skin = """ <screen name="MSNWeatherPlugin" position="center,center" size="664,340" title="Weather Plugin"> <widget render="Label" source="caption" position="10,20" zPosition="1" size="600,28" font="Regular;24" transparent="1"/> <widget render="Label" source="observationtime" position="374,45" zPosition="1" size="280,20" font="Regular;14" transparent="1" halign="right" /> <widget render="Label" source="observationpoint" position="204,65" zPosition="1" size="450,40" font="Regular;14" transparent="1" halign="right" /> <widget name="currenticon" position="10,95" zPosition="1" size="55,45" alphatest="blend"/> <widget render="Label" source="currentTemp" position="90,95" zPosition="1" size="100,23" font="Regular;22" transparent="1"/> <widget render="Label" source="feelsliketemp" position="90,120" zPosition="1" size="155,40" font="Regular;14" transparent="1"/> <widget render="Label" source="condition" position="270,95" zPosition="1" size="300,20" font="Regular;18" transparent="1"/> <widget render="Label" source="wind_condition" position="270,115" zPosition="1" size="300,20" font="Regular;18" transparent="1"/> <widget render="Label" source="humidity" position="270,135" zPosition="1" size="300,20" font="Regular;18" valign="bottom" transparent="1"/> <widget render="Label" source="weekday1" position="35,170" zPosition="1" size="105,40" halign="center" valign="center" font="Regular;18" transparent="1"/> <widget name="weekday1_icon" position="60,215" zPosition="1" size="55,45" alphatest="blend"/> <widget render="Label" source="weekday1_temp" position="35,270" zPosition="1" size="105,60" halign="center" valign="bottom" font="Regular;16" transparent="1"/> <widget render="Label" source="weekday2" position="155,170" zPosition="1" size="105,40" halign="center" valign="center" font="Regular;18" transparent="1"/> <widget name="weekday2_icon" position="180,215" zPosition="1" size="55,45" alphatest="blend"/> <widget render="Label" source="weekday2_temp" position="155,270" zPosition="1" size="105,60" halign="center" valign="bottom" font="Regular;16" transparent="1"/> <widget render="Label" source="weekday3" position="275,170" zPosition="1" size="105,40" halign="center" valign="center" font="Regular;18" transparent="1"/> <widget name="weekday3_icon" position="300,215" zPosition="1" size="55,45" alphatest="blend"/> <widget render="Label" source="weekday3_temp" position="275,270" zPosition="1" size="105,60" halign="center" valign="bottom" font="Regular;16" transparent="1"/> <widget render="Label" source="weekday4" position="395,170" zPosition="1" size="105,40" halign="center" valign="center" font="Regular;18" transparent="1"/> <widget name="weekday4_icon" position="420,215" zPosition="1" size="55,45" alphatest="blend"/> <widget render="Label" source="weekday4_temp" position="395,270" zPosition="1" size="105,60" halign="center" valign="bottom" font="Regular;16" transparent="1"/> <widget render="Label" source="weekday5" position="515,170" zPosition="1" size="105,40" halign="center" valign="center" font="Regular;18" transparent="1"/> <widget name="weekday5_icon" position="540,215" zPosition="1" size="55,45" alphatest="blend"/> <widget render="Label" source="weekday5_temp" position="515,270" zPosition="1" size="105,60" halign="center" valign="bottom" font="Regular;16" transparent="1"/> <widget render="Label" source="statustext" position="0,0" zPosition="1" size="664,340" font="Regular;20" halign="center" valign="center" transparent="1"/> </screen>""" def __init__(self, session): Screen.__init__(self, session) self.title = _("Weather Plugin") self["actions"] = ActionMap(["SetupActions", "DirectionActions"], { "cancel": self.close, "menu": self.config, "right": self.nextItem, "left": self.previousItem, "info": self.showWebsite }, -1) self["statustext"] = StaticText() self["currenticon"] = WeatherIcon() self["caption"] = StaticText() self["currentTemp"] = StaticText() self["condition"] = StaticText() self["wind_condition"] = StaticText() self["humidity"] = StaticText() self["observationtime"] = StaticText() self["observationpoint"] = StaticText() self["feelsliketemp"] = StaticText() i = 1 while i <= 5: self["weekday%s" % i] = StaticText() self["weekday%s_icon" %i] = WeatherIcon() self["weekday%s_temp" % i] = StaticText() i += 1 del i self.weatherPluginEntryIndex = -1 self.weatherPluginEntryCount = config.plugins.WeatherPlugin.entrycount.value if self.weatherPluginEntryCount >= 1: self.weatherPluginEntry = config.plugins.WeatherPlugin.Entry[0] self.weatherPluginEntryIndex = 1 else: self.weatherPluginEntry = None self.webSite = "" self.weatherData = None self.onLayoutFinish.append(self.startRun) self.onClose.append(self.__onClose) def __onClose(self): if self.weatherData is not None: self.weatherData.cancel() def startRun(self): if self.weatherPluginEntry is not None: self["statustext"].text = _("Getting weather information...") if self.weatherData is not None: self.weatherData.cancel() self.weatherData = None self.weatherData = MSNWeather() self.weatherData.getWeatherData(self.weatherPluginEntry.degreetype.value, self.weatherPluginEntry.weatherlocationcode.value, self.weatherPluginEntry.city.value, self.getWeatherDataCallback, self.showIcon) else: self["statustext"].text = _("No locations defined...\nPress 'Menu' to do that.") def nextItem(self): if self.weatherPluginEntryCount != 0: if self.weatherPluginEntryIndex < self.weatherPluginEntryCount: self.weatherPluginEntryIndex = self.weatherPluginEntryIndex + 1 else: self.weatherPluginEntryIndex = 1 self.setItem() def previousItem(self): if self.weatherPluginEntryCount != 0: if self.weatherPluginEntryIndex >= 2: self.weatherPluginEntryIndex = self.weatherPluginEntryIndex - 1 else: self.weatherPluginEntryIndex = self.weatherPluginEntryCount self.setItem() def setItem(self): self.weatherPluginEntry = config.plugins.WeatherPlugin.Entry[self.weatherPluginEntryIndex-1] self.clearFields() self.startRun() def clearFields(self): self["caption"].text = "" self["currentTemp"].text = "" self["condition"].text = "" self["wind_condition"].text = "" self["humidity"].text = "" self["observationtime"].text = "" self["observationpoint"].text = "" self["feelsliketemp"].text = "" self["currenticon"].hide() self.webSite = "" i = 1 while i <= 5: self["weekday%s" % i].text = "" self["weekday%s_icon" %i].hide() self["weekday%s_temp" % i].text = "" i += 1 def showIcon(self,index, filename): if index <> -1: self["weekday%s_icon" % index].updateIcon(filename) self["weekday%s_icon" % index].show() else: self["currenticon"].updateIcon(filename) self["currenticon"].show() def getWeatherDataCallback(self, result, errortext): self["statustext"].text = "" if result == MSNWeather.ERROR: self.error(errortext) else: self["caption"].text = self.weatherData.city self.webSite = self.weatherData.url for weatherData in self.weatherData.weatherItems.items(): item = weatherData[1] if weatherData[0] == "-1": # current self["currentTemp"].text = "%s°%s" % (item.temperature, self.weatherData.degreetype) self["condition"].text = item.skytext self["humidity"].text = _("Humidity: %s %%") % item.humidity self["wind_condition"].text = item.winddisplay c = time.strptime(item.observationtime, "%H:%M:%S") self["observationtime"].text = _("Observation time: %s") % time.strftime("%H:%M",c) self["observationpoint"].text = _("Observation point: %s") % item.observationpoint self["feelsliketemp"].text = _("Feels like %s") % item.feelslike + "°" + self.weatherData.degreetype else: index = weatherData[0] c = time.strptime(item.date,"%Y-%m-%d") self["weekday%s" % index].text = "%s\n%s" % (item.day, time.strftime("%d. %b",c)) lowTemp = item.low highTemp = item.high self["weekday%s_temp" % index].text = "%s°%s|%s°%s\n%s" % (highTemp, self.weatherData.degreetype, lowTemp, self.weatherData.degreetype, item.skytextday) if self.weatherPluginEntryIndex == 1 and WeatherMSNComp is not None: WeatherMSNComp.updateWeather(self.weatherData, result, errortext) def config(self): self.session.openWithCallback(self.setupFinished, MSNWeatherPluginEntriesListConfigScreen) def setupFinished(self, index, entry = None): self.weatherPluginEntryCount = config.plugins.WeatherPlugin.entrycount.value if self.weatherPluginEntryCount >= 1: if entry is not None: self.weatherPluginEntry = entry self.weatherPluginEntryIndex = index + 1 if self.weatherPluginEntry is None: self.weatherPluginEntry = config.plugins.WeatherPlugin.Entry[0] self.weatherPluginEntryIndex = 1 else: self.weatherPluginEntry = None self.weatherPluginEntryIndex = -1 self.clearFields() self.startRun() def error(self, errortext): self.clearFields() self["statustext"].text = errortext def showWebsite(self): try: from Plugins.Extensions.Browser.Browser import Browser if self.webSite: self.session.open(Browser, config.plugins.WebBrowser.fullscreen.value, self.webSite, False) except: pass # I dont care if browser is installed or not...
class MSNWeatherPlugin(Screen): skin = '\n\t\t<screen name="MSNWeatherPlugin" position="center,center" size="664,364" title="Weather Plugin">\n\t\t\t<widget render="Label" source="caption" position="10,20" zPosition="1" size="600,28" font="Regular;24" transparent="1"/>\n\t\t\t<widget render="Label" source="observationtime" position="374,45" zPosition="1" size="280,20" font="Regular;14" transparent="1" halign="right" />\n\t\t\t<widget render="Label" source="observationpoint" position="204,65" zPosition="1" size="450,40" font="Regular;14" transparent="1" halign="right" />\n\t\t\t<widget name="currenticon" position="10,95" zPosition="1" size="55,45" alphatest="blend"/>\n\t\t\t<widget render="Label" source="currentTemp" position="90,95" zPosition="1" size="100,23" font="Regular;22" transparent="1"/>\n\t\t\t<widget render="Label" source="feelsliketemp" position="90,120" zPosition="1" size="140,20" font="Regular;14" transparent="1"/>\n\t\t\t<widget render="Label" source="condition" position="270,95" zPosition="1" size="300,20" font="Regular;18" transparent="1"/>\n\t\t\t<widget render="Label" source="wind_condition" position="270,115" zPosition="1" size="300,20" font="Regular;18" transparent="1"/>\n\t\t\t<widget render="Label" source="humidity" position="270,135" zPosition="1" size="300,20" font="Regular;18" valign="bottom" transparent="1"/>\n\t\t\t<widget render="Label" source="weekday1" position="32,170" zPosition="1" size="111,40" halign="center" valign="center" font="Regular;18" transparent="1"/>\n\t\t\t<widget name="weekday1_icon" position="60,215" zPosition="1" size="55,45" alphatest="blend"/>\n\t\t\t<widget render="Label" source="weekday1_temp" position="32,270" zPosition="1" size="111,90" halign="center" valign="top" font="Regular;16" transparent="1"/>\n\t\t\t<widget render="Label" source="weekday2" position="154,170" zPosition="1" size="111,40" halign="center" valign="center" font="Regular;18" transparent="1"/>\n\t\t\t<widget name="weekday2_icon" position="182,215" zPosition="1" size="55,45" alphatest="blend"/>\n\t\t\t<widget render="Label" source="weekday2_temp" position="154,270" zPosition="1" size="111,90" halign="center" valign="top" font="Regular;16" transparent="1"/>\n\t\t\t<widget render="Label" source="weekday3" position="276,170" zPosition="1" size="111,40" halign="center" valign="center" font="Regular;18" transparent="1"/>\n\t\t\t<widget name="weekday3_icon" position="304,215" zPosition="1" size="55,45" alphatest="blend"/>\n\t\t\t<widget render="Label" source="weekday3_temp" position="276,270" zPosition="1" size="111,90" halign="center" valign="top" font="Regular;16" transparent="1"/>\n\t\t\t<widget render="Label" source="weekday4" position="398,170" zPosition="1" size="111,40" halign="center" valign="center" font="Regular;18" transparent="1"/>\n\t\t\t<widget name="weekday4_icon" position="426,215" zPosition="1" size="55,45" alphatest="blend"/>\n\t\t\t<widget render="Label" source="weekday4_temp" position="398,270" zPosition="1" size="111,90" halign="center" valign="top" font="Regular;16" transparent="1"/>\n\t\t\t<widget render="Label" source="weekday5" position="520,170" zPosition="1" size="111,40" halign="center" valign="center" font="Regular;18" transparent="1"/>\n\t\t\t<widget name="weekday5_icon" position="548,215" zPosition="1" size="55,45" alphatest="blend"/>\n\t\t\t<widget render="Label" source="weekday5_temp" position="520,270" zPosition="1" size="111,90" halign="center" valign="top" font="Regular;16" transparent="1"/>\n\t\t\t<widget render="Label" source="statustext" position="0,0" zPosition="1" size="664,364" font="Regular;20" halign="center" valign="center" transparent="1"/>\n\t\t</screen>' def __init__(self, session): Screen.__init__(self, session) self.title = _('Weather Plugin') self['actions'] = ActionMap( [ 'WizardActions', 'DirectionActions', 'ColorActions', 'EPGSelectActions' ], { 'ok': self.close, 'back': self.close, 'input_date_time': self.config, 'menu': self.config, 'right': self.nextItem, 'left': self.previousItem, 'info': self.showWebsite }, -1) self['statustext'] = StaticText() self['currenticon'] = WeatherIcon() self['caption'] = StaticText() self['currentTemp'] = StaticText() self['condition'] = StaticText() self['wind_condition'] = StaticText() self['humidity'] = StaticText() self['observationtime'] = StaticText() self['observationpoint'] = StaticText() self['feelsliketemp'] = StaticText() i = 1 while i <= 5: self['weekday%s' % i] = StaticText() self['weekday%s_icon' % i] = WeatherIcon() self['weekday%s_temp' % i] = StaticText() i += 1 del i self.weatherPluginEntryIndex = -1 self.weatherPluginEntryCount = config.plugins.WeatherPlugin.entrycount.value if self.weatherPluginEntryCount >= 1: self.weatherPluginEntry = config.plugins.WeatherPlugin.Entry[0] self.weatherPluginEntryIndex = 1 else: self.weatherPluginEntry = None self.webSite = '' self.weatherData = None self.onLayoutFinish.append(self.startRun) self.onClose.append(self.__onClose) return def __onClose(self): if self.weatherData is not None: self.weatherData.cancel() return def startRun(self): if self.weatherPluginEntry is not None: self['statustext'].text = _('Getting weather information...') if self.weatherData is not None: self.weatherData.cancel() self.weatherData = None self.weatherData = MSNWeather() self.weatherData.getWeatherData( self.weatherPluginEntry.degreetype.value, self.weatherPluginEntry.weatherlocationcode.value, self.weatherPluginEntry.city.value, self.getWeatherDataCallback, self.showIcon) else: self['statustext'].text = _( "No locations defined...\nPress 'Menu' to do that.") return def nextItem(self): if self.weatherPluginEntryCount != 0: if self.weatherPluginEntryIndex < self.weatherPluginEntryCount: self.weatherPluginEntryIndex = self.weatherPluginEntryIndex + 1 else: self.weatherPluginEntryIndex = 1 self.setItem() def previousItem(self): if self.weatherPluginEntryCount != 0: if self.weatherPluginEntryIndex >= 2: self.weatherPluginEntryIndex = self.weatherPluginEntryIndex - 1 else: self.weatherPluginEntryIndex = self.weatherPluginEntryCount self.setItem() def setItem(self): self.weatherPluginEntry = config.plugins.WeatherPlugin.Entry[ self.weatherPluginEntryIndex - 1] self.clearFields() self.startRun() def clearFields(self): self['caption'].text = '' self['currentTemp'].text = '' self['condition'].text = '' self['wind_condition'].text = '' self['humidity'].text = '' self['observationtime'].text = '' self['observationpoint'].text = '' self['feelsliketemp'].text = '' self['currenticon'].hide() self.webSite = '' i = 1 while i <= 5: self['weekday%s' % i].text = '' self['weekday%s_icon' % i].hide() self['weekday%s_temp' % i].text = '' i += 1 def showIcon(self, index, filename): if index != -1: self['weekday%s_icon' % index].updateIcon(filename) self['weekday%s_icon' % index].show() else: self['currenticon'].updateIcon(filename) self['currenticon'].show() def getWeatherDataCallback(self, result, errortext): self['statustext'].text = '' if result == MSNWeather.ERROR: self.error(errortext) else: self['caption'].text = self.weatherData.city self.webSite = self.weatherData.url for weatherData in self.weatherData.weatherItems.items(): item = weatherData[1] if weatherData[0] == '-1': self['currentTemp'].text = '%s\xc2\xb0%s' % ( item.temperature, self.weatherData.degreetype) self['condition'].text = item.skytext self['humidity'].text = _( 'Humidity: %s %%') % item.humidity self['wind_condition'].text = item.winddisplay c = time.strptime(item.observationtime, '%H:%M:%S') self['observationtime'].text = _( 'Observation time: %s') % time.strftime('%H:%M', c) self['observationpoint'].text = _( 'Observation point: %s') % item.observationpoint self['feelsliketemp'].text = _( 'Feels like %s' ) % item.feelslike + '\xc2\xb0' + self.weatherData.degreetype else: index = weatherData[0] c = time.strptime(item.date, '%Y-%m-%d') self['weekday%s' % index].text = '%s\n%s' % (item.day, time.strftime('%d. %b', c)) lowTemp = item.low highTemp = item.high self['weekday%s_temp' % index].text = '%s\xc2\xb0%s|%s\xc2\xb0%s\n%s' % ( highTemp, self.weatherData.degreetype, lowTemp, self.weatherData.degreetype, item.skytextday) if self.weatherPluginEntryIndex == 1 and WeatherMSNComp is not None: WeatherMSNComp.updateWeather(self.weatherData, result, errortext) return def config(self): self.session.openWithCallback(self.setupFinished, MSNWeatherPluginEntriesListConfigScreen) def setupFinished(self, index, entry=None): self.weatherPluginEntryCount = config.plugins.WeatherPlugin.entrycount.value if self.weatherPluginEntryCount >= 1: if entry is not None: self.weatherPluginEntry = entry self.weatherPluginEntryIndex = index + 1 if self.weatherPluginEntry is None: self.weatherPluginEntry = config.plugins.WeatherPlugin.Entry[0] self.weatherPluginEntryIndex = 1 else: self.weatherPluginEntry = None self.weatherPluginEntryIndex = -1 self.clearFields() self.startRun() return def error(self, errortext): self.clearFields() self['statustext'].text = errortext def showWebsite(self): try: from Plugins.Extensions.Browser.Browser import Browser if self.webSite: self.session.open(Browser, config.plugins.WebBrowser.fullscreen.value, self.webSite, False) except: pass