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