' => sub { exit } );
$m->bind( 's' => \&save );
MainLoop;
# down(widget): вызывается, когда пользователь щелкает в Listbox.
sub down {
my $self = shift;
$down = $self->curselection;; ' }
$ up(widget): вызывается, когда пользователь отпускает
# кнопку мыши в Listbox.
sub up {
my $self = shift;
my $elt;
$up = $self->curselection;;
return if $down == $up;
# change selection list
$elt = $sections[$down];
splice(@sections, $down, 1):
splice(@sections, $up, 0, $elt);
$self->delete($down);
$self->insert($up, $sections[$up]->[1]);
}
# save(widget): сохранение списка разделов.
sub save {
my $self = shift;
open(F, "> $podfile")
or die "Can't open $podfile for writing: $! print F map { $_->[0] } @>sections;
close F;
exit;
}
# view(widget): вывод раздела. Использует элемент Pod.
sub view {
my $self = shift;
my $temporary = "/tmp/$$-section.pod";
my $popup;
open(F, "> $temporary")
or warn ("Can't open $temporary : $!\n"), return;
print F $sections[$down]->[0];
close(F);
$popup = $m->Pod('-file' => $temporary);
$popup->bind('' => sub { unlink $temporary } );
}