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:
co-authored by
Claude Opus 5
parent
9d5bf50f99
commit
6e062faf19
+16
-3
@@ -87,7 +87,17 @@ def _pages(win, lines, title, footer="beliebige Taste = weiter"):
|
|||||||
put(win, row + 2, 2, truncate(text, width - 4), attr)
|
put(win, row + 2, 2, truncate(text, width - 4), attr)
|
||||||
more = " (%d-%d von %d)" % (top + 1, min(top + rows, len(lines)), len(lines)) \
|
more = " (%d-%d von %d)" % (top + 1, min(top + rows, len(lines)), len(lines)) \
|
||||||
if len(lines) > rows else ""
|
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()
|
win.refresh()
|
||||||
key = read_key(win)
|
key = read_key(win)
|
||||||
if key == curses.KEY_DOWN and top + rows < len(lines):
|
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
|
# Laufwerk auch wieder herein. Und v gehoert hierher, weil ein
|
||||||
# ausgeworfenes Laufwerk beim Host liegt und genau jetzt befuellt
|
# ausgeworfenes Laufwerk beim Host liegt und genau jetzt befuellt
|
||||||
# werden will.
|
# werden will.
|
||||||
footer = ("s Start | h Stop | e Auswerfen/Einklinken | v Laufwerke | "
|
footer = [("s", "Starten", "Start"), ("h", "Herunterfahren", "Stop"),
|
||||||
"p SPICE/USB | f Loesen | x Verwerfen | q zurueck")
|
("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)
|
key = _pages(stdscr, lines, "Wiederherstellung %s" % instance.label, footer)
|
||||||
|
|
||||||
if key in ("q", "\x1b") or is_escape(key):
|
if key in ("q", "\x1b") or is_escape(key):
|
||||||
|
|||||||
Reference in New Issue
Block a user