Appdata für Header, Flaggensymbole laden
This commit is contained in:
@@ -37,7 +37,7 @@ from .page import Page
|
||||
class Anchor(Page):
|
||||
|
||||
def __init__(self, pageno, cfg, appdata, boatdata):
|
||||
super().__init__(pageno, cfg, boatdata)
|
||||
super().__init__(pageno, cfg, appdata, boatdata)
|
||||
self.sym_anchor = cairo.ImageSurface.create_from_png(os.path.join(cfg['imgpath'], "anchor.png"))
|
||||
self.buttonlabel[1] = 'MODE'
|
||||
self.buttonlabel[2] = 'DROP'
|
||||
|
||||
@@ -6,7 +6,7 @@ from .page import Page
|
||||
class ApparentWind(Page):
|
||||
|
||||
def __init__(self, pageno, cfg, appdata, boatdata):
|
||||
super().__init__(pageno, cfg, boatdata)
|
||||
super().__init__(pageno, cfg, appdata, boatdata)
|
||||
self.buttonlabel[1] = 'MODE'
|
||||
self.mode = 'L' # (W)ind (L)ens
|
||||
try:
|
||||
|
||||
@@ -12,7 +12,7 @@ from .page import Page
|
||||
class Autobahn(Page):
|
||||
|
||||
def __init__(self, pageno, cfg, appdata, boatdata):
|
||||
super().__init__(pageno, cfg, boatdata)
|
||||
super().__init__(pageno, cfg, appdata, boatdata)
|
||||
self.xte = self.bd.getRef("XTE")
|
||||
self.cog = self.bd.getRef("COG")
|
||||
self.btw = self.bd.getRef("BTW")
|
||||
|
||||
@@ -41,7 +41,7 @@ from .page import Page
|
||||
class Barograph(Page):
|
||||
|
||||
def __init__(self, pageno, cfg, appdata, boatdata):
|
||||
super().__init__(pageno, cfg, boatdata)
|
||||
super().__init__(pageno, cfg, appdata, boatdata)
|
||||
# Meßwert alle 15 Minuten:
|
||||
# 84 Stunden * 4 Werte je Stunde = 336 Meßwerte
|
||||
self.bd = boatdata
|
||||
|
||||
@@ -23,7 +23,7 @@ import nmea2000.lookup
|
||||
class Fluid(Page):
|
||||
|
||||
def __init__(self, pageno, cfg, appdata, boatdata, fluidtype):
|
||||
super().__init__(pageno, cfg, boatdata)
|
||||
super().__init__(pageno, cfg, appdata, boatdata)
|
||||
self.fluidtype = int(fluidtype)
|
||||
if self.fluidtype == 0:
|
||||
self.symbol = cairo.ImageSurface.create_from_png(os.path.join(cfg['imgpath'], "fuelpump.png"))
|
||||
|
||||
@@ -21,7 +21,7 @@ from .page import Page
|
||||
class FourValues(Page):
|
||||
|
||||
def __init__(self, pageno, cfg, appdata, boatdata, boatvalue1, boatvalue2, boatvalue3, boatvalue4):
|
||||
super().__init__(pageno, cfg, boatdata)
|
||||
super().__init__(pageno, cfg, appdata, boatdata)
|
||||
self.value1 = boatvalue1
|
||||
self.value2 = boatvalue2
|
||||
self.value3 = boatvalue3
|
||||
|
||||
@@ -19,7 +19,7 @@ from .page import Page
|
||||
class FourValues2(Page):
|
||||
|
||||
def __init__(self, pageno, cfg, appdata, boatdata, boatvalue1, boatvalue2, boatvalue3, boatvalue4):
|
||||
super().__init__(pageno, cfg, boatdata)
|
||||
super().__init__(pageno, cfg, appdata, boatdata)
|
||||
self.value1 = boatvalue1
|
||||
self.value2 = boatvalue2
|
||||
self.value3 = boatvalue3
|
||||
|
||||
@@ -16,7 +16,7 @@ from .page import Page
|
||||
class Keel(Page):
|
||||
|
||||
def __init__(self, pageno, cfg, appdata, boatdata):
|
||||
super().__init__(pageno, cfg, boatdata)
|
||||
super().__init__(pageno, cfg, appdata, boatdata)
|
||||
# Wert für Kielrotation
|
||||
self.valref = self.bd.getRef("xdrRotK")
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ from .page import Page
|
||||
class OneValue(Page):
|
||||
|
||||
def __init__(self, pageno, cfg, appdata, boatdata, boatvalue):
|
||||
super().__init__(pageno, cfg, boatdata)
|
||||
super().__init__(pageno, cfg, appdata, boatdata)
|
||||
self.ref1 = self.bd.getRef(boatvalue)
|
||||
|
||||
def draw(self, ctx):
|
||||
|
||||
@@ -64,10 +64,11 @@ class Page():
|
||||
c = 2 * asin(sqrt(a))
|
||||
return c * 3440
|
||||
|
||||
def __init__(self, pageno, cfg, boatdata):
|
||||
def __init__(self, pageno, cfg, appdata, boatdata):
|
||||
self.pageno = pageno
|
||||
self.cfg = cfg
|
||||
self.fullscreen = cfg['guistyle'] == 'fullscreen'
|
||||
self.appdata = appdata
|
||||
self.bd = boatdata
|
||||
self.header = True
|
||||
self.footer = True
|
||||
@@ -126,7 +127,7 @@ class Page():
|
||||
|
||||
def draw_header(self, ctx):
|
||||
"""
|
||||
Mögliche Zeichen für aktivierte Funktionen
|
||||
Mögliche Zeichen für aktivierte Funktionen (max. 8)
|
||||
AP - Accesspoint ist aktiv
|
||||
WIFI - WIFI-Client
|
||||
TCP
|
||||
@@ -134,6 +135,7 @@ class Page():
|
||||
183
|
||||
USB
|
||||
GPS - GPS Fix vorhanden
|
||||
TRK - Tracking aktiv
|
||||
# TODO Umstellung auf Symbole je 16 Pixel zum Platz sparen
|
||||
Neu: Nummer der aktiven Seite (1 - 10)
|
||||
"""
|
||||
@@ -143,6 +145,10 @@ class Page():
|
||||
ctx.show_text(f"N2K GPS")
|
||||
ctx.stroke()
|
||||
|
||||
# AP: Nicht implementiert
|
||||
# WIFI:
|
||||
# /proc/net/wireless
|
||||
|
||||
# Tastenstatus
|
||||
ctx.save()
|
||||
if self.keylock:
|
||||
|
||||
@@ -5,7 +5,7 @@ from .page import Page
|
||||
class Rudder(Page):
|
||||
|
||||
def __init__(self, pageno, cfg, appdata, boatdata):
|
||||
super().__init__(pageno, cfg, boatdata)
|
||||
super().__init__(pageno, cfg, appdata, boatdata)
|
||||
self.buttonlabel[1] = 'MODE'
|
||||
self.mode = 'P'
|
||||
# Werte für Ruderausschlag
|
||||
|
||||
@@ -20,7 +20,7 @@ class SixValues(Page):
|
||||
|
||||
def __init__(self, pageno, cfg, appdata, boatdata, boatvalue1, boatvalue2,
|
||||
boatvalue3, boatvalue4, boatvalue5, boatvalue6):
|
||||
super().__init__(pageno, cfg, boatdata)
|
||||
super().__init__(pageno, cfg, appdata, boatdata)
|
||||
self.value1 = boatvalue1
|
||||
self.value2 = boatvalue2
|
||||
self.value3 = boatvalue3
|
||||
|
||||
@@ -15,7 +15,7 @@ from .page import Page
|
||||
class SkyView(Page):
|
||||
|
||||
def __init__(self, pageno, cfg, appdata, boatdata):
|
||||
super().__init__(pageno, cfg, boatdata)
|
||||
super().__init__(pageno, cfg, appdata, boatdata)
|
||||
|
||||
def pol2cart(azimut, elevation):
|
||||
'''
|
||||
|
||||
@@ -4,8 +4,8 @@ import datetime
|
||||
|
||||
class System(Page):
|
||||
|
||||
def __init__(self, pageno, cfg, boatdata):
|
||||
super().__init__(pageno, cfg, boatdata)
|
||||
def __init__(self, pageno, cfg, appdata, boatdata):
|
||||
super().__init__(pageno, cfg, appdata, boatdata)
|
||||
self.buttonlabel[1] = 'MODE'
|
||||
self.buttonlabel[2] = 'STBY'
|
||||
self.mode = ('I', 'N') # (I)nformation (N)MEA2000 Device List
|
||||
|
||||
@@ -4,7 +4,7 @@ from .page import Page
|
||||
class ThreeValues(Page):
|
||||
|
||||
def __init__(self, pageno, cfg, appdata, boatdata, boatvalue1, boatvalue2, boatvalue3):
|
||||
super().__init__(pageno, cfg, boatdata)
|
||||
super().__init__(pageno, cfg, appdata, boatdata)
|
||||
self.ref1 = self.bd.getRef(boatvalue1)
|
||||
self.ref2 = self.bd.getRef(boatvalue2)
|
||||
self.ref3 = self.bd.getRef(boatvalue3)
|
||||
|
||||
@@ -1,22 +1,32 @@
|
||||
"""
|
||||
Tracker with MQTT client
|
||||
Tracker mit MQTT client
|
||||
|
||||
Es gibt zwei Modi: Track und Race
|
||||
A) Track: Es wird nur der Track gesended / aufgezeichnet
|
||||
B) Race: Es werden zusätzlich Regattadaten angezeigt, das beinhaltet
|
||||
die Auswahl einer Regatta, das Teilnehmen, das Aufgeben und die
|
||||
Signalisierung vor und während einer Wettfahrt.
|
||||
|
||||
Das Tracking kann über eine Taste ein- und ausgeschaltet werden.
|
||||
Um versehentliches Umschalten zu vermeiden ist eine Nachfrage
|
||||
integriert.
|
||||
|
||||
- currentry only Ragatta hero supported
|
||||
|
||||
TODO get data from mqtt thread
|
||||
|
||||
Verbindungsabbrüche
|
||||
Behandlung von Verbindungsabbrüchen:
|
||||
- on_disconnect
|
||||
|
||||
|
||||
"""
|
||||
|
||||
import os
|
||||
import cairo
|
||||
from .page import Page
|
||||
|
||||
class Tracker(Page):
|
||||
|
||||
def __init__(self, pageno, cfg, appdata, boatdata):
|
||||
super().__init__(pageno, cfg, boatdata)
|
||||
super().__init__(pageno, cfg, appdata, boatdata)
|
||||
self._appdata = appdata
|
||||
self.bv_lat = boatdata.getRef("LAT")
|
||||
self.bv_lon = boatdata.getRef("LON")
|
||||
@@ -25,6 +35,20 @@ class Tracker(Page):
|
||||
self.buttonlabel[2] = 'ON'
|
||||
self.mode = 'N' # (N)ormal, (C)onfiguration
|
||||
|
||||
# Flaggengröße: 96 x 64 Pixel
|
||||
self.flagpos = ((208, 140), (308, 140), (208, 210), (308, 210))
|
||||
|
||||
# Flaggen laden
|
||||
flag = ('alpha', 'answer', 'black', 'blue', 'charlie', 'class',
|
||||
'finish', 'hotel', 'india', 'november', 'orange',
|
||||
'papa', 'repeat_one', 'sierra', 'start', 'uniform',
|
||||
'xray', 'yankee', 'zulu')
|
||||
self.sym_flag = {}
|
||||
for f in flag:
|
||||
flagfile = os.path.join(cfg['imgpath'], 'flags', f + '.png')
|
||||
self.sym_flag[f] = cairo.ImageSurface.create_from_png(flagfile)
|
||||
print(self.sym_flag)
|
||||
|
||||
def handle_key(self, buttonid):
|
||||
if buttonid == 1:
|
||||
# Modus umschalten
|
||||
@@ -47,47 +71,57 @@ class Tracker(Page):
|
||||
|
||||
def draw_normal(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.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.select_font_face("DSEG7 Classic")
|
||||
ctx.set_font_size(80)
|
||||
|
||||
if self._appdata.track.is_active():
|
||||
ctx.move_to(20, 120)
|
||||
ctx.show_text("-00:00")
|
||||
else:
|
||||
ctx.move_to(100, 120)
|
||||
ctx.show_text("off")
|
||||
|
||||
x0 = 8
|
||||
x1 = 104
|
||||
y0 = 150
|
||||
ctx.select_font_face("Ubuntu", cairo.FontSlant.NORMAL, cairo.FontWeight.BOLD)
|
||||
ctx.set_font_size(16)
|
||||
ctx.move_to(20, 120)
|
||||
ctx.move_to(x0, y0)
|
||||
ctx.show_text("Type: ")
|
||||
ctx.move_to(x1, y0)
|
||||
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(x0, y0 + 16)
|
||||
ctx.show_text("Regatta")
|
||||
ctx.move_to(x1, y0 + 16)
|
||||
ctx.show_text('')
|
||||
|
||||
ctx.move_to(20, 160)
|
||||
ctx.move_to(x0, y0 + 32)
|
||||
ctx.show_text("Lat=")
|
||||
ctx.move_to(x1, y0 + 32)
|
||||
ctx.show_text(self.bv_lat.format())
|
||||
ctx.move_to(20, 180)
|
||||
|
||||
ctx.move_to(x0, y0 + 48)
|
||||
ctx.show_text("Lon=")
|
||||
ctx.move_to(x1, y0 + 48)
|
||||
ctx.show_text(self.bv_lon.format())
|
||||
ctx.move_to(20, 200)
|
||||
|
||||
ctx.move_to(x0, y0 + 64)
|
||||
ctx.show_text("Sog=")
|
||||
ctx.move_to(x1, y0 + 64)
|
||||
ctx.show_text(self.bv_sog.format())
|
||||
|
||||
# Ausgewählte Regatta (raceid)
|
||||
x = 250
|
||||
y = 100
|
||||
ctx.move_to(x, y - 24)
|
||||
ctx.show_text("Regatta: ")
|
||||
# if ...
|
||||
# else
|
||||
# "not selected"
|
||||
|
||||
def draw_config(self, ctx):
|
||||
|
||||
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 config")
|
||||
ctx.show_text("Tracker configuration")
|
||||
# Daten aus Konfiguration anzeigen
|
||||
# - boot
|
||||
# - tracker
|
||||
@@ -109,7 +143,6 @@ class Tracker(Page):
|
||||
ctx.show_text("keine")
|
||||
|
||||
|
||||
|
||||
ctx.move_to(20, 120)
|
||||
ctx.show_text("Type: ")
|
||||
ctx.show_text(self._appdata.track.ttype)
|
||||
|
||||
@@ -17,7 +17,7 @@ from .page import Page
|
||||
class TwoValues(Page):
|
||||
|
||||
def __init__(self, pageno, cfg, appdata, boatdata, boatvalue1, boatvalue2):
|
||||
super().__init__(pageno, cfg, boatdata)
|
||||
super().__init__(pageno, cfg, appdata, boatdata)
|
||||
self.ref1 = self.bd.getRef(boatvalue1)
|
||||
self.ref2 = self.bd.getRef(boatvalue2)
|
||||
#print(self.ref1.valname)
|
||||
|
||||
@@ -18,7 +18,7 @@ class Voltage(Page):
|
||||
avg = (1, 10, 60, 300);
|
||||
|
||||
def __init__(self, pageno, cfg, appdata, boatdata):
|
||||
super().__init__(pageno, cfg, boatdata)
|
||||
super().__init__(pageno, cfg, appdata, boatdata)
|
||||
self.trend = True
|
||||
self.mode = 'A'
|
||||
self.avgindex = 0
|
||||
|
||||
Reference in New Issue
Block a user