CPANPLUS-Shell-Curses
view release on metacpan or search on metacpan
lib/CPANPLUS/Shell/Curses.pm view on Meta::CPAN
_input_cleanup();
_draw();
}
sub _eval_shell_init{
my $topw = $mainw->getobj('topw');
my $text = loc("Shell Expression: ");
$topw->getobj('talk')->text($text);
$topw->add('input','TextEntry','-x' => length($text), -fg => "green");
$topw->getobj('input')->set_routine("loose-focus", \&_eval_shell);
$topw->getobj('input')->set_binding("loose-focus",
$mainw->KEY_ENTER(),
$mainw->CUI_ESCAPE(),
);
$topw->getobj('input')->focus();
}
sub _eval_shell{
my $input = shift;
my $expr = $input->get();
return unless defined $expr;
leave_curses();
system($expr);
reset_curses();
_input_cleanup();
_draw();
}
sub _show_cache{
_display_results();
_show_installed();
}
sub _quit{
$mainw->status(-message => loc("Exiting..."),-fg => "blue",
-bfg => "blue");
exit 0;
}
sub _display_results{
my $values = (shift || $data);
my @displaymod = sort { uc($a) cmp uc($b) }(keys(%$values));
my @newdisplaymod;
my %seen;
### filter for same package and underline updated:
foreach my $module (@displaymod) {
my $details = $data->{$module};
if (defined $details->{'package'} and $seen{$details->{'package'}}) {
delete $values->{$module};
next;
};
$seen{$details->{'package'}}++ if defined $details->{'package'};
$module = "<bold><underline>$module</underline></bold>"
if $updated{$module};
push @newdisplaymod, $module;
}
### Show all the stuff:
$mainw->getobj('listw')->getobj('list')->values(\@newdisplaymod);
$mainw->getobj('listw')->getobj('list')->draw();
}
sub _input_cleanup{
my $topw = $mainw->getobj('topw');
$topw->getobj('input')->loose_focus();
$topw->delete('input');
$topw->getobj('talk')->text("");
$mainw->getobj('listw')->getobj('list')->focus;
}
sub _goto_list{
$mainw->getobj('listw')->getobj('list')->focus();
}
sub _display_module_details{
my $list = $mainw->getobj('listw')->getobj('list');
my $current_module = _strip_name($list->get_active_value());
return unless defined $current_module;
my $details = $data->{$current_module};
return unless defined $details;
my @text;
push @text, loc("Name: ") . $current_module;
push @text, loc("Version: ") . $details->{'version'}
if defined $details->{'version'};
push @text, loc("Author: ") . $details->{'author'}
if defined $details->{'author'};
push @text, loc("Path: ") . $details->{'path'}
if defined $details->{'path'};
push @text, loc("Package: ") . $details->{'package'}
if defined $details->{'package'};
$mainw->getobj('displayw')->getobj('display')->text(join("\n", @text));
$mainw->getobj('displayw')->getobj('display')->draw;
}
sub _set_conf{
my $config = $cpanp->configure_object();
my @conf_options = $config->subtypes('conf');
### Build us a nice config window
my $max_x = $mainw->height();
my $max_y = $mainw->width();
my $height = $max_x-1;
my $width = int $max_y / 2;
$height = @conf_options unless @conf_options > $max_x -2;
$height+=2;
( run in 1.535 second using v1.01-cache-2.11-cpan-39bf76dae61 )