X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=wifiscanner%2Fwifimap%2Fconfig.py;h=f7caad9d1367f1a2f0305d819fec884985b3622e;hb=4f44e9a0570ff3c70e7c02596a6bc614f98dd23e;hp=0120a7f5a4df6e78232eb7b736186871452e9931;hpb=67f940310efb20129748f466407b1f08c5bd8b20;p=wifihood diff --git a/wifiscanner/wifimap/config.py b/wifiscanner/wifimap/config.py index 0120a7f..f7caad9 100644 --- a/wifiscanner/wifimap/config.py +++ b/wifiscanner/wifimap/config.py @@ -1,7 +1,11 @@ import gconf -import hildon , gtk +import gtk +try : + import hildon +except : + hildon = False class Configuration : @@ -34,13 +38,12 @@ class Configuration : client.set_int( "/apps/wifihood/zoom" , self.zoom ) -class SettingsWindow ( hildon.StackableWindow ) : +class AbstractSettingsWindow : - def __init__ ( self , config ) : - hildon.StackableWindow.__init__( self ) + def __init__ ( self , config , handler ) : self.set_title( "Wifihood Settings" ) - scrollwin = hildon.PannableArea() + scrollwin = self.MainArea() scrollwin.show() self.add(scrollwin) @@ -62,7 +65,7 @@ class SettingsWindow ( hildon.StackableWindow ) : 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 = self.Entry() dbvalue.set_text( config.homedir ) dbvalue.show() database.attach(dbvalue, 1, 2, 0, 1, gtk.EXPAND|gtk.FILL, 0, 0, 5) @@ -71,7 +74,7 @@ class SettingsWindow ( hildon.StackableWindow ) : 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 = self.Entry() dbvalue.set_text( config.dbname ) dbvalue.show() database.attach(dbvalue, 1, 2, 1, 2, gtk.EXPAND|gtk.FILL, 0, 0, 5) @@ -86,14 +89,13 @@ class SettingsWindow ( hildon.StackableWindow ) : maps.show() mapsframe.add(maps) - button = hildon.CheckButton( gtk.HILDON_SIZE_FINGER_HEIGHT ) + button = self.CheckButton() 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 , "Zoom level" , str(config.zoom) ) - zoomlevel.connect_object( "clicked", self.zoomdialog, config ) + zoomlevel = self.ZoomButton( "Zoom level" , config , handler ) zoomlevel.show() maps.attach(zoomlevel, 1, 2, 0, 1, gtk.EXPAND|gtk.FILL, 0, 0, 5) @@ -107,12 +109,12 @@ class SettingsWindow ( hildon.StackableWindow ) : gps.show() gpsframe.add(gps) - button = hildon.CheckButton( gtk.HILDON_SIZE_FINGER_HEIGHT ) + button = self.CheckButton() 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 = self.CheckButton() button.set_label( "Store changes in coordinates" ) button.show() gps.attach(button, 0, 2, 1, 2, gtk.EXPAND|gtk.FILL) #, 0, 0, 5) @@ -123,21 +125,20 @@ class SettingsWindow ( hildon.StackableWindow ) : dataframe.show() vbox.pack_start(dataframe, True, True, 0) - button = hildon.CheckButton( gtk.HILDON_SIZE_FINGER_HEIGHT ) + button = self.CheckButton() button.set_label( "Write full logfile" ) button.show() dataframe.add(button) self.show() - def zoomdialog ( self , widget) : - dialog = ZoomDialog( widget ) - dialog.show_all() +if hildon : -class ZoomDialog ( hildon.TouchSelector ) : + class ZoomDialog ( hildon.TouchSelector ) : - def __init__ ( self , widget ) : + def __init__ ( self , config , handler ) : hildon.TouchSelector.__init__( self ) + self.handler = handler zooms = gtk.ListStore(str) @@ -145,7 +146,7 @@ class ZoomDialog ( hildon.TouchSelector ) : for zoom in range(8,19) : iter = zooms.append() zooms.set( iter , 0 , "%2d" % zoom ) - if zoom == widget.zoom : + if zoom == config.zoom : active = index index += 1 @@ -154,8 +155,119 @@ class ZoomDialog ( hildon.TouchSelector ) : # NOTE : with text=True, we must use 1 instead of 0 self.set_active( 0 , active ) + def zoomdialog ( self , widget , conf ) : + newzoom = int( widget.get_selector().get_current_text() ) + if self.handler : self.handler( newzoom ) + conf.zoom = newzoom + + class SettingsWindow ( hildon.StackableWindow , AbstractSettingsWindow ) : + + def __init__ ( self , config , handler=None ) : + hildon.StackableWindow.__init__( self ) + AbstractSettingsWindow.__init__( self , config , handler ) + + def ZoomButton ( self , text , config , handler ) : + selector = ZoomDialog( config , handler ) + button = hildon.PickerButton( gtk.HILDON_SIZE_AUTO, hildon.BUTTON_ARRANGEMENT_VERTICAL) + button.set_title( text ) + button.set_selector( selector ) + button.connect_object( "value-changed", selector.zoomdialog , button , config ) + return button + + def MainArea ( self ) : + return hildon.PannableArea() + + def Entry ( self ) : + return hildon.Entry( gtk.HILDON_SIZE_FINGER_HEIGHT ) + + def Button ( self , text , value ) : + return hildon.Button( gtk.HILDON_SIZE_THUMB_HEIGHT , hildon.BUTTON_ARRANGEMENT_HORIZONTAL , text , "%s" % value ) + + def CheckButton ( self ) : + return hildon.CheckButton( gtk.HILDON_SIZE_FINGER_HEIGHT ) + +else : + + class ZoomDialog ( gtk.Dialog ) : + + def __init__ ( self , config , handler , labelsetter=None ) : + gtk.Dialog.__init__( self , "Select zoom level", + None, + gtk.DIALOG_MODAL, + ( gtk.STOCK_OK, gtk.RESPONSE_ACCEPT, + gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT + ) + ) + + zooms = gtk.ListStore(int) + combo = gtk.ComboBox( zooms ) + + for zoom in range(8,19) : + iter = zooms.append() + zooms.set( iter , 0 , zoom ) + if zoom == config.zoom : + combo.set_active_iter( iter ) + + cell = gtk.CellRendererText() + combo.pack_start(cell, True) + combo.add_attribute(cell, 'text', 0) + + self.vbox.pack_start(combo , True, True, 0) + + self.connect_object( "response", self.response , combo , config , handler , labelsetter ) + + def response ( self , combo , response , config , handler , labelsetter ) : + if response == gtk.RESPONSE_ACCEPT : + item = combo.get_active_iter() + model = combo.get_model() + newzoom = model.get(item,0)[0] + if labelsetter : labelsetter( newzoom ) + if handler : handler( newzoom ) + config.zoom = newzoom + self.destroy() + + class SettingsWindow ( gtk.Window , AbstractSettingsWindow ) : + + def __init__ ( self , config , handler=None ) : + gtk.Window.__init__( self ) + AbstractSettingsWindow.__init__( self , config , handler ) + + def MainArea ( self ) : + scrollwin = gtk.ScrolledWindow() + scrollwin.set_size_request(-1, 260) + scrollwin.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) + return scrollwin + + def Entry ( self ) : + return gtk.Entry() + + def Button ( self , label=None ) : + return gtk.Button( label ) + + def zoomdialog ( self , widget , config , handler ) : + dialog = ZoomDialog( config , handler , widget.set_value ) + dialog.show_all() + + def ZoomButton ( self , text , config , handler ) : + class _button ( gtk.Button ) : + def __init__ ( self , text , value ) : + gtk.Button.__init__( self ) + self._text = text + self.set_value( value ) + def set_value ( self , value ) : + self._value = value + self.set_label( "%s -- %s" % ( self._text , self._value ) ) + button = _button( text , config.zoom ) + button.connect_object( "clicked", self.zoomdialog , button , config , handler ) + return button + + def CheckButton ( self ) : + return gtk.CheckButton() + +config = Configuration() + if __name__ == "__main__" : - window = SettingsWindow( Configuration() ) + window = SettingsWindow( config ) window.connect("delete_event", gtk.main_quit, None) window.show() gtk.main()