108 lines
2.9 KiB
Python
108 lines
2.9 KiB
Python
import cairo
|
|
from .page import Page
|
|
import datetime
|
|
|
|
class System(Page):
|
|
|
|
def __init__(self, pageno, cfg, boatdata):
|
|
super().__init__(pageno, cfg, boatdata)
|
|
self.buttonlabel[1] = 'MODE'
|
|
self.buttonlabel[2] = 'STBY'
|
|
self.mode = ('I', 'N') # (I)nformation (N)MEA2000 Device List
|
|
self.modeindex = 1
|
|
self.standby = False
|
|
|
|
def handle_key(self, buttonid):
|
|
if self.standby and buttonid != 1:
|
|
return True
|
|
if buttonid == 1:
|
|
if self.standby:
|
|
self.standby = False
|
|
self.buttonlabel[1] = 'MODE'
|
|
self.buttonlabel[2] = 'STBY'
|
|
self.header = True
|
|
self.footer = True
|
|
else:
|
|
if self.modeindex < len(self.mode):
|
|
self.modeindex += 1
|
|
else:
|
|
self.modeindex = 0
|
|
return True
|
|
if buttonid == 2:
|
|
self.buttonlabel[1] = None
|
|
self.buttonlabel[2] = None
|
|
self.header = False
|
|
self.footer = False
|
|
self.standby = True
|
|
return False
|
|
|
|
def draw_stby(self, ctx):
|
|
# Standby
|
|
# TODO Kopf und Fußzeile ausschalten
|
|
# Ein Klick auf die Mode-Taste weckt das System wieder auf
|
|
pass
|
|
|
|
def draw_info(self, ctx):
|
|
|
|
# Bezeichnung
|
|
ctx.select_font_face("Ubuntu", cairo.FontSlant.NORMAL, cairo.FontWeight.BOLD)
|
|
ctx.set_font_size(32)
|
|
self.draw_text_center(ctx, 200, 40 , "System Info")
|
|
|
|
ctx.set_font_size(16)
|
|
|
|
# System name
|
|
# Software version
|
|
|
|
# Linke Seite
|
|
ctx.move_to(2, 80)
|
|
ctx.show_text("Simulation: ")
|
|
ctx.move_to(140, 80)
|
|
ctx.show_text('On' if self.cfg['simulation'] else 'Off')
|
|
|
|
ctx.move_to(2, 100)
|
|
ctx.show_text("BME280/BMP280: ")
|
|
ctx.move_to(140, 100)
|
|
ctx.show_text('On' if self.cfg['bme280'] else 'Off')
|
|
|
|
ctx.move_to(2, 120)
|
|
ctx.show_text("GPS: ")
|
|
ctx.move_to(140, 120)
|
|
ctx.show_text('On' if self.cfg['gps'] else 'Off')
|
|
|
|
# Rechte Seite
|
|
ctx.move_to(202, 80)
|
|
ctx.show_text("Wifi: ")
|
|
ctx.move_to(340, 80)
|
|
ctx.show_text('On')
|
|
|
|
ctx.move_to(202, 100)
|
|
ctx.show_text("Buzzer: ")
|
|
ctx.move_to(340, 100)
|
|
ctx.show_text('60%')
|
|
|
|
ctx.move_to(202, 120)
|
|
ctx.show_text("Timezone: ")
|
|
ctx.move_to(340, 120)
|
|
ctx.show_text(datetime.datetime.now().astimezone().tzname())
|
|
|
|
ctx.stroke()
|
|
|
|
# Geräteliste
|
|
ctx.move_to(2, 150)
|
|
ctx.show_text("NMEA2000 Device List")
|
|
|
|
ctx.set_line_width(1.5)
|
|
ctx.rectangle(2, 155, 394, 100)
|
|
ctx.stroke()
|
|
|
|
def draw_devlist(self, ctx):
|
|
# NMEA2000 Geräteliste, Vollbild
|
|
# scrollen mit Up/Down
|
|
pass
|
|
|
|
def draw(self, ctx):
|
|
if self.standby:
|
|
return
|
|
self.draw_info(ctx)
|