1#! /usr/bin/perl 2## 3## This code contributed by Chris Leach <leachcj@bp.com> 4 5use ExtUtils::testlib; 6use Curses; 7 8eval { new_panel() }; 9if ($@ =~ m{not defined in your Curses library}) { 10 print STDERR "Curses was not compiled with panel function.\n"; 11 exit 1; 12} 13 14my $p1 = mkpanel("000"); 15message("New Panel with 000's"); 16 17my $p2 = mkpanel("+++"); 18move_panel($p1, 8, 20); 19message("New Panel with +++'s"); 20 21hide_panel($p1); 22message("Hiding 000's"); 23message("000's hidden? ", panel_hidden($p1) ? "Yes" : "No"); 24 25show_panel($p1); 26message("Showing 000's"); 27 28my $p3 = mkpanel("XXX"); 29move_panel($p3, 7, 34); 30message("New Panel with XXX's"); 31 32top_panel(panel_above(panel_above(undef))); 33message("Moving the panel above the bottom panel to the top"); 34 35bottom_panel(panel_below(panel_below(undef))); 36message("Moving the panel below the top panel to the bottom"); 37 38my $w3 = panel_window($p3); 39del_panel($p3); 40message("Deleting panel with XXX's saving window"); 41 42replace_panel($p1, $w3); 43message("Replacing 000's window"); 44 45del_panel($p2); 46del_panel($p1); 47endwin(); 48 49sub mkpanel { 50 my $s = shift; 51 my $w = Curses->new(10, 26, 12, 25); 52 die unless $w; 53 54 box($w, 0, 0); 55 my $p = new_panel($w); 56 57 if ($p) { 58 set_panel_userptr($p, $s); 59 60 foreach my $r (1..8) { 61 addstr($w, $r, 3*$r-2, $s); 62 } 63 } 64 else { 65 fatal("new_panel failed"); 66 } 67 $p; 68} 69 70sub message { 71 addstr(stdscr, 0, 0, "@_\n"); 72 update_panels(); 73 doupdate(); 74 sleep 2; 75} 76 77sub fatal { 78 message("@_"); 79 exit 1; 80} 81