2a74a655abf38c41329322e3ec81c2414213c4d9
[wifihood] / wifiscanner / wifiscanner
1 #!/usr/bin/python
2
3 import wifimap
4
5 import gtk , pango
6 import hildon
7
8 import gobject
9
10 def hello(widget, data):
11     data.do_start()
12     if widget.handler_id :
13         widget.disconnect( widget.handler_id )
14         widget.handler_id = widget.connect("clicked", bye, data)
15         widget.set_label("Switch Off!")
16
17 def bye(widget, data):
18     data.do_stop()
19     if widget.handler_id :
20         widget.disconnect( widget.handler_id )
21         widget.handler_id = widget.connect("clicked", hello, data)
22         widget.set_label("Switch On!")
23
24 def enable_agps(widget):
25     if widget.get_active() :
26         print "%s state is active" % widget
27
28 def scana(widget, data):
29     if not data._timer :
30         data._timer = gobject.timeout_add( 5000 , data.scan )
31     else :
32         hildon.hildon_banner_show_information( widget , "icon_path" , "Scanning was already active" )
33     if widget.handler_id :
34         widget.disconnect( widget.handler_id )
35         widget.handler_id = widget.connect("clicked", scano, data)
36         widget.set_label("Stop scanning now !!")
37
38 def scano(widget, data):
39     if data._timer :
40         hildon.hildon_banner_show_information( widget , "icon_path" , "Timer was running, stopping it" )
41         gobject.source_remove( data._timer )
42         data._timer = None
43         data.stop()
44     else :
45         hildon.hildon_banner_show_information( widget , "icon_path" , "Scanning is not active" )
46     if widget.handler_id :
47         widget.disconnect( widget.handler_id )
48         widget.handler_id = widget.connect("clicked", scana, data)
49         widget.set_label("Start scanning now !!")
50
51 def main():
52
53     window = hildon.Window()
54     program = hildon.Program.get_instance()
55     program.add_window(window)
56
57     gpsdev = wifimap.Scanner( window )
58
59     window.connect("delete_event", gtk.main_quit, None)
60
61     vbox = gtk.VBox(homogeneous=False, spacing=0)
62     top_frame = gtk.Frame()
63     bottom_frame = gtk.Frame()
64     bottom_box = gtk.HBox(homogeneous=False, spacing=0)
65
66     hbox = gtk.HBox(homogeneous=False, spacing=0)
67     top_frame.add(hbox)
68
69     textview = gtk.TextView()
70     textview.set_editable( False )
71     textview.set_cursor_visible( False )
72     textview.modify_font( pango.FontDescription("Courier 12") )
73  
74     scrollview = gtk.ScrolledWindow()
75     scrollview.set_policy( gtk.POLICY_NEVER , gtk.POLICY_AUTOMATIC )
76     scrollview.add( textview )
77     hbox.pack_start( scrollview )
78
79     buttons = gtk.VBox(homogeneous=False, spacing=0)
80     hbox.pack_end(buttons, expand=False)
81
82     button = hildon.Button(gtk.HILDON_SIZE_AUTO_WIDTH, hildon.BUTTON_ARRANGEMENT_VERTICAL, "Switch On!")
83     button.handler_id = button.connect("clicked", hello, gpsdev)
84     buttons.pack_start(button, expand=False)
85
86     button_scan = hildon.Button(gtk.HILDON_SIZE_AUTO_WIDTH, hildon.BUTTON_ARRANGEMENT_VERTICAL, "Start scanning now !!")
87     button_scan.handler_id = button_scan.connect("clicked", scana, gpsdev)
88     buttons.pack_start(button_scan, expand=False)
89
90     toggle_button = gtk.CheckButton(label="Use Assisted GPS")
91     toggle_button.connect("toggled", enable_agps)
92     buttons.pack_start(toggle_button, expand=False)
93
94     status = gtk.Label( "status bar ..." )
95     gpsdev.set_infowin( status , textview.get_buffer() )
96     bottom_box.pack_start( status , expand=False , padding=20 )
97
98     bottom_frame.add( bottom_box )
99
100     vbox.pack_start(top_frame)
101     vbox.pack_end(bottom_frame, expand=False)
102     window.add(vbox)
103
104     window.show_all()
105
106     gpsdev.start()
107
108     gtk.main()
109
110 if __name__ == "__main__":
111     main()
112