summaryrefslogtreecommitdiff
path: root/Master/texmf/scripts/texlive/tlmgrgui/gui-arch.pl
blob: d475e31d62a39384aea6b897bc0465d7be186949 (plain)
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: #