diff --git a/pylgrim/pylgrim.py b/pylgrim/pylgrim.py index 607441d..b23709f 100755 --- a/pylgrim/pylgrim.py +++ b/pylgrim/pylgrim.py @@ -32,42 +32,20 @@ import ecore.evas from dbus import SystemBus, Interface import time import math -import urllib - -class Tile(evas.Image): - def __init__(self, canvas): - evas.Image.__init__(self,canvas) - self.pass_events = True - self.show() - #we need this to store the original position while the zoom animations - self.position = (0,0) - - def set_position(self, x, y): - self.position = (x,y) - self.move(x,y) - -class Mark(evas.Image): - def __init__(self, canvas): - evas.Image.__init__(self,canvas) - self.pass_events = True - self.show() - #we need this to store the original position while the zoom animations - self.position = (0,0) - - def set_position(self, x, y): - self.position = (x,y) - self.move(x,y) +from urllib2 import build_opener class PylgrimMap(object): + def __init__(self): + self.opener = build_opener() def download(self, x,y,z): filename = "%d/%d/%d.png"%(z,x,y) print 'download', filename try: dirname = "%d/%d"%(z,x) if not os.path.exists(dirname): - os.makedirs(dirname) + os.makedirs(dirname) localFile = open(filename, 'w') - webFile = urllib.urlopen("http://a.tile.openstreetmap.org/%d/%d/%d.png"%(z,x,y)) + webFile = self.opener.open("http://a.tile.openstreetmap.org/%d/%d/%d.png"%(z,x,y)) localFile.write(webFile.read()) webFile.close() localFile.close() @@ -76,9 +54,33 @@ class PylgrimMap(object): if os.path.exists(filename): os.unlink(filename) - class PylgrimView(edje.Edje, PylgrimMap): + class Tile(evas.Image): + def __init__(self, canvas): + evas.Image.__init__(self,canvas) + self.pass_events = True + self.show() + #we need this to store the original position while the zoom animations + self.position = (0,0) + + def set_position(self, x, y): + self.position = (x,y) + self.move(x,y) + + class Mark(evas.Image): + def __init__(self, canvas): + evas.Image.__init__(self,canvas) + self.pass_events = True + self.show() + #we need this to store the original position while the zoom animations + self.position = (0,0) + + def set_position(self, x, y): + self.position = (x,y) + self.move(x,y) + def __init__(self, evas_canvas, filename, initial_lat, initial_lon, initial_zoom=10, offline=False, use_overlay=True): + PylgrimMap.__init__(self) self.evas_canvas = evas_canvas self.offline = offline self.use_overlay = use_overlay @@ -151,7 +153,7 @@ class PylgrimView(edje.Edje, PylgrimMap): self.set_current_tile(initial_lat, initial_lon, initial_zoom) ''' - self.marker = Mark(self.evas_canvas.evas_obj.evas) + self.marker = PylgrimView.Mark(self.evas_canvas.evas_obj.evas) self.marker.file_set("blue-dot.png") self.marker.lat = 49.073866 self.marker.lon = 8.184814 @@ -165,7 +167,7 @@ class PylgrimView(edje.Edje, PylgrimMap): self.marker.show() ''' - ecore.timer_add(3, self.init_dbus) + #ecore.timer_add(3, self.init_dbus) def init_dbus(self): print 'LocationFeed init_dbus' @@ -262,7 +264,7 @@ class PylgrimView(edje.Edje, PylgrimMap): self.icons = [] #fill for i in xrange((2*self.border_x+1)*(2*self.border_y+1)): - self.icons.append(Tile(self.evas_canvas.evas_obj.evas)) + self.icons.append(PylgrimView.Tile(self.evas_canvas.evas_obj.evas)) if not self.offline: #add all tiles that are not yet downloaded to a list for i in xrange(2*self.border_x+1):