%PDF- %PDF-
Direktori : /usr/share/perl5/Debconf/Element/Dialog/ |
Current File : //usr/share/perl5/Debconf/Element/Dialog/Multiselect.pm |
#!/usr/bin/perl # This file was preprocessed, do not edit! package Debconf::Element::Dialog::Multiselect; use warnings; use strict; use base qw(Debconf::Element::Multiselect); use Debconf::Encoding qw(width); use Debconf::Log qw(debug); sub show { my $this=shift; my ($text, $lines, $columns)= $this->frontend->makeprompt($this->question, -2); my $screen_lines=$this->frontend->screenheight - $this->frontend->spacer; my @params=(); my @choices=$this->question->choices_split; my %value = map { $_ => 1 } $this->translate_default; my $menu_height=$#choices + 1; if ($lines + $#choices + 2 >= $screen_lines) { $menu_height = $screen_lines - $lines - 4; if ($menu_height < 3 && $#choices + 1 > 2) { $this->frontend->showtext($this->question, $this->question->extended_description); ($text, $lines, $columns)=$this->frontend->sizetext($this->question->description); $menu_height=$#choices + 1; if ($lines + $#choices + 2 >= $screen_lines) { $menu_height = $screen_lines - $lines - 4; } } } $lines=$lines + $menu_height + $this->frontend->spacer; my $selectspacer = $this->frontend->selectspacer; my $c=1; my %unellipsized; foreach (@choices) { my $choice = $this->frontend->ellipsize($_); if (exists $unellipsized{$choice}) { debug 'developer' => sprintf 'Ambiguous ellipsized choice "%s": "%s" or "%s". Overflow.', $choice, $unellipsized{$choice}, $_; $choice = $_; } $unellipsized{$choice} = $_; push @params, ($choice, ""); push @params, ($value{$_} ? 'on' : 'off'); if ($columns < width($choice) + $selectspacer) { $columns = width($choice) + $selectspacer; } } if ($this->frontend->dashsep) { unshift @params, $this->frontend->dashsep; } @params=('--separate-output', '--checklist', $text, $lines, $columns, $menu_height, @params); my $value=$this->frontend->showdialog($this->question, @params); if (defined $value) { $this->value(join(", ", $this->order_values( map { $this->translate_to_C($unellipsized{$_}) } split(/\n/, $value)))); } else { my $default=''; $default=$this->question->value if defined $this->question->value; $this->value($default); } } 1