diff -r 000000000000 -r ca70ae20a155 src/extras/examples/weather_info.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/extras/examples/weather_info.py Tue Feb 16 10:07:05 2010 +0530 @@ -0,0 +1,87 @@ +# Simple GUI example 2 + +# Copyright (c) 2005 Nokia Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import socket +import urllib + +import e32 +import appuifw + +choices =[(u"Los Angeles Intl Airport", "KLAX"), + (u"Dallas/Fort Forth", "KDFW"), + (u"New York/John F. Kennedy", "KJFK")] +choices_labels = [x[0] for x in choices] + +weather_url_base = "http://weather.gov/data/current_obs/" +tempfile = "c:\\weather.xml" + +def find_value(text, tag): + "Find the value between and in text. Always returns a string" + begin_tag = "<" + tag + ">" + begin = text.find(begin_tag) + end = text.find("") + if begin == -1 or end == -1: + return "" + begin += len(begin_tag) + return text[begin:end] + +def handle_selection(): + index = lb.current() + code = choices[index][1] + weather_url = weather_url_base + code + ".xml" + lb.set_list([u"Please wait..."]) + appuifw.note(u"Fetching "+ weather_url, 'info') + try: + urllib.urlretrieve(weather_url, tempfile) + f = open(tempfile, 'r') + weatherinfo = f.read() + f.close() + weather = find_value(weatherinfo, "weather") + temperature_string = find_value(weatherinfo, + "temperature_string") + appuifw.popup_menu([(u"Weather", unicode(weather)), + (u"Temperature", + unicode(temperature_string))], + unicode(code)) + except IOError: + appuifw.note(u"Connection error to server", 'error') + except: + appuifw.note(u"Could not fetch information", 'error') + lb.set_list(choices_labels) + +def handle_add(): + pass + +def handle_delete(): + pass + +def exit_key_handler(): + app_lock.signal() + +lb = appuifw.Listbox(choices_labels, handle_selection) + +old_title = appuifw.app.title +appuifw.app.title = u"Weather report" +appuifw.app.body = lb +appuifw.app.menu = [(u"Add new item", handle_add), + (u"Delete item", handle_delete)] +appuifw.app.exit_key_handler = exit_key_handler + +app_lock = e32.Ao_lock() +app_lock.wait() + +appuifw.app.title = old_title +