diff --git a/epydial/weather_screen.py b/epydial/weather_screen.py
new file mode 100755
index 0000000..f713a1a
--- /dev/null
+++ b/epydial/weather_screen.py
@@ -0,0 +1,69 @@
+#!/usr/bin/env python2.5
+# -*- coding: utf-8 -*-
+__author__ = "Soeren Apel (abraxa@dar-clan.de), Frank Gau (fgau@gau-net.de), Thomas Gstaedner (thomas (a) gstaedtner (.) net)"
+__version__ = "prototype"
+__copyright__ = "Copyright (c) 2008"
+__license__ = "GPL3"
+
+ZIP_CODE = 'GMXX0049' #GMXX0007 Berlin, GMXX0049 Hamburg
+TEMP_UNIT = 'c'
+
+WEATHER_URL = 'http://xml.weather.yahoo.com/forecastrss?p=%s&u=%s'
+WEATHER_NS = 'http://xml.weather.yahoo.com/ns/rss/1.0'
+
+from epydial import *
+import urllib
+from xml.dom import minidom
+
+class WeatherScreen(EdjeGroup):
+ def __init__(self, screen_manager):
+ EdjeGroup.__init__(self, screen_manager, WEATHER_SCREEN_NAME)
+ self.weather_for_zip(ZIP_CODE, TEMP_UNIT)
+
+ def on_get_pix(self, icon):
+ self.image = self.evas.Image(file=PIX_WEATHER_FILE_PATH + icon + '.png')
+ x, y = self.image.image_size
+ dx, dy = self.part_size_get('clipper')
+ print 'x, y, dx, dy: ', x, y, dx, dy
+ if x * dy > y * dx:
+ y = y * dx / x
+ x = dx
+ else:
+ x = x * dy / y
+ y = dy
+ print 'x, y, dx, dy: ', x, y, dx, dy
+ self.image.fill = 0, 0, x, y
+ self.part_swallow('icon', self.image)
+ self.obj = self.part_object_get('clipper')
+ self.obj.size = x, y
+ self.obj.show()
+ print 'obj: ', self.obj
+
+ def weather_for_zip(self, zip_code, unit):
+ url = WEATHER_URL % (zip_code, unit)
+ dom = minidom.parse(urllib.urlopen(url))
+ forecasts = []
+ for node in dom.getElementsByTagNameNS(WEATHER_NS, 'forecast'):
+ forecasts.append({
+ 'date': node.getAttribute('date'),
+ 'low': node.getAttribute('low'),
+ 'high': node.getAttribute('high'),
+ 'condition': node.getAttribute('text'),
+ 'code': node.getAttribute('code'),
+ })
+ ycondition = dom.getElementsByTagNameNS(WEATHER_NS, 'condition')[0]
+
+ self.on_get_pix(ycondition.getAttribute('code'))
+ self.part_text_set("location", dom.getElementsByTagName('title')[0].firstChild.data[17:])
+ self.part_text_set("current", "current condition: %s
current temp: %s" % (ycondition.getAttribute('text'), ycondition.getAttribute('temp')))
+ self.part_text_set("forecasts", "forecasts:
date: %s
low: %s
high: %s
condition: %s" % (forecasts[1]['date'], forecasts[1]['low'], forecasts[1]['high'], forecasts[1]['condition']))
+
+ @edje.decorators.signal_callback("mouse,up,1", "*")
+ def on_edje_signal_dialer_status_triggered(self, emission, source):
+ if source == "button_12":
+ self.image.delete()
+ PyneoController.show_dialer_screen()
+ if source == "headline":
+ self.image.delete()
+ self.weather_for_zip(ZIP_CODE, TEMP_UNIT)
+ print 'source: ', source