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) <noreply@anthropic.com>
This commit is contained in:
duffyduck
2026-08-09 10:44:32 +02:00
co-authored by Claude Opus 5
parent 9d5bf50f99
commit 6e062faf19
+16 -3
View File
@@ -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):