X-Git-Url: https://git.toastfreeware.priv.at/gregoa/zavai.git/blobdiff_plain/db4d40a5e3825a664d95f1bca17056a71adcf12f..367d8f4ea207ec3ef0d29bbfd60809017ae00c3c:/plugins/55_gpx_trace.py diff --git a/plugins/55_gpx_trace.py b/plugins/55_gpx_trace.py index 28b00f8..d85f41d 100644 --- a/plugins/55_gpx_trace.py +++ b/plugins/55_gpx_trace.py @@ -25,7 +25,7 @@ class GPXTracer(gtk.ToggleAction): def __init__(self, registry, **kw): self.state = 0 - super(GPXTracer, self).__init__("menu.main.gps.toggle", self.states[self.state], None, None) + super(GPXTracer, self).__init__("menu.main.gps.gpx", self.states[self.state], None, None) self.registry = registry self.set_active(False) @@ -61,7 +61,49 @@ class GPXWaypoint(gtk.Action): def on_activate(self, *args): self.gpx.waypoint() +class GPXAudioTracer(gtk.ToggleAction): + states = [_("Start GPX and audio trace"), _("Stop GPX and audio trace")] + + def __init__(self, registry, **kw): + self.state = 0 + super(GPXAudioTracer, self).__init__("menu.main.gps.gpxaudio", self.states[self.state], None, None) + + self.registry = registry + self.recorder = zavai.Recorder(registry) + self.set_active(False) + + self.connect("toggled", self.on_toggle) + + def shutdown(self): + self.recorder.stop() + super(GPXAudioTracer, self).shutdown() + + def on_toggle(self, *args): + self.state = (self.state + 1) % len(self.states) + self.set_property("label", self.states[self.state]) + if self.get_active(): + self.start() + else: + self.stop() + + def start(self): + zavai.info("GPX trace started") + self.registry.resource("gpx").connect("gpx", self) + self.gpx.add_activity_monitor(self.on_gpx_activity_changed) + + def stop(self): + zavai.info("GPX trace ended") + self.registry.resource("gpx").disconnect("gpx", self) + self.recorder.stop() + self.gpx.del_activity_monitor(self.on_gpx_activity_changed) + + def on_gpx_activity_changed(self, gpx, state): + if state: + self.recorder.start(gpx.basename + ".wav") + else: + self.recorder.stop() def init(conf = None, registry = None, **kw): registry.register(GPXTracer(registry)) + registry.register(GPXAudioTracer(registry)) registry.register(GPXWaypoint(registry))