Verbessertes Zeichnen mit mehreren Drawing-Areas
This commit is contained in:
27
obp60v.py
27
obp60v.py
@@ -300,6 +300,7 @@ class Frontend(Gtk.Window):
|
||||
def __init__(self, cfg, appdata, device, boatdata, profile):
|
||||
super().__init__()
|
||||
self.appdata = appdata
|
||||
self.appdata.setFrontend(self)
|
||||
self.owndev = device
|
||||
self.boatdata = boatdata
|
||||
self._config = cfg['_config']
|
||||
@@ -364,14 +365,19 @@ class Frontend(Gtk.Window):
|
||||
self.add(self.fixed)
|
||||
|
||||
# OBP GUI
|
||||
# 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
|
||||
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.da.add_events(Gdk.EventMask.BUTTON_PRESS_MASK|Gdk.EventMask.BUTTON_RELEASE_MASK)
|
||||
self.fixed.put(self.da, 0, 0)
|
||||
self.da.set_size_request(530, 555) # für fixed benötigt
|
||||
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('button-press-event', self.da_button_press)
|
||||
self.da.connect('button-release-event', self.da_button_release)
|
||||
|
||||
# Flash LED
|
||||
self.flashled = LED(self.fixed) # Soft Flash-LED
|
||||
|
||||
@@ -399,7 +405,7 @@ class Frontend(Gtk.Window):
|
||||
# Tastaturstatus an Seite durchreichen
|
||||
self.curpage.keylock = self.keylock
|
||||
# Neuzeichnen
|
||||
self.queue_draw()
|
||||
self.da.queue_draw()
|
||||
return True
|
||||
|
||||
def on_draw(self, widget, ctx):
|
||||
@@ -407,7 +413,7 @@ class Frontend(Gtk.Window):
|
||||
ctx.set_source_rgba(0, 0, 0, 0)
|
||||
ctx.paint()
|
||||
|
||||
def da_draw(self, widget, ctx):
|
||||
def da_device_draw(self, widget, ctx):
|
||||
viewport = Rsvg.Rectangle()
|
||||
viewport.x = 0
|
||||
viewport.y = 0
|
||||
@@ -418,16 +424,15 @@ class Frontend(Gtk.Window):
|
||||
viewport.width = 530
|
||||
viewport.height = 555
|
||||
self._svg.render_document(ctx, viewport)
|
||||
|
||||
def da_draw(self, widget, ctx):
|
||||
ctx.set_source_rgb(1.0, 0, 0)
|
||||
if not self._fullscreen:
|
||||
ctx.translate(64, 95) # Koordinatenursprung auf virtuellen Displaybereich setzen
|
||||
ctx.rectangle(0, 0, 400, 300)
|
||||
ctx.clip()
|
||||
else:
|
||||
ctx.scale(1.6, 1.6)
|
||||
|
||||
ctx.set_source_rgb(0, 0, 0) # Schwarz auf Weiß
|
||||
|
||||
# Heartbeat umschalten
|
||||
if self.curpage.header:
|
||||
self.curpage.draw_header(ctx)
|
||||
|
||||
Reference in New Issue
Block a user