OBP60v/pages/tracker.py

82 lines
2.1 KiB
Python

"""
Tracker with MQTT client
- currentry only Ragatta hero supported
TODO get data from mqtt thread
Verbindungsabbrüche
- on_disconnect
"""
import cairo
from .page import Page
class Tracker(Page):
def __init__(self, pageno, cfg, appdata, boatdata):
super().__init__(pageno, cfg, boatdata)
self._appdata = appdata
self.bv_lat = boatdata.getRef("LAT")
self.bv_lon = boatdata.getRef("LON")
self.bv_sog = boatdata.getRef("SOG")
self.buttonlabel[1] = 'MODE'
self.buttonlabel[2] = 'ON'
def handle_key(self, buttonid):
if buttonid == 1:
pass
elif buttonid == 2:
# Tracking ein/-ausschalten
if self._appdata.track.is_active():
self._appdata.track.set_active(False)
self.buttonlabel[2] = 'ON'
else:
self._appdata.track.set_active(True)
self.buttonlabel[2] = 'OFF'
def draw(self, ctx):
# Name
ctx.select_font_face("Ubuntu", cairo.FontSlant.NORMAL, cairo.FontWeight.BOLD)
ctx.set_font_size(32)
ctx.move_to(20, 80)
ctx.show_text("Tracker")
ctx.set_font_size(16)
ctx.move_to(20, 120)
ctx.show_text("Type: ")
ctx.show_text(self._appdata.track.ttype)
ctx.move_to(20, 140)
ctx.show_text("active: ")
if self._appdata.track.is_active():
ctx.show_text("yes")
else:
ctx.show_text("no")
ctx.move_to(20, 160)
ctx.show_text("Lat=")
ctx.show_text(self.bv_lat.format())
ctx.move_to(20, 180)
ctx.show_text("Lon=")
ctx.show_text(self.bv_lon.format())
ctx.move_to(20, 200)
ctx.show_text("Sog=")
ctx.show_text(self.bv_sog.format())
# Mögliche Regatten
x = 250
y = 160
ctx.move_to(x, y - 24)
ctx.show_text("Regatten")
for r in self._appdata.track.hero_get_races():
ctx.move_to(x, y)
ctx.show_text(r)
y += 20
if y == 160:
ctx.move_to(x, y)
ctx.show_text("keine")