113 lines
2.1 KiB
Raku
Executable File
113 lines
2.1 KiB
Raku
Executable File
#!/usr/bin/perl
|
|
#
|
|
# Copyright (C) 2003 by Virtusa Corporation
|
|
# http://www.virtusa.com
|
|
#
|
|
# Anuradha Ratnaweera
|
|
# http://www.linux.lk/~anuradha/
|
|
#
|
|
|
|
# We use %win hash to store window parameters
|
|
|
|
use Curses;
|
|
|
|
initscr();
|
|
start_color();
|
|
cbreak();
|
|
|
|
keypad(1);
|
|
noecho();
|
|
init_pair(1, COLOR_CYAN, COLOR_BLACK);
|
|
|
|
%win = ();
|
|
init_win_params(\%win);
|
|
print_win_params(\%win);
|
|
|
|
attron(COLOR_PAIR(1));
|
|
printw("Press F1 to exit");
|
|
refresh();
|
|
attroff(COLOR_PAIR(1));
|
|
|
|
create_box(\%win, 1);
|
|
|
|
while (($ch = getch()) != KEY_F(1)) {
|
|
if ($ch == KEY_LEFT) {
|
|
create_box(\%win, 0);
|
|
$win{'startx'}--;
|
|
create_box(\%win, 1);
|
|
}
|
|
elsif ($ch == KEY_RIGHT) {
|
|
create_box(\%win, 0);
|
|
$win{'startx'}++;
|
|
create_box(\%win, 1);
|
|
}
|
|
elsif ($ch == KEY_UP) {
|
|
create_box(\%win, 0);
|
|
$win{'starty'}--;
|
|
create_box(\%win, 1);
|
|
}
|
|
elsif ($ch == KEY_DOWN) {
|
|
create_box(\%win, 0);
|
|
$win{'starty'}++;
|
|
create_box(\%win, 1);
|
|
}
|
|
}
|
|
|
|
endwin();
|
|
|
|
sub init_win_params {
|
|
$p_win = shift;
|
|
|
|
$$p_win{'height'} = 3;
|
|
$$p_win{'width'} = 10;
|
|
$$p_win{'starty'} = ($LINES - $p_win{'height'}) / 2;
|
|
$$p_win{'startx'} = ($COLS - $p_win{'width'}) / 2;
|
|
$$p_win{'ls'} = '|';
|
|
$$p_win{'rs'} = '|';
|
|
$$p_win{'ts'} = '-';
|
|
$$p_win{'bs'} = '-';
|
|
$$p_win{'tl'} = '+';
|
|
$$p_win{'tr'} = '+';
|
|
$$p_win{'bl'} = '+';
|
|
$$p_win{'br'} = '+';
|
|
}
|
|
|
|
sub print_win_params {
|
|
if ($_DEBUG) {
|
|
$p_win = shift;
|
|
addstr(25, 0,
|
|
"$$p_win{startx} $$p_win{starty} $$p_win{width} $$p_win{height}");
|
|
refresh();
|
|
}
|
|
}
|
|
|
|
sub create_box {
|
|
$p_win = shift;
|
|
$bool = shift;
|
|
|
|
$x = $$p_win{'startx'};
|
|
$y = $$p_win{'starty'};
|
|
$w = $$p_win{'width'};
|
|
$h = $$p_win{'height'};
|
|
|
|
if ($bool) {
|
|
addch($y, $x, $$p_win{'tl'});
|
|
addch($y, $x + $w, $$p_win{'tr'});
|
|
addch($y + $h, $x, $$p_win{'bl'});
|
|
addch($y + $h, $x + $w, $$p_win{'br'});
|
|
hline($y, $x + 1, $$p_win{'ts'}, $w - 1);
|
|
hline($y + $h, $x + 1, $$p_win{'bs'}, $w - 1);
|
|
vline($y + 1, $x, $$p_win{'ls'}, $h - 1);
|
|
vline($y + 1, $x + $w, $$p_win{'rs'}, $h - 1);
|
|
}
|
|
else {
|
|
for ($j = $y; $j <= $y + $h; $j++) {
|
|
for ($i = $x; $i <= $x + $w; $i++) {
|
|
addch($j, $i, ' ');
|
|
}
|
|
}
|
|
}
|
|
refresh();
|
|
}
|
|
|