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
972a18a6659049fa5ea870257240d568094d0f226Andrew M. Kuchlingfrom curses import panel
1015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
1115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchlingdef wGetchar(win = None):
125b63acd31e0e40c1a9a9e9762905b0054ff37994Benjamin Peterson    if win is None: win = stdscr
1315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    return win.getch()
1415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
1515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchlingdef Getchar():
1615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    wGetchar()
1715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
1815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling#
1915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling# Panels tester
2015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling#
2115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchlingdef wait_a_while():
2215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    if nap_msec == 1:
2315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        Getchar()
2415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    else:
2515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        curses.napms(nap_msec)
2615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
2715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchlingdef saywhat(text):
2815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    stdscr.move(curses.LINES - 1, 0)
2915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    stdscr.clrtoeol()
3015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    stdscr.addstr(text)
3115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
3215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchlingdef mkpanel(color, rows, cols, tly, tlx):
3315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    win = curses.newwin(rows, cols, tly, tlx)
3472a18a6659049fa5ea870257240d568094d0f226Andrew M. Kuchling    pan = panel.new_panel(win)
3515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    if curses.has_colors():
3615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        if color == curses.COLOR_BLUE:
3715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling            fg = curses.COLOR_WHITE
3815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        else:
3915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling            fg = curses.COLOR_BLACK
4015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        bg = color
4115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        curses.init_pair(color, fg, bg)
4215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        win.bkgdset(ord(' '), curses.color_pair(color))
4315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    else:
4415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        win.bkgdset(ord(' '), curses.A_BOLD)
4515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
4615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    return pan
4715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
4815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchlingdef pflush():
4972a18a6659049fa5ea870257240d568094d0f226Andrew M. Kuchling    panel.update_panels()
5015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    curses.doupdate()
5115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
5215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchlingdef fill_panel(pan):
5315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    win = pan.window()
5415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    num = pan.userptr()[1]
5515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
5615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    win.move(1, 1)
5715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    win.addstr("-pan%c-" % num)
5815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    win.clrtoeol()
5915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    win.box()
6015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
6115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    maxy, maxx = win.getmaxyx()
6215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    for y in range(2, maxy - 1):
6315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        for x in range(1, maxx - 1):
6415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling            win.move(y, x)
6515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling            win.addch(num)
6615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
6715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchlingdef demo_panels(win):
6815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    global stdscr, nap_msec, mod
6915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    stdscr = win
7015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    nap_msec = 1
7115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    mod = ["test", "TEST", "(**)", "*()*", "<-->", "LAST"]
7215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
7315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    stdscr.refresh()
7415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
7515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    for y in range(0, curses.LINES - 1):
7615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        for x in range(0, curses.COLS):
7715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling            stdscr.addstr("%d" % ((y + x) % 10))
7815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling    for y in range(0, 1):
7915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p1 = mkpanel(curses.COLOR_RED,
80949f71b446723cd05404e3f0e9c0a793b9b99001Andrew M. Kuchling                     curses.LINES // 2 - 2,
81949f71b446723cd05404e3f0e9c0a793b9b99001Andrew M. Kuchling                     curses.COLS // 8 + 1,
8215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling                     0,
8315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling                     0)
8415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p1.set_userptr("p1")
8515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
8615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p2 = mkpanel(curses.COLOR_GREEN,
87949f71b446723cd05404e3f0e9c0a793b9b99001Andrew M. Kuchling                     curses.LINES // 2 + 1,
88949f71b446723cd05404e3f0e9c0a793b9b99001Andrew M. Kuchling                     curses.COLS // 7,
89949f71b446723cd05404e3f0e9c0a793b9b99001Andrew M. Kuchling                     curses.LINES // 4,
90949f71b446723cd05404e3f0e9c0a793b9b99001Andrew M. Kuchling                     curses.COLS // 10)
9115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p2.set_userptr("p2")
9215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
9315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p3 = mkpanel(curses.COLOR_YELLOW,
94949f71b446723cd05404e3f0e9c0a793b9b99001Andrew M. Kuchling                     curses.LINES // 4,
95949f71b446723cd05404e3f0e9c0a793b9b99001Andrew M. Kuchling                     curses.COLS // 10,
96949f71b446723cd05404e3f0e9c0a793b9b99001Andrew M. Kuchling                     curses.LINES // 2,
97949f71b446723cd05404e3f0e9c0a793b9b99001Andrew M. Kuchling                     curses.COLS // 9)
9815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p3.set_userptr("p3")
9915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
10015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p4 = mkpanel(curses.COLOR_BLUE,
101949f71b446723cd05404e3f0e9c0a793b9b99001Andrew M. Kuchling                     curses.LINES // 2 - 2,
102949f71b446723cd05404e3f0e9c0a793b9b99001Andrew M. Kuchling                     curses.COLS // 8,
103949f71b446723cd05404e3f0e9c0a793b9b99001Andrew M. Kuchling                     curses.LINES // 2 - 2,
104949f71b446723cd05404e3f0e9c0a793b9b99001Andrew M. Kuchling                     curses.COLS // 3)
10515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p4.set_userptr("p4")
10615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
10715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p5 = mkpanel(curses.COLOR_MAGENTA,
108949f71b446723cd05404e3f0e9c0a793b9b99001Andrew M. Kuchling                     curses.LINES // 2 - 2,
109949f71b446723cd05404e3f0e9c0a793b9b99001Andrew M. Kuchling                     curses.COLS // 8,
110949f71b446723cd05404e3f0e9c0a793b9b99001Andrew M. Kuchling                     curses.LINES // 2,
111949f71b446723cd05404e3f0e9c0a793b9b99001Andrew M. Kuchling                     curses.COLS // 2 - 2)
11215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p5.set_userptr("p5")
11315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
11415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        fill_panel(p1)
11515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        fill_panel(p2)
11615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        fill_panel(p3)
11715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        fill_panel(p4)
11815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        fill_panel(p5)
11915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p4.hide()
12015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p5.hide()
12115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
12215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("press any key to continue")
12315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
12415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
12515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("h3 s1 s2 s4 s5;press any key to continue")
12615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p1.move(0, 0)
12715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p3.hide()
12815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p1.show()
12915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p2.show()
13015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p4.show()
13115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p5.show()
13215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
13315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
13415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
13515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("s1; press any key to continue")
13615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p1.show()
13715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
13815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
13915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
14015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("s2; press any key to continue")
14115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p2.show()
14215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
14315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
14415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
14515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("m2; press any key to continue")
146949f71b446723cd05404e3f0e9c0a793b9b99001Andrew M. Kuchling        p2.move(curses.LINES // 3 + 1, curses.COLS // 8)
14715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
14815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
14915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
15015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("s3; press any key to continue")
15115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p3.show()
15215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
15315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
15415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
15515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("m3; press any key to continue")
156949f71b446723cd05404e3f0e9c0a793b9b99001Andrew M. Kuchling        p3.move(curses.LINES // 4 + 1, curses.COLS // 15)
15715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
15815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
15915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
16015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("b3; press any key to continue")
16115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p3.bottom()
16215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
16315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
16415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
16515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("s4; press any key to continue")
16615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p4.show()
16715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
16815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
16915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
17015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("s5; press any key to continue")
17115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p5.show()
17215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
17315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
17415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
17515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("t3; press any key to continue")
17615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p3.top()
17715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
17815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
17915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
18015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("t1; press any key to continue")
18115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p1.show()
18215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
18315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
18415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
18515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("t2; press any key to continue")
18615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p2.show()
18715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
18815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
18915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
19015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("t3; press any key to continue")
19115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p3.show()
19215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
19315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
19415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
19515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("t4; press any key to continue")
19615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p4.show()
19715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
19815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
19915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
20015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        for itmp in range(0, 6):
20115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling            w4 = p4.window()
20215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling            w5 = p5.window()
20315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
20415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling            saywhat("m4; press any key to continue")
205949f71b446723cd05404e3f0e9c0a793b9b99001Andrew M. Kuchling            w4.move(curses.LINES // 8, 1)
20615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling            w4.addstr(mod[itmp])
207949f71b446723cd05404e3f0e9c0a793b9b99001Andrew M. Kuchling            p4.move(curses.LINES // 6, itmp * curses.COLS // 8)
208949f71b446723cd05404e3f0e9c0a793b9b99001Andrew M. Kuchling            w5.move(curses.LINES // 6, 1)
20915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling            w5.addstr(mod[itmp])
21015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling            pflush()
21115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling            wait_a_while()
212e6ddc8b20b493fef2e7cffb2e1351fe1d238857eTim Peters
21315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling            saywhat("m5; press any key to continue")
214949f71b446723cd05404e3f0e9c0a793b9b99001Andrew M. Kuchling            w4.move(curses.LINES // 6, 1)
21515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling            w4.addstr(mod[itmp])
216949f71b446723cd05404e3f0e9c0a793b9b99001Andrew M. Kuchling            p5.move(curses.LINES // 3 - 1, itmp * 10 + 6)
217949f71b446723cd05404e3f0e9c0a793b9b99001Andrew M. Kuchling            w5.move(curses.LINES // 8, 1)
21815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling            w5.addstr(mod[itmp])
21915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling            pflush()
22015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling            wait_a_while()
221e6ddc8b20b493fef2e7cffb2e1351fe1d238857eTim Peters
22215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("m4; press any key to continue")
223949f71b446723cd05404e3f0e9c0a793b9b99001Andrew M. Kuchling        p4.move(curses.LINES // 6, (itmp + 1) * curses.COLS // 8)
22415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
22515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
22615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
22715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("t5; press any key to continue")
22815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p5.top()
22915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
23015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
23115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
23215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("t2; press any key to continue")
23315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p2.top()
23415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
23515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
23615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
23715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("t1; press any key to continue")
23815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p1.top()
23915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
24015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
24115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
24215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("d2; press any key to continue")
24315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        del p2
24415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
24515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
24615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
24715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("h3; press any key to continue")
24815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        p3.hide()
24915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
25015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
25115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
25215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("d1; press any key to continue")
25315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        del p1
25415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
25515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
25615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
25715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("d4; press any key to continue")
25815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        del p4
25915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
26015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
26115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
26215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        saywhat("d5; press any key to continue")
26315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        del p5
26415c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        pflush()
26515c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        wait_a_while()
26615c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        if nap_msec == 1:
26715c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling            break
26815c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling        nap_msec = 100
26915c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling
27015c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling#
27115c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling# one fine day there'll be the menu at this place
27215c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchling#
27315c3c2bdf84aa333e213d8f5ac2b4b30a2595231Andrew M. Kuchlingcurses.wrapper(demo_panels)
274