| 
									
										
										
										
											2000-12-15 00:41:48 +00:00
										 |  |  | #!/usr/bin/env python | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # $Id$ | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # (n)curses exerciser in Python, an interactive test for the curses | 
					
						
							|  |  |  | # module. Currently, only the panel demos are ported. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import curses | 
					
						
							| 
									
										
										
										
											2000-12-22 21:50:01 +00:00
										 |  |  | from curses import panel | 
					
						
							| 
									
										
										
										
											2000-12-15 00:41:48 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | def wGetchar(win = None): | 
					
						
							|  |  |  |     if win == None: win = stdscr | 
					
						
							|  |  |  |     return win.getch() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def Getchar(): | 
					
						
							|  |  |  |     wGetchar() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # Panels tester | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | def wait_a_while(): | 
					
						
							|  |  |  |     if nap_msec == 1: | 
					
						
							|  |  |  |         Getchar() | 
					
						
							|  |  |  |     else: | 
					
						
							|  |  |  |         curses.napms(nap_msec) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def saywhat(text): | 
					
						
							|  |  |  |     stdscr.move(curses.LINES - 1, 0) | 
					
						
							|  |  |  |     stdscr.clrtoeol() | 
					
						
							|  |  |  |     stdscr.addstr(text) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def mkpanel(color, rows, cols, tly, tlx): | 
					
						
							|  |  |  |     win = curses.newwin(rows, cols, tly, tlx) | 
					
						
							| 
									
										
										
										
											2000-12-22 21:50:01 +00:00
										 |  |  |     pan = panel.new_panel(win) | 
					
						
							| 
									
										
										
										
											2000-12-15 00:41:48 +00:00
										 |  |  |     if curses.has_colors(): | 
					
						
							|  |  |  |         if color == curses.COLOR_BLUE: | 
					
						
							|  |  |  |             fg = curses.COLOR_WHITE | 
					
						
							|  |  |  |         else: | 
					
						
							|  |  |  |             fg = curses.COLOR_BLACK | 
					
						
							|  |  |  |         bg = color | 
					
						
							|  |  |  |         curses.init_pair(color, fg, bg) | 
					
						
							|  |  |  |         win.bkgdset(ord(' '), curses.color_pair(color)) | 
					
						
							|  |  |  |     else: | 
					
						
							|  |  |  |         win.bkgdset(ord(' '), curses.A_BOLD) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return pan | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def pflush(): | 
					
						
							| 
									
										
										
										
											2000-12-22 21:50:01 +00:00
										 |  |  |     panel.update_panels() | 
					
						
							| 
									
										
										
										
											2000-12-15 00:41:48 +00:00
										 |  |  |     curses.doupdate() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def fill_panel(pan): | 
					
						
							|  |  |  |     win = pan.window() | 
					
						
							|  |  |  |     num = pan.userptr()[1] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     win.move(1, 1) | 
					
						
							|  |  |  |     win.addstr("-pan%c-" % num) | 
					
						
							|  |  |  |     win.clrtoeol() | 
					
						
							|  |  |  |     win.box() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     maxy, maxx = win.getmaxyx() | 
					
						
							|  |  |  |     for y in range(2, maxy - 1): | 
					
						
							|  |  |  |         for x in range(1, maxx - 1): | 
					
						
							|  |  |  |             win.move(y, x) | 
					
						
							|  |  |  |             win.addch(num) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def demo_panels(win): | 
					
						
							|  |  |  |     global stdscr, nap_msec, mod | 
					
						
							|  |  |  |     stdscr = win | 
					
						
							|  |  |  |     nap_msec = 1 | 
					
						
							|  |  |  |     mod = ["test", "TEST", "(**)", "*()*", "<-->", "LAST"] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     stdscr.refresh() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     for y in range(0, curses.LINES - 1): | 
					
						
							|  |  |  |         for x in range(0, curses.COLS): | 
					
						
							|  |  |  |             stdscr.addstr("%d" % ((y + x) % 10)) | 
					
						
							|  |  |  |     for y in range(0, 1): | 
					
						
							|  |  |  |         p1 = mkpanel(curses.COLOR_RED, | 
					
						
							|  |  |  |                      curses.LINES / 2 - 2, | 
					
						
							|  |  |  |                      curses.COLS / 8 + 1, | 
					
						
							|  |  |  |                      0, | 
					
						
							|  |  |  |                      0) | 
					
						
							|  |  |  |         p1.set_userptr("p1") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         p2 = mkpanel(curses.COLOR_GREEN, | 
					
						
							|  |  |  |                      curses.LINES / 2 + 1, | 
					
						
							|  |  |  |                      curses.COLS / 7, | 
					
						
							|  |  |  |                      curses.LINES / 4, | 
					
						
							|  |  |  |                      curses.COLS / 10) | 
					
						
							|  |  |  |         p2.set_userptr("p2") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         p3 = mkpanel(curses.COLOR_YELLOW, | 
					
						
							|  |  |  |                      curses.LINES / 4, | 
					
						
							|  |  |  |                      curses.COLS / 10, | 
					
						
							|  |  |  |                      curses.LINES / 2, | 
					
						
							|  |  |  |                      curses.COLS / 9) | 
					
						
							|  |  |  |         p3.set_userptr("p3") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         p4 = mkpanel(curses.COLOR_BLUE, | 
					
						
							|  |  |  |                      curses.LINES / 2 - 2, | 
					
						
							|  |  |  |                      curses.COLS / 8, | 
					
						
							|  |  |  |                      curses.LINES / 2 - 2, | 
					
						
							|  |  |  |                      curses.COLS / 3) | 
					
						
							|  |  |  |         p4.set_userptr("p4") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         p5 = mkpanel(curses.COLOR_MAGENTA, | 
					
						
							|  |  |  |                      curses.LINES / 2 - 2, | 
					
						
							|  |  |  |                      curses.COLS / 8, | 
					
						
							|  |  |  |                      curses.LINES / 2, | 
					
						
							|  |  |  |                      curses.COLS / 2 - 2) | 
					
						
							|  |  |  |         p5.set_userptr("p5") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         fill_panel(p1) | 
					
						
							|  |  |  |         fill_panel(p2) | 
					
						
							|  |  |  |         fill_panel(p3) | 
					
						
							|  |  |  |         fill_panel(p4) | 
					
						
							|  |  |  |         fill_panel(p5) | 
					
						
							|  |  |  |         p4.hide() | 
					
						
							|  |  |  |         p5.hide() | 
					
						
							|  |  |  |         pflush() | 
					
						
							|  |  |  |         saywhat("press any key to continue") | 
					
						
							|  |  |  |         wait_a_while() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         saywhat("h3 s1 s2 s4 s5;press any key to continue") | 
					
						
							|  |  |  |         p1.move(0, 0) | 
					
						
							|  |  |  |         p3.hide() | 
					
						
							|  |  |  |         p1.show() | 
					
						
							|  |  |  |         p2.show() | 
					
						
							|  |  |  |         p4.show() | 
					
						
							|  |  |  |         p5.show() | 
					
						
							|  |  |  |         pflush() | 
					
						
							|  |  |  |         wait_a_while() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         saywhat("s1; press any key to continue") | 
					
						
							|  |  |  |         p1.show() | 
					
						
							|  |  |  |         pflush() | 
					
						
							|  |  |  |         wait_a_while() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         saywhat("s2; press any key to continue") | 
					
						
							|  |  |  |         p2.show() | 
					
						
							|  |  |  |         pflush() | 
					
						
							|  |  |  |         wait_a_while() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         saywhat("m2; press any key to continue") | 
					
						
							|  |  |  |         p2.move(curses.LINES / 3 + 1, curses.COLS / 8) | 
					
						
							|  |  |  |         pflush() | 
					
						
							|  |  |  |         wait_a_while() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         saywhat("s3; press any key to continue") | 
					
						
							|  |  |  |         p3.show() | 
					
						
							|  |  |  |         pflush() | 
					
						
							|  |  |  |         wait_a_while() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         saywhat("m3; press any key to continue") | 
					
						
							|  |  |  |         p3.move(curses.LINES / 4 + 1, curses.COLS / 15) | 
					
						
							|  |  |  |         pflush() | 
					
						
							|  |  |  |         wait_a_while() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         saywhat("b3; press any key to continue") | 
					
						
							|  |  |  |         p3.bottom() | 
					
						
							|  |  |  |         pflush() | 
					
						
							|  |  |  |         wait_a_while() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         saywhat("s4; press any key to continue") | 
					
						
							|  |  |  |         p4.show() | 
					
						
							|  |  |  |         pflush() | 
					
						
							|  |  |  |         wait_a_while() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         saywhat("s5; press any key to continue") | 
					
						
							|  |  |  |         p5.show() | 
					
						
							|  |  |  |         pflush() | 
					
						
							|  |  |  |         wait_a_while() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         saywhat("t3; press any key to continue") | 
					
						
							|  |  |  |         p3.top() | 
					
						
							|  |  |  |         pflush() | 
					
						
							|  |  |  |         wait_a_while() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         saywhat("t1; press any key to continue") | 
					
						
							|  |  |  |         p1.show() | 
					
						
							|  |  |  |         pflush() | 
					
						
							|  |  |  |         wait_a_while() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         saywhat("t2; press any key to continue") | 
					
						
							|  |  |  |         p2.show() | 
					
						
							|  |  |  |         pflush() | 
					
						
							|  |  |  |         wait_a_while() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         saywhat("t3; press any key to continue") | 
					
						
							|  |  |  |         p3.show() | 
					
						
							|  |  |  |         pflush() | 
					
						
							|  |  |  |         wait_a_while() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         saywhat("t4; press any key to continue") | 
					
						
							|  |  |  |         p4.show() | 
					
						
							|  |  |  |         pflush() | 
					
						
							|  |  |  |         wait_a_while() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         for itmp in range(0, 6): | 
					
						
							|  |  |  |             w4 = p4.window() | 
					
						
							|  |  |  |             w5 = p5.window() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             saywhat("m4; press any key to continue") | 
					
						
							|  |  |  |             w4.move(curses.LINES / 8, 1) | 
					
						
							|  |  |  |             w4.addstr(mod[itmp]) | 
					
						
							|  |  |  |             p4.move(curses.LINES / 6, itmp * curses.COLS / 8) | 
					
						
							|  |  |  |             w5.move(curses.LINES / 6, 1) | 
					
						
							|  |  |  |             w5.addstr(mod[itmp]) | 
					
						
							|  |  |  |             pflush() | 
					
						
							|  |  |  |             wait_a_while() | 
					
						
							|  |  |  |              | 
					
						
							|  |  |  |             saywhat("m5; press any key to continue") | 
					
						
							|  |  |  |             w4.move(curses.LINES / 6, 1) | 
					
						
							|  |  |  |             w4.addstr(mod[itmp]) | 
					
						
							|  |  |  |             p5.move(curses.LINES / 3 - 1, itmp * 10 + 6) | 
					
						
							|  |  |  |             w5.move(curses.LINES / 8, 1) | 
					
						
							|  |  |  |             w5.addstr(mod[itmp]) | 
					
						
							|  |  |  |             pflush() | 
					
						
							|  |  |  |             wait_a_while() | 
					
						
							|  |  |  |              | 
					
						
							|  |  |  |         saywhat("m4; press any key to continue") | 
					
						
							|  |  |  |         p4.move(curses.LINES / 6, (itmp + 1) * curses.COLS / 8) | 
					
						
							|  |  |  |         pflush() | 
					
						
							|  |  |  |         wait_a_while() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         saywhat("t5; press any key to continue") | 
					
						
							|  |  |  |         p5.top() | 
					
						
							|  |  |  |         pflush() | 
					
						
							|  |  |  |         wait_a_while() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         saywhat("t2; press any key to continue") | 
					
						
							|  |  |  |         p2.top() | 
					
						
							|  |  |  |         pflush() | 
					
						
							|  |  |  |         wait_a_while() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         saywhat("t1; press any key to continue") | 
					
						
							|  |  |  |         p1.top() | 
					
						
							|  |  |  |         pflush() | 
					
						
							|  |  |  |         wait_a_while() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         saywhat("d2; press any key to continue") | 
					
						
							|  |  |  |         del p2 | 
					
						
							|  |  |  |         pflush() | 
					
						
							|  |  |  |         wait_a_while() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         saywhat("h3; press any key to continue") | 
					
						
							|  |  |  |         p3.hide() | 
					
						
							|  |  |  |         pflush() | 
					
						
							|  |  |  |         wait_a_while() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         saywhat("d1; press any key to continue") | 
					
						
							|  |  |  |         del p1 | 
					
						
							|  |  |  |         pflush() | 
					
						
							|  |  |  |         wait_a_while() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         saywhat("d4; press any key to continue") | 
					
						
							|  |  |  |         del p4 | 
					
						
							|  |  |  |         pflush() | 
					
						
							|  |  |  |         wait_a_while() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         saywhat("d5; press any key to continue") | 
					
						
							|  |  |  |         del p5 | 
					
						
							|  |  |  |         pflush() | 
					
						
							|  |  |  |         wait_a_while() | 
					
						
							|  |  |  |         if nap_msec == 1: | 
					
						
							|  |  |  |             break | 
					
						
							|  |  |  |         nap_msec = 100 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # one fine day there'll be the menu at this place | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | curses.wrapper(demo_panels) |