home *** CD-ROM | disk | FTP | other *** search
- #!/usr/bin/perl -w
- # This file was preprocessed, do not edit!
-
-
- package Debconf::Element::Dialog::Multiselect;
- use strict;
- use base qw(Debconf::Element::Multiselect);
- use Debconf::Encoding qw(width);
-
-
- 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;
- foreach (@choices) {
- push @params, ($_, "");
- push @params, ($value{$_} ? 'on' : 'off');
-
- if ($columns < width($_) + $selectspacer) {
- $columns = width($_) + $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($_) }
- split(/\n/, $value))));
- }
- else {
- my $default='';
- $default=$this->question->value
- if defined $this->question->value;
- $this->value($default);
- }
- }
-
- 1
-