Introduce an easily configurable data directory
[wifihood] / 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 = hildon.TextView()
70     textview.set_placeholder( "Scan results ..." )
71     textview.set_editable( False )
72     textview.set_cursor_visible( False )
73     textview.modify_font( pango.FontDescription("Courier 12") )
74  
75     scrollview = gtk.ScrolledWindow()
76     scrollview.set_policy( gtk.POLICY_NEVER , gtk.POLICY_AUTOMATIC )
77     scrollview.add( textview )
78     hbox.pack_start( scrollview )
79
80     buttons = gtk.VBox(homogeneous=False, spacing=0)
81     hbox.pack_end(buttons, expand=False)
82
83     button = hildon.Button(gtk.HILDON_SIZE_AUTO_WIDTH | gtk.HILDON_SIZE_FINGER_HEIGHT, hildon.BUTTON_ARRANGEMENT_VERTICAL, "Switch On!")
84     button.handler_id = button.connect("clicked", hello, gpsdev)
85     buttons.pack_start(button, expand=False)
86
87     button_scan = hildon.Button(gtk.HILDON_SIZE_AUTO_WIDTH | gtk.HILDON_SIZE_FINGER_HEIGHT, hildon.BUTTON_ARRANGEMENT_VERTICAL, "Start scanning now !!")
88     button_scan.handler_id = button_scan.connect("clicked", scana, gpsdev)
89     buttons.pack_start(button_scan, expand=False)
90
91     toggle_button = hildon.CheckButton( gtk.HILDON_SIZE_AUTO_WIDTH | gtk.HILDON_SIZE_FINGER_HEIGHT )
92     toggle_button.set_label( "Use Assisted GPS" )
93     toggle_button.connect("toggled", enable_agps)
94     buttons.pack_start(toggle_button, expand=False)
95
96     status = gtk.Label( "status bar ..." )
97     gpsdev.set_infowin( status , textview.get_buffer() )
98     bottom_box.pack_start( status , expand=False , padding=20 )
99
100     bottom_frame.add( bottom_box )
101
102     vbox.pack_start(top_frame)
103     vbox.pack_end(bottom_frame, expand=False)
104     window.add(vbox)
105
106     window.show_all()
107
108     gpsdev.start()
109
110     gtk.main()
111
112 if __name__ == "__main__":
113     main()
114