From 2f6656e9e588acef58d288de3b77cafcd008146b Mon Sep 17 00:00:00 2001 From: javiplx Date: Fri, 4 Jun 2010 10:32:51 +0000 Subject: [PATCH] Implemented zoom level change git-svn-id: file:///svnroot/wifihood/trunk/wifiscanner@9 c51dfc6a-5949-4919-9c8e-f207a149c383 --- wifiview | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-) diff --git a/wifiview b/wifiview index ce26e21..251f828 100755 --- a/wifiview +++ b/wifiview @@ -136,6 +136,16 @@ class mapWidget(gtk.Image): 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 @@ -160,6 +170,42 @@ class mapWidget(gtk.Image): 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): @@ -238,6 +284,9 @@ class MapWindow: 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 ) @@ -247,14 +296,29 @@ class MapWindow: 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() -- 1.7.9.5