From 6e062faf19accb477a18c0f425795138a95b7a64 Mon Sep 17 00:00:00 2001 From: duffyduck Date: Sun, 9 Aug 2026 10:44:21 +0200 Subject: [PATCH] Fusszeile der Detailansicht bricht um statt abzuschneiden Mit p war sie auf 105 Zeichen gewachsen. Anders als der Rest der Oberflaeche stand dort ein fester Text - auf einem schmaleren Terminal waere hinten einfach "q zurueck" verschwunden, ohne dass man den Grund sieht. _pages() nimmt jetzt wahlweise eine Tastenliste und laesst sie durch keybar() laufen, wie ueberall sonst: 120 Spalten eine Zeile, volle Beschriftung 100 / 80 zwei Zeilen, volle Beschriftung 60 zwei Zeilen, gekuerzte Beschriftung Die Seitenangabe "(1-20 von 40)" haengt sich weiterhin ans Ende - sonst waere bei langen Inhalten nicht mehr zu sehen, dass es weitergeht. Co-Authored-By: Claude Opus 5 (1M context) --- pvesnap/recovery_ui.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/pvesnap/recovery_ui.py b/pvesnap/recovery_ui.py index 1e12cac..ecdeba0 100644 --- a/pvesnap/recovery_ui.py +++ b/pvesnap/recovery_ui.py @@ -87,7 +87,17 @@ def _pages(win, lines, title, footer="beliebige Taste = weiter"): put(win, row + 2, 2, truncate(text, width - 4), attr) more = " (%d-%d von %d)" % (top + 1, min(top + rows, len(lines)), len(lines)) \ if len(lines) > rows else "" - fill(win, height - 1, " " + footer + more, curses.color_pair(C_FOOTER)) + # Eine Liste wird wie ueberall sonst auf die Breite umgebrochen; ein + # fester Text wuerde auf schmalen Terminals hinten abgeschnitten. + zeilen = keybar(width, footer) if isinstance(footer, list) else [footer] + if more: + # Die Seitenangabe gehoert ans Ende, egal welche Form die + # Fusszeile hat - sonst weiss man bei langen Inhalten nicht, + # dass es weitergeht. + zeilen[-1] = zeilen[-1] + more + for offset, zeile in enumerate(zeilen[-2:]): + fill(win, height - len(zeilen[-2:]) + offset, " " + zeile, + curses.color_pair(C_FOOTER)) win.refresh() key = read_key(win) if key == curses.KEY_DOWN and top + rows < len(lines): @@ -526,8 +536,11 @@ def _details(stdscr, proxmox, instance): # Laufwerk auch wieder herein. Und v gehoert hierher, weil ein # ausgeworfenes Laufwerk beim Host liegt und genau jetzt befuellt # werden will. - footer = ("s Start | h Stop | e Auswerfen/Einklinken | v Laufwerke | " - "p SPICE/USB | f Loesen | x Verwerfen | q zurueck") + footer = [("s", "Starten", "Start"), ("h", "Herunterfahren", "Stop"), + ("e", "Auswerfen/Einklinken", "Ausw."), + ("v", "Laufwerke", "Laufw."), ("p", "SPICE/USB", "SPICE"), + ("f", "Loesen", "Loesen"), ("x", "Verwerfen", "Verw."), + ("q", "zurueck", "zurueck")] key = _pages(stdscr, lines, "Wiederherstellung %s" % instance.label, footer) if key in ("q", "\x1b") or is_escape(key):