From aeaf8fdb8be5fcef6da79a0796e9511337bc5206 Mon Sep 17 00:00:00 2001 From: ki Date: Mon, 31 Aug 2026 03:17:50 +0400 Subject: [PATCH] FIX-NETATMO: Indoor-Tag-Box zeigt Stationsname + Layout-Fix bei schmalen Sektionen - _draw_indoor_full: Tag-Box zeigt jetzt Tag (2 Zeichen) + vollen Stationsnamen darunter in einer Box statt 30px Tag + separatem Namen nebendran (der bei schmalen Sektionen verschwand) - Tag-Box-Breite ist jetzt dynamisch (1/3 der Sektionsbreite, mind. 60px) statt fixe 30px - name_w Guard (if name_w > 20) verhindert negative Breiten - Fix analog zu gleichem Problem in _all_indoor() das die Hauptstation statt 'M' die ersten 2 Buchstaben zeigt --- plugins/netatmo.py | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/plugins/netatmo.py b/plugins/netatmo.py index a8fd39b..8b420f9 100644 --- a/plugins/netatmo.py +++ b/plugins/netatmo.py @@ -567,20 +567,30 @@ class Widget(Widget): draw.line((x + 6, ry + 2, x + w - 6, ry + 2), fill=FG, width=1) inner_x = x + 6 inner_w = w - 12 - # HEAD: Tag | Name (GROSS) | Temp (RIESIG) + # HEAD: Tag-Box (links, zeigt Tag+Name) | Name (separat, nur wenn genug Platz) | Temp (rechts) + # Tag-Box: zeigt Tag (2 Zeichen) + full station name darunter tag_w = 30 - draw.rectangle((inner_x, ry + 2, inner_x + tag_w, ry + 2 + head_h - 4), + tag_full_w = inner_w // 3 # 1/3 der verfuegbaren Breite fuer Tag+Name + tag_full_w = max(tag_full_w, 60) # mindestens 60px + draw.rectangle((inner_x, ry + 2, inner_x + tag_full_w, ry + 2 + head_h - 4), fill=RED) - f_tag = _fit_size(draw, s["tag"], tag_w - 4, head_h - 8, - candidates=["28", "24", "22", "20"]) + # Zeige Tag (2 Zeichen) + full station name darunter + f_tag = _fit_size(draw, s["tag"], tag_full_w - 4, (head_h - 4) // 2, + candidates=["24", "20", "18", "16"]) tw_, th_ = measure(draw, s["tag"], f_tag) - draw.text((inner_x + (tag_w - tw_) // 2, ry + 2 + (head_h - 4 - th_) // 2), - s["tag"], font=f_tag, fill=WHITE) - # Name gross, fett - name_x = inner_x + tag_w + 8 - name_w = inner_w - tag_w - 8 - 130 - f_name = _fit_size(draw, s["name"], name_w, head_h - 4, candidates=["24", "20", "18", "16"]) - text_in_box(draw, s["name"], name_x, ry + 2, name_w, head_h - 4, f_name, FG, "left") + draw.text((inner_x + (tag_full_w - tw_) // 2, ry + 3), s["tag"], font=f_tag, fill=WHITE) + # Name unter dem Tag, kleiner + f_name_tag = _fit_size(draw, s["name"], tag_full_w - 4, (head_h - 4) // 2 - 2, + candidates=["14", "12", "11", "10"]) + nw_, nh_ = measure(draw, s["name"], f_name_tag) + draw.text((inner_x + (tag_full_w - nw_) // 2, ry + 3 + (head_h - 4) // 2), + s["name"], font=f_name_tag, fill=WHITE) + # Name (grosse Version) NEBEN der Tag-Box, nur wenn genug Platz + name_x = inner_x + tag_full_w + 8 + name_w = inner_w - tag_full_w - 8 - 130 + if name_w > 20: + f_name = _fit_size(draw, s["name"], name_w, head_h - 4, candidates=["24", "20", "18", "16"]) + text_in_box(draw, s["name"], name_x, ry + 2, name_w, head_h - 4, f_name, FG, "left") # Temp RIESIG, in Temperatur-Farbe t = s["data"].get("Temperature") t_str = f"{t:.1f}°" if t is not None else "—"