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():
|
class LED():
|
||||||
|
|
||||||
def __init__(self, parent):
|
def __init__(self, parent, fullscreen):
|
||||||
# parent muß ein Gtk.Fixed-Objekt sein
|
# parent muß ein Gtk.Fixed-Objekt sein
|
||||||
self._colorname = ""
|
self._colorname = ""
|
||||||
self._color = (0, 0, 0) # Farbe schwarz ist aus
|
self._color = (0, 0, 0) # Farbe schwarz ist aus
|
||||||
self._brightness = 0.0
|
self._brightness = 0.0
|
||||||
self._color_off = (0.3725, 0.4275, 0.6078) # RGB(95, 109, 155)
|
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._flashcounter = 0
|
||||||
self._flashcolor = (0, 0, 0)
|
self._flashcolor = (0, 0, 0)
|
||||||
self._enabled = False
|
self._enabled = False
|
||||||
|
|
||||||
# Box oberhalb des Displays
|
# Box oberhalb des Displays
|
||||||
self._da = Gtk.DrawingArea()
|
self._da = Gtk.DrawingArea()
|
||||||
parent.put(self._da, 64, 56)
|
if fullscreen:
|
||||||
self._da.set_size_request(400, 32)
|
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)
|
self._da.connect("draw", self.on_draw)
|
||||||
|
|
||||||
def on_draw(self, widget, ctx):
|
def on_draw(self, widget, ctx):
|
||||||
|
|
44
obp60v.py
44
obp60v.py
|
@ -371,18 +371,25 @@ class Frontend(Gtk.Window):
|
||||||
# Geräterahmen mit Buttons
|
# Geräterahmen mit Buttons
|
||||||
self.da_device = Gtk.DrawingArea()
|
self.da_device = Gtk.DrawingArea()
|
||||||
self.fixed.put(self.da_device, 0, 0)
|
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.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("draw", self.da_device_draw)
|
||||||
self.da_device.connect('button-press-event', self.da_button_press)
|
self.da_device.connect('button-press-event', self.da_button_press)
|
||||||
self.da_device.connect('button-release-event', self.da_button_release)
|
self.da_device.connect('button-release-event', self.da_button_release)
|
||||||
# Displayfläche
|
# Displayfläche
|
||||||
self.da = Gtk.DrawingArea()
|
self.da = Gtk.DrawingArea()
|
||||||
self.fixed.put(self.da, 64, 95)
|
if self._fullscreen:
|
||||||
self.da.set_size_request(400, 300) # für fixed benötigt
|
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)
|
self.da.connect("draw", self.da_draw)
|
||||||
# Flash LED
|
# 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.button_clicked = 0 # Geklickter Button vor Loslassen
|
||||||
self.keylock = False
|
self.keylock = False
|
||||||
|
@ -410,7 +417,10 @@ class Frontend(Gtk.Window):
|
||||||
# Tastaturstatus an Seite durchreichen
|
# Tastaturstatus an Seite durchreichen
|
||||||
self.curpage.keylock = self.keylock
|
self.curpage.keylock = self.keylock
|
||||||
# Neuzeichnen
|
# Neuzeichnen
|
||||||
self.da.queue_draw()
|
if self._fullscreen:
|
||||||
|
self.da_device.queue_draw()
|
||||||
|
else:
|
||||||
|
self.da.queue_draw()
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def on_timer_slow(self):
|
def on_timer_slow(self):
|
||||||
|
@ -433,6 +443,9 @@ class Frontend(Gtk.Window):
|
||||||
viewport.width = 530
|
viewport.width = 530
|
||||||
viewport.height = 555
|
viewport.height = 555
|
||||||
self._svg.render_document(ctx, viewport)
|
self._svg.render_document(ctx, viewport)
|
||||||
|
if self._fullscreen:
|
||||||
|
# Seitliche Buttons zeichnen
|
||||||
|
self.curpage.draw_sidebuttons(ctx)
|
||||||
|
|
||||||
def da_draw(self, widget, ctx):
|
def da_draw(self, widget, ctx):
|
||||||
ctx.set_source_rgb(1.0, 0, 0)
|
ctx.set_source_rgb(1.0, 0, 0)
|
||||||
|
@ -663,6 +676,17 @@ if __name__ == "__main__":
|
||||||
|
|
||||||
setproctitle("obp60v")
|
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
|
# Basiskonfiguration aus Datei lesen
|
||||||
config = configparser.ConfigParser()
|
config = configparser.ConfigParser()
|
||||||
config_path = os.path.join(sys.path[0], cfg['cfgfile'])
|
config_path = os.path.join(sys.path[0], cfg['cfgfile'])
|
||||||
|
@ -755,16 +779,6 @@ if __name__ == "__main__":
|
||||||
# Globale Daten, u.a. auch Shutdown-Indikator
|
# Globale Daten, u.a. auch Shutdown-Indikator
|
||||||
appdata = AppData(log, cfg)
|
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
|
# Ggf. Simulationsdaten einschalten
|
||||||
if cfg['simulation']:
|
if cfg['simulation']:
|
||||||
|
|
|
@ -21,7 +21,7 @@ import astral
|
||||||
class Clock(Page):
|
class Clock(Page):
|
||||||
|
|
||||||
def __init__(self, pageno, cfg, appdata, boatdata):
|
def __init__(self, pageno, cfg, appdata, boatdata):
|
||||||
super().__init__(pageno, cfg, boatdata)
|
super().__init__(pageno, cfg, appdata, boatdata)
|
||||||
self.buttonlabel[1] = 'MODE'
|
self.buttonlabel[1] = 'MODE'
|
||||||
self.buttonlabel[2] = 'TZ'
|
self.buttonlabel[2] = 'TZ'
|
||||||
self.mode = ('A', 'D', 'T') # (A)nalog (D)igital (T)imer
|
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.show_text(datetime.today().strftime('%H:%M %Y-%m-%d LOT'))
|
||||||
ctx.stroke()
|
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):
|
def draw_footer(self, ctx):
|
||||||
"""
|
"""
|
||||||
Nur Belegung der Buttons (label[1] bis label[6])
|
Nur Belegung der Buttons (label[1] bis label[6])
|
||||||
"""
|
"""
|
||||||
|
|
||||||
ctx.select_font_face("AtariST8x16SystemFont")
|
ctx.select_font_face("AtariST8x16SystemFont")
|
||||||
ctx.set_font_size(16)
|
ctx.set_font_size(16)
|
||||||
x = (35, 101, 167, 233, 299, 365)
|
x = (35, 101, 167, 233, 299, 365)
|
||||||
|
@ -184,11 +213,6 @@ class Page():
|
||||||
ctx.line_to(x[i]+32.5, 300)
|
ctx.line_to(x[i]+32.5, 300)
|
||||||
ctx.stroke()
|
ctx.stroke()
|
||||||
|
|
||||||
# Fullscreen-Buttons
|
|
||||||
bx = 400
|
|
||||||
by = (128, 192, 256, 320, 384, 448)
|
|
||||||
bw = 160
|
|
||||||
bh = 64
|
|
||||||
for i in range(6):
|
for i in range(6):
|
||||||
if len(self.buttonlabel[i+1]) > 0 :
|
if len(self.buttonlabel[i+1]) > 0 :
|
||||||
if self.buttonlabel[i+1][0] == "#":
|
if self.buttonlabel[i+1][0] == "#":
|
||||||
|
@ -197,18 +221,12 @@ class Page():
|
||||||
key = self.buttonlabel[i+1][1:]
|
key = self.buttonlabel[i+1][1:]
|
||||||
ctx.set_source_surface(self.icon[key], x[i]-8, y-13)
|
ctx.set_source_surface(self.icon[key], x[i]-8, y-13)
|
||||||
ctx.paint()
|
ctx.paint()
|
||||||
ctx.set_source_surface(self.icon[key], bx + bw / 3.2 - 8, by[i] / 1.6 - 6)
|
|
||||||
ctx.paint()
|
|
||||||
ctx.restore()
|
ctx.restore()
|
||||||
else:
|
else:
|
||||||
text = self.buttonlabel[i+1]
|
text = self.buttonlabel[i+1]
|
||||||
w = ctx.text_extents(text).width
|
w = ctx.text_extents(text).width
|
||||||
ctx.move_to(x[i] - w/2, y+2)
|
ctx.move_to(x[i] - w/2, y+2)
|
||||||
ctx.show_text(text)
|
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()
|
ctx.stroke()
|
||||||
|
|
||||||
def draw_alarm(self, ctx, source, alarmid, message):
|
def draw_alarm(self, ctx, source, alarmid, message):
|
||||||
|
|
Loading…
Reference in New Issue