CursesApplication
view release on metacpan or search on metacpan
example/file.pl view on Meta::CPAN
my $w = shift;
my ($pos, $items, $cwd, $caption) =
$w->getField(qw(CURSORPOS LISTITEMS CWD CAPTION));
return if $$items[$pos][0] eq '.';
if (-d $$items[$pos][0] || -d "$cwd/$$items[$pos][0]") {
if ($$items[$pos][0] eq '..') {
$cwd =~ s#/[^/]+/?$##;
$cwd = '/' if $cwd eq '';
} else {
$cwd .= "/$$items[$pos][0]";
}
$caption =~ s/^(\w+: ).+$/$1$cwd/;
$w->setField(
LISTITEMS => [loaddir($cwd)],
CWD => $cwd,
CAPTION => $caption,
);
} else {
return 0;
}
}
sub srcexit {
# Keeps the focus on the listbox.
#
# Usage: srcexit($form, $key);
my $f = shift;
my $key = shift;
my $w = $f->getWidget('lstSource');
if ($key eq "\n") {
chgdir($w);
$f->setField(DONTSWITCH => 1);
}
}
sub destexit {
# Keeps the focus on the listbox.
#
# Usage: srcexit($form, $key);
my $f = shift;
my $key = shift;
my $w = $f->getWidget('lstDest');
if ($key eq "\n") {
chgdir($w);
$f->setField(DONTSWITCH => 1);
}
}
__DATA__
%forms = (
MainFrm => {
TABORDER => [qw(Menu lstSource lstDest)],
FOCUSED => 'lstSource',
WIDGETS => {
Menu => {
TYPE => 'Menu',
MENUS => {
MENUORDER => [qw(File)],
File => {
ITEMORDER => [qw(Exit)],
Exit => \&main::quit,
},
},
},
lstSource => {
TYPE => 'ListBox::MultiColumn',
COLUMNS => 20,
LINES => 10,
Y => 1,
X => 0,
CAPTION => 'Source',
MULTISEL => 1,
SELECTEDCOL => 'red',
HEADERS => [qw(filename size perm)],
COLWIDTHS => [20, 4, 10],
HEADERFGCOL => 'white',
HEADERBGCOL => 'cyan',
BIGHEADER => 1,
FOCUSSWITCH => "\n\t",
CWD => '',
OnExit => \&main::srcexit,
},
lstDest => {
TYPE => 'ListBox::MultiColumn',
COLUMNS => 20,
LINES => 10,
Y => 1,
X => 20,
CAPTION => 'Destination',
MULTISEL => 0,
SELECTEDCOL => 'red',
HEADERS => [qw(filename size perm)],
COLWIDTHS => [20, 4, 10],
HEADERFGCOL => 'white',
HEADERBGCOL => 'cyan',
BIGHEADER => 1,
FOCUSSWITCH => "\n\t",
CWD => '',
OnExit => \&main::destexit,
},
},
},
);
( run in 1.808 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )