Simplify interface implementing mutable buttons for on/off actions
[wifihood] / wifiscanner / wifiscanner
1 #!/usr/bin/python
2
3 import wifimap
4
5 import gtk
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(label="top")
63     bottom_frame = gtk.Frame(label="bottom")
64
65     # FIXME : Temporary holder !!!
66     table = gtk.Table (2, 1, False)
67
68     # set the spacing to 10 on x and 10 on y 
69     table.set_row_spacings(10)
70     table.set_col_spacings(10)
71
72     button = hildon.Button(gtk.HILDON_SIZE_AUTO_WIDTH, hildon.BUTTON_ARRANGEMENT_VERTICAL, "Switch On!")
73     button.handler_id = button.connect("clicked", hello, gpsdev)
74     table.attach(button, 0, 1, 0, 1)
75
76     button_scan = hildon.Button(gtk.HILDON_SIZE_AUTO_WIDTH, hildon.BUTTON_ARRANGEMENT_VERTICAL, "Start scanning now !!")
77     button_scan.handler_id = button_scan.connect("clicked", scana, gpsdev)
78     table.attach(button_scan, 0, 1, 1, 2)
79
80     bottom_frame.add(table)
81
82     toggle_button = gtk.CheckButton(label="Use Assisted GPS")
83     toggle_button.connect("toggled", enable_agps)
84     top_frame.add(toggle_button)
85
86     vbox.pack_start(top_frame)
87     vbox.pack_end(bottom_frame)
88     window.add(vbox)
89
90     window.show_all()
91
92     gpsdev.start()
93
94     gtk.main()
95
96 if __name__ == "__main__":
97     main()
98