Various fixes
[wifihood] / wifiscanner / wifimap / config.py
1
2 import gconf
3
4 import hildon , gtk
5
6 class Configuration :
7
8     def __init__ ( self ) :
9         self.homedir = None
10         self.dbname = None
11         self.mapsdir , self.mapclass = None , None
12         self.lat , self.lon = 0.0 , 0.0
13         self.zoom = 0
14         self.read()
15
16     def read ( self ) :
17         client = gconf.client_get_default()
18         self.homedir = client.get_string( "/apps/wifihood/basedir" ) or "/home/user/MyDocs"
19         self.dbname = client.get_string( "/apps/wifihood/dbname" ) or "wifiscanner.db"
20         self.mapsdir = client.get_string( "/apps/wifihood/maps" ) or "/home/user/MyDocs/.maps"
21         self.mapclass = client.get_string( "/apps/wifihood/maptype" ) or "OpenStreetMap I"
22         self.lat = client.get_float( "/apps/wifihood/lattitude" ) or client.get_float( "/apps/maemo/maemo-mapper/center_latitude" ) or 40.416
23         self.lon = client.get_float( "/apps/wifihood/longitude" ) or client.get_float( "/apps/maemo/maemo-mapper/center_longitude" ) or -3.683
24         self.zoom = client.get_int( "/apps/wifihood/zoom" ) or client.get_float( "/apps/maemo/maemo-mapper/zoom" ) or 15
25
26     def save ( self ) :
27         client = gconf.client_get_default()
28         client.set_string( "/apps/wifihood/basedir" , self.homedir )
29         client.set_string( "/apps/wifihood/dbname" , self.dbname )
30         client.set_string( "/apps/wifihood/maps" , self.mapsdir )
31         client.set_string( "/apps/wifihood/maptype" , self.mapclass )
32         client.set_float( "/apps/wifihood/lattitude" , self.lat )
33         client.set_float( "/apps/wifihood/longitude" , self.lon )
34         client.set_int( "/apps/wifihood/zoom" , self.zoom )
35
36
37 class SettingsWindow ( hildon.StackableWindow ) :
38
39     def __init__ ( self , config ) :
40         hildon.StackableWindow.__init__( self )
41         self.set_title( "Wifihood Settings" )
42
43         scrollwin = hildon.PannableArea()
44         scrollwin.show()
45         self.add(scrollwin)
46
47         vbox = gtk.VBox(False, 0)
48         vbox.show()
49         scrollwin.add_with_viewport( vbox )
50
51
52         dbframe = gtk.Frame( label="Database" )
53         dbframe.set_label_align(0 , 0.1)
54         dbframe.show()
55         vbox.pack_start(dbframe, True, True, 0)
56
57         database = gtk.Table(2, 2, False)
58         database.show()
59         dbframe.add(database)
60
61         dblabel = gtk.Label( "Home directory" )
62         dblabel.show()
63         database.attach(dblabel, 0, 1, 0, 1, gtk.EXPAND|gtk.FILL, 0, 0, 5)
64
65         dbvalue = hildon.Entry( gtk.HILDON_SIZE_FINGER_HEIGHT )
66         dbvalue.set_text( config.homedir )
67         dbvalue.show()
68         database.attach(dbvalue, 1, 2, 0, 1, gtk.EXPAND|gtk.FILL, 0, 0, 5)
69
70         dblabel = gtk.Label( "Database name" )
71         dblabel.show()
72         database.attach(dblabel, 0, 1, 1, 2, gtk.EXPAND|gtk.FILL, 0, 0, 5)
73
74         dbvalue = hildon.Entry( gtk.HILDON_SIZE_FINGER_HEIGHT )
75         dbvalue.set_text( config.dbname )
76         dbvalue.show()
77         database.attach(dbvalue, 1, 2, 1, 2, gtk.EXPAND|gtk.FILL, 0, 0, 5)
78
79
80         mapsframe = gtk.Frame( label="Maps" )
81         mapsframe.set_label_align(0 , 0.1)
82         mapsframe.show()
83         vbox.pack_start(mapsframe, True, True, 0)
84
85         maps = gtk.Table(2, 2, False)
86         maps.show()
87         mapsframe.add(maps)
88
89         button = hildon.CheckButton( gtk.HILDON_SIZE_FINGER_HEIGHT )
90         button.set_label( "Use OpenStreet maps" )
91         button.set_active( 1 )
92         button.show()
93         maps.attach(button, 0, 1, 0, 1, gtk.EXPAND|gtk.FILL, 0, 0, 5)
94
95         zoomlevel = hildon.Button( gtk.HILDON_SIZE_THUMB_HEIGHT , hildon.BUTTON_ARRANGEMENT_HORIZONTAL , "Zoom level" , str(config.zoom) )
96         zoomlevel.connect_object( "clicked", self.zoomdialog, config )
97         zoomlevel.show()
98         maps.attach(zoomlevel, 1, 2, 0, 1, gtk.EXPAND|gtk.FILL, 0, 0, 5)
99
100
101         gpsframe = gtk.Frame( label="Coordinates" )
102         gpsframe.set_label_align(0 , 0.1)
103         gpsframe.show()
104         vbox.pack_start(gpsframe, True, True, 0)
105
106         gps = gtk.Table(2, 2, False)
107         gps.show()
108         gpsframe.add(gps)
109
110         button = hildon.CheckButton( gtk.HILDON_SIZE_FINGER_HEIGHT )
111         button.set_label( "Take initial coordinates from maemo-mapper" )
112         button.show()
113         gps.attach(button, 0, 2, 0, 1, gtk.EXPAND|gtk.FILL) #, 0, 0, 5)
114
115         button = hildon.CheckButton( gtk.HILDON_SIZE_FINGER_HEIGHT )
116         button.set_label( "Store changes in coordinates" )
117         button.show()
118         gps.attach(button, 0, 2, 1, 2, gtk.EXPAND|gtk.FILL) #, 0, 0, 5)
119
120
121         dataframe = gtk.Frame( label="Data gathering" )
122         dataframe.set_label_align(0 , 0.1)
123         dataframe.show()
124         vbox.pack_start(dataframe, True, True, 0)
125
126         button = hildon.CheckButton( gtk.HILDON_SIZE_FINGER_HEIGHT )
127         button.set_label( "Write full logfile" )
128         button.show()
129         dataframe.add(button)
130
131         self.show()
132
133     def zoomdialog ( self , widget) :
134         dialog = ZoomDialog( widget )
135         dialog.show_all()
136
137 class ZoomDialog ( hildon.TouchSelector ) :
138
139     def __init__ ( self , widget ) :
140         hildon.TouchSelector.__init__( self )
141
142         zooms = gtk.ListStore(str)
143
144         active = index = 0
145         for zoom in range(8,19) :
146             iter = zooms.append()
147             zooms.set( iter , 0 , "%2d" % zoom )
148             if zoom == widget.zoom :
149                 active = index
150             index += 1
151
152         column = self.append_text_column( zooms , True )
153
154         # NOTE : with text=True, we must use 1 instead of 0
155         self.set_active( 0 , active )
156
157 if __name__ == "__main__" :
158     window = SettingsWindow( Configuration() )
159     window.connect("delete_event", gtk.main_quit, None)
160     window.show()
161     gtk.main()