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
This commit is contained in:
ki
2026-08-31 03:17:50 +04:00
parent 4cef32b919
commit aeaf8fdb8b
+19 -9
View File
@@ -567,18 +567,28 @@ class Widget(Widget):
draw.line((x + 6, ry + 2, x + w - 6, ry + 2), fill=FG, width=1) draw.line((x + 6, ry + 2, x + w - 6, ry + 2), fill=FG, width=1)
inner_x = x + 6 inner_x = x + 6
inner_w = w - 12 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 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) fill=RED)
f_tag = _fit_size(draw, s["tag"], tag_w - 4, head_h - 8, # Zeige Tag (2 Zeichen) + full station name darunter
candidates=["28", "24", "22", "20"]) 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) tw_, th_ = measure(draw, s["tag"], f_tag)
draw.text((inner_x + (tag_w - tw_) // 2, ry + 2 + (head_h - 4 - th_) // 2), draw.text((inner_x + (tag_full_w - tw_) // 2, ry + 3), s["tag"], font=f_tag, fill=WHITE)
s["tag"], font=f_tag, fill=WHITE) # Name unter dem Tag, kleiner
# Name gross, fett f_name_tag = _fit_size(draw, s["name"], tag_full_w - 4, (head_h - 4) // 2 - 2,
name_x = inner_x + tag_w + 8 candidates=["14", "12", "11", "10"])
name_w = inner_w - tag_w - 8 - 130 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"]) 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") text_in_box(draw, s["name"], name_x, ry + 2, name_w, head_h - 4, f_name, FG, "left")
# Temp RIESIG, in Temperatur-Farbe # Temp RIESIG, in Temperatur-Farbe