self.composeMap( self.zoom )
self.show()
+ def SetZoom( self , zoom ) :
+ self.hide()
+ # FIXME : Use current lat,lon instead of hardcoded ones
+ lat , lon = 40.40491 , -3.6774
+ self.reftile_x , self.reftile_y = self.lon2tilex( lon , zoom ) , self.lat2tiley( lat , zoom )
+ self.zoom = zoom
+ self.refpix_x , self.refpix_y = 128 , 128
+ self.composeMap( zoom )
+ self.show()
+
def Up( self ) :
self.hide()
self.reftile_y -= 1
self.composeMap( self.zoom )
self.show()
+class ZoomDialog ( gtk.Dialog ) :
+
+ def __init__ ( self , widget ) :
+ gtk.Dialog.__init__( self , "Select zoom level",
+ None,
+ gtk.DIALOG_MODAL,
+ ( gtk.STOCK_OK, gtk.RESPONSE_ACCEPT,
+ gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT
+ )
+ )
+
+ zooms = gtk.ListStore(int)
+ combo = gtk.ComboBox( zooms )
+
+ for zoom in range(8,19) :
+ iter = zooms.append()
+ zooms.set( iter , 0 , zoom )
+ if zoom == widget.zoom :
+ combo.set_active_iter( iter )
+
+ cell = gtk.CellRendererText()
+ combo.pack_start(cell, True)
+ combo.add_attribute(cell, 'text', 0)
+
+ self.vbox.pack_start(combo , True, True, 0)
+
+ self.connect_object( "response", self.response , combo , widget )
+
+ def response ( self , combo , response , widget ) :
+ if response == gtk.RESPONSE_ACCEPT :
+ item = combo.get_active_iter()
+ model = combo.get_model()
+ widget.SetZoom( model.get(item,0)[0] )
+ self.destroy()
+
+
class MapWindow:
def delete_event(self, widget, event, data=None):
self.window.connect("key-press-event", self.on_key_press)
+ vbox = gtk.VBox(False, 0)
+ self.window.add( vbox )
+
# To get explicit GDK_BUTTON_PRESS instead of paired GDK_LEAVE_NOTIFY & GDK_ENTER_NOTIFY
# self.window.add_events(gtk.gdk.BUTTON_MOTION_MASK | gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.BUTTON_RELEASE_MASK | gtk.gdk.POINTER_MOTION_MASK)
self.window.set_events( gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.BUTTON_RELEASE_MASK )
self.window.connect('button_release_event', self.release_event)
#
self.map = mapWidget()
- self.window.add( self.map )
+ vbox.pack_end( self.map , True , True , 5)
+ self.create_menu( vbox )
+
# and the window
self.window.show_all()
self.size_x , self.size_y = 800 , 480
self.click_x , self.click_y = None , None
+ def zoomdialog ( self , widget ) :
+ dialog = ZoomDialog( widget )
+ dialog.show_all()
+
+ def create_menu ( self , vbox ) :
+ menubar = gtk.MenuBar()
+
+ zoomlevel = gtk.MenuItem( label="Zoom level" )
+ zoomlevel.connect_object( "activate", self.zoomdialog, self.map )
+ menubar.append( zoomlevel )
+
+ vbox.pack_start(menubar,True,True,5)
+
def main(self):
gtk.main()