Anpassung an Vollbild 800x480 auf OBP60P physischem Display
This commit is contained in:
parent
65335e3c91
commit
bcbaa25cf5
19
led.py
19
led.py
|
@ -32,23 +32,30 @@ colordef = {
|
|||
|
||||
class LED():
|
||||
|
||||
def __init__(self, parent):
|
||||
def __init__(self, parent, fullscreen):
|
||||
# parent muß ein Gtk.Fixed-Objekt sein
|
||||
self._colorname = ""
|
||||
self._color = (0, 0, 0) # Farbe schwarz ist aus
|
||||
self._brightness = 0.0
|
||||
self._color_off = (0.3725, 0.4275, 0.6078) # RGB(95, 109, 155)
|
||||
self._pos_x = 30
|
||||
self._pos_y = 14
|
||||
self._radius = 5
|
||||
self._flashcounter = 0
|
||||
self._flashcolor = (0, 0, 0)
|
||||
self._enabled = False
|
||||
|
||||
# Box oberhalb des Displays
|
||||
self._da = Gtk.DrawingArea()
|
||||
parent.put(self._da, 64, 56)
|
||||
self._da.set_size_request(400, 32)
|
||||
if fullscreen:
|
||||
parent.put(self._da, 640, 0)
|
||||
self._da.set_size_request(160, 64)
|
||||
self._pos_x = 18
|
||||
self._pos_y = 20
|
||||
self._radius = 8
|
||||
else:
|
||||
parent.put(self._da, 64, 56)
|
||||
self._da.set_size_request(400, 32)
|
||||
self._pos_x = 30
|
||||
self._pos_y = 14
|
||||
self._radius = 5
|
||||
self._da.connect("draw", self.on_draw)
|
||||
|
||||
def on_draw(self, widget, ctx):
|
||||
|
|
44
obp60v.py
44
obp60v.py
|
@ -371,18 +371,25 @@ class Frontend(Gtk.Window):
|
|||
# Geräterahmen mit Buttons
|
||||
self.da_device = Gtk.DrawingArea()
|
||||
self.fixed.put(self.da_device, 0, 0)
|
||||
self.da_device.set_size_request(530, 555) # für fixed benötigt
|
||||
if self._fullscreen:
|
||||
self.da_device.set_size_request(800, 480)
|
||||
else:
|
||||
self.da_device.set_size_request(530, 555) # für fixed benötigt
|
||||
self.da_device.add_events(Gdk.EventMask.BUTTON_PRESS_MASK|Gdk.EventMask.BUTTON_RELEASE_MASK)
|
||||
self.da_device.connect("draw", self.da_device_draw)
|
||||
self.da_device.connect('button-press-event', self.da_button_press)
|
||||
self.da_device.connect('button-release-event', self.da_button_release)
|
||||
# Displayfläche
|
||||
self.da = Gtk.DrawingArea()
|
||||
self.fixed.put(self.da, 64, 95)
|
||||
self.da.set_size_request(400, 300) # für fixed benötigt
|
||||
if self._fullscreen:
|
||||
self.fixed.put(self.da, 0, 0)
|
||||
self.da.set_size_request(640, 480) # Faktor 1,6 zu 400x300
|
||||
else:
|
||||
self.fixed.put(self.da, 64, 95)
|
||||
self.da.set_size_request(400, 300) # für fixed benötigt
|
||||
self.da.connect("draw", self.da_draw)
|
||||
# Flash LED
|
||||
self.flashled = LED(self.fixed) # Soft Flash-LED
|
||||
self.flashled = LED(self.fixed, self._fullscreen) # Soft Flash-LED
|
||||
|
||||
self.button_clicked = 0 # Geklickter Button vor Loslassen
|
||||
self.keylock = False
|
||||
|
@ -410,7 +417,10 @@ class Frontend(Gtk.Window):
|
|||
# Tastaturstatus an Seite durchreichen
|
||||
self.curpage.keylock = self.keylock
|
||||
# Neuzeichnen
|
||||
self.da.queue_draw()
|
||||
if self._fullscreen:
|
||||
self.da_device.queue_draw()
|
||||
else:
|
||||
self.da.queue_draw()
|
||||
return True
|
||||
|
||||
def on_timer_slow(self):
|
||||
|
@ -433,6 +443,9 @@ class Frontend(Gtk.Window):
|
|||
viewport.width = 530
|
||||
viewport.height = 555
|
||||
self._svg.render_document(ctx, viewport)
|
||||
if self._fullscreen:
|
||||
# Seitliche Buttons zeichnen
|
||||
self.curpage.draw_sidebuttons(ctx)
|
||||
|
||||
def da_draw(self, widget, ctx):
|
||||
ctx.set_source_rgb(1.0, 0, 0)
|
||||
|
@ -663,6 +676,17 @@ if __name__ == "__main__":
|
|||
|
||||
setproctitle("obp60v")
|
||||
|
||||
owndevice = Device(100)
|
||||
# Hardcoding device, not intended to change
|
||||
owndevice.manufacturercode = cfg['manufcode']
|
||||
owndevice.industrygroup = cfg['industrygroup']
|
||||
owndevice.deviceclass = cfg['devclass']
|
||||
owndevice.devicefunction = cfg['devfunc']
|
||||
|
||||
boatdata = BoatData()
|
||||
boatdata.addTank(0)
|
||||
boatdata.addEngine(0)
|
||||
|
||||
# Basiskonfiguration aus Datei lesen
|
||||
config = configparser.ConfigParser()
|
||||
config_path = os.path.join(sys.path[0], cfg['cfgfile'])
|
||||
|
@ -755,16 +779,6 @@ if __name__ == "__main__":
|
|||
# Globale Daten, u.a. auch Shutdown-Indikator
|
||||
appdata = AppData(log, cfg)
|
||||
|
||||
owndevice = Device(100)
|
||||
# Hardcoding device, not intended to change
|
||||
owndevice.manufacturercode = cfg['manufcode']
|
||||
owndevice.industrygroup = cfg['industrygroup']
|
||||
owndevice.deviceclass = cfg['devclass']
|
||||
owndevice.devicefunction = cfg['devfunc']
|
||||
|
||||
boatdata = BoatData()
|
||||
boatdata.addTank(0)
|
||||
boatdata.addEngine(0)
|
||||
|
||||
# Ggf. Simulationsdaten einschalten
|
||||
if cfg['simulation']:
|
||||
|
|
|
@ -21,7 +21,7 @@ import astral
|
|||
class Clock(Page):
|
||||
|
||||
def __init__(self, pageno, cfg, appdata, boatdata):
|
||||
super().__init__(pageno, cfg, boatdata)
|
||||
super().__init__(pageno, cfg, appdata, boatdata)
|
||||
self.buttonlabel[1] = 'MODE'
|
||||
self.buttonlabel[2] = 'TZ'
|
||||
self.mode = ('A', 'D', 'T') # (A)nalog (D)igital (T)imer
|
||||
|
|
|
@ -162,11 +162,40 @@ class Page():
|
|||
ctx.show_text(datetime.today().strftime('%H:%M %Y-%m-%d LOT'))
|
||||
ctx.stroke()
|
||||
|
||||
def draw_sidebuttons(self, ctx):
|
||||
"""
|
||||
Seitliche Buttons zeichnen im Fullscreen-Modus
|
||||
"""
|
||||
ctx.save()
|
||||
ctx.select_font_face("AtariST8x16SystemFont")
|
||||
ctx.set_font_size(16)
|
||||
ctx.scale(1.6, 1.6)
|
||||
ctx.set_source_rgb(0, 0, 0)
|
||||
|
||||
bx = 400
|
||||
by = (128, 192, 256, 320, 384, 448)
|
||||
bw = 160
|
||||
bh = 64
|
||||
for i in range(6):
|
||||
if len(self.buttonlabel[i+1]) > 0 :
|
||||
if self.buttonlabel[i+1][0] == "#":
|
||||
# Symbol verwenden 16x16 Pixel
|
||||
ctx.save()
|
||||
key = self.buttonlabel[i+1][1:]
|
||||
ctx.set_source_surface(self.icon[key], bx + bw / 3.2 - 8, by[i] / 1.6 - 6)
|
||||
ctx.paint()
|
||||
ctx.restore()
|
||||
else:
|
||||
w = ctx.text_extents(self.buttonlabel[i+1]).width
|
||||
ctx.move_to(bx + bw/3.2 - w/2, by[i] / 1.6 + 8)
|
||||
ctx.show_text(self.buttonlabel[i+1])
|
||||
ctx.stroke()
|
||||
ctx.restore()
|
||||
|
||||
def draw_footer(self, ctx):
|
||||
"""
|
||||
Nur Belegung der Buttons (label[1] bis label[6])
|
||||
"""
|
||||
|
||||
ctx.select_font_face("AtariST8x16SystemFont")
|
||||
ctx.set_font_size(16)
|
||||
x = (35, 101, 167, 233, 299, 365)
|
||||
|
@ -184,11 +213,6 @@ class Page():
|
|||
ctx.line_to(x[i]+32.5, 300)
|
||||
ctx.stroke()
|
||||
|
||||
# Fullscreen-Buttons
|
||||
bx = 400
|
||||
by = (128, 192, 256, 320, 384, 448)
|
||||
bw = 160
|
||||
bh = 64
|
||||
for i in range(6):
|
||||
if len(self.buttonlabel[i+1]) > 0 :
|
||||
if self.buttonlabel[i+1][0] == "#":
|
||||
|
@ -197,18 +221,12 @@ class Page():
|
|||
key = self.buttonlabel[i+1][1:]
|
||||
ctx.set_source_surface(self.icon[key], x[i]-8, y-13)
|
||||
ctx.paint()
|
||||
ctx.set_source_surface(self.icon[key], bx + bw / 3.2 - 8, by[i] / 1.6 - 6)
|
||||
ctx.paint()
|
||||
ctx.restore()
|
||||
else:
|
||||
text = self.buttonlabel[i+1]
|
||||
w = ctx.text_extents(text).width
|
||||
ctx.move_to(x[i] - w/2, y+2)
|
||||
ctx.show_text(text)
|
||||
if self.fullscreen:
|
||||
w = ctx.text_extents(self.buttonlabel[i+1]).width
|
||||
ctx.move_to(bx + bw/3.2 - w/2, by[i] / 1.6 + 8)
|
||||
ctx.show_text(self.buttonlabel[i+1])
|
||||
ctx.stroke()
|
||||
|
||||
def draw_alarm(self, ctx, source, alarmid, message):
|
||||
|
|
Loading…
Reference in New Issue