11 self.control = location.GPSDControl.get_default()
12 self.control.set_properties(preferred_method=location\
13 .METHOD_USER_SELECTED,
14 preferred_interval=location\
16 self.control.connect("error-verbose", self.on_error, self.control)
17 self.control.connect("gpsd-stopped", self.stop, None)
19 self.device = location.GPSDevice()
20 self.device.connect("changed", self.on_changed, self.control)
22 def update_location(self):
23 """ Run the loop and update lat and long """
25 gobject.idle_add(self.start_location, self.control)
27 def on_error(self, control, error, data):
29 print "location error: %d... quitting" % error
32 def on_changed(self, device, data):
33 """ Set long and lat """
37 # once fix is found and horizontal accuracy is 1km
38 if location.GPS_DEVICE_LATLONG_SET:
39 if device.fix[6] <= 100000:
40 self.lat, self.long = device.fix[4:6]
43 def stop(self, widget, data):
44 """ Stop the location service """
47 def start_location(self, data):
48 """ Start the location service """
53 """ Reset coordinates """
56 self.device.reset_last_known()