From a9ab728d2a8b514da67b964a845f2e5bb7308f60 Mon Sep 17 00:00:00 2001 From: Siep Kroonenberg Date: Sat, 27 Feb 2021 14:17:34 +0000 Subject: Translations loaded in tlmgr and install-tl git-svn-id: svn://tug.org/texlive/trunk@57970 c570f23f-e606-0410-a88d-b1316a301751 --- Master/tlpkg/installer/install-menu-perltk.pl | 1291 ------------------------- 1 file changed, 1291 deletions(-) delete mode 100644 Master/tlpkg/installer/install-menu-perltk.pl (limited to 'Master/tlpkg/installer/install-menu-perltk.pl') diff --git a/Master/tlpkg/installer/install-menu-perltk.pl b/Master/tlpkg/installer/install-menu-perltk.pl deleted file mode 100644 index 905ffc8be67..00000000000 --- a/Master/tlpkg/installer/install-menu-perltk.pl +++ /dev/null @@ -1,1291 +0,0 @@ -#!/usr/bin/env perl -# $Id$ -# -# Copyright 2008-2020 Norbert Preining -# Copyright 2008 Reinhard Kotucha -# This file is licensed under the GNU General Public License version 2 -# or any later version. - -use strict; -$^W = 1; - -my $svnrev = '$Revision$'; -$svnrev =~ m/: ([0-9]+) /; -$::menurevision = ($1 ? $1 : 'unknown'); - -require Tk; -require Tk::Dialog; -require Tk::DialogBox; -require Tk::PNG; -require Tk::BrowseEntry; - -use utf8; -no utf8; - -our %vars; -our $opt_in_place; -our $tlpdb; -our @collections_std; -our $texlive_release; -our @media_available; -our $media; - -our $MENU_INSTALL = 0; -our $MENU_ABORT = 1; -our $MENU_QUIT = 2; -our $MENU_ALREADYDONE = 3; - -my $return = $MENU_INSTALL; - -our $LANG; -our %TRANS; -require("TeXLive/trans.pl"); -load_translations(); - -require("$::installerdir/tlpkg/installer/texdirsel.pl"); - -# @fileassocdesc also defined in install-tl -$::fileassocdesc[0] = __("None"); -$::fileassocdesc[1] = __("Only new"); -$::fileassocdesc[2] = __("All"); - -$::letterdesc[0] = __('A4'); -$::letterdesc[1] = __('letter'); - -$::deskintdesc[0] = __("No shortcuts"); -$::deskintdesc[1] = __("TeX Live menu"); -if (win32() && is_seven()) { $::deskintdesc[2] = __("Launcher entry"); } - -# generic option strings: -$::yesno[0] = __('No'); -$::yesno[1] = __('Yes'); - -our $mw; -my $subframe; -my $mainwindow; -my $bin_toggle_button; -my $scheme_toggle_button; -my $collection_toggle_button; -my $portable_toggle_button; -my $texdir_toggle_button; -my $paper_toggle_button; -my $write_eighteen_toggle_button; -my $format_toggle_button; -my $doc_files_toggle_button; -my $src_files_toggle_button; -my $texworks_toggle_button; -my $load_remote_button; -my $adjustrepo_toggle_button; -my $bintextbutton; -my $schemebutton; -my $tmflocalbutton; -my $tmfsysvarbutton; -my $tmfsysconfigbutton; -my $tmfhomebutton; -my $pathbutton; -my $deskintbutton; -my $assocbutton; -my $adminbutton; -my $installbutton; -my $collectionstext; -my $texmflocaltext; -my $texmfsysvartext; -my $texmfsysconfigtext; -my $texmfhometext; -my $texdirtext; -my $optletterstate; -my $optfmtstate; -my $optsrcstate; -my $optdocstate; -my $portableyesno; -my $letteryesno; -my $fmtyesno; -my $srcyesno; -my $deskintyesno; -my $pathadjyesno; -my $fileassocyesno; -my $editoryesno; -my $adminallyesno; -my $docyesno; -my $restrictedyesno; -my $adjustrepoyesno; - -my $sep = ($^O =~ /^MSWin32/) ? "\\" : "/"; - -$::run_menu = \&run_menu_perltk; - - -#################################################################### -# From here on only function definitions -# ################################################################## - -sub setup_perltk_local_strings { - $portableyesno = $::yesno[$vars{'instopt_portable'}]; - $letteryesno = $::letterdesc[$vars{'instopt_letter'}]; - $fmtyesno = $::yesno[$vars{'tlpdbopt_create_formats'}]; - $srcyesno = $::yesno[$vars{'tlpdbopt_install_srcfiles'}]; - $deskintyesno = $::deskintdesc[$vars{'tlpdbopt_desktop_integration'}]; - $pathadjyesno = $::yesno[$vars{'instopt_adjustpath'}]; - $fileassocyesno = $::fileassocdesc[$vars{'tlpdbopt_file_assocs'}]; - $editoryesno = $::yesno[$vars{'collection-texworks'}]; - $adminallyesno = $::yesno[$vars{'tlpdbopt_w32_multi_user'}]; - $docyesno = $::yesno[$vars{'tlpdbopt_install_docfiles'}]; - $restrictedyesno = $::yesno[$vars{'instopt_write18_restricted'}]; - $adjustrepoyesno = $::yesno[$vars{'instopt_adjustrepo'}]; -} - -sub menu_abort { - $return = $MENU_ABORT; - $mainwindow->destroy; -} - -sub menu_do_it { - $return = $MENU_INSTALL; - $mainwindow->destroy; -} - -sub disable_buttons { - change_button_state('disabled'); -} -sub enable_buttons { - change_button_state('normal'); -} - -sub change_button_state { - my $what = shift; - $installbutton->configure(-state => $what); - $tmflocalbutton->configure(-state => $what); - $tmfsysvarbutton->configure(-state => $what); - $tmfsysconfigbutton->configure(-state => $what); - $tmfhomebutton->configure(-state => $what); - $bin_toggle_button->configure(-state => $what); - $scheme_toggle_button->configure(-state => $what); - $collection_toggle_button->configure(-state => $what); - $portable_toggle_button->configure(-state => $what); - $texdir_toggle_button->configure(-state => $what); - $paper_toggle_button->configure(-state => $what); - $write_eighteen_toggle_button->configure(-state => $what); - $format_toggle_button->configure(-state => $what); - $adjustrepo_toggle_button->configure(-state => $what); - $pathbutton->configure(-state => $what); - $doc_files_toggle_button->configure(-state => $what) - if defined($doc_files_toggle_button); - $src_files_toggle_button->configure(-state => $what) - if defined($src_files_toggle_button); - $texworks_toggle_button->configure(-state => $what) - if defined($texworks_toggle_button); -} - -sub run_menu_perltk { - if ($::opt_select_repository) { - } else { - do_remote_init(); - setup_perltk_local_strings(); - calc_depends(); - } - $mainwindow = Tk::MainWindow->new; - $mainwindow->protocol('WM_DELETE_WINDOW' => \&menu_abort); - - # Taco once reported for 2010 that using these scrolled pane - # on Windows just died - # with the proliferation of netbooks and a new perl installed - # let us try to go back to using scrolled pane on both unix and windows - require Tk::Pane; - $subframe = $mainwindow->Scrolled("Frame", -scrollbars => "oe"); - $mw = $subframe->Frame; - - # image frame on the left - my $fl = $mw->Frame(-background => "#0078b8"); - my $img = $fl->Photo(-format => 'png', - -file => "$::installerdir/tlpkg/installer/texlive.png"); - $fl->Label(-image => $img, -background => "#0078b8") - ->pack(-expand => 1, -fill => "y"); - $fl->Label( - -text => "v$::installerrevision/$::menurevision", - -background => "#0078b8")->pack; - - # data frame on the right - my $fr = $mw->Frame; - $fl->pack(-side => 'left', -expand => 1, -fill => "y"); - $fr->pack(-side => 'right'); - - - my $row = 1; - $fr->Label( - -text => __("TeX Live %s Installation", $TeXLive::TLConfig::ReleaseYear)) - ->grid(-row => $row, -column => 1, -columnspan => 3); - - if ($::opt_select_repository) { - $row++; - 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, " " . __("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; - $fr->Label( - -text => __('Select repository'), - -anchor => 'w')->grid(-row => $row, -column => 1, -sticky => 'w'); - $fr->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) - ->grid(-row => $row, -column => 2, -sticky => 'w'); - $load_remote_button = $fr->Button(-text => __("Load"), - -command => sub { - $::init_remote_needed = 1; - my $mfull = $mirror_entry; - only_load_remote($mfull); - if (!only_load_remote($mfull)) { - $fr->Dialog(-title => __("Warning"), - -text => __('Could not load remote TeX Live Database:') . $mfull - . "\n\n" . - __('Please select a different mirror.'), - -buttons => [ __("Ok") ])->Show; - $mirror_entry = ""; - } elsif (!do_version_agree()) { - $fr->Dialog( - -title => __("Warning"), - -text => __( - 'The TeX Live versions of the local installation and the repository being accessed are not compatible: - local: %s - repository: %s -Please select a different mirror.', - $TeXLive::TLConfig::ReleaseYear, $texlive_release), - -buttons => [ __("Ok") ])->Show; - $mirror_entry = ""; - } else { - $load_remote_button->configure(-state => 'disable'); - final_remote_init($mfull); - setup_perltk_local_strings(); - calc_depends(); - menu_update_texts(); - enable_buttons(); - } - })->grid(-row => $row, -column => 3, -sticky => "ew", -padx => "2m"); - } - if (!$opt_in_place) { - - $row++; - $fr->Label(-text => "------- " . __("Basic Information") . " -------") - ->grid(-row => $row, -column => 1, -columnspan => 3); - - # binary system line - if (!win32()) { - $row++; - $fr->Label(-text => __('Binary system(s)'), -anchor => 'w') - ->grid(-row => $row, -column => 1, -sticky => 'w'); - $bintextbutton = $fr->Label(-anchor => 'w'); - $bintextbutton->grid(-row => $row, -column => 2, -padx => "2m"); - $bin_toggle_button = $fr->Button( - -text => __("Change"), -command => sub { menu_select_binsystems(); }) - ->grid(-row => $row, -column => 3, -sticky => "ew", -padx => "2m"); - } - - $row++; - - # scheme line - $fr->Label(-text => __('Selected scheme'), -anchor => 'w') - ->grid(-row => $row, -column => 1, -sticky => 'w'); - $schemebutton = $fr->Label(-anchor => 'w'); - $schemebutton->grid(-row => $row, -column => 2, -padx => "2m"); - $scheme_toggle_button = $fr->Button( - -text => __("Change"), -command => sub { menu_select_scheme(); }) - ->grid(-row => $row, -column => 3, -sticky => "ew", -padx => "2m"); - - $row++; - - # further customization - $fr->Label(-text => "------- " . __("Further Customization") . " -------") - ->grid(-row => $row, -column => 1,-columnspan => 3); - - $row++; - # collection line - $fr->Label(-text => __('Installation collections'), -anchor => 'w') - ->grid(-row => $row, -column => 1, -sticky => 'w'); - $collection_toggle_button = $fr->Button( - -text => __("Change"), - -command => sub { menu_select_standard_collections(); }) - ->grid(-row => $row, -column => 3, -sticky => "ew", -padx => "2m"); - - $row++; - $collectionstext = $fr->Label(); - $collectionstext->grid(-row => $row, -column => 1, -columnspan => 3); - } - - $row++; - # further customization - $fr->Label(-text => "------- " . __("Directory setup") . " -------") - ->grid(-row => $row, -column => 1, -columnspan => 3); - - $row++; - $fr->Label(-text => __('Portable setup'), -anchor => 'w') - ->grid(-row => $row, -column => 1, -sticky => 'w'); - $fr->Label(-anchor => 'w', -textvariable => \$portableyesno) - ->grid(-row => $row, -column => 2, -padx => "2m"); - $portable_toggle_button = $fr->Button( - -text => __("Toggle"), - -command => sub { toggle_portable(); }) - ->grid(-row => $row, -column => 3, -sticky => "ew", -padx => "2m"); - - $row++; - # texdir line - $fr->Label(-text => __('TEXDIR (the main TeX directory)'), -anchor => 'w') - ->grid(-row => $row, -column => 1, -sticky => 'w'); - $texdirtext = $fr->Label(-anchor => 'w') - ->grid(-row => $row, -column => 2, -padx => "2m"); - if (!$opt_in_place) { - $texdir_toggle_button = $fr->Button( - -text => __("Change"), -command => \&change_path) - ->grid(-row => $row, -column => 3, -sticky => "ew", -padx => "2m"); - } - - - $row++; - # texmflocal line - $fr->Label( - -text => __('TEXMFLOCAL (directory for site-wide local files)'), - -anchor => 'w') - ->grid(-row => $row, -column => 1, -sticky => 'w'); - $texmflocaltext = $fr->Label(-anchor => 'w') - ->grid(-row => $row, -column => 2, -padx => "2m"); - $tmflocalbutton = $fr->Button( - -text => __("Change"), - -command => sub { menu_edit_vars_value("TEXMFLOCAL"); }) - ->grid(-row => $row, -column => 3, -sticky => "ew", -padx => "2m"); - - $row++; - # texmfsysvar line - $fr->Label( - -text => __('TEXMFSYSVAR (directory for autogenerated data)'), - -anchor => 'w') - ->grid(-row => $row, -column => 1, -sticky => 'w'); - $texmfsysvartext = $fr->Label(-anchor => 'w') - ->grid(-row => $row, -column => 2, -padx => "2m"); - $tmfsysvarbutton = $fr->Button( - -text => __("Change"), - -command => sub { menu_edit_vars_value("TEXMFSYSVAR"); }) - ->grid(-row => $row, -column => 3, -sticky => "ew", -padx => "2m"); - - $row++; - # texmfsysconfig line - $fr->Label( - -text => __('TEXMFSYSCONFIG (directory for local config)'), -anchor => 'w') - ->grid(-row => $row, -column => 1, -sticky => 'w'); - $texmfsysconfigtext = $fr->Label(-anchor => 'w') - ->grid(-row => $row, -column => 2, -padx => "2m"); - $tmfsysconfigbutton = $fr->Button( - -text => __("Change"), - -command => sub { menu_edit_vars_value("TEXMFSYSCONFIG"); }) - ->grid(-row => $row, -column => 3, -sticky => "ew", -padx => "2m"); - - $row++; - # texmfhome line - $fr->Label( - -text => __('TEXMFHOME (directory for user-specific files)'), - -anchor => 'w') - ->grid(-row => $row, -column => 1, -sticky => 'w'); - $texmfhometext = $fr->Label(-anchor => 'w') - ->grid(-row => $row, -column => 2, -padx => "2m"); - $tmfhomebutton = $fr->Button( - -text => __("Change"), - -command => sub { menu_edit_vars_value("TEXMFHOME"); }) - ->grid(-row => $row, -column => 3, -sticky => "ew", -padx => "2m"); - - if ($vars{'instopt_portable'}) { - for my $b ( - $tmflocalbutton, $tmfsysvarbutton, $tmfsysconfigbutton, $tmfhomebutton) { - $b->configure(-state => 'disabled') - } - } - - $row++; - # Options - $fr->Label(-text => "------- " . __("Options") . " -------") - ->grid(-row => $row, -column => 1, -columnspan => 3); - - $row++; - # optpaper - $fr->Label(-text => __('Default paper size'), -anchor => 'w') - ->grid(-row => $row, -column => 1, -sticky => 'w'); - $fr->Label(-anchor => 'w', -textvariable => \$letteryesno) - ->grid(-row => $row, -column => 2, -padx => "2m"); - $paper_toggle_button = $fr->Button( - -text => __("Toggle"), - -command => sub { - toggle_and_set_opt_variable( - \$vars{'instopt_letter'}, \$letteryesno, \@::letterdesc); }) - ->grid(-row => $row, -column => 3, -sticky => "ew", -padx => "2m"); - - $row++; - $fr->Label( - -text => __('Allow execution of restricted list of programs via \write18'), - -anchor => 'w') - ->grid(-row => $row, -column => 1, -sticky => 'w'); - $fr->Label(-anchor => 'w', -textvariable => \$restrictedyesno) - ->grid(-row => $row, -column => 2, -padx => "2m"); - $write_eighteen_toggle_button = $fr->Button( - -text => __("Toggle"), - -command => sub { - toggle_and_set_opt_variable( - \$vars{'instopt_write18_restricted'}, - \$restrictedyesno); }) - ->grid(-row => $row, -column => 3, -sticky => "ew", -padx => "2m"); - - $row++; - $fr->Label( - -text => __('Create all format files'), -anchor => 'w') - ->grid(-row => $row, -column => 1, -sticky => 'w'); - $fr->Label(-anchor => 'w', -textvariable => \$fmtyesno) - ->grid(-row => $row, -column => 2, -padx => "2m"); - $format_toggle_button = $fr->Button( - -text => __("Toggle"), - -command => sub { - toggle_and_set_opt_variable(\$vars{'tlpdbopt_create_formats'}, \$fmtyesno); }) - ->grid(-row => $row, -column => 3, -sticky => "ew", -padx => "2m"); - - if ($vars{'doc_splitting_supported'} and !$opt_in_place) { - $row++; - $fr->Label(-text => __('Install font/macro doc tree'), -anchor => 'w') - ->grid(-row => $row, -column => 1, -sticky => 'w'); - $fr->Label(-anchor => 'w', -textvariable => \$docyesno) - ->grid(-row => $row, -column => 2, -padx => "2m"); - $doc_files_toggle_button = $fr->Button( - -text => __("Toggle"), - -command => sub { - toggle_and_set_opt_variable(\$vars{'tlpdbopt_install_docfiles'}, \$docyesno); }) - ->grid(-row => $row, -column => 3, -sticky => "ew", -padx => "2m"); - } - - if ($vars{'src_splitting_supported'} and !$opt_in_place) { - $row++; - $fr->Label(-text => __('Install font/macro source tree'), -anchor => 'w') - ->grid(-row => $row, -column => 1, -sticky => 'w'); - $fr->Label(-anchor => 'w', -textvariable => \$srcyesno) - ->grid(-row => $row, -column => 2, -padx => "2m"); - $src_files_toggle_button = $fr->Button( - -text => __("Toggle"), - -command => sub { - toggle_and_set_opt_variable(\$vars{'tlpdbopt_install_srcfiles'}, \$srcyesno); }) - ->grid(-row => $row, -column => 3, -sticky => "ew", -padx => "2m"); - } - - $row++; - $fr->Label( - -text => (win32()) ? __('Adjust PATH setting in registry') : - __('Create symlinks in system directories'), - -anchor => 'w') - ->grid(-row => $row, -column => 1, -sticky => 'w'); - $fr->Label(-anchor => 'w', -textvariable => \$pathadjyesno) - ->grid(-row => $row, -column => 2, -padx => "2m"); - if (unix()) { - $pathbutton = $fr->Button( - -text => __("Change"), -command => sub { menu_select_symlink(); }); - } else { - $pathbutton = $fr->Button( - -text => __("Toggle"), - -command => sub { - toggle_and_set_opt_variable(\$vars{'instopt_adjustpath'}, \$pathadjyesno); }); - } - $pathbutton->grid(-row => $row, -column => 3, -sticky => "ew", -padx => "2m"); - - if ($::opt_all_options || win32()) { - $row++; - $fr->Label(-text => __('Add menu shortcuts'), -anchor => 'w') - ->grid(-row => $row, -column => 1, -sticky => 'w'); - $fr->Label(-anchor => 'w', -textvariable => \$deskintyesno) - ->grid(-row => $row, -column => 2, -padx => "2m"); - $deskintbutton = $fr->Button( - -text => __("Change"), - -command => sub { - toggle_and_set_opt_variable( - \$vars{'tlpdbopt_desktop_integration'}, - \$deskintyesno, \@::deskintdesc); }) - ->grid(-row => $row, -column => 3, -sticky => "ew", -padx => "2m"); - - $row++; - $fr->Label(-text => __('Change file associations'), -anchor => 'w') - ->grid(-row => $row, -column => 1, -sticky => 'w'); - $fr->Label(-anchor => 'w', -textvariable => \$fileassocyesno) - ->grid(-row => $row, -column => 2, -padx => "2m"); - $assocbutton = $fr->Button( - -text => __("Change"), - -command => sub { - toggle_and_set_opt_variable( - \$vars{'tlpdbopt_file_assocs'}, \$fileassocyesno, \@::fileassocdesc); }) - ->grid(-row => $row, -column => 3, -sticky => "ew", -padx => "2m"); - - if ($::opt_all_options || admin()) { - $row++; - $fr->Label(-text => __('Installation for all users'), -anchor => 'w') - ->grid(-row => $row, -column => 1, -sticky => 'w'); - $fr->Label(-anchor => 'w', -textvariable => \$adminallyesno) - ->grid(-row => $row, -column => 2, -padx => "2m"); - $adminbutton = $fr->Button( - -text => __("Toggle"), - -command => sub { - toggle_and_set_opt_variable( - \$vars{'tlpdbopt_w32_multi_user'}, \$adminallyesno); }) - ->grid(-row => $row, -column => 3, -sticky => "ew", -padx => "2m"); - } - - $row++; - $fr->Label(-text => __('Install TeXworks front end'), -anchor => 'w') - ->grid(-row => $row, -column => 1, -sticky => 'w'); - $fr->Label(-anchor => 'w', -textvariable => \$editoryesno) - ->grid(-row => $row, -column => 2, -padx => "2m"); - if (!$opt_in_place) { - $texworks_toggle_button = $fr->Button( - -text => __("Toggle"), - -command => sub { - toggle_and_set_opt_variable( - \$vars{'collection-texworks'}, \$editoryesno); }) - ->grid(-row => $row, -column => 3, -sticky => "ew", -padx => "2m"); - } - } - if ($media ne 'NET') { - $row++; - $fr->Label( - -text => __('After install, set CTAN as source for package updates'), - -anchor => 'w') - ->grid(-row => $row, -column => 1, -sticky => 'w'); - $fr->Label(-anchor => 'w', -textvariable => \$adjustrepoyesno) - ->grid(-row => $row, -column => 2, -padx => "2m"); - $adjustrepo_toggle_button = $fr->Button( - -text => __("Toggle"), - -command => sub { - toggle_and_set_opt_variable( - \$vars{'instopt_adjustrepo'}, \$adjustrepoyesno); }) - ->grid(-row => $row, -column => 3, -sticky => "ew", -padx => "2m"); - } - - if ($vars{'instopt_portable'}) { - for $b ($pathbutton, $deskintbutton, $assocbutton, $adminbutton) { - $b->configure(-state => 'disabled') if $b; - } - } - - # install/cancel buttons - my $f3 = $fr->Frame; - $f3->Button( - -text => __("About"), - -command => sub { - my $sw = $mw->DialogBox(-title => __("About"), - -buttons => [ __("Ok") ]); - $sw->add("Label", -text => " -TeX Live $TeXLive::TLConfig::ReleaseYear -Please see http://www.tug.org/texlive -GUI installer -Copyright 2009-$TeXLive::TLConfig::ReleaseYear The TeX Live Team -Licensed under the GNU General Public License version 2 or higher - -In case of problems, please contact: texlive\@tug.org" - )->pack(-ipadx => "2m", -ipady => "2m"); - $sw->Show; - })->pack(-side => 'left', -padx => "2m", -pady => "2m"); - - - - $installbutton = $f3->Button( - -text => __("Install TeX Live"), - -command => \&menu_do_it - )->pack(-side => 'left', -padx => "2m", -pady => "2m")->focus(); - my $quitbutton = $f3->Button( - -text => __("Quit"), - -command => \&menu_abort - )->pack(-side => 'right', -padx => "2m", -pady => "2m"); - $mw->bind('', [ $quitbutton, 'Invoke' ]); - #my $wizardbutton = $f3->Button( - # -text => __("Wizard"), - # -command => sub { - # $mainwindow->destroy; - # require("installer/install-menu-wizard.pl"); - # setup_hooks_wizard(); - # $return = run_menu_wizard(); - # })->pack(-side => 'right', -padx => "2m", -pady => "2m"); - $row++; - $f3->grid(-row => $row, -column => 1, -columnspan => 3); - if (!$::opt_select_repository) { - menu_update_texts(); - } else { - disable_buttons(); - } - $fr->gridColumnconfigure(2, -minsize => 300); - $mw->pack(-expand => 1, -fill => "both"); - $mw->update; - my $rh = $mw->reqheight; - my $rw = $mw->reqwidth; - my $maxheight = $mainwindow->screenheight() - 20; - debug( - "Requested height: $rh, requested width: $rw, max height: $maxheight\n"); - if ($rh > $maxheight) { - $rh = $maxheight; - $rw += 20; # for the scrollbar = = - } - $subframe->configure(-height => $rh, -width=>$rw); - $subframe->pack(-expand => 1, -fill => "both"); - $mainwindow->configure(-height => $rh, -width=>$rw); - $mainwindow->geometry("=${rw}x${rh}"); - #$mw->pack(-expand => 1, -fill => "both"); - - if (win32() && pre_warn($mainwindow)) { return $MENU_ABORT; } - - Tk::MainLoop(); - return($return); -} - -sub pre_warn { - my $parent = shift; - require TeXLive::TLWinGoo; - my ($b_quit, $b_cont) = (__('Quit'), __('Continue')); - my $wrn = __( - 'In case of trouble, try disabling your virus scanner during installation.'); - if (!admin()) { - $wrn .= "\n\n". - __("The installer does not have adminstrative permissions;\nso can only install for current user."); - if (is_vista()) { - $wrn .= "\n\n". - __("Right-click install-tl-advanced and select \"run as administrator\"\n if you want to install for all users."); - } - } - my $ans = $parent->Dialog( - -title => __("TeX Live %s Installation", $TeXLive::TLConfig::ReleaseYear), - -text => $wrn, - -default_button => $b_cont, - -buttons => [$b_quit, $b_cont])->Show(); - return $ans eq $b_quit; -} - -# this sub will not be called if $opt_in_place -sub menu_edit_texdir { - my $key = shift; - our $addyear = 1; - our $addtexlive = 1; - my $val = $vars{$key}; - our $currsel; - our $entry; - sub update_label { - my $t = $currsel; - $t .= "/texlive" if ($addtexlive); - $t .= "/$texlive_release" if ($addyear); - $entry->configure(-text => "$t"); - } - my $hint_var; - if ($key ne 'TEXMFHOME') { - $hint_var = win32() ? $ENV{'USERPROFILE'} : $ENV{'HOME'}; - } else { - $hint_var = win32() ? '%USERPROFILE%' : '$HOME'; - } - if ($val =~ m!^(.*)/texlive/$texlive_release$!) { - $currsel = "$1"; - $addyear = 1; - $addtexlive = 1; - } elsif ($val =~ m!^(.*)/$texlive_release$!) { - $currsel = "$1"; - $addyear = 1; - $addtexlive = 0; - } elsif ($val =~ m!^(.*)/texlive$!) { - $currsel = "$1"; - $addyear = 0; - $addtexlive = 1; - } else { - $addyear = 0; - $addtexlive = 0; - $currsel = $val; - } - my $sw = $mainwindow->Toplevel(-title => __("Change variable value")); - $sw->transient($mainwindow); - $sw->grab(); - $sw->Label(-text => __("Enter path for %s (use ~ for %s)", $key, $hint_var)) - ->pack(-padx => "2m", -pady => "2m"); - $entry = $sw->Entry(-width => 60)->pack(-padx => "2m", -pady => "2m"); - my $f = $sw->Frame; - my $c1 = $f->Checkbutton( - -text => 'Add "texlive"', - -variable => \$addtexlive, - -command => \&update_label); - my $c2 = $f->Checkbutton( - -text => "Add \"$texlive_release\"", -variable => \$addyear, - -command => \&update_label); - my $foo = $sw->Scrolled( - "DirTree", -scrollbars => "osoe", - -browsecmd => sub { my ($d) = @_; $currsel = $d; update_label(); }, - -directory => "$currsel"); - my $ff = $sw->Frame; - my $ok = $ff->Button( - -text => __("Ok"), - -command => sub { - $val = $entry->get; - callback_edit_directories($key,$val); - $sw->destroy; }); - my $cancel = $ff->Button( - -text => __("Cancel"), - -command => sub { $sw->destroy; }); - update_label(); - $c1->pack(-side => "left", -padx => "2m", -pady => "2m"); - $c2->pack(-side => "right", -padx => "2m", -pady => "2m"); - $f->pack; - $foo->pack(-fill => "both", -expand => 1); - $ok->pack(-side => 'left' , -padx => "2m", -pady => "2m"); - $cancel->pack(-side => 'right', -padx => "2m", -pady => "2m"); - $ff->pack; - # bindings - $sw->bind('' => [ $ok, 'Invoke']); - $sw->bind('' => [ $cancel, 'Invoke']); -} - -sub menu_edit_vars_value { - my $key = shift; - my $sw = $mainwindow->Toplevel(-title => __("Change variable value")); - $sw->transient($mainwindow); - $sw->grab(); - my $val = $vars{$key}; - my $hint_var; - if ($key ne 'TEXMFHOME') { - $hint_var = win32() ? $ENV{'USERPROFILE'} : $ENV{'HOME'}; - } else { - $hint_var = win32() ? '%USERPROFILE%' : '$HOME'; - } - $sw->Label(-text => __("Enter path for %s (use ~ for %s)", $key, $hint_var)) - ->pack(-padx => "2m", -pady => "2m"); - my $entry = $sw->Entry(-text => native_slashify($val), -width => 60); - $entry->pack(-padx => "2m", -pady => "2m")->focus(); - my $f = $sw->Frame; - my $okbutton = $f->Button( - -text => __("Ok"), - -command => sub { - $val = forward_slashify($entry->get); - callback_edit_directories($key,$val) ; - $sw->destroy }) - ->pack(-side => 'left', -padx => "2m", -pady => "2m"); - my $cancelbutton = $f->Button( - -text => __("Cancel"), - -command => sub { $sw->destroy }) - ->pack(-side => 'right', -padx => "2m", -pady => "2m"); - $f->pack(-expand => 'x'); - # bindings - $sw->bind('' => [ $okbutton, 'Invoke']); - $sw->bind('' => [ $cancelbutton, 'Invoke']); -} - - -sub menu_select_scheme { - my $sw = $mainwindow->Toplevel(-title => __('Selected scheme')); - $sw->transient($mainwindow); - $sw->grab(); - my @schemes; - foreach my $pkg ($tlpdb->list_packages) { - my $tlpobj = $tlpdb->{'tlps'}{$pkg}; - if ($tlpobj->category eq "Scheme") { - push @schemes, $pkg; - $vars{"$pkg"}=($vars{'selected_scheme'} eq $pkg)? 1:0; - } - } - my @scheme_order = schemes_ordered_for_presentation(); - push @scheme_order, "scheme-custom"; - my $selected = $vars{'selected_scheme'}; - $sw->Label(-text => __("Selected scheme")) - ->pack(-padx => "2m", -pady => "2m"); - my $f2 = $sw->Frame; - foreach my $scheme (@scheme_order) { - my $desc; - if ($scheme ne "scheme-custom") { - my $tlpobj = $tlpdb->get_package("$scheme"); - $desc = $tlpobj->shortdesc; - } else { - $desc = __("custom selection of collections"); - } - my $b; - $b = $f2->Radiobutton( - -variable => \$selected, -value => $scheme, - -text => __($desc), - -justify => 'left', -wraplength => 500) - ->pack(-anchor => 'w', -pady => "1m"); - if ($selected eq $scheme) { - $b->focus(); - } - } - $f2->pack; - my $f3 = $sw->Frame; - my $okbutton = $f3->Button( - -text => __("Ok"), - -command => sub { callback_select_scheme($selected) ; $sw->destroy }) - ->pack(-side => 'left', -padx => "2m", -pady => "2m"); - my $cancelbutton = $f3->Button( - -text => __("Cancel"), -command => sub { $sw->destroy }) - ->pack(-side => 'left', -padx => "2m", -pady => "2m"); - $f3->pack(-expand => 'x'); - $sw->bind('' => [ $okbutton, 'Invoke']); - $sw->bind('' => [ $cancelbutton, 'Invoke']); -} - -sub menu_select_standard_collections { - my $sw = $mainwindow->Toplevel(-title => __('Installation collections')); - $sw->transient($mainwindow); - $sw->grab(); - my $fb = $sw->Frame; - my $fc = $sw->Frame; - my $fd = $sw->Frame; - my $f1 = $fb->Frame; - my $f2 = $fb->Frame; - my $f3 = $fb->Frame; - my %lvars = %vars; - $sw->Label(-text => __("Select the collections to be installed")) - ->pack(-padx => "2m", -pady => "2m"); - my $onethirdcol = $#collections_std / 3; - my $twothirdcol = 2 * $onethirdcol; - my $i = 0; - foreach my $coll (sort @collections_std) { - my $tlpobj = $tlpdb->get_package("$coll"); - if ($i < $onethirdcol) { - $f1->Checkbutton( - -variable => \$lvars{$coll}, -text => __($tlpobj->shortdesc)) - ->pack(-anchor => 'w'); - } elsif ($i < $twothirdcol) { - $f2->Checkbutton( - -variable => \$lvars{$coll}, -text => __($tlpobj->shortdesc)) - ->pack(-anchor => 'w'); - } else { - $f3->Checkbutton( - -variable => \$lvars{$coll}, -text => __($tlpobj->shortdesc)) - ->pack(-anchor => 'w'); - } - $i++; - } - $f1->pack(-side => 'left', -padx => "2m", -pady => "2m"); - $f2->pack(-side => 'left', -padx => "2m", -pady => "2m"); - $f3->pack(-side => 'left', -padx => "2m", -pady => "2m"); - $fb->pack(-padx => "2m", -pady => "2m"); - $fc->pack(-side => 'left', -expand => 'x', -padx => "2m", -pady => "2m"); - $fc->Button( - -text => __("Select All"), - -command => sub { select_collections(\%lvars, @collections_std) }) - ->pack(-side => 'left', -padx => "2m", -pady => "2m")->focus(); - $fc->Button( - -text => __("Deselect All"), - -command => sub { deselect_collections(\%lvars, @collections_std) }) - ->pack(-side => 'right', -padx => "2m", -pady => "2m"); - $fd->pack(-side => 'left', -expand => 'x', -padx => "2m", -pady => "2m"); - my $okbutton = $fd->Button(-text => __("Ok"), - -command => sub { - # we call the update only if something has changed - my $changed = 0; - for my $k (keys %lvars) { - if ($vars{$k} ne $lvars{$k}) { - $changed = 1; - last; - } - } - if ($changed) { - %vars = %lvars; - callback_select_collection(); - } - $sw->destroy; - })->pack(-side => 'left', -padx => "2m", -pady => "2m"); - my $cancelbutton = $fd->Button( - -text => __("Cancel"), -command => sub { $sw->destroy }) - ->pack(-side => 'right', -padx => "2m", -pady => "2m"); - $sw->bind('' => [ $okbutton, 'Invoke']); - $sw->bind('' => [ $cancelbutton, 'Invoke']); -} - -sub menu_select_symlink { - our ($lbin,$lman,$linfo); - our $osym = $vars{'instopt_adjustpath'}; - our ($binlab,$binb,$manlab,$manb,$infolab,$infob); - sub set_unset_buttons { - $lbin = ($osym ? $vars{'tlpdbopt_sys_bin'} : ''); - $linfo = ($osym ? $vars{'tlpdbopt_sys_info'} : ''); - $lman = ($osym ? $vars{'tlpdbopt_sys_man'} : ''); - if ($osym) { - $binb->configure (-state => 'normal'); - $manb->configure (-state => 'normal'); - $infob->configure(-state => 'normal'); - } else { - $infob->configure(-state => 'disabled'); - $manb->configure (-state => 'disabled'); - $binb->configure (-state => 'disabled'); - } - } - sub return_callback { - if ($osym) { - my $home = getenv('HOME'); - $home = getenv('USERPROFILE') if (win32()); - $home ||= '~'; - $lbin =~ s/^~/$home/; - $linfo =~ s/^~/$home/; - $lman =~ s/^~/$home/; - $vars{'tlpdbopt_sys_bin'} = $lbin; - $vars{'tlpdbopt_sys_info'} = $linfo; - $vars{'tlpdbopt_sys_man'} = $lman; - } - toggle_and_set_opt_variable(\$vars{'instopt_adjustpath'}, \$osym); - $pathadjyesno = $osym; - } - my $sw = $mainwindow->Toplevel( - -title => __('Create symlinks in system directories')); - $sw->transient($mainwindow); - $sw->grab(); - $sw->Checkbutton( - -variable => \$osym, - -text => __("create symlinks in standard directories"), - -command => sub { set_unset_buttons(); } ) - ->grid(-column => 1, -row => 1, -columnspan => 2, -padx => "2m"); - $binlab = $sw->Label(-text => __("binaries to")); - $binb = $sw->Entry(-textvariable => \$lbin); - $manlab = $sw->Label(-text => __("manpages to")); - $manb = $sw->Entry(-textvariable => \$lman); - $infolab = $sw->Label(-text => __("info to")); - $infob = $sw->Entry(-textvariable => \$linfo); - $binlab->grid(-row => 2, -column => 1, -sticky => "w", -padx => "2m"); - $binb->grid(-row => 2, -column => 2, -sticky => "ew", -padx => "2m"); - $manlab->grid(-row => 3, -column => 1, -sticky => "w", -padx => "2m"); - $manb->grid(-row => 3, -column => 2, -sticky => "ew", -padx => "2m"); - $infolab->grid(-row => 4, -column => 1, -sticky => "w", -padx => "2m"); - $infob->grid(-row => 4, -column => 2, -sticky => "ew", -padx => "2m"); - set_unset_buttons(); - my $f2 = $sw->Frame; $f2->grid(-column => 1, -columnspan => 2, -row => 5); - my $okbutton = $f2->Button( - -text => __("Ok"), -command => sub { return_callback(); $sw->destroy }) - ->pack(-side => 'left'); - my $cancelbutton = $f2->Button(-text => __("Cancel"), - -command => sub { $sw->destroy })->pack(-side => 'right'); - $sw->bind('' => [ $okbutton, 'Invoke']); - $sw->bind('' => [ $cancelbutton, 'Invoke']); -} - -sub menu_select_binsystems { - my $f2r; - my $f2; - my $sw = $mainwindow->Toplevel(-title => __('Binary system(s)')); - $sw->transient($mainwindow); - $sw->grab(); - my @diskarchs = (); - foreach my $key (keys %vars) { - if ($key=~/binary_(.*)/) { - push @diskarchs, $1; - } - } - $sw->Label(-text => __("Select arch-os"))->pack(-padx => "2m", -pady => "2m"); - $f2 = $sw->Frame; - my $f2l = $f2->Frame; - foreach my $sys (sort TeXLive::TLUtils::sort_archs @diskarchs) { - $f2l->Checkbutton(-variable => \$vars{"binary_$sys"}, - -command => sub { check_on_removal($sw, $sys); }, - -text => platform_desc($sys))->pack(-anchor => 'w'); - } - $f2l->pack(-side => 'left'); - $f2->pack(-padx => "2m", -pady => "2m"); - my $f3 = $sw->Frame; - my $okbutton = $f3->Button( - -text => __("Ok"), - -command => sub { callback_select_systems() ; $sw->destroy }) - ->pack(-side => 'left', -padx => "2m", -pady => "2m"); - my $cancelbutton = $f3->Button( - -text => __("Cancel"), - -command => sub { $sw->destroy }) - ->pack(-side => 'right', -padx => "2m", -pady => "2m"); - $f3->pack(-expand => 'x'); - $sw->bind('' => [ $okbutton, 'Invoke']); - $sw->bind('' => [ $cancelbutton, 'Invoke']); -} - -sub check_on_removal { - my $arch_frame = shift; - my $a = shift; - if (!$vars{"binary_$a"} && $a eq $vars{'this_platform'}) { - # removal not supported - $vars{"binary_$a"} = 1; - $arch_frame->Dialog( - -title => __("Warning"), - -text => __("Removals of the main platform not possible!"), - -buttons => [ __("Ok") ])->Show; - } -} - - -sub menu_set_text { - my $w = shift; - my $t = shift; - # if in_place or portable not a complete interface - $w->configure(-text => $t, @_) if $w; -} - -sub menu_set_schemebutton_text { - menu_set_text($schemebutton, "$vars{'selected_scheme'}"); -} - -sub menu_set_binbutton_text { - if (!win32()) { - if ($vars{'n_systems_selected'} == 1) { - my $selsys; - foreach my $key (keys %vars) { - if ($key=~/binary_(.*)/) { - if ($vars{$key}) { - $selsys = $1; - # we have only one system selected, stop here - last; - } - } - } - menu_set_text($bintextbutton, $selsys); - } else { - menu_set_text( - $bintextbutton, __( - "%s out of %s", $vars{'n_systems_selected'}, - $vars{'n_systems_available'})); - } - } -} - -sub menu_set_collections_text { - menu_set_text($collectionstext, __("%s collections out of %s", - $vars{'n_collections_selected'}, $vars{'n_collections_available'}) - . " (" . __("disk space required:") . " $vars{'total_size'} MB)"); -} - -sub menu_set_pathes_text { - if (TeXLive::TLUtils::texdir_check($vars{'TEXDIR'})) { - menu_set_text( - $texdirtext, native_slashify($vars{'TEXDIR'}), - -foreground => "black"); - } else { - menu_set_text( - $texdirtext, - __("(default not allowed or not writable - please change!)"), - -foreground => "red"); - } - menu_set_text($texmflocaltext, native_slashify($vars{'TEXMFLOCAL'})); - if ((-w $vars{'TEXMFSYSVAR'}) || (-w dirname($vars{'TEXMFSYSVAR'}))) { - menu_set_text( - $texmfsysvartext, native_slashify($vars{'TEXMFSYSVAR'}), - -foreground => "black"); - } elsif ("$vars{'TEXMFSYSVAR'}" =~ m;^$vars{'TEXDIR'};) { - if (TeXLive::TLUtils::texdir_check($vars{'TEXDIR'})) { - menu_set_text( - $texmfsysvartext, native_slashify($vars{'TEXMFSYSVAR'}), - -foreground => "black"); - } else { - menu_set_text( - $texmfsysvartext, __("(please change TEXDIR first!)"), - -foreground => "red"); - } - } else { - menu_set_text( - $texmfsysvartext, __("(default not writable - please change!)")); - } - if ((-w $vars{'TEXMFSYSCONFIG'}) || (-w dirname($vars{'TEXMFSYSCONFIG'}))) { - menu_set_text( - $texmfsysconfigtext, native_slashify($vars{'TEXMFSYSCONFIG'}), - -foreground => "black"); - } elsif ("$vars{'TEXMFSYSCONFIG'}" =~ m;^$vars{'TEXDIR'};) { - if (TeXLive::TLUtils::texdir_check($vars{'TEXDIR'})) { - menu_set_text( - $texmfsysconfigtext, native_slashify($vars{'TEXMFSYSCONFIG'}), - -foreground => "black"); - } else { - menu_set_text( - $texmfsysconfigtext, __("(please change TEXDIR first!)"), - -foreground => "red"); - } - } else { - menu_set_text( - $texmfsysconfigtext, __("(default not writable - please change!)")); - } - menu_set_text($texmfhometext, native_slashify($vars{'TEXMFHOME'})); -} - - -sub menu_update_texts { - menu_set_pathes_text; - menu_set_collections_text; - menu_set_binbutton_text; - menu_set_schemebutton_text; - $optletterstate = $::letterdesc[$vars{'instopt_letter'}]; - $optfmtstate = ($vars{'tlpdbopt_create_formats'} ? __("Yes") : __("No")); - $optsrcstate = ($vars{'tlpdbopt_install_srcfiles'} ? __("Yes") : __("No")); - $optdocstate = ($vars{'tlpdbopt_install_docfiles'} ? __("Yes") : __("No")); -} - -sub callback_select_scheme { - my $s = shift; - select_scheme($s); - $editoryesno = ($vars{'collection-texworks'} ? __("Yes") : __("No")); - menu_update_texts(); -} - -sub callback_select_collection { - # special case for collection-texworks: - $editoryesno = ($vars{'collection-texworks'} ? __("Yes") : __("No")); - calc_depends(); - select_scheme("scheme-custom"); - update_numbers(); - menu_update_texts(); -} - -sub callback_select_systems() { - if ($vars{"binary_win32"}) { - $vars{"collection-wintools"} = 1; - } else { - $vars{"collection-wintools"} = 0; - } - calc_depends(); - update_numbers(); - menu_update_texts(); -} - -sub callback_change_texdir { - my $val = shift; - callback_edit_directories('TEXDIR', $val); -} - -sub callback_edit_directories { - my ($key,$val) = @_; - my $home = getenv('HOME'); - if (win32()) { - $home = getenv('USERPROFILE'); - $home =~ s!\\!/!g; - } - $home ||= '~'; - $val =~ s!\\!/!g; - $vars{$key} = $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 - my $texdirnoslash; - if ($key eq "TEXDIR") { - if ($vars{'TEXDIR'}=~/^(.*)\/$texlive_release$/) { - $texdirnoslash = $1; - $vars{'TEXMFLOCAL'}="$texdirnoslash/texmf-local"; - $vars{'TEXMFSYSVAR'}="$texdirnoslash/$texlive_release/texmf-var"; - $vars{'TEXMFSYSCONFIG'}="$texdirnoslash/$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"; - } - } - menu_update_texts(); -} - -sub callback_edit_var() { - my ($key,$val) = @_; - $vars{$key} = $val; - menu_update_texts(); -} - -#sub dump_vars_stdout { -# foreach my $k (keys %vars) { -# print "DEBUG: vars{$k} = $vars{$k}\n"; -# } -#} - -sub toggle_portable { - my $td = $vars{'TEXDIR'}; - my $b; - if ($vars{'instopt_portable'}) { - $vars{'instopt_portable'} = 0; - $portableyesno = __('No'); - # enable some buttons - for $b ( - $tmflocalbutton, $tmfsysvarbutton, $tmfsysconfigbutton, $tmfhomebutton) { - $b->configure(-state => 'normal'); - } - for $b ($pathbutton, $deskintbutton, $assocbutton, $adminbutton) { - $b->configure(-state => 'normal') if $b; - } - } else { - $vars{'instopt_portable'} = 1; - $portableyesno = __('Yes'); - # disable some buttons. These should get a name first. - for $b ( - $tmflocalbutton, $tmfsysvarbutton, $tmfsysconfigbutton, $tmfhomebutton) { - $b->configure(-state => 'disabled'); - } - $vars{'instopt_adjustpath'} = 0; - $vars{'tlpdbopt_desktop_integration'} = 0; - $vars{'tlpdbopt_file_assocs'} = 0; - $vars{'tlpdbopt_w32_multi_user'} = 0; - $deskintyesno = __("No"); - $pathadjyesno = __("No"); - $fileassocyesno = __("None"); - $adminallyesno = __("No"); - for $b ($pathbutton, $deskintbutton, $assocbutton, $adminbutton) { - $b->configure(-state => 'disabled') if $b; - } - } - set_texlive_default_dirs(); # this sub tests for portable and in_place - $mw -> messageBox( - -title => __('Warning'), - -message => - __("Portable option changed;\nDirectories have been reinitialized"), - -type => 'OK', -icon => 'warning'); - menu_set_pathes_text(); - # same for some options -} - -sub toggle_and_set_opt_variable { - # $varsref: the variable to be changed - # $toggleref: the string representation of the value of $varsref; - # $choicesref: array ref of possible values for $toggleref - my ($varsref, $toggleref, $choicesref) = @_; - $choicesref = \@::yesno unless defined $choicesref; - - my $n_opts = @$choicesref; - $$varsref += 1; - $$varsref = 0 if $$varsref >= $n_opts; - $$toggleref = $$choicesref[$$varsref]; - calc_depends(); - menu_update_texts(); -} - -1; - -__END__ - -### Local Variables: -### perl-indent-level: 2 -### tab-width: 2 -### indent-tabs-mode: nil -### End: -# vim:set tabstop=2 expandtab: # -- cgit v1.2.3