BUGFIX#6889 : set window labels and desktop files
[wifihood] / wifiscanner / wifiview
1 #!/usr/bin/python
2
3 import gtk
4 try :
5     import hildon
6 except :
7     hildon = False
8
9 import math
10
11 import wifimap.config
12
13 import wifimap.view
14
15
16 class AbstractMapWindow:
17
18     def destroy(self, widget, data=None):
19         gtk.main_quit()
20
21     def press_event ( self, widget, event, *args ) :
22       border_x , border_y = 40 , 30
23       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 ) :
24         self.click_x = event.x
25         self.click_y = event.y
26
27     def release_event ( self, widget, event, *args ) :
28       min_shift = 50
29       if self.click_x is not None and self.click_y is not None :
30         delta_x = int( event.x - self.click_x )
31         delta_y = int( event.y - self.click_y )
32         shift = math.sqrt( delta_x * delta_x + delta_y * delta_y )
33         if shift > min_shift :
34           self.map.Shift(delta_x, delta_y)
35       self.click_x , self.click_y = None , None
36
37     def on_key_press ( self, widget, event, *args ) :
38       if event.keyval == gtk.keysyms.Up :
39           self.map.Up()
40       elif event.keyval == gtk.keysyms.Down :
41           self.map.Down()
42       elif event.keyval == gtk.keysyms.Right :
43           self.map.Right()
44       elif event.keyval == gtk.keysyms.Left :
45           self.map.Left()
46       else :
47           print "UNKNOWN",event.keyval
48
49     def __init__( self , map_size=(800,480) ) :
50
51         self.connect("destroy", self.destroy)
52
53         self.set_border_width(10)
54
55         self.connect("key-press-event", self.on_key_press)
56
57         self.vbox = gtk.VBox(False, 0)
58
59         self.set_events( gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.BUTTON_RELEASE_MASK )
60         self.connect('button_press_event', self.press_event)
61         self.connect('button_release_event', self.release_event)
62
63         self.config = wifimap.config.Configuration()
64         self.map = wifimap.view.mapWidget( self.config , map_size )
65         self.vbox.pack_end( self.map , True , True , 5)
66
67         self.size_x , self.size_y = map_size
68         self.click_x , self.click_y = None , None
69
70     def run(self):
71         gtk.main()
72
73 if hildon :
74
75     class MapWindow ( AbstractMapWindow , hildon.Window ) :
76
77         def __init__(self):
78             hildon.Window.__init__( self )
79             zoomlevel.set_title( "Wifi Map" )
80             program = hildon.Program.get_instance()
81             program.add_window(self)
82
83             AbstractMapWindow.__init__(self)
84             self.add( self.vbox )
85
86             self.create_menu( self.vbox )
87
88             self.show_all()
89
90         def create_menu ( self , vbox ) :
91
92             self.menubar = menubar = hildon.AppMenu()
93
94             selector = wifimap.config.ZoomDialog( self.map.conf , self.map.SetZoom )
95             zoomlevel = hildon.PickerButton(gtk.HILDON_SIZE_AUTO,
96                                           hildon.BUTTON_ARRANGEMENT_VERTICAL)
97             zoomlevel.set_title( "Zoom" )
98             zoomlevel.set_selector( selector )
99             zoomlevel.connect_object( "value-changed", selector.zoomdialog , zoomlevel , self.map.conf )
100             menubar.append( zoomlevel )
101
102             menubar.show_all()
103             self.set_app_menu( menubar )
104
105 else :
106
107     class MapWindow ( AbstractMapWindow , gtk.Window ) :
108
109         def __init__(self):
110             gtk.Window.__init__( self , gtk.WINDOW_TOPLEVEL )
111             AbstractMapWindow.__init__(self)
112             self.add( self.vbox )
113             self.create_menu( self.vbox )
114             self.show_all()
115
116             self.resize( self.size_x , self.size_y)
117
118         def create_menu ( self , vbox ) :
119
120             menubar = gtk.MenuBar()
121
122             zoomlevel = gtk.MenuItem( label="Zoom level" )
123             zoomlevel.connect_object( "activate", self.zoomdialog, self.map.conf )
124             menubar.append( zoomlevel )
125
126             vbox.pack_start(menubar,True,True,5)
127
128         def zoomdialog ( self , config ) :
129             dialog = wifimap.config.ZoomDialog( config , self.map.SetZoom )
130             dialog.show_all()
131
132 window = MapWindow()
133 window.run()
134