From 3bd20cc995862765f50b14a204e4900cec93255d Mon Sep 17 00:00:00 2001 From: fgau Date: Tue, 3 Feb 2009 13:27:10 +0000 Subject: [PATCH] permission probs II git-svn-id: http://www.neo1973-germany.de/svn@241 46df4e5c-bc4e-4628-a0fc-830ba316316d --- epydial/weather_screen.py | 69 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100755 epydial/weather_screen.py 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