1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
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: #
|