First implementation for detected wifi cards database
[wifihood] / wifiscanner / wifiscanner
index 49d6888..5aff530 100755 (executable)
@@ -6,10 +6,10 @@ import gtk , pango
 try :
     import hildon
 except :
-    hildon = False
+    from hildongtk import hildon
 
 def global_start(button, scanner, config):
-    scanner.start( config.scan_period , config.store_log )
+    scanner.start( int( 1000 * config.scan_period ) , config.store_log )
     if button._id :
         button.disconnect( button._id )
     button._id = button.connect("clicked", global_stop, scanner, config)
@@ -43,14 +43,14 @@ def stop_scan(button, scanner):
     button.set_label("Start scanning")
 
 
-class scanner ( wifimap.ReplayScanner ) :
+class scanner ( wifimap.Scanner ) :
 
     def scan ( self ) :
-        wifimap.ReplayScanner.scan( self )
+        wifimap.Scanner.scan( self )
         self.report()
 
     def report ( self ) :
-        self.status.set_label( wifimap.ReplayScanner.report(self) )
+        self.status.set_label( wifimap.Scanner.report(self) )
         start, end = self.buffer.get_bounds()
         self.buffer.delete( start , end )
         for mac,rss in self.scanlist.iteritems() :
@@ -63,17 +63,25 @@ class scanner ( wifimap.ReplayScanner ) :
             if self.newaps :
                 pointsize += 2
             self.map.plot( pixmap , ( float(self.info[4]) , float(self.info[5]) ) , "red" , pointsize )
-            for ap in self.aps.values() :
-                self.map.plot( pixmap , ( ap[1]/ap[0] , ap[2]/ap[0] ) , "green" , 1 )
+            for mac,ap in self.aps.iteritems() :
+                if self.oldpos.get( mac ) :
+                    self.map.line( pixmap , self.oldpos[mac] , ( ap[1]/ap[0] , ap[2]/ap[0] ) , "green" )
+                self.map.plot( pixmap , ( ap[1]/ap[0] , ap[2]/ap[0] ) , "green" , 2 )
             self.map.get_pixbuf().get_from_drawable( pixmap , pixmap.get_colormap() , 0, 0 , 0 , 0 , self.map.win_x, self.map.win_y )
             self.map.show()
 
 
-class AbstractWifiscanner :
+class Wifiscanner ( hildon.StackableWindow ) :
 
     def __init__ ( self ) :
 
-        _scanner = scanner( "wlan0" )
+        hildon.StackableWindow.__init__( self )
+        self.set_title( "Wifihood Scanner" )
+        program = hildon.Program.get_instance()
+        program.add_window(self)
+
+        config = wifimap.config.Configuration( 'scanner' )
+        _scanner = scanner( config , "wlan0" )
 
         self.connect("delete_event", gtk.main_quit, None)
 
@@ -100,26 +108,31 @@ class AbstractWifiscanner :
 
         scrollview = gtk.ScrolledWindow()
         notebook.append_page( scrollview , gtk.Label("Scanning") )
-        self.map = MapWindow()
+        self.map = MapWindow( config )
         notebook.append_page( self.map , gtk.Label("Map") )
 
         buttons = gtk.VBox(homogeneous=False, spacing=0)
         hbox.pack_end(buttons, expand=False)
 
-        textview = self.TextView( "Scan results ..." )
+        textview = hildon.TextView()
+        textview.set_placeholder( "Scan results ..." )
+        textview.set_editable( False )
+        textview.set_cursor_visible( False )
+        textview.modify_font( pango.FontDescription("Courier 12") )
         scrollview.add( textview )
         scrollview.set_policy( gtk.POLICY_NEVER , gtk.POLICY_AUTOMATIC )
 
         # Buttons creation
-        button = self.Button( "Switch GPS On")
-        button._id = button.connect("clicked", global_start, _scanner, self.map.config)
+        button = hildon.Button(gtk.HILDON_SIZE_AUTO_WIDTH | gtk.HILDON_SIZE_FINGER_HEIGHT, hildon.BUTTON_ARRANGEMENT_VERTICAL, "Switch GPS On" )
+        button._id = button.connect("clicked", global_start, _scanner, config)
         buttons.pack_start(button, expand=False)
 
-        button_scan = self.Button( "Start scanning")
+        button_scan = hildon.Button(gtk.HILDON_SIZE_AUTO_WIDTH | gtk.HILDON_SIZE_FINGER_HEIGHT, hildon.BUTTON_ARRANGEMENT_VERTICAL, "Start scanning" )
         button_scan._id = button_scan.connect("clicked", start_scan, _scanner)
         buttons.pack_start(button_scan, expand=False)
 
-        toggle_button = self.CheckButton( "Use Assisted GPS" )
+        toggle_button = hildon.CheckButton( gtk.HILDON_SIZE_AUTO_WIDTH | gtk.HILDON_SIZE_FINGER_HEIGHT )
+        toggle_button.set_label( "Use Assisted GPS" )
         toggle_button.connect("toggled", enable_agps)
         buttons.pack_start(toggle_button, expand=False)
 
@@ -130,58 +143,13 @@ class AbstractWifiscanner :
         _scanner.map = self.map.child
         bottom_box.pack_start( status , expand=False , padding=20 )
 
-    def run ( self ) :
-        gtk.main()
-
-def settings_cb ( widget , map ) :
-    window = wifimap.config.SettingsWindow( map.config , map.child.SetZoom )
-
-
-if hildon :
-
-    class MapWindow ( gtk.Frame ) :
-
-        def __init__(self):
-            gtk.Frame.__init__( self )
-
-            self.config = wifimap.config.Configuration( 'scanner' )
-            self.add( wifimap.simpleMapWidget( self.config ) )
-
-    class Wifiscanner ( AbstractWifiscanner , hildon.StackableWindow ) :
-
-        def __init__ ( self ) :
-            hildon.StackableWindow.__init__( self )
-            self.set_title( "Wifihood Scanner" )
-            program = hildon.Program.get_instance()
-            program.add_window(self)
-
-            AbstractWifiscanner.__init__( self )
-            self.add(self.vbox)
-
-            self.create_menu( )
+        self.add(self.vbox)
 
-            self.show_all()
+        self.create_menu( )
 
-        def TextView ( self , placeholder=None ) :
-            textview = hildon.TextView()
-            if  placeholder :
-                textview.set_placeholder(  placeholder )
-            textview.set_editable( False )
-            textview.set_cursor_visible( False )
-            textview.modify_font( pango.FontDescription("Courier 12") )
-            return textview
-        def Button ( self , label="" ) :
-            button = hildon.Button(gtk.HILDON_SIZE_AUTO_WIDTH | gtk.HILDON_SIZE_FINGER_HEIGHT, hildon.BUTTON_ARRANGEMENT_VERTICAL, label)
-            return button
+        self.show_all()
 
-        def CheckButton ( self , label=None ) :
-            toggle_button = hildon.CheckButton( gtk.HILDON_SIZE_AUTO_WIDTH | gtk.HILDON_SIZE_FINGER_HEIGHT )
-            if label :
-                toggle_button.set_label( label )
-            return toggle_button
-
-        def create_menu ( self ) :
+    def create_menu ( self ) :
 
             menubar = hildon.AppMenu()
             self.set_app_menu( menubar )
@@ -195,58 +163,22 @@ if hildon :
 
             menubar.show_all()
 
-else :
-
-    class MapWindow ( gtk.Frame ) :
-
-        def __init__(self):
-            gtk.Frame.__init__( self )
-
-            self.config = wifimap.config.Configuration( 'scanner' )
-            self.add( wifimap.simpleMapWidget( self.config , (640,400) ) )
-
-    class Wifiscanner ( AbstractWifiscanner , gtk.Window ) :
-
-        def __init__ ( self ) :
-            gtk.Window.__init__( self )
-            self.resize(640,400)
-
-            AbstractWifiscanner.__init__( self )
-            self.add(self.vbox)
-
-            self.create_menu()
+    def run ( self ) :
+        gtk.main()
 
-            self.show_all()
 
-        def TextView ( self , placeholder=None ) :
-            textview = gtk.TextView()
-            if placeholder :
-                textview.get_buffer().set_text( placeholder )
-            textview.set_editable( False )
-            textview.set_cursor_visible( False )
-            textview.modify_font( pango.FontDescription("Courier 12") )
-            return textview
-        def Button ( self , label="" ) :
-            button = gtk.Button( label )
-            return button
+def settings_cb ( widget , map ) :
+    window = wifimap.config.SettingsWindow( map.config , map.child.SetZoom )
 
-        def CheckButton ( self , label=None ) :
-            toggle_button = gtk.CheckButton()
-            if label :
-                toggle_button.set_label( label )
-            return toggle_button
 
-        def create_menu ( self ) :
+class MapWindow ( gtk.Frame ) :
 
-            menubar = gtk.MenuBar()
-            self.vbox.pack_start( menubar )
+        def __init__( self , config ):
+            gtk.Frame.__init__( self )
 
-            settings = gtk.MenuItem( "Settings" )
-            settings.connect( "activate", settings_cb , self.map )
-            menubar.append( settings )
+            self.config = config
+            self.add( wifimap.simpleMapWidget( self.config ) )
 
-            menubar.show_all()
 
 window = Wifiscanner()
 window.run()