CPANPLUS-Shell-Curses
view release on metacpan or search on metacpan
lib/CPANPLUS/Shell/Curses.pm view on Meta::CPAN
my $configw = $mainw->getobj('configw');
my $config = $cpanp->configure_object();
my @conf_options = $config->subtypes('conf');
foreach my $opt (@conf_options) {
my $entry = $configw->getobj($opt . 'e');
if (defined $entry) {
my $text = $entry->get();
next unless defined $text;
$opt = "\l$opt";
$text =~ s/^Y.*/1/i;
$text =~ s/^N.*/0/i;
$config->set_conf($opt => $text); }
else {
my $entry = $configw->getobj($opt . 'ae');
if (defined $entry) {
my @values = split(":", $entry->get());
$config->set_conf($opt => \@values);
}
else {
my $entry = $configw->getobj($opt . 'he');
if (defined $entry) {
my @values = split(":", $entry->get());
my %hash_values;
foreach my $value (@values) {
my ($key, $value) = split "=", $value;
$hash_values{$key} = $value;
}
$config->set_conf($opt => \%hash_values);
}
}
}
}
my $filename = $ENV{'PERL5_CPANPLUS_CONFIG'};
my $yes = $mainw->dialog('-message' => loc("Do you want to store the settings to " . $filename . "?"),
'-buttons' => [ 'yes','no'],
'-values' => [1, 0],
'-title' => loc('Qustion'),
-fg => "blue",
-bfg => "blue");
### There is a bug in current Configure.pm and the docs,
### it doesn't save the config as it was meant to.
unless ($config->can_save($filename)) {
_draw();
$mainw->error(-message => loc("You are not allowed to write to ")
. $filename . "\n" .
loc("Config will be discared after exit"));
} else {
$config->save($filename) if ($yes);
}
$mainw->getobj('configw')->loose_focus();
$mainw->delete('configw');
$mainw->getobj('listw')->getobj('list')->focus();
###
### Somewhere here something odd happens, the cursor
### appears in the list. No workaround till now,
### maybe a bug in Curses::UI
}
sub _abort_conf{
$mainw->getobj('configw')->loose_focus();
$mainw->delete('configw');
$mainw->getobj('listw')->getobj('list')->focus();
}
sub _draw{
### This is some bad curses magic in order to
### get my screen back
$mainw->add('dummy','Window');
$mainw->getobj('dummy')->draw();
$mainw->delete('dummy');
$mainw->getobj('topw')->draw();
$mainw->getobj('displayw')->draw();
$mainw->getobj('listw')->draw();
$mainw->draw();
}
###
### Help and version info
###
sub _pod_help{
my $podparser = Pod::Text->new(sentence => 0);
my $filename;
### Find myself
foreach my $mod (keys %INC) {
$filename = $INC{$mod} if ($mod =~ /CPAN.+Curses\.pm/);
}
my $text = `pod2text $filename`;
my $display = $mainw->add('readmew','Window');
my $viewer = $display->add('viewer','TextViewer', -fg => "green");
$viewer->text($text);
$viewer->set_routine('_end_readme', \&_end_podhelp);
$viewer->set_binding('_end_readme', "q" , " ");
$viewer->draw();
$viewer->focus();
}
sub _end_podhelp{
my $display = $mainw->getobj('readmew');
my $viewer = $display->getobj('viewer');
my $list = $mainw->getobj('listw')->getobj('list');
$display->delete('viewer');
$mainw->delete('readmew');
$mainw->draw();
$list->focus();
}
( run in 1.733 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )