44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
"""No-side-effects simulated interactive menu. Not a shell."""
|
|
import os
|
|
import sys
|
|
import tty
|
|
|
|
OPTIONS = ('Estado del sistema (demo)', 'Almacenamiento (demo)', 'Red (demo)', 'Salir')
|
|
|
|
|
|
def show(i):
|
|
sys.stdout.write('\x1b[2J\x1b[H')
|
|
sys.stdout.write('FrameBridge CUA-TTY - DEMOSTRACION AISLADA\r\n')
|
|
sys.stdout.write('NO ejecuta comandos; NO modifica el servidor.\r\n\r\n')
|
|
for n, label in enumerate(OPTIONS):
|
|
sys.stdout.write(('> ' if n == i else ' ') + label + '\r\n')
|
|
sys.stdout.write('\r\nUse flechas arriba/abajo, Enter y q.\r\n')
|
|
sys.stdout.flush()
|
|
|
|
|
|
def main():
|
|
tty.setcbreak(sys.stdin.fileno())
|
|
i = 0
|
|
show(i)
|
|
while True:
|
|
b = os.read(0, 1)
|
|
if not b: break
|
|
if b in (b'q', b'Q', b'\x03'): break
|
|
if b == b'\x1b':
|
|
seq = os.read(0, 2)
|
|
if seq == b'[A': i = (i - 1) % len(OPTIONS)
|
|
elif seq == b'[B': i = (i + 1) % len(OPTIONS)
|
|
elif b in (b'j', b'J'): i = (i + 1) % len(OPTIONS)
|
|
elif b in (b'k', b'K'): i = (i - 1) % len(OPTIONS)
|
|
elif b in (b'\r', b'\n'):
|
|
if i == len(OPTIONS) - 1: break
|
|
sys.stdout.write('\r\nSeleccion simulada: ' + OPTIONS[i] + '\r\n')
|
|
sys.stdout.flush()
|
|
show(i)
|
|
sys.stdout.write('\r\nDEMOSTRACION_FINALIZADA\r\n')
|
|
sys.stdout.flush()
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|