9 def __init__ ( self , type ) :
11 self._client = gconf.client_get_default()
12 self.homedir = self._client.get_string( "/apps/wifihood/basedir" ) or "/home/user/MyDocs"
14 self.dbname = self._client.get_string( "/apps/wifihood/dbname" ) or "wifiscanner.db"
15 self.mapsdir = self._client.get_string( "/apps/wifihood/maps" ) or "/home/user/MyDocs/.maps"
16 self.mapclass = self._client.get_string( "/apps/wifihood/maptype" ) or "OpenStreetMap I"
17 self.lat = self._client.get_float( "/apps/wifihood/latitude" ) or self._client.get_float( "/apps/maemo/maemo-mapper/center_latitude" ) or 40.416
18 self.lon = self._client.get_float( "/apps/wifihood/longitude" ) or self._client.get_float( "/apps/maemo/maemo-mapper/center_longitude" ) or -3.683
19 if self._type == 'map' :
20 self.zoom = self._client.get_int( "/apps/wifihood/map-zoom" ) or self._client.get_float( "/apps/maemo/maemo-mapper/zoom" ) or 15
22 self.zoom = self._client.get_int( "/apps/wifihood/%s-zoom" % self._type ) or 16
24 def set_latlon ( self , ( lat , lon ) ) :
25 self._client.set_float( "/apps/wifihood/latitude" , lat )
26 self._client.set_float( "/apps/wifihood/longitude" , lon )
27 self.lat , self.lon = lat , lon
29 def set_zoom ( self , zoom ) :
30 self._client.set_int( "/apps/wifihood/%s-zoom" % self._type , zoom )
34 self._client.set_string( "/apps/wifihood/basedir" , self.homedir )
35 self._client.set_string( "/apps/wifihood/dbname" , self.dbname )
36 self._client.set_string( "/apps/wifihood/maps" , self.mapsdir )
37 self._client.set_string( "/apps/wifihood/maptype" , self.mapclass )
40 class AbstractSettingsWindow :
42 def __init__ ( self , config , handler ) :
43 self.set_title( "Wifihood Settings" )
45 scrollwin = hildon.PannableArea()
49 vbox = gtk.VBox(False, 0)
51 scrollwin.add_with_viewport( vbox )
54 dbframe = gtk.Frame( label="Database" )
55 dbframe.set_label_align(0 , 0.1)
57 vbox.pack_start(dbframe, True, True, 0)
59 database = gtk.Table(2, 2, False)
63 dblabel = gtk.Label( "Home directory" )
65 database.attach(dblabel, 0, 1, 0, 1, gtk.EXPAND|gtk.FILL, 0, 0, 5)
67 dbvalue = hildon.Entry( gtk.HILDON_SIZE_FINGER_HEIGHT )
68 dbvalue.set_text( config.homedir )
70 database.attach(dbvalue, 1, 2, 0, 1, gtk.EXPAND|gtk.FILL, 0, 0, 5)
72 dblabel = gtk.Label( "Database name" )
74 database.attach(dblabel, 0, 1, 1, 2, gtk.EXPAND|gtk.FILL, 0, 0, 5)
76 dbvalue = hildon.Entry( gtk.HILDON_SIZE_FINGER_HEIGHT )
77 dbvalue.set_text( config.dbname )
79 database.attach(dbvalue, 1, 2, 1, 2, gtk.EXPAND|gtk.FILL, 0, 0, 5)
82 mapsframe = gtk.Frame( label="Maps" )
83 mapsframe.set_label_align(0 , 0.1)
85 vbox.pack_start(mapsframe, True, True, 0)
87 maps = gtk.Table(2, 2, False)
91 button = hildon.CheckButton( gtk.HILDON_SIZE_FINGER_HEIGHT )
92 button.set_label( "Use OpenStreet maps" )
93 button.set_active( 1 )
95 maps.attach(button, 0, 1, 0, 1, gtk.EXPAND|gtk.FILL, 0, 0, 5)
97 zoomlevel = self.ZoomButton( "Zoom level" , config , handler )
99 maps.attach(zoomlevel, 1, 2, 0, 1, gtk.EXPAND|gtk.FILL, 0, 0, 5)
102 gpsframe = gtk.Frame( label="Coordinates" )
103 gpsframe.set_label_align(0 , 0.1)
105 vbox.pack_start(gpsframe, True, True, 0)
107 gps = gtk.Table(2, 2, False)
111 button = hildon.CheckButton( gtk.HILDON_SIZE_FINGER_HEIGHT )
112 button.set_label( "Take initial coordinates from maemo-mapper" )
114 gps.attach(button, 0, 2, 0, 1, gtk.EXPAND|gtk.FILL) #, 0, 0, 5)
116 button = hildon.CheckButton( gtk.HILDON_SIZE_FINGER_HEIGHT )
117 button.set_label( "Store changes in coordinates" )
119 gps.attach(button, 0, 2, 1, 2, gtk.EXPAND|gtk.FILL) #, 0, 0, 5)
122 dataframe = gtk.Frame( label="Data gathering" )
123 dataframe.set_label_align(0 , 0.1)
125 vbox.pack_start(dataframe, True, True, 0)
127 button = hildon.CheckButton( gtk.HILDON_SIZE_FINGER_HEIGHT )
128 button.set_label( "Write full logfile" )
130 dataframe.add(button)
134 class ZoomDialog ( hildon.TouchSelector ) :
136 def __init__ ( self , config , handler ) :
137 hildon.TouchSelector.__init__( self )
138 self.handler = handler
140 zooms = gtk.ListStore(str)
143 for zoom in range(8,19) :
144 iter = zooms.append()
145 # zooms.set( iter , 0 , "%2d" % zoom )
146 zooms.set( iter , 0 , zoom )
147 if zoom == config.zoom :
151 column = self.append_text_column( zooms , True )
153 # NOTE : with text=True, we must use 1 instead of 0
154 self.set_active( 0 , active )
156 def zoomdialog ( self , widget , conf ) :
157 newzoom = int( widget.get_selector().get_current_text() )
158 if self.handler : self.handler( newzoom )
159 conf.set_zoom( newzoom )
161 class SettingsWindow ( hildon.StackableWindow , AbstractSettingsWindow ) :
163 def __init__ ( self , config , handler=None ) :
164 hildon.StackableWindow.__init__( self )
165 AbstractSettingsWindow.__init__( self , config , handler )
167 def ZoomButton ( self , text , config , handler ) :
168 selector = ZoomDialog( config , handler )
169 button = hildon.PickerButton( gtk.HILDON_SIZE_AUTO, hildon.BUTTON_ARRANGEMENT_VERTICAL)
170 button.set_title( text )
171 button.set_selector( selector )
172 # button.connect_object( "value-changed", selector.zoomdialog , button , config )
173 selector.connect_object( "response", selector.response , button , config )
177 if __name__ == "__main__" :
178 config = Configuration( 'scanner' )
179 window = SettingsWindow( config )
180 window.connect("delete_event", gtk.main_quit, None)