From 12828da0c15d6bec91863846b2c02ba08c600c48 Mon Sep 17 00:00:00 2001 From: javiplx Date: Fri, 4 Jun 2010 22:44:55 +0000 Subject: [PATCH] Ported to use hildon bindings if available git-svn-id: file:///svnroot/wifihood/trunk/wifiscanner@14 c51dfc6a-5949-4919-9c8e-f207a149c383 --- wifiview | 141 +++++++++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 102 insertions(+), 39 deletions(-) diff --git a/wifiview b/wifiview index f8cd667..90bca29 100755 --- a/wifiview +++ b/wifiview @@ -2,6 +2,10 @@ import gtk import gobject , gconf +try : + import hildon +except : + hildon = False import urllib2 import math @@ -13,7 +17,7 @@ class WifihoodConfig : def __init__ ( self ) : self.lat , self.lon = 40.40491 , -3.6774 self.zoom = 11 - self.mapsdir = "/home/user/MyDocs/.maps" + self.mapsdir = "/home/user/MyDocs/.maps" self.client = gconf.client_get_default() @@ -170,6 +174,12 @@ class mapWidget ( gtk.Image , WifihoodConfig ) : self.composeMap() self.show() + def ZoomChange ( self , selector ) : + model = selector.get_model(0) + active = selector.get_active(0) + value = model.get( model.get_iter(active) , 0 ) + self.SetZoom( value[0] ) + def SetZoom( self , zoom ) : self.hide() lat = self.tiley2lat( ( self.reftile_y , self.refpix_y ) , self.zoom ) @@ -204,41 +214,67 @@ class mapWidget ( gtk.Image , WifihoodConfig ) : self.composeMap() self.show() -class ZoomDialog ( gtk.Dialog ) : +if hildon : + + class ZoomDialog ( hildon.TouchSelector ) : + + def __init__ ( self , widget ) : + hildon.TouchSelector.__init__( self ) # , text=True ) + + zooms = gtk.ListStore(int,str) + + active = index = 0 + for zoom in range(8,19) : + iter = zooms.append() + zooms.set( iter , 0 , zoom , 1 , "Level %2d" % zoom ) + if zoom == widget.zoom : + active = index + index += 1 + + renderer = gtk.CellRendererText() + column = self.append_column( zooms , renderer ) + column.set_property('text-column', 1) - 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 - ) - ) + # NOTE : with text=True, we must use 1 instead of 0 + self.set_active( 0 , active ) - zooms = gtk.ListStore(int) - combo = gtk.ComboBox( zooms ) +else : - for zoom in range(8,19) : - iter = zooms.append() - zooms.set( iter , 0 , zoom ) - if zoom == widget.zoom : - combo.set_active_iter( iter ) + class ZoomDialog ( gtk.Dialog ) : - cell = gtk.CellRendererText() - combo.pack_start(cell, True) - combo.add_attribute(cell, 'text', 0) + 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 + ) + ) - self.vbox.pack_start(combo , True, True, 0) + zooms = gtk.ListStore(int) + combo = gtk.ComboBox( zooms ) - self.connect_object( "response", self.response , combo , widget ) + 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() - 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: @@ -296,14 +332,20 @@ class MapWindow: def __init__(self): - self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) - + if hildon : + self.window = hildon.Window() + program = hildon.Program.get_instance() + program.add_window(self.window) + gtk.set_application_name( "Wifi View" ) + else : + self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) + self.window.connect("destroy", self.destroy) self.window.set_border_width(10) - + self.window.connect("key-press-event", self.on_key_press) - + vbox = gtk.VBox(False, 0) self.window.add( vbox ) @@ -317,7 +359,7 @@ class MapWindow: # self.map = mapWidget() vbox.pack_end( self.map , True , True , 5) - + self.create_menu( vbox ) # and the window @@ -331,13 +373,34 @@ class MapWindow: dialog.show_all() def create_menu ( self , vbox ) : - menubar = gtk.MenuBar() + if hildon : + + self.menubar = menubar = hildon.AppMenu() + + #zoomlevel = hildon.Button(gtk.HILDON_SIZE_AUTO, + # hildon.BUTTON_ARRANGEMENT_VERTICAL, + # "Zoom level", None) + #zoomlevel.connect_object( "clicked", self.zoomstack, self.map ) + selector = ZoomDialog( self.map ) + zoomlevel = hildon.PickerButton(gtk.HILDON_SIZE_AUTO, + hildon.BUTTON_ARRANGEMENT_VERTICAL) + zoomlevel.set_title( "Zoom" ) + zoomlevel.set_selector( selector ) + zoomlevel.connect_object( "value-changed", self.map.ZoomChange , selector ) + menubar.append( zoomlevel ) + + menubar.show_all() + self.window.set_app_menu( menubar ) + + else : + + menubar = gtk.MenuBar() - zoomlevel = gtk.MenuItem( label="Zoom level" ) - zoomlevel.connect_object( "activate", self.zoomdialog, self.map ) - menubar.append( zoomlevel ) + zoomlevel = gtk.MenuItem( label="Zoom level" ) + zoomlevel.connect_object( "activate", self.zoomdialog, self.map ) + menubar.append( zoomlevel ) - vbox.pack_start(menubar,True,True,5) + vbox.pack_start(menubar,True,True,5) def main(self): gtk.main() -- 1.7.9.5