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