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