ncurses.py revision 15c3c2bdf84aa333e213d8f5ac2b4b30a2595231
115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling#!/usr/bin/env python
215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling#
315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling# $Id$
415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling#
515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling# (n)curses exerciser in Python, an interactive test for the curses
615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling# module. Currently, only the panel demos are ported.
715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchlingimport curses
915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
1015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchlingdef wGetchar(win = None):
1115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    if win == None: win = stdscr
1215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    return win.getch()
1315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
1415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchlingdef Getchar():
1515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    wGetchar()
1615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
1715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling#
1815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling# Panels tester
1915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling#
2015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchlingdef wait_a_while():
2115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    if nap_msec == 1:
2215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        Getchar()
2315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    else:
2415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        curses.napms(nap_msec)
2515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
2615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchlingdef saywhat(text):
2715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    stdscr.move(curses.LINES - 1, 0)
2815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    stdscr.clrtoeol()
2915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    stdscr.addstr(text)
3015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
3115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchlingdef mkpanel(color, rows, cols, tly, tlx):
3215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    win = curses.newwin(rows, cols, tly, tlx)
3315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    pan = win.new_panel()
3415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    if curses.has_colors():
3515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        if color == curses.COLOR_BLUE:
3615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling            fg = curses.COLOR_WHITE
3715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        else:
3815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling            fg = curses.COLOR_BLACK
3915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        bg = color
4015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        curses.init_pair(color, fg, bg)
4115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        win.bkgdset(ord(' '), curses.color_pair(color))
4215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    else:
4315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        win.bkgdset(ord(' '), curses.A_BOLD)
4415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
4515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    return pan
4615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
4715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchlingdef pflush():
4815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    curses.update_panels()
4915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    curses.doupdate()
5015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
5115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchlingdef fill_panel(pan):
5215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    win = pan.window()
5315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    num = pan.userptr()[1]
5415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
5515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    win.move(1, 1)
5615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    win.addstr("-pan%c-" % num)
5715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    win.clrtoeol()
5815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    win.box()
5915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
6015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    maxy, maxx = win.getmaxyx()
6115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    for y in range(2, maxy - 1):
6215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        for x in range(1, maxx - 1):
6315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling            win.move(y, x)
6415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling            win.addch(num)
6515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
6615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchlingdef demo_panels(win):
6715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    global stdscr, nap_msec, mod
6815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    stdscr = win
6915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    nap_msec = 1
7015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    mod = ["test", "TEST", "(**)", "*()*", "<-->", "LAST"]
7115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
7215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    stdscr.refresh()
7315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
7415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    for y in range(0, curses.LINES - 1):
7515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        for x in range(0, curses.COLS):
7615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling            stdscr.addstr("%d" % ((y + x) % 10))
7715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    for y in range(0, 1):
7815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p1 = mkpanel(curses.COLOR_RED,
7915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling                     curses.LINES / 2 - 2,
8015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling                     curses.COLS / 8 + 1,
8115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling                     0,
8215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling                     0)
8315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p1.set_userptr("p1")
8415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
8515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p2 = mkpanel(curses.COLOR_GREEN,
8615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling                     curses.LINES / 2 + 1,
8715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling                     curses.COLS / 7,
8815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling                     curses.LINES / 4,
8915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling                     curses.COLS / 10)
9015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p2.set_userptr("p2")
9115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
9215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p3 = mkpanel(curses.COLOR_YELLOW,
9315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling                     curses.LINES / 4,
9415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling                     curses.COLS / 10,
9515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling                     curses.LINES / 2,
9615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling                     curses.COLS / 9)
9715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p3.set_userptr("p3")
9815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
9915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p4 = mkpanel(curses.COLOR_BLUE,
10015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling                     curses.LINES / 2 - 2,
10115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling                     curses.COLS / 8,
10215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling                     curses.LINES / 2 - 2,
10315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling                     curses.COLS / 3)
10415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p4.set_userptr("p4")
10515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
10615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p5 = mkpanel(curses.COLOR_MAGENTA,
10715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling                     curses.LINES / 2 - 2,
10815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling                     curses.COLS / 8,
10915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling                     curses.LINES / 2,
11015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling                     curses.COLS / 2 - 2)
11115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p5.set_userptr("p5")
11215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
11315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        fill_panel(p1)
11415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        fill_panel(p2)
11515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        fill_panel(p3)
11615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        fill_panel(p4)
11715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        fill_panel(p5)
11815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p4.hide()
11915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p5.hide()
12015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
12115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("press any key to continue")
12215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
12315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
12415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("h3 s1 s2 s4 s5;press any key to continue")
12515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p1.move(0, 0)
12615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p3.hide()
12715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p1.show()
12815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p2.show()
12915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p4.show()
13015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p5.show()
13115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
13215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
13315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
13415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("s1; press any key to continue")
13515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p1.show()
13615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
13715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
13815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
13915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("s2; press any key to continue")
14015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p2.show()
14115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
14215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
14315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
14415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("m2; press any key to continue")
14515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p2.move(curses.LINES / 3 + 1, curses.COLS / 8)
14615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
14715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
14815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
14915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("s3; press any key to continue")
15015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p3.show()
15115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
15215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
15315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
15415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("m3; press any key to continue")
15515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p3.move(curses.LINES / 4 + 1, curses.COLS / 15)
15615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
15715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
15815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
15915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("b3; press any key to continue")
16015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p3.bottom()
16115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
16215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
16315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
16415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("s4; press any key to continue")
16515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p4.show()
16615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
16715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
16815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
16915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("s5; press any key to continue")
17015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p5.show()
17115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
17215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
17315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
17415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("t3; press any key to continue")
17515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p3.top()
17615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
17715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
17815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
17915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("t1; press any key to continue")
18015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p1.show()
18115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
18215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
18315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
18415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("t2; press any key to continue")
18515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p2.show()
18615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
18715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
18815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
18915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("t3; press any key to continue")
19015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p3.show()
19115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
19215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
19315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
19415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("t4; press any key to continue")
19515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p4.show()
19615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
19715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
19815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
19915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        for itmp in range(0, 6):
20015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling            w4 = p4.window()
20115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling            w5 = p5.window()
20215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
20315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling            saywhat("m4; press any key to continue")
20415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling            w4.move(curses.LINES / 8, 1)
20515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling            w4.addstr(mod[itmp])
20615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling            p4.move(curses.LINES / 6, itmp * curses.COLS / 8)
20715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling            w5.move(curses.LINES / 6, 1)
20815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling            w5.addstr(mod[itmp])
20915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling            pflush()
21015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling            wait_a_while()
21115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
21215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling            saywhat("m5; press any key to continue")
21315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling            w4.move(curses.LINES / 6, 1)
21415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling            w4.addstr(mod[itmp])
21515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling            p5.move(curses.LINES / 3 - 1, itmp * 10 + 6)
21615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling            w5.move(curses.LINES / 8, 1)
21715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling            w5.addstr(mod[itmp])
21815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling            pflush()
21915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling            wait_a_while()
22015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
22115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("m4; press any key to continue")
22215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p4.move(curses.LINES / 6, (itmp + 1) * curses.COLS / 8)
22315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
22415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
22515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
22615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("t5; press any key to continue")
22715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p5.top()
22815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
22915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
23015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
23115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("t2; press any key to continue")
23215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p2.top()
23315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
23415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
23515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
23615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("t1; press any key to continue")
23715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p1.top()
23815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
23915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
24015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
24115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("d2; press any key to continue")
24215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        del p2
24315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
24415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
24515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
24615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("h3; press any key to continue")
24715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p3.hide()
24815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
24915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
25015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
25115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("d1; press any key to continue")
25215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        del p1
25315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
25415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
25515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
25615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("d4; press any key to continue")
25715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        del p4
25815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
25915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
26015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
26115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("d5; press any key to continue")
26215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        del p5
26315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
26415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
26515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        if nap_msec == 1:
26615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling            break
26715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        nap_msec = 100
26815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
26915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling#
27015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling# one fine day there'll be the menu at this place
27115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling#
27215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchlingcurses.wrapper(demo_panels)
273