From ad4f5b768e57c826731d51b177d8a3917aa783de Mon Sep 17 00:00:00 2001 From: javiplx Date: Wed, 4 May 2011 16:40:14 +0000 Subject: [PATCH] Initial implementation of settings window under hildon git-svn-id: file:///svnroot/wifihood/trunk/wifiscanner@114 c51dfc6a-5949-4919-9c8e-f207a149c383 --- wifimap/config.py | 132 +++++++++++++++++++++++++++++++++++++++++++++++++++++ wifiscanner | 30 ++++++++++-- 2 files changed, 158 insertions(+), 4 deletions(-) diff --git a/wifimap/config.py b/wifimap/config.py index 0eb517e..9a20ccf 100644 --- a/wifimap/config.py +++ b/wifimap/config.py @@ -1,6 +1,8 @@ import gconf +import hildon , gtk + class Configuration : def __init__ ( self ) : @@ -32,3 +34,133 @@ class Configuration : client.set_int( "/apps/wifihood/zoom" , self.zoom ) +class SettingsWindow ( hildon.StackableWindow ) : + + def __init__ ( self , config ) : + hildon.StackableWindow.__init__( self ) + self.set_title( "Wifihood Settings" ) + + scrollwin = gtk.ScrolledWindow(None, None) + scrollwin.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) + scrollwin.show() + self.add(scrollwin) + + vbox = gtk.VBox(False, 0) + vbox.show() + scrollwin.add_with_viewport( vbox ) + + + dbframe = gtk.Frame( label="Database" ) + dbframe.set_label_align(0 , 0.1) + dbframe.show() + vbox.pack_start(dbframe, True, True, 0) + + database = gtk.Table(2, 2, False) + database.show() + dbframe.add(database) + + dblabel = gtk.Label( "Home directory" ) + dblabel.show() + database.attach(dblabel, 0, 1, 0, 1, gtk.EXPAND|gtk.FILL, 0, 0, 5) + + dbvalue = hildon.Entry( gtk.HILDON_SIZE_FINGER_HEIGHT ) + dbvalue.set_text( config.homedir ) + dbvalue.show() + database.attach(dbvalue, 1, 2, 0, 1, gtk.EXPAND|gtk.FILL, 0, 0, 5) + + dblabel = gtk.Label( "Database name" ) + dblabel.show() + database.attach(dblabel, 0, 1, 1, 2, gtk.EXPAND|gtk.FILL, 0, 0, 5) + + dbvalue = hildon.Entry( gtk.HILDON_SIZE_FINGER_HEIGHT ) + dbvalue.set_text( config.dbname ) + dbvalue.show() + database.attach(dbvalue, 1, 2, 1, 2, gtk.EXPAND|gtk.FILL, 0, 0, 5) + + + mapsframe = gtk.Frame( label="Maps" ) + mapsframe.set_label_align(0 , 0.1) + mapsframe.show() + vbox.pack_start(mapsframe, True, True, 0) + + maps = gtk.Table(2, 2, False) + maps.show() + mapsframe.add(maps) + + button = hildon.CheckButton( gtk.HILDON_SIZE_FINGER_HEIGHT ) + button.set_label( "Use OpenStreet maps" ) + button.set_active( 1 ) + button.show() + maps.attach(button, 0, 1, 0, 1, gtk.EXPAND|gtk.FILL, 0, 0, 5) + + zoomlevel = hildon.Button( gtk.HILDON_SIZE_THUMB_HEIGHT , hildon.BUTTON_ARRANGEMENT_HORIZONTAL ) + zoomlevel.set_label( "Zoom level %d" % config.zoom ) + zoomlevel.connect_object( "activate", self.zoomdialog, config ) + zoomlevel.show() + maps.attach(zoomlevel, 1, 2, 0, 1, gtk.EXPAND|gtk.FILL, 0, 0, 5) + + + gpsframe = gtk.Frame( label="Coordinates" ) + gpsframe.set_label_align(0 , 0.1) + gpsframe.show() + vbox.pack_start(gpsframe, True, True, 0) + + gps = gtk.Table(2, 2, False) + gps.show() + gpsframe.add(gps) + + button = hildon.CheckButton( gtk.HILDON_SIZE_FINGER_HEIGHT ) + button.set_label( "Take initial coordinates from maemo-mapper" ) + button.show() + gps.attach(button, 0, 2, 0, 1, gtk.EXPAND|gtk.FILL) #, 0, 0, 5) + + button = hildon.CheckButton( gtk.HILDON_SIZE_FINGER_HEIGHT ) + button.set_label( "Store changes in coordinates" ) + button.show() + gps.attach(button, 0, 2, 1, 2, gtk.EXPAND|gtk.FILL) #, 0, 0, 5) + + + dataframe = gtk.Frame( label="Data gathering" ) + dataframe.set_label_align(0 , 0.1) + dataframe.show() + vbox.pack_start(dataframe, True, True, 0) + + button = hildon.CheckButton( gtk.HILDON_SIZE_FINGER_HEIGHT ) + button.set_label( "Write full logfile" ) + button.show() + dataframe.add(button) + + self.show() + + def zoomdialog ( self , widget ) : + dialog = ZoomDialog( widget ) + dialog.show_all() + +class ZoomDialog ( hildon.TouchSelector ) : + + def __init__ ( self , widget ) : + hildon.TouchSelector.__init__( self ) + + zooms = gtk.ListStore(str) + + active = index = 0 + for zoom in range(8,19) : + iter = zooms.append() + zooms.set( iter , 0 , "%2d" % zoom ) + if zoom == widget.conf.zoom : + active = index + index += 1 + + column = self.append_text_column( zooms , True ) + #renderer = gtk.CellRendererText() + #column = self.append_column( zooms , renderer ) + #column.set_property('text-column', 0) + + # NOTE : with text=True, we must use 1 instead of 0 + self.set_active( 0 , active ) + +if __name__ == "__main__" : + window = SettingsWindow( Configuration() ) + window.connect("delete_event", gtk.main_quit, None) + window.show() + gtk.main() diff --git a/wifiscanner b/wifiscanner index 88a9e4c..f50cc63 100755 --- a/wifiscanner +++ b/wifiscanner @@ -94,7 +94,8 @@ class AbstractWifiscanner : scrollview = gtk.ScrolledWindow() notebook.append_page( scrollview , gtk.Label("Scanning") ) - notebook.append_page( MapWindow() , gtk.Label("Map") ) + self.map = MapWindow() + notebook.append_page( self.map , gtk.Label("Map") ) buttons = gtk.VBox(homogeneous=False, spacing=0) hbox.pack_end(buttons, expand=False) @@ -120,7 +121,7 @@ class AbstractWifiscanner : status = gtk.Label( "status bar ..." ) _scanner.status = status _scanner.buffer = textview.get_buffer() - _scanner.map = notebook.get_nth_page(1).child + _scanner.map = self.map bottom_box.pack_start( status , expand=False , padding=20 ) def run ( self ) : @@ -137,16 +138,19 @@ if hildon : self.config.zoom = 16 self.add( wifimap.simpleMapWidget( self.config ) ) - class Wifiscanner ( AbstractWifiscanner , hildon.Window ) : + class Wifiscanner ( AbstractWifiscanner , hildon.StackableWindow ) : def __init__ ( self ) : - hildon.Window.__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.show_all() def TextView ( self , placeholder=None ) : @@ -168,6 +172,24 @@ if hildon : toggle_button.set_label( label ) return toggle_button + def create_menu ( self ) : + + menubar = hildon.AppMenu() + self.set_app_menu( menubar ) + + settings = hildon.Button(gtk.HILDON_SIZE_AUTO, + hildon.BUTTON_ARRANGEMENT_VERTICAL, + "Settings", + None) + settings.connect( "clicked", settings_cb , self.map.config ) + menubar.append( settings ) + + menubar.show_all() + + def settings_cb ( widget , config ) : + wifimap.config.SettingsWindow( config ) + + else : class MapWindow ( gtk.Frame ) : -- 1.7.9.5