13 class AbstractMapWindow:
15 def destroy(self, widget, data=None):
18 def press_event ( self, widget, event, *args ) :
19 border_x , border_y = 40 , 30
20 if event.x > border_x and event.y > border_y and event.x < ( self.size_x - border_x ) and event.y < ( self.size_y - border_y ) :
21 self.click_x = event.x
22 self.click_y = event.y
24 def release_event ( self, widget, event, *args ) :
26 if self.click_x is not None and self.click_y is not None :
27 delta_x = int( event.x - self.click_x )
28 delta_y = int( event.y - self.click_y )
29 shift = math.sqrt( delta_x * delta_x + delta_y * delta_y )
30 if shift > min_shift :
31 self.map.Shift(delta_x, delta_y)
32 self.click_x , self.click_y = None , None
34 def on_key_press ( self, widget, event, *args ) :
35 if event.keyval == gtk.keysyms.Up :
37 elif event.keyval == gtk.keysyms.Down :
39 elif event.keyval == gtk.keysyms.Right :
41 elif event.keyval == gtk.keysyms.Left :
44 print "UNKNOWN",event.keyval
46 def __init__( self , map_size=(800,480) ) :
48 self.connect("destroy", self.destroy)
50 self.set_border_width(10)
52 self.connect("key-press-event", self.on_key_press)
54 self.vbox = gtk.VBox(False, 0)
56 self.set_events( gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.BUTTON_RELEASE_MASK )
57 self.connect('button_press_event', self.press_event)
58 self.connect('button_release_event', self.release_event)
60 self.config = wifimap.config.Configuration( 'map' )
61 self.map = wifimap.view.mapWidget( self.config , map_size )
62 self.vbox.pack_end( self.map , True , True , 5)
64 self.size_x , self.size_y = map_size
65 self.click_x , self.click_y = None , None
70 class MapWindow ( AbstractMapWindow , hildon.Window ) :
73 hildon.Window.__init__( self )
74 self.set_title( "Wifi Map" )
75 program = hildon.Program.get_instance()
76 program.add_window(self)
78 AbstractMapWindow.__init__(self)
81 self.create_menu( self.vbox )
85 # self.resize( self.size_x , self.size_y)
87 def create_menu ( self , vbox ) :
89 self.menubar = menubar = hildon.AppMenu()
91 selector = wifimap.config.ZoomDialog( self.map.conf , self.map.SetZoom )
92 zoomlevel = hildon.PickerButton(gtk.HILDON_SIZE_AUTO,
93 hildon.BUTTON_ARRANGEMENT_VERTICAL)
94 zoomlevel.set_title( "Zoom" )
95 zoomlevel.set_selector( selector )
96 # zoomlevel.connect_object( "value-changed", selector.zoomdialog , zoomlevel , self.map.conf )
97 selector.connect_object( "response", selector.response , zoomlevel , self.map.conf )
98 menubar.append( zoomlevel )
101 self.set_app_menu( menubar )