summaryrefslogtreecommitdiff
path: root/Master/tlpkg/installer/install-menu-wizard.pl
diff options
context:
space:
mode:
Diffstat (limited to 'Master/tlpkg/installer/install-menu-wizard.pl')
-rw-r--r--Master/tlpkg/installer/install-menu-wizard.pl622
1 files changed, 0 insertions, 622 deletions
diff --git a/Master/tlpkg/installer/install-menu-wizard.pl b/Master/tlpkg/installer/install-menu-wizard.pl
deleted file mode 100644
index 90e62d3583b..00000000000
--- a/Master/tlpkg/installer/install-menu-wizard.pl
+++ /dev/null
@@ -1,622 +0,0 @@
-#!/usr/bin/env perl
-# $Id$
-# Copyright 2009-2016 Norbert Preining
-# This file is licensed under the GNU General Public License version 2
-# or any later version.
-
-use strict;
-$^W = 1;
-
-my $svnrev = '$Revision: 11925 $';
-$svnrev =~ m/: ([0-9]+) /;
-$::menurevision = ($1 ? $1 : 'unknown');
-
-require("TeXLive/trans.pl");
-load_translations();
-
-require("$::installerdir/tlpkg/installer/texdirsel.pl");
-
-#
-# the following lists define which options are shown in the Option screen
-# for unix and windows. On W32 with admin privileges both @w32 list options
-# are shown
-# the values are keys into the %vars array
-my @unix_opts = qw/instopt_letter/;
-my @w32_opts = qw/instopt_letter
- tlpdbopt_desktop_integration
- collection-texworks
- /;
-my @w32_admin_opts = qw/tlpdbopt_w32_multi_user/;
-
-my @opts_list = ();
-if (win32()) {
- push @opts_list, @w32_opts;
- if (admin()) {
- push @opts_list, @w32_admin_opts;
- }
-} else {
- push @opts_list, @unix_opts;
-}
-my %opts_to_str = (
- "instopt_letter" => __("Default paper size"),
- "tlpdbopt_desktop_integration" => __("Add menu shortcuts"),
- "tlpdbopt_file_assocs" => __("Change file associations"),
- "instopt_adjustpath" => __("Adjust PATH setting in registry"),
- "tlpdbopt_w32_multi_user" => __("Installation for all users"),
- "collection-texworks" => __("Install TeXworks front end"),
-);
-my %opts_choices = (
- "instopt_letter" => ["A4", "letter"],
-);
-
-
-
-our %vars;
-our $tlpdb;
-our $texlive_release;
-our @media_available;
-
-our $MENU_INSTALL = 0;
-our $MENU_ABORT = 1;
-our $MENU_QUIT = 2;
-our $MENU_ALREADYDONE = 3;
-
-
-my $return = $MENU_INSTALL;
-
-require Tk;
-require Tk::BrowseEntry;
-require Tk::Dialog;
-require Tk::DialogBox;
-require Tk::PNG;
-#require Tk::ROText;
-#require Tk::ProgressBar;
-require Tk::Font;
-
-use utf8;
-no utf8;
-
-#
-#
-my $tit;
-my $can;
-my $prv;
-my $nxt;
-my $img;
-my $dest_display;
-my $warning;
-our $mw;
-my $usedfont;
-my $fmain;
-my $fbuttons;
-my $ftitle;
-my $counter;
-my $lineskip;
-
-$::init_remote_needed = 0;
-
-my $LEFT = 130;
-my $RIGHT = 50;
-my $TOP = 50;
-my $BOTTOM = 50;
-my $INF = 300;
-my $MWIDTH = 730;
-my $MHEIGHT = 480;
-my $TITLEHEIGHT = 30;
-my $BUTTONSHEIGHT = 50;
-my $INNERWIDTH = ($MWIDTH - $LEFT - $RIGHT);
-my $INNERHEIGHT = ($MHEIGHT - $TOP - $TITLEHEIGHT - $BOTTOM - $BUTTONSHEIGHT);
-
-# the main installer runs %{$::run_menu}
-$::run_menu = \&run_menu_wizard;
-
-######################################################################
-# From here on only function definitions
-# ####################################################################
-
-sub menu_abort {
- $return = $MENU_ABORT;
- $mw->destroy;
-}
-
-################# WELCOME SCREEN ######################################
-
-sub run_menu_wizard {
- $mw = Tk::MainWindow->new(-width => $MWIDTH, -height => $MHEIGHT);
- $mw->protocol('WM_DELETE_WINDOW' => \&menu_abort);
- #setup_hooks_wizard();
-
- my $img = $mw->Photo(-format => 'png', -file => "$::installerdir/tlpkg/installer/texlive.png");
- $mw->Label(-image => $img, -background => "#0078b8")->place(-x => 0, -y => 0);
-
- $ftitle = $mw->Frame(-height => $TITLEHEIGHT, -width => $INNERWIDTH);
- $ftitle->update;
- $ftitle->place(-x => $LEFT, -y => $TOP);
-
- $tit = $ftitle->Label(-text => __('TeX Live %s Installation', $TeXLive::TLConfig::ReleaseYear));
-
- $usedfont= $tit->cget("-font");
- $lineskip = $usedfont->metrics("-linespace");
-
- $tit->place(-x => 0, -y => 0);
-
- $counter = $ftitle->Label(-text => "1/4");
- $counter->place(-x => $INNERWIDTH, -y => 0, -anchor => "ne");
-
- $fmain = $mw->Frame(-height => $INNERHEIGHT, -width => $INNERWIDTH);
- #, -borderwidth => 1, -relief => "ridge");
- $fmain->place(-x => $LEFT, -y => ($TOP + $TITLEHEIGHT));
-
-
- $can = $mw->Button(-width => 10, -relief => "ridge", -text => __('Quit'),
- -command => \&menu_abort);
- $prv = $mw->Button(-width => 10, -relief => "ridge", -text => __('< Back'));
- $nxt = $mw->Button(-width => 10, -relief => "ridge", -text => __('Next >'));
-
- $can->place(-x => $LEFT, -y => ($MHEIGHT - $BOTTOM), -anchor => "sw");
-
- my $rb = $MWIDTH - $RIGHT;
- $nxt->place(-x => ($MWIDTH - $RIGHT) ,
- -y => ($MHEIGHT - $BOTTOM), -anchor => "se")->focus();
-
- reset_start();
-
- Tk::MainLoop();
- return($return);
-}
-
-sub reset_start {
- for ($fmain->children) {
- $_->destroy;
- }
- $counter->configure(-text => "1/4");
- $prv->placeForget;
-
- my $inf = $fmain->Label(
- -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)
- . ( (win32()) ? "\n\n" . __("In case of trouble, try to disable your virus scanner during installation.") : "" )
- . "\n\n"
- . __("For an advanced, customizable installation, please consult\nthe web pages or installation guide.")
- . "\n"
- . ( (win32())
- ? __("Or use install-tl-advanced.bat.")
- : __("Or specify --gui expert to install-tl.") ),
- -justify => "left");
- $inf->place(-x => 0, -y => 50);
-
- # by default, if local media is present, we don't show this option
- # unless the command line option -select_repository is given
- my $adjust_mirror = 0;
- if ($#media_available == -1 || $::opt_select_repository) {
- my $mirror_selector = $fmain->Checkbutton(
- -text => __("Change default repository"),
- -variable => \$adjust_mirror
- );
- $mirror_selector->place(-x => 0, -y => 250);
- }
-
- $nxt->configure(-text => __("Next >") ,
- -command => sub {
- if ($adjust_mirror) {
- ask_mirror();
- } else {
- $::init_remote_needed = 1;
- load_remote_screen();
- }
- });
- $nxt->configure(-state => "normal");
- $can->place(-x => $LEFT, -y => ($MHEIGHT - $BOTTOM), -anchor => "sw");
-}
-
-################## MIRROR SCREEN ################################
-
-sub ask_mirror {
- for ($fmain->children) {
- $_->destroy;
- }
- $counter->configure(-text => "1-1/4");
-
- my @mirror_list;
- my @netlst;
- my @loclst;
- if ($#media_available >= 0) {
- for my $l (@media_available) {
- my ($a, $b) = split ('#', $l);
- if ($a eq 'local_compressed' || $a eq 'local_uncompressed') {
- push @loclst, " $b";
- } elsif ($a eq 'NET') {
- #push @netlst, " cmd line repository: $b";
- push @netlst, " " . __("Command line repository") . ": $b";
- } else {
- tlwarn("Unknown media $l\n");
- }
- }
- if ($#loclst >= 0) {
- push @mirror_list, __("LOCAL REPOSITORIES");
- push @mirror_list, @loclst;
- }
- }
- push @mirror_list, __("NETWORK REPOSITORIES");
- push @mirror_list, " " . __("Default remote repository") . ": http://mirror.ctan.org";
- push @mirror_list, @netlst;
- push @mirror_list, TeXLive::TLUtils::create_mirror_list();
-
- my $mirror_entry;
-
- $fmain->Label(-text => __("Select repository") . ":")->place(
- -x => 0, -y => 0);
- $fmain->Label(-text => __("Mirror:"))->place(-x => 0, -y => 50);
- $fmain->BrowseEntry(-state => 'readonly',
- -listheight => 12,
- -listwidth => 400,
- -width => 35,
- -autolistwidth => 1,
- -choices => \@mirror_list,
- -browsecmd =>
- sub {
- if ($mirror_entry !~ m/^ /) {
- $mirror_entry = "";
- } elsif ($mirror_entry =~ m!(http|ftp)://!) {
- $mirror_entry = TeXLive::TLUtils::extract_mirror_entry($mirror_entry);
- } else {
- $mirror_entry =~ s/^\s*//;
- # $mirror_entry = TeXLive::TLUtils::extract_mirror_entry($mirror_entry);
- }
- },
- -variable => \$mirror_entry)->place(-x => 150, -y => 50);
-
- $prv->configure(-text => __('< Back'), -command => \&reset_start );
- $nxt->configure(-text => __('Next >'),
- -command =>
- sub { $::init_remote_needed = 1; load_remote_screen($mirror_entry); });
-
- my $rb = $MWIDTH - $RIGHT;
- $rb -= $nxt->width;
- $rb -= 30;
-
- $prv->place(-x => $rb, -y => ($MHEIGHT - $BOTTOM), -anchor => "se");
- $can->place(-x => $LEFT, -y => ($MHEIGHT - $BOTTOM), -anchor => "sw");
-}
-
-sub ask_mirror_hierarchical {
- for ($fmain->children) {
- $_->destroy;
- }
- $counter->configure(-text => "1-1/4");
-
- our $mirrors;
- require("installer/mirrors.pl");
-
- my @continents = sort keys %$mirrors;
- my @countries;
- my @mirrors;
- $fmain->Label(-text => "Select mirror for installation:")->place(
- -x => 0, -y => 0);
- my $continent = "";
- my $country = "";
- my $mirror = "";
- my $cbrowser;
- my $mbrowser;
- $fmain->Label(-text => __("Continent"))->place(-x => 0, -y => 50);
- $fmain->BrowseEntry(-state => 'readonly',
- -listheight => $#continents + 1, -choices => \@continents,
- -variable => \$continent,
- -browsecmd =>
- sub {
- $cbrowser->delete(0,"end");
- @countries = sort keys %{$mirrors->{$continent}};
- for my $c (@countries) {
- $cbrowser->insert("end", $c);
- }
- $mirror = "";
- $country = "";
- })->place(-x => 150, -y => 50);
- $fmain->Label(-text => __("Countries"))->place(-x => 0, -y => 100);
- $cbrowser = $fmain->BrowseEntry(-state => 'readonly',
- -listheight => 5, -choices => \@countries,
- -variable => \$country,
- -browsecmd =>
- sub {
- $mbrowser->delete(0,"end");
- @mirrors = sort keys %{$mirrors->{$continent}{$country}};
- for my $m (@mirrors) {
- $mbrowser->insert("end", $m);
- }
- # always select the first mirror in the list
- if ($#mirrors >= 0) {
- $mirror = $mirrors[0];
- } else {
- $mirror = "";
- }
- })->place(-x => 150, -y => 100);
- $fmain->Label(-text => __("Mirrors"))->place(-x => 0, -y => 150);
- $mbrowser = $fmain->BrowseEntry(-state => 'readonly',
- -listheight => 5, -choices => \@mirrors,
- -variable => \$mirror,)->place(-x => 150, -y => 150);
-
- $prv->configure(-text => __('< Back'), -command => \&reset_start );
- $nxt->configure(-text => __('Next >'),
- -command =>
- sub {
- if (!defined($continent) || !defined($country) || !defined($mirror) ||
- $continent eq "" || $country eq "" || $mirror eq "") {
- # do nothing, we just use the default mirror
- $::init_remote_needed = 1;
- load_remote_screen();
- } else {
- my %m = %{$mirrors->{$continent}->{$country}->{$mirror}->{'protocols_path'}};
- my $mfull;
- $mfull = "ftp://" . $m{'ftp'} if defined($m{'ftp'});
- $mfull = "http://" . $m{'http'} if defined($m{'http'});
- # remove terminal / if present
- $mfull =~ s!/$!!;
- $mfull .= "/" . $TeXLive::TLConfig::TeXLiveServerPath;
- # set the selected location before going on!
- $::init_remote_needed = 1;
- load_remote_screen($mfull);
- }
- });
-
- my $rb = $MWIDTH - $RIGHT;
- $rb -= $nxt->width;
- $rb -= 30;
-
- $prv->place(-x => $rb, -y => ($MHEIGHT - $BOTTOM), -anchor => "se");
- $can->place(-x => $LEFT, -y => ($MHEIGHT - $BOTTOM), -anchor => "sw");
-}
-
-
-################## PATH SCREEN ################################
-
-sub load_remote_screen {
- my $remote_path = shift;
- for ($fmain->children) {
- $_->destroy;
- }
- $counter->configure(-text => "1-2/4");
-
- if ($::init_remote_needed) {
- my $labela = $fmain->Label(-text => __('Please wait while the repository database is loaded.'))->place(-x => 0, -y => 50);
- my $labelb = $fmain->Label(-text => __('This will take some time!'))->place(-x => 0, -y => 150);
- $prv->placeForget;
- $nxt->placeForget;
- $can->configure(-text => __('Cancel'),
- -command => sub { $return = $MENU_ABORT; $mw->destroy; });
- $mw->update;
- if (!only_load_remote($remote_path)) {
- $labela->configure(-text => __('Could not load remote TeX Live Database:') . $remote_path);
- $labelb->configure(-text => __('Please go back and select a different mirror.'));
- $prv->configure(-text => __('< Back'), -command => \&reset_start );
- } elsif (!do_version_agree()) {
- $labela->configure(-text => __('The TeX Live versions of the local installation
-and the repository being accessed are not compatible:
- local: %s
-repository: %s', $TeXLive::TLConfig::ReleaseYear, $texlive_release));
- $labelb->configure(-text => __('Please go back and select a different mirror.'));
- $prv->configure(-text => __('< Back'), -command => \&reset_start );
- } else {
- final_remote_init($remote_path);
- ask_path();
- }
- } else {
- ask_path();
- }
-
- my $rb = $MWIDTH - $RIGHT;
- $rb -= $nxt->width;
- $rb -= 30;
-
- $prv->place(-x => $rb, -y => ($MHEIGHT - $BOTTOM), -anchor => "se");
- $nxt->place(-x => ($MWIDTH - $RIGHT) ,
- -y => ($MHEIGHT - $BOTTOM), -anchor => "se")->focus();
-}
-
-sub ask_path {
- for ($fmain->children) {
- $_->destroy;
- }
-
- $counter->configure(-text => "2/4");
-
- $dest_display = native_slashify($vars{'TEXDIR'});
-
- my $lab = $fmain->Label(-text => __('Destination folder:'));
- my $val = $fmain->Label(-textvar => \$dest_display);
- my $but = $fmain->Button(-text => __("Change"), -command => \&change_path,
- -relief => "ridge", -width => 10);
-
- # texworks will be anyway installed in scheme-full
- #my $but_tw = $fmain->Checkbutton(-text => __("Install TeXworks front end'),
- # -variable => \$vars{"addon_editor"});
-
- #
- # disable the "Advanced Configuration" button switching to the
- # perltk installer
- #
- #my $cb = $fmain->Button(-text => __("Advanced Configuration"),
- # -relief => "ridge",
- # -command => sub { $mw->destroy;
- # require("installer/install-menu-perltk.pl");
- # setup_hooks_perltk();
- # $return = run_menu_perltk();
- # });
-
- calc_depends();
-
-
- $fmain->Label(-text => __("The destination folder will contain the installation.\nIt is strongly recommended to keep the year as the last component."),
- -justify => "left")->place(-x => 0, -y => 20);
-
- my $ytmp = 100;
- $lab->place(-x => 0, -y => $ytmp, -anchor => "w");
- $ytmp += ($lineskip + 10);
- $val->place(-x => 0, -y => $ytmp, -anchor => "w");
-
- $but->place(-x => $INNERWIDTH, -y => $ytmp, -anchor => "e");
-
- $warning = $fmain->Label(-foreground => "red");
- check_show_warning();
- $ytmp += ($lineskip + 10);
- $warning->place(-x => 0, -y => $ytmp, -anchor => "w");
-
-
- #if (win32()) {
- # $but_tw->place(-x => 0, -y => $ytmp + 60);
- #}
-
- #$cb->place(-x => $INNERWIDTH, -y => $INNERHEIGHT, -anchor => "se");
-
- $fmain->Label(-text => __('disk space required:') . " $vars{'total_size'} MB",
- -justify => "left"
- )->place(-x => 0, -y => $fmain->height, -anchor => "sw");
-
- $prv->configure(-text => __('< Back'), -command => \&reset_start );
- $nxt->configure(-text => __('Next >'), -command => \&ask_options );
-
- my $rb = $MWIDTH - $RIGHT;
- $rb -= $nxt->width;
- $rb -= 30;
-
- $prv->place(-x => $rb, -y => ($MHEIGHT - $BOTTOM), -anchor => "se");
- $can->place(-x => $LEFT, -y => ($MHEIGHT - $BOTTOM), -anchor => "sw");
-}
-
-sub check_show_warning {
- if (TeXLive::TLUtils::texdir_check($vars{'TEXDIR'})) {
- $warning->configure(-text => "");
- $nxt->configure(-state => "normal");
- } else {
- $warning->configure(-text => __('(default not allowed or not writable - please change!)'));
- $nxt->configure(-state => "disabled");
- }
-}
-
-sub callback_change_texdir {
- my ($val) = @_;
- my $home = getenv('HOME');
- my $texdirnoslash;
- if (win32()) {
- $home = getenv('USERPROFILE');
- $home =~ s!\\!/!g;
- }
- $home ||= '~';
- $val =~ s!\\!/!g;
- $vars{'TEXDIR'} = $val;
- $vars{'TEXDIR'} =~ s/^~/$home/;
- $vars{'TEXMFLOCAL'} =~ s/^~/$home/;
- $vars{'TEXMFSYSVAR'} =~ s/^~/$home/;
- $vars{'TEXMFSYSCONFIG'} =~ s/^~/$home/;
- # only if we set TEXDIR we set the others in parallel
- if ($vars{'TEXDIR'}=~/^(.*)\/$texlive_release$/) {
- $vars{'TEXMFLOCAL'}="$1/texmf-local";
- $vars{'TEXMFSYSVAR'}="$1/$texlive_release/texmf-var";
- $vars{'TEXMFSYSCONFIG'}="$1/$texlive_release/texmf-config";
- } elsif ($vars{'TEXDIR'}=~/^(.*)$/) {
- $texdirnoslash = $1;
- $texdirnoslash =~ s!/$!!;
- $vars{'TEXMFLOCAL'}="$texdirnoslash/texmf-local";
- $vars{'TEXMFSYSVAR'}="$texdirnoslash/texmf-var";
- $vars{'TEXMFSYSCONFIG'}="$texdirnoslash/texmf-config";
- }
- #$dest = $vars{'TEXDIR'};
- $dest_display = native_slashify($vars{'TEXDIR'}); # useful as -textvar value in Labels
- check_show_warning();
-}
-
-################## OPTIONS SCREEN ################################
-
-sub ask_options {
- for ($fmain->children) {
- $_->destroy;
- }
- $counter->configure(-text => "3/4");
-
- my $inf = $fmain->Label(-text => __("This screen allows you to configure some options"), -justify => "left");
- $inf->place(-x => 0, -y => 20);
-
- calc_depends();
-
- my $ytmp = 60;
-
- for my $o (@opts_list) {
- if (exists($opts_choices{$o})) {
- my $fopt = $fmain->Frame()->place(-x => 0, -y => $ytmp);
- $fopt->Label(
- -text => $opts_to_str{$o} . ":\t"
- )->pack(-side => 'left');
- for (my $i = 0; $i < @{$opts_choices{$o}}; $i++) {
- $fopt->Radiobutton(
- -text => __($opts_choices{$o}->[$i]),
- -variable => \$vars{$o},
- -value => $i,
- )->pack(-side => 'left');
- }
- } else {
- $fmain->Checkbutton(-text => $opts_to_str{$o},
- -variable => \$vars{$o})->place(-x => 0, -y => $ytmp);
- }
- $ytmp += 50;
- }
-
- $prv->configure(-text => __('< Back'), -command => \&ask_path );
- $nxt->configure(-text => __('Next >'), -command => \&ask_go );
-
- my $rb = $MWIDTH - $RIGHT;
- $rb -= $nxt->width;
- $rb -= 30;
-
- $prv->place(-x => $rb, -y => ($MHEIGHT - $BOTTOM), -anchor => "se");
-}
-
-
-################## INSTALL SCREEN #############################
-
-sub ask_go {
- for ($fmain->children) {
- $_->destroy;
- }
- $counter->configure(-text => "4/4");
- 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));
-
-
- $inf->place(-x => 0, -y => 80);
-
- my $ytmp = 170;
-
- $fmain->Label(-justify => "left",
- -text => __("Destination folder:") . "\t $dest_display")->place(-x => 0, -y => $ytmp);
- $ytmp += 20;
-
- for my $o (@opts_list) {
- my $text = $opts_to_str{$o} . ":\t";
- if (exists ($opts_choices{$o})) {
- $text .= $opts_choices{$o}->[$vars{$o}];
- } else {
- $text .= $vars{$o} ? __("Yes") : __("No");
- }
- $fmain->Label(-justify => "left",
- -text => $text)->place(-x => 0, -y => $ytmp);
- $ytmp += 20;
- }
-
-
-
- $nxt->configure(-text => __('Install'),
- -command => sub { $return = $MENU_INSTALL; $mw->destroy; });
-# -command => \&wizard_installation_window);
- $prv->configure(-text => __('< Back'), -command => \&ask_options);
- $can->place(-x => $LEFT, -y => ($MHEIGHT - $BOTTOM), -anchor => "sw");
-}
-
-################### END OF MODULE RETURN 1 FOR REQUIRE ###########
-
-1;
-
-__END__
-
-### Local Variables:
-### perl-indent-level: 2
-### tab-width: 2
-### indent-tabs-mode: nil
-### End:
-# vim:set tabstop=2 expandtab: #