"Fossies" - the Fresh Open Source Software Archive

Member "install-tl-20200916/tlpkg/installer/install-menu-wizard.pl" (27 Sep 2018, 19281 Bytes) of package /windows/misc/install-tl.zip:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Perl source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file.

    1 #!/usr/bin/env perl
    2 # $Id: install-menu-wizard.pl 48774 2018-09-27 15:05:00Z preining $
    3 # Copyright 2009-2016 Norbert Preining
    4 # This file is licensed under the GNU General Public License version 2
    5 # or any later version.
    6 
    7 use strict;
    8 $^W = 1;
    9 
   10 my $svnrev = '$Revision: 11925 $';
   11 $svnrev =~ m/: ([0-9]+) /;
   12 $::menurevision = ($1 ? $1 : 'unknown');
   13 
   14 require("TeXLive/trans.pl");
   15 load_translations();
   16 
   17 require("$::installerdir/tlpkg/installer/texdirsel.pl");
   18 
   19 #
   20 # the following lists define which options are shown in the Option screen
   21 # for unix and windows. On W32 with admin privileges both @w32 list options
   22 # are shown
   23 # the values are keys into the %vars array
   24 my @unix_opts = qw/instopt_letter/;
   25 my @w32_opts = qw/instopt_letter 
   26                   tlpdbopt_desktop_integration 
   27                   collection-texworks
   28                  /;
   29 my @w32_admin_opts = qw/tlpdbopt_w32_multi_user/;
   30 
   31 my @opts_list = ();
   32 if (win32()) {
   33   push @opts_list, @w32_opts;
   34   if (admin()) {
   35     push @opts_list, @w32_admin_opts;
   36   }
   37 } else {
   38   push @opts_list, @unix_opts;
   39 }
   40 my %opts_to_str = (
   41   "instopt_letter"               => __("Default paper size"),
   42   "tlpdbopt_desktop_integration" => __("Add menu shortcuts"),
   43   "tlpdbopt_file_assocs"         => __("Change file associations"),
   44   "instopt_adjustpath"           => __("Adjust PATH setting in registry"),
   45   "tlpdbopt_w32_multi_user"      => __("Installation for all users"),
   46   "collection-texworks"          => __("Install TeXworks front end"),
   47 );
   48 my %opts_choices = (
   49   "instopt_letter" => ["A4", "letter"],
   50 );
   51 
   52 
   53 
   54 our %vars;
   55 our $tlpdb;
   56 our $texlive_release;
   57 our @media_available;
   58 
   59 our $MENU_INSTALL = 0;
   60 our $MENU_ABORT   = 1;
   61 our $MENU_QUIT    = 2;
   62 our $MENU_ALREADYDONE = 3;
   63 
   64 
   65 my $return = $MENU_INSTALL;
   66 
   67 require Tk;
   68 require Tk::BrowseEntry;
   69 require Tk::Dialog;
   70 require Tk::DialogBox;
   71 require Tk::PNG;
   72 #require Tk::ROText;
   73 #require Tk::ProgressBar;
   74 require Tk::Font;
   75 
   76 use utf8;
   77 no utf8;
   78 
   79 #
   80 #
   81 my $tit;
   82 my $can;
   83 my $prv;
   84 my $nxt;
   85 my $img;
   86 my $dest_display;
   87 my $warning;
   88 our $mw;
   89 my $usedfont;
   90 my $fmain;
   91 my $fbuttons;
   92 my $ftitle;
   93 my $counter;
   94 my $lineskip;
   95 
   96 $::init_remote_needed = 0;
   97 
   98 my $LEFT = 130;
   99 my $RIGHT = 50;
  100 my $TOP  = 50;
  101 my $BOTTOM = 50;
  102 my $INF = 300;
  103 my $MWIDTH = 730;
  104 my $MHEIGHT = 480;
  105 my $TITLEHEIGHT = 30;
  106 my $BUTTONSHEIGHT = 50;
  107 my $INNERWIDTH = ($MWIDTH - $LEFT - $RIGHT);
  108 my $INNERHEIGHT = ($MHEIGHT - $TOP - $TITLEHEIGHT - $BOTTOM - $BUTTONSHEIGHT);
  109 
  110 # the main installer runs %{$::run_menu}
  111 $::run_menu = \&run_menu_wizard;
  112 
  113 ######################################################################
  114 # From here on only function definitions
  115 # ####################################################################
  116 
  117 sub menu_abort {
  118     $return = $MENU_ABORT;
  119     $mw->destroy;
  120 }
  121 
  122 ################# WELCOME SCREEN ######################################
  123 
  124 sub run_menu_wizard {
  125   $mw = Tk::MainWindow->new(-width => $MWIDTH, -height => $MHEIGHT);
  126   $mw->protocol('WM_DELETE_WINDOW' => \&menu_abort);
  127   #setup_hooks_wizard();
  128 
  129   my $img = $mw->Photo(-format => 'png', -file => "$::installerdir/tlpkg/installer/texlive.png");
  130   $mw->Label(-image => $img, -background => "#0078b8")->place(-x => 0, -y => 0);
  131 
  132   $ftitle = $mw->Frame(-height => $TITLEHEIGHT, -width => $INNERWIDTH);
  133   $ftitle->update;
  134   $ftitle->place(-x => $LEFT, -y => $TOP);
  135 
  136   $tit = $ftitle->Label(-text => __('TeX Live %s Installation', $TeXLive::TLConfig::ReleaseYear));
  137 
  138   $usedfont= $tit->cget("-font");
  139   $lineskip = $usedfont->metrics("-linespace");
  140 
  141   $tit->place(-x => 0, -y => 0);
  142 
  143   $counter = $ftitle->Label(-text => "1/4");
  144   $counter->place(-x => $INNERWIDTH, -y => 0, -anchor => "ne");
  145 
  146   $fmain = $mw->Frame(-height => $INNERHEIGHT, -width => $INNERWIDTH);
  147           #, -borderwidth => 1, -relief => "ridge");
  148   $fmain->place(-x => $LEFT, -y => ($TOP + $TITLEHEIGHT));
  149 
  150 
  151   $can = $mw->Button(-width => 10, -relief => "ridge", -text => __('Quit'),
  152                -command => \&menu_abort);
  153   $prv = $mw->Button(-width => 10, -relief => "ridge", -text => __('< Back'));
  154   $nxt = $mw->Button(-width => 10, -relief => "ridge", -text => __('Next >'));
  155 
  156   $can->place(-x => $LEFT, -y => ($MHEIGHT - $BOTTOM), -anchor => "sw");
  157 
  158   my $rb = $MWIDTH - $RIGHT;
  159   $nxt->place(-x => ($MWIDTH - $RIGHT) , 
  160               -y => ($MHEIGHT - $BOTTOM), -anchor => "se")->focus();
  161 
  162   reset_start();
  163 
  164   Tk::MainLoop();
  165   return($return);
  166 }
  167 
  168 sub reset_start {
  169   for ($fmain->children) {
  170     $_->destroy;
  171   }
  172   $counter->configure(-text => "1/4");
  173   $prv->placeForget;
  174 
  175   my $inf = $fmain->Label(
  176     -text => __("Welcome to the installation of TeX Live %s\nhttp://tug.org/texlive\n\nThis wizard will guide you through the installation.", $TeXLive::TLConfig::ReleaseYear)
  177       . ( (win32()) ? "\n\n" . __("In case of trouble, try to disable your virus scanner during installation.") : "" )
  178        . "\n\n"
  179        . __("For an advanced, customizable installation, please consult\nthe web pages or installation guide.")
  180       . "\n"
  181       . ( (win32())
  182           ? __("Or use install-tl-advanced.bat.")
  183           : __("Or specify  --gui expert  to install-tl.") ),
  184     -justify => "left");
  185   $inf->place(-x => 0, -y => 50);
  186 
  187   # by default, if local media is present, we don't show this option
  188   # unless the command line option -select_repository is given
  189   my $adjust_mirror = 0;
  190   if ($#media_available == -1 || $::opt_select_repository) {
  191     my $mirror_selector = $fmain->Checkbutton(
  192       -text => __("Change default repository"),
  193       -variable => \$adjust_mirror
  194     );
  195     $mirror_selector->place(-x => 0, -y => 250);
  196   }
  197 
  198   $nxt->configure(-text => __("Next >") , 
  199     -command => sub { 
  200       if ($adjust_mirror) {
  201         ask_mirror();
  202       } else {
  203         $::init_remote_needed = 1;
  204         load_remote_screen();
  205       }
  206     });
  207   $nxt->configure(-state => "normal");
  208   $can->place(-x => $LEFT, -y => ($MHEIGHT - $BOTTOM), -anchor => "sw");
  209 }
  210 
  211 ################## MIRROR SCREEN ################################
  212 
  213 sub ask_mirror {
  214   for ($fmain->children) {
  215     $_->destroy;
  216   }
  217   $counter->configure(-text => "1-1/4");
  218 
  219   my @mirror_list;
  220   my @netlst;
  221   my @loclst;
  222   if ($#media_available >= 0) {
  223     for my $l (@media_available) {
  224       my ($a, $b) = split ('#', $l);
  225       if ($a eq 'local_compressed' || $a eq 'local_uncompressed') {
  226         push @loclst, "  $b";
  227       } elsif ($a eq 'NET') {
  228         #push @netlst, "  cmd line repository: $b";
  229         push @netlst, "  " . __("Command line repository") . ": $b";
  230       } else {
  231         tlwarn("Unknown media $l\n");
  232       }
  233     }
  234     if ($#loclst >= 0) {
  235       push @mirror_list, __("LOCAL REPOSITORIES");
  236       push @mirror_list, @loclst;
  237     }
  238   }
  239   push @mirror_list, __("NETWORK REPOSITORIES");
  240   push @mirror_list, "  " . __("Default remote repository") . ": http://mirror.ctan.org";
  241   push @mirror_list, @netlst;
  242   push @mirror_list, TeXLive::TLUtils::create_mirror_list();
  243 
  244   my $mirror_entry;
  245 
  246   $fmain->Label(-text => __("Select repository") . ":")->place(
  247     -x => 0, -y => 0);
  248   $fmain->Label(-text => __("Mirror:"))->place(-x => 0, -y => 50);
  249   $fmain->BrowseEntry(-state => 'readonly',
  250     -listheight => 12, 
  251     -listwidth => 400,
  252     -width => 35,
  253     -autolistwidth => 1,
  254     -choices => \@mirror_list,
  255     -browsecmd => 
  256       sub {
  257         if ($mirror_entry !~ m/^  /) {
  258           $mirror_entry = "";
  259         } elsif ($mirror_entry =~ m!(http|ftp)://!) {
  260           $mirror_entry = TeXLive::TLUtils::extract_mirror_entry($mirror_entry);
  261         } else {
  262           $mirror_entry =~ s/^\s*//;
  263           # $mirror_entry = TeXLive::TLUtils::extract_mirror_entry($mirror_entry);
  264         }
  265       },
  266     -variable => \$mirror_entry)->place(-x => 150, -y => 50);
  267  
  268   $prv->configure(-text => __('< Back'), -command => \&reset_start );
  269   $nxt->configure(-text => __('Next >'), 
  270     -command => 
  271       sub { $::init_remote_needed = 1; load_remote_screen($mirror_entry); });
  272 
  273   my $rb = $MWIDTH - $RIGHT;
  274   $rb -= $nxt->width;
  275   $rb -= 30;
  276 
  277   $prv->place(-x => $rb, -y => ($MHEIGHT - $BOTTOM), -anchor => "se");
  278   $can->place(-x => $LEFT, -y => ($MHEIGHT - $BOTTOM), -anchor => "sw");
  279 }
  280 
  281 sub ask_mirror_hierarchical {
  282   for ($fmain->children) {
  283     $_->destroy;
  284   }
  285   $counter->configure(-text => "1-1/4");
  286 
  287   our $mirrors;
  288   require("installer/mirrors.pl");
  289 
  290   my @continents = sort keys %$mirrors;
  291   my @countries;
  292   my @mirrors;
  293   $fmain->Label(-text => "Select mirror for installation:")->place(
  294     -x => 0, -y => 0);
  295   my $continent = "";
  296   my $country = "";
  297   my $mirror = "";
  298   my $cbrowser;
  299   my $mbrowser;
  300   $fmain->Label(-text => __("Continent"))->place(-x => 0, -y => 50);
  301   $fmain->BrowseEntry(-state => 'readonly',
  302     -listheight => $#continents + 1, -choices => \@continents,
  303     -variable => \$continent,
  304     -browsecmd => 
  305       sub {
  306         $cbrowser->delete(0,"end");
  307         @countries = sort keys %{$mirrors->{$continent}};
  308         for my $c (@countries) {
  309           $cbrowser->insert("end", $c);
  310         }
  311         $mirror = "";
  312         $country = "";
  313       })->place(-x => 150, -y => 50);
  314   $fmain->Label(-text => __("Countries"))->place(-x => 0, -y => 100);
  315   $cbrowser = $fmain->BrowseEntry(-state => 'readonly',
  316     -listheight => 5, -choices => \@countries,
  317     -variable => \$country,
  318     -browsecmd => 
  319       sub {
  320         $mbrowser->delete(0,"end");
  321         @mirrors = sort keys %{$mirrors->{$continent}{$country}};
  322         for my $m (@mirrors) {
  323           $mbrowser->insert("end", $m);
  324         }
  325         # always select the first mirror in the list
  326         if ($#mirrors >= 0) {
  327           $mirror = $mirrors[0];
  328         } else {
  329           $mirror = "";
  330         }
  331       })->place(-x => 150, -y => 100);
  332   $fmain->Label(-text => __("Mirrors"))->place(-x => 0, -y => 150);
  333   $mbrowser = $fmain->BrowseEntry(-state => 'readonly',
  334     -listheight => 5, -choices => \@mirrors,
  335     -variable => \$mirror,)->place(-x => 150, -y => 150);
  336  
  337   $prv->configure(-text => __('< Back'), -command => \&reset_start );
  338   $nxt->configure(-text => __('Next >'), 
  339     -command => 
  340       sub {
  341         if (!defined($continent) || !defined($country) || !defined($mirror) ||
  342             $continent eq "" || $country eq "" || $mirror eq "") {
  343           # do nothing, we just use the default mirror
  344           $::init_remote_needed = 1;
  345           load_remote_screen();
  346         } else {
  347           my %m = %{$mirrors->{$continent}->{$country}->{$mirror}->{'protocols_path'}};
  348           my $mfull;
  349           $mfull = "ftp://" . $m{'ftp'} if defined($m{'ftp'});
  350           $mfull = "http://" . $m{'http'} if defined($m{'http'});
  351           # remove terminal / if present
  352           $mfull =~ s!/$!!;
  353           $mfull .= "/" . $TeXLive::TLConfig::TeXLiveServerPath;
  354           # set the selected location before going on!
  355           $::init_remote_needed = 1;
  356           load_remote_screen($mfull);
  357         }
  358       });
  359 
  360   my $rb = $MWIDTH - $RIGHT;
  361   $rb -= $nxt->width;
  362   $rb -= 30;
  363 
  364   $prv->place(-x => $rb, -y => ($MHEIGHT - $BOTTOM), -anchor => "se");
  365   $can->place(-x => $LEFT, -y => ($MHEIGHT - $BOTTOM), -anchor => "sw");
  366 }
  367 
  368 
  369 ################## PATH SCREEN ################################
  370 
  371 sub load_remote_screen {
  372   my $remote_path = shift;
  373   for ($fmain->children) {
  374     $_->destroy;
  375   }
  376   $counter->configure(-text => "1-2/4");
  377 
  378   if ($::init_remote_needed) {
  379     my $labela = $fmain->Label(-text => __('Please wait while the repository database is loaded.'))->place(-x => 0, -y => 50);
  380     my $labelb = $fmain->Label(-text => __('This will take some time!'))->place(-x => 0, -y => 150);
  381     $prv->placeForget;
  382     $nxt->placeForget;
  383     $can->configure(-text => __('Cancel'),
  384        -command => sub { $return = $MENU_ABORT; $mw->destroy; });
  385     $mw->update;
  386     if (!only_load_remote($remote_path)) {
  387       $labela->configure(-text => __('Could not load remote TeX Live Database:') . $remote_path);
  388       $labelb->configure(-text => __('Please go back and select a different mirror.'));
  389       $prv->configure(-text => __('< Back'), -command => \&reset_start );
  390     } elsif (!do_version_agree()) {
  391       $labela->configure(-text => __('The TeX Live versions of the local installation
  392 and the repository being accessed are not compatible:
  393      local: %s
  394 repository: %s', $TeXLive::TLConfig::ReleaseYear, $texlive_release));
  395       $labelb->configure(-text => __('Please go back and select a different mirror.'));
  396       $prv->configure(-text => __('< Back'), -command => \&reset_start );
  397     } else {
  398       final_remote_init($remote_path);
  399       ask_path();
  400     }
  401   } else {
  402     ask_path();
  403   }
  404 
  405   my $rb = $MWIDTH - $RIGHT;
  406   $rb -= $nxt->width;
  407   $rb -= 30;
  408 
  409   $prv->place(-x => $rb, -y => ($MHEIGHT - $BOTTOM), -anchor => "se");
  410   $nxt->place(-x => ($MWIDTH - $RIGHT) , 
  411               -y => ($MHEIGHT - $BOTTOM), -anchor => "se")->focus();
  412 }
  413 
  414 sub ask_path {
  415   for ($fmain->children) {
  416     $_->destroy;
  417   }
  418 
  419   $counter->configure(-text => "2/4");
  420 
  421   $dest_display = native_slashify($vars{'TEXDIR'});
  422 
  423   my $lab = $fmain->Label(-text => __('Destination folder:'));
  424   my $val = $fmain->Label(-textvar => \$dest_display);
  425   my $but = $fmain->Button(-text => __("Change"), -command => \&change_path,
  426                            -relief => "ridge", -width => 10);
  427 
  428   # texworks will be anyway installed in scheme-full
  429   #my $but_tw = $fmain->Checkbutton(-text => __("Install TeXworks front end'),
  430   #                                -variable => \$vars{"addon_editor"});
  431 
  432   #
  433   # disable the "Advanced Configuration" button switching to the 
  434   # perltk installer
  435   #
  436   #my $cb = $fmain->Button(-text => __("Advanced Configuration"), 
  437   #       -relief => "ridge",
  438   #       -command => sub { $mw->destroy; 
  439   #                         require("installer/install-menu-perltk.pl");
  440   #                         setup_hooks_perltk();
  441   #                         $return = run_menu_perltk();
  442   #                       });
  443 
  444   calc_depends();
  445 
  446 
  447   $fmain->Label(-text => __("The destination folder will contain the installation.\nIt is strongly recommended to keep the year as the last component."), 
  448                 -justify => "left")->place(-x => 0, -y => 20);
  449 
  450   my $ytmp = 100;
  451   $lab->place(-x => 0, -y => $ytmp, -anchor => "w");
  452   $ytmp += ($lineskip + 10);
  453   $val->place(-x => 0, -y => $ytmp, -anchor => "w");
  454 
  455   $but->place(-x => $INNERWIDTH, -y => $ytmp, -anchor => "e");
  456 
  457   $warning = $fmain->Label(-foreground => "red");
  458   check_show_warning();
  459   $ytmp += ($lineskip + 10);
  460   $warning->place(-x => 0, -y => $ytmp, -anchor => "w");
  461 
  462 
  463   #if (win32()) {
  464   #  $but_tw->place(-x => 0, -y => $ytmp + 60);
  465   #}
  466 
  467   #$cb->place(-x => $INNERWIDTH, -y => $INNERHEIGHT, -anchor => "se");
  468 
  469   $fmain->Label(-text => __('disk space required:') . " $vars{'total_size'} MB", 
  470                 -justify => "left"
  471              )->place(-x => 0, -y => $fmain->height, -anchor => "sw");
  472 
  473   $prv->configure(-text => __('< Back'), -command => \&reset_start );
  474   $nxt->configure(-text => __('Next >'), -command => \&ask_options );
  475 
  476   my $rb = $MWIDTH - $RIGHT;
  477   $rb -= $nxt->width;
  478   $rb -= 30;
  479 
  480   $prv->place(-x => $rb, -y => ($MHEIGHT - $BOTTOM), -anchor => "se");
  481   $can->place(-x => $LEFT, -y => ($MHEIGHT - $BOTTOM), -anchor => "sw");
  482 }
  483 
  484 sub check_show_warning {
  485   if (TeXLive::TLUtils::texdir_check($vars{'TEXDIR'})) {
  486     $warning->configure(-text => "");
  487     $nxt->configure(-state => "normal");
  488   } else {
  489     $warning->configure(-text => __('(default not allowed or not writable - please change!)'));
  490     $nxt->configure(-state => "disabled");
  491   }
  492 }
  493 
  494 sub callback_change_texdir {
  495   my ($val) = @_;
  496   my $home = getenv('HOME');
  497   my $texdirnoslash;
  498   if (win32()) {
  499     $home = getenv('USERPROFILE');
  500     $home =~ s!\\!/!g;
  501   }
  502   $home ||= '~';
  503   $val =~ s!\\!/!g;
  504   $vars{'TEXDIR'} = $val;
  505   $vars{'TEXDIR'} =~ s/^~/$home/;
  506   $vars{'TEXMFLOCAL'} =~ s/^~/$home/;
  507   $vars{'TEXMFSYSVAR'} =~ s/^~/$home/;
  508   $vars{'TEXMFSYSCONFIG'} =~ s/^~/$home/;
  509   # only if we set TEXDIR we set the others in parallel
  510   if ($vars{'TEXDIR'}=~/^(.*)\/$texlive_release$/) {
  511     $vars{'TEXMFLOCAL'}="$1/texmf-local";
  512     $vars{'TEXMFSYSVAR'}="$1/$texlive_release/texmf-var";
  513     $vars{'TEXMFSYSCONFIG'}="$1/$texlive_release/texmf-config";
  514   } elsif ($vars{'TEXDIR'}=~/^(.*)$/) {
  515     $texdirnoslash = $1;
  516     $texdirnoslash =~ s!/$!!;
  517     $vars{'TEXMFLOCAL'}="$texdirnoslash/texmf-local";
  518     $vars{'TEXMFSYSVAR'}="$texdirnoslash/texmf-var";
  519     $vars{'TEXMFSYSCONFIG'}="$texdirnoslash/texmf-config";
  520   }
  521   #$dest = $vars{'TEXDIR'};
  522   $dest_display = native_slashify($vars{'TEXDIR'}); # useful as -textvar value in Labels
  523   check_show_warning();
  524 }
  525 
  526 ################## OPTIONS SCREEN ################################
  527 
  528 sub ask_options {
  529   for ($fmain->children) {
  530     $_->destroy;
  531   }
  532   $counter->configure(-text => "3/4");
  533 
  534   my $inf = $fmain->Label(-text => __("This screen allows you to configure some options"), -justify => "left");
  535   $inf->place(-x => 0, -y => 20);
  536 
  537   calc_depends();
  538 
  539   my $ytmp = 60;
  540 
  541   for my $o (@opts_list) {
  542     if (exists($opts_choices{$o})) {
  543       my $fopt = $fmain->Frame()->place(-x => 0, -y => $ytmp);
  544       $fopt->Label(
  545         -text => $opts_to_str{$o} . ":\t"
  546       )->pack(-side => 'left');
  547       for (my $i = 0; $i < @{$opts_choices{$o}}; $i++) {
  548         $fopt->Radiobutton(
  549           -text => __($opts_choices{$o}->[$i]),
  550           -variable => \$vars{$o},
  551           -value => $i,
  552         )->pack(-side => 'left');
  553       }
  554     } else {
  555       $fmain->Checkbutton(-text => $opts_to_str{$o},
  556         -variable => \$vars{$o})->place(-x => 0, -y => $ytmp);
  557     }
  558     $ytmp += 50;
  559   }
  560 
  561   $prv->configure(-text => __('< Back'), -command => \&ask_path );
  562   $nxt->configure(-text => __('Next >'), -command => \&ask_go );
  563 
  564   my $rb = $MWIDTH - $RIGHT;
  565   $rb -= $nxt->width;
  566   $rb -= 30;
  567 
  568   $prv->place(-x => $rb, -y => ($MHEIGHT - $BOTTOM), -anchor => "se");
  569 }
  570 
  571 
  572 ################## INSTALL SCREEN #############################
  573 
  574 sub ask_go {
  575   for ($fmain->children) {
  576     $_->destroy;
  577   }
  578   $counter->configure(-text => "4/4");
  579   my $inf = $fmain->Label(-justify => "left", -text => __("We are ready to install TeX Live %s.\nThe following settings will be used.\nIf you want to change something please go back,\notherwise press the \"Install\" button.", $TeXLive::TLConfig::ReleaseYear));
  580 
  581 
  582   $inf->place(-x => 0, -y => 80);
  583 
  584   my $ytmp = 170;
  585 
  586   $fmain->Label(-justify => "left", 
  587                 -text => __("Destination folder:") . "\t $dest_display")->place(-x => 0, -y => $ytmp);
  588   $ytmp += 20;
  589 
  590   for my $o (@opts_list) {
  591     my $text = $opts_to_str{$o} . ":\t";
  592     if (exists ($opts_choices{$o})) {
  593       $text .= $opts_choices{$o}->[$vars{$o}];
  594     } else {
  595       $text .= $vars{$o} ? __("Yes") : __("No");
  596     }
  597     $fmain->Label(-justify => "left", 
  598                   -text => $text)->place(-x => 0, -y => $ytmp);
  599     $ytmp += 20;
  600   }
  601 
  602 
  603   
  604   $nxt->configure(-text => __('Install'), 
  605                   -command => sub { $return = $MENU_INSTALL; $mw->destroy; });
  606 #                  -command => \&wizard_installation_window);
  607   $prv->configure(-text => __('< Back'), -command => \&ask_options);
  608   $can->place(-x => $LEFT, -y => ($MHEIGHT - $BOTTOM), -anchor => "sw");
  609 }
  610 
  611 ################### END OF MODULE RETURN 1 FOR REQUIRE ###########
  612 
  613 1;
  614 
  615 __END__
  616 
  617 ### Local Variables:
  618 ### perl-indent-level: 2
  619 ### tab-width: 2
  620 ### indent-tabs-mode: nil
  621 ### End:
  622 # vim:set tabstop=2 expandtab: #