summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Master/texmf/scripts/texlive/NEWS3
-rw-r--r--Master/texmf/scripts/texlive/tlmgrgui.pl98
2 files changed, 70 insertions, 31 deletions
diff --git a/Master/texmf/scripts/texlive/NEWS b/Master/texmf/scripts/texlive/NEWS
index 4677f19ff3e..64b3132028a 100644
--- a/Master/texmf/scripts/texlive/NEWS
+++ b/Master/texmf/scripts/texlive/NEWS
@@ -6,6 +6,9 @@ tlmgr rev next
* tlmgr restore --all: restoring the latest, using all available backups.
* GUI: add support for restore action.
* do not auto-install packages contained in forcibly removed collections.
+ * GUI: add support for the three command line options: --no-auto-install,
+ --no-auto-remove (under Menu->Options), and --reinstall-forcibly-removed
+ (just below the "Update all installed" button)
tlmgr rev 17611 (2010-03-30)
diff --git a/Master/texmf/scripts/texlive/tlmgrgui.pl b/Master/texmf/scripts/texlive/tlmgrgui.pl
index 09b5f79cba0..e3a7d939e88 100644
--- a/Master/texmf/scripts/texlive/tlmgrgui.pl
+++ b/Master/texmf/scripts/texlive/tlmgrgui.pl
@@ -35,6 +35,10 @@ use Tk::BrowseEntry;
use Tk::ROText;
use Tk::HList;
use Tk::ItemStyle;
+
+# not ready yet
+# use Pod::Text;
+
#use TeXLive::Splashscreen;
#use Devel::Leak;
@@ -143,11 +147,20 @@ sub guimain {
info(__("Loading local TeX Live Database\nThis may take some time, please wait!") . "\n");
- $localtlmedia = TeXLive::TLMedia->new ( $Master );
- die("cannot setup TLMedia in $Master") unless (defined($localtlmedia));
- $localtlpdb = $localtlmedia->tlpdb;
- die("cannot find tlpdb!") unless (defined($localtlpdb));
+ # call the init function from tlmgr.pl
+ # with 0 as argument, so that it does not call die on errors.
+ init_local_db(0);
+ # before this code was used, which is a duplication, and in addition
+ # it does not handle auto-loading of $location
+ #$localtlmedia = TeXLive::TLMedia->new ( $Master );
+ #die("cannot setup TLMedia in $Master") unless (defined($localtlmedia));
+ #$localtlpdb = $localtlmedia->tlpdb;
+ #die("cannot find tlpdb!") unless (defined($localtlpdb));
+ #
+ # init_local_db sets up $location to the winning one:
+ # cmd line > tlpdb
+ # save the two possible location for the menu
$tlpdb_location = $localtlpdb->option("location");
if (defined($opts{"location"})) {
$cmdline_location = $opts{"location"};
@@ -157,7 +170,8 @@ sub guimain {
push @update_function_list, \&check_location_on_ctan;
push @update_function_list, \&init_install_media;
- setup_programs("$Master/tlpkg/installer", $localtlmedia->platform);
+ # already done by init_local_db above
+ # setup_programs("$Master/tlpkg/installer", $localtlmedia->platform);
#
# check that we can actually save the database
@@ -180,9 +194,7 @@ sub guimain {
if ($opts{"load"}) {
- $location = $tlpdb_location;
- update_loaded_location_string();
- run_update_functions();
+ setup_location($tlpdb_location);
}
@@ -240,10 +252,7 @@ sub do_rest_of_gui {
$loaded_button = $mw->Button(-text => __("Loaded repository:")
. " " . __("none"),
-relief => 'flat',
- -command => sub { $location = $tlpdb_location;
- update_loaded_location_string();
- run_update_functions();
- });
+ -command => sub { setup_location($tlpdb_location); });
$loaded_button->pack(-anchor => 'e', -padx => 0, -pady => 0,
-ipadx => 0, -ipady => 0);
@@ -351,7 +360,10 @@ $g->headerCreate(4, @htype, -itemtype => 'text', -text => __("Short description"
$with_all_frame->Button(-text => __('Update all installed'),
-state => $::action_button_state,
-command => sub { update_all_packages(); }
- )->pack(@a_c,@left,@p_ii);
+ )->pack(@p_ii);
+ $with_all_frame->Checkbutton(-text => __("Reinstall previously removed packages"),
+ -variable => \$opts{"reinstall-forcibly-removed"})->pack();
+
my $with_sel_frame = $actions_frame->Frame;
$with_sel_frame->pack(@left, -padx => '5m');
@@ -430,25 +442,13 @@ sub setup_menu_system {
#
$menu_file->add('command',
-label => __("Load default repository:") . " $tlpdb_location",
- -command => sub {
- $location = $tlpdb_location;
- update_loaded_location_string();
- run_update_functions();
- });
+ -command => sub { setup_location($tlpdb_location); });
if (defined($cmdline_location)) {
$menu_file->add('command', -label => __("Load cmd line repository:") . " $cmdline_location",
- -command => sub {
- $location = $cmdline_location;
- update_loaded_location_string();
- run_update_functions();
- });
+ -command => sub { setup_location($cmdline_location); });
}
$menu_file->add('command', -label => __("Load default net repository:") . " $TeXLiveURL",
- -command => sub {
- $location = $TeXLiveURL;
- update_loaded_location_string();
- run_update_functions();
- });
+ -command => sub { setup_location($TeXLiveURL); });
$menu_file->add('command', -label => __("Load other repository ..."),
-command => \&cb_edit_location);
$menu_file->add('separator');
@@ -467,9 +467,15 @@ sub setup_menu_system {
-command => sub { do_arch_settings(); });
}
$menu_options->add('separator');
- $menu_options->add('checkbutton', -label => __("Debug"),
+ $menu_options->add('checkbutton', -label => __("Enable debugging output"),
-onvalue => ($::opt_verbosity == 0 ? 1 : $::opt_verbosity),
-variable => \$::opt_verbosity);
+ $menu_options->add('checkbutton',
+ -label => __("Disable auto-install of new packages"),
+ -variable => \$opts{"no-auto-install"});
+ $menu_options->add('checkbutton',
+ -label => __("Disable auto-removal of server-deleted packages"),
+ -variable => \$opts{"no-auto-remove"});
#
# Actions menu
@@ -542,6 +548,9 @@ sub setup_menu_system {
#
# HELP MENU
+ #
+ # not ready yet
+ # $menu_help->add('command', -label => __("Docs"), -command => \&pod_to_text);
$menu_help->add('command', -label => __("About"),
-command => sub {
my $sw = $mw->DialogBox(-title => __("About"),
@@ -1351,6 +1360,13 @@ sub select_file_assocs {
############################
+sub setup_location {
+ my $loc = shift;
+ $location = $loc;
+ update_loaded_location_string();
+ run_update_functions();
+}
+
sub init_install_media {
my $newroot = $location;
if (defined($tlmediatlpdb) && ($tlmediatlpdb->root eq $newroot)) {
@@ -1375,6 +1391,7 @@ sub init_install_media {
$tlmediatlpdb = $tlmediasrc->tlpdb;
update_list_remote();
update_grid();
+ update_loaded_location_string($location);
}
}
}
@@ -1389,6 +1406,8 @@ sub set_text_win {
sub install_selected_packages {
my @foo = SelectedPackages();
if (@foo) {
+ # that doesn't hurt if it is already loaded
+ init_install_media();
my @args = qw/install/;
push @args, @foo;
execute_action_gui(@args);
@@ -1425,6 +1444,8 @@ sub update_all_packages {
} else {
$opts{"all"} = 1;
}
+ # that doesn't hurt if it is already loaded
+ init_install_media();
execute_action_gui(qw/update/);
if (@critical_updates) {
# terminate here immediately so that we are sure the auto-updater
@@ -1439,6 +1460,8 @@ sub update_all_packages {
sub update_selected_packages {
my @foo = SelectedPackages();
if (@foo) {
+ # that doesn't hurt if it is already loaded
+ init_install_media();
my @args = qw/update/;
# argument processing
# in case we have critical updates present we do put the list of
@@ -1899,8 +1922,7 @@ sub cb_edit_location {
my $okbutton = $f->Button(-text => __("Ok"),
-command => sub { $location = $entry->get;
$sw->destroy;
- update_loaded_location_string();
- run_update_functions();
+ setup_location($location);
})->pack(@left, @p_ii);
my $cancelbutton = $f->Button(-text => __("Cancel"),
-command => sub { $sw->destroy })->pack(@right, @p_ii);
@@ -1948,6 +1970,20 @@ sub give_warning_window {
$sw->Show;
}
+# pod help thing
+
+sub pod_to_text {
+ my $txt;
+ my $parser = Pod::Simple->new (sentence => 0, width => 78);
+ $parser->output_string( \$txt );
+ $parser->parse_file("$Master/texmf/scripts/texlive/tlmgr.pl");
+ my $sw = $mw->Toplevel(-title => __("Help"));
+ $sw->transient($mw);
+ my $t = $sw->ROText(-height => 40, -width => 80);
+ $t->Contents($txt);
+ $t->pack;
+}
+
1;
__END__