From bdd611203c5ba91bac036ccc4ca3caa5ae0e5eb0 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Fri, 26 Dec 2008 20:31:07 +0000 Subject: convert gui-arch.pl to gui-arch2.pl using the execute_action stuff git-svn-id: svn://tug.org/texlive/trunk@11727 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf/scripts/texlive/tlmgrgui/gui-arch2.pl | 94 ++++++++++++++++++++++ Master/texmf/scripts/texlive/tlmgrgui/tlmgrgui2.pl | 2 +- 2 files changed, 95 insertions(+), 1 deletion(-) create mode 100644 Master/texmf/scripts/texlive/tlmgrgui/gui-arch2.pl (limited to 'Master/texmf') diff --git a/Master/texmf/scripts/texlive/tlmgrgui/gui-arch2.pl b/Master/texmf/scripts/texlive/tlmgrgui/gui-arch2.pl new file mode 100644 index 00000000000..d475e31d62a --- /dev/null +++ b/Master/texmf/scripts/texlive/tlmgrgui/gui-arch2.pl @@ -0,0 +1,94 @@ +# gui-arch.pl +# $Id$ +# +# Copyright 2008 Tomasz Luczak, Norbert Preining +# +# GUI for tlmgr +# + + +our $back_arch = $back->add("arch",-label => ___"archs"); +$screens{"arch"} = $back_arch; + +# this will be loaded only on unix systems! +# + +our @archsavail; +our @archsinstalled; +our %archs; + +our %archsbuttons; +our $arch_frame; +our $subframe; + +push @update_function_list, \&init_archs; + +$back_arch->Label(-text => ___"remarchnotpos")->pack(-padx => "5m", -pady => "5m"); + + +sub init_archs { + if (!defined($tlmediatlpdb)) { + @archsavailable = (); + } else { + @archsavail = $tlmediatlpdb->available_architectures; + } + @archsinstalled = $localtlpdb->available_architectures; + foreach my $a (@archsavail) { + $archs{$a} = 0; + if (grep(/^$a$/,@archsinstalled)) { + $archs{$a} = 1; + } + } + foreach my $a (keys %archsbuttons) { + $archsbuttons{$a}->destroy; + } + $arch_frame->destroy if defined($arch_frame); + $subframe->destroy if defined($subframe); + $subframe = $back_arch->Frame; + foreach my $a (@archsavail) { + $archsbuttons{$a} = + $subframe->Checkbutton(-command => sub { check_on_removal($a); }, + -variable => \$archs{$a}, + -text => platform_desc($a) + )->pack(-anchor => 'w'); + } + $subframe->pack; + $arch_frame = $back_arch->Frame; + $arch_frame->pack(-padx => "10m", -pady => "5m"); + $arch_frame->Button(-text => ___"applychanges", -command => sub { apply_changes(); })->pack(-side => 'left', -padx => "3m"); + $arch_frame->Button(-text => ___"resetchanges", -command => sub { init_archs(); })->pack(-side => 'left', -padx => "3m"); +} + +sub check_on_removal { + my $a = shift; + if (!$archs{$a} && grep(/^$a$/,@archsinstalled)) { + # removal not supported + $archs{$a} = 1; + $arch_frame->Dialog(-title => "info", + -text => ___"remarchinfo", + -buttons => [ ___"ok" ])->Show; + } +} + + +sub apply_changes { + my @todo; + foreach my $a (@archsavail) { + next if grep(/^$a$/,@archsinstalled); + push @todo, $a if $archs{$a}; + } + if (@todo) { + execute_action_gui ( "arch", "add", @todo ); + reinit_local_tlpdb(); + init_archs(); + } +} + +1; + +### Local Variables: +### perl-indent-level: 2 +### tab-width: 2 +### indent-tabs-mode: nil +### End: +# vim:set tabstop=2 expandtab: # diff --git a/Master/texmf/scripts/texlive/tlmgrgui/tlmgrgui2.pl b/Master/texmf/scripts/texlive/tlmgrgui/tlmgrgui2.pl index 5ed0116adac..c7786f43e30 100755 --- a/Master/texmf/scripts/texlive/tlmgrgui/tlmgrgui2.pl +++ b/Master/texmf/scripts/texlive/tlmgrgui/tlmgrgui2.pl @@ -338,7 +338,7 @@ set_text_win($remove_win, ___"pleaseclick"); require("gui-uninstall.pl"); # arch support not be done via tlmgr on win32 if (!win32()) { - require("gui-arch.pl"); + require("gui-arch2.pl"); } # config screen require("gui-config2.pl"); -- cgit v1.2.3