diff options
-rw-r--r-- | docs/TODO | 2 | ||||
-rw-r--r-- | perl-install/common.pm | 4 | ||||
-rw-r--r-- | perl-install/install2.pm | 1 | ||||
-rw-r--r-- | perl-install/install_any.pm | 4 | ||||
-rw-r--r-- | perl-install/install_steps_gtk.pm | 239 | ||||
-rw-r--r-- | perl-install/install_steps_interactive.pm | 2 | ||||
-rw-r--r-- | perl-install/lang.pm | 2 | ||||
-rw-r--r-- | perl-install/pkgs.pm | 73 | ||||
-rw-r--r-- | perl-install/share/compssList | 249 |
9 files changed, 104 insertions, 472 deletions
@@ -25,6 +25,8 @@ add choice clean /tmp or not in expert kernel chosen by default must be the one according to supermount/secure -features------------------------------------------------------------------------------- +handle NT (add entry for it in lilo, put it in fstab) + (7.1) rewrite crypto stuff (NEED 7.1) auto-install for corporate, very important (need consolidation). diff --git a/perl-install/common.pm b/perl-install/common.pm index bd8413788..0e75369ce 100644 --- a/perl-install/common.pm +++ b/perl-install/common.pm @@ -115,8 +115,8 @@ sub touch { sub map_index(&@) { my $f = shift; - my $v; local $::i = 0; - map { $v = &$f($::i); $::i++; $v } @_; + my @v; local $::i = 0; + map { @v = &$f($::i); $::i++; @v } @_; } sub grep_index(&@) { my $f = shift; diff --git a/perl-install/install2.pm b/perl-install/install2.pm index 6be64eb59..4bb38d9aa 100644 --- a/perl-install/install2.pm +++ b/perl-install/install2.pm @@ -252,6 +252,7 @@ sub selectKeyboard { addToBeDone { lang::write($o->{prefix}); keyboard::write($o->{prefix}, $o->{keyboard}); + lang::set_langs($o->{langs}); } 'doInstallStep' unless $::g_auto_install; } diff --git a/perl-install/install_any.pm b/perl-install/install_any.pm index 332dbed3e..248dc5b69 100644 --- a/perl-install/install_any.pm +++ b/perl-install/install_any.pm @@ -138,8 +138,8 @@ sub setPackages($) { push @{$o->{base}}, @{delete($o->{"base_" . arch()}) || []}; - my $c; ($o->{compss}, $c) = pkgs::readCompss($o->{packages}); - $o->{compssListLevels} = pkgs::readCompssList($o->{packages}, $c); + $o->{compss} = pkgs::readCompss($o->{packages}); + $o->{compssListLevels} = pkgs::readCompssList($o->{packages}, $o->{compss}); ($o->{compssUsers}, $o->{compssUsersSorted}) = pkgs::readCompssUsers($o->{packages}, $o->{compss}); my @l = (); diff --git a/perl-install/install_steps_gtk.pm b/perl-install/install_steps_gtk.pm index 5f1839c62..71f05d3bf 100644 --- a/perl-install/install_steps_gtk.pm +++ b/perl-install/install_steps_gtk.pm @@ -345,188 +345,85 @@ installation of each selected groups.") . } sub choosePackagesTree { my ($o, $packages, $compss) = @_; - my $availableSpace = int(install_any::getAvailableSpace($o) / sqr(1024)); - my $w = my_gtk->new(''); - add2hash_($o->{packages_}, { show_level => 0 }); #- keep show more or less 80 }); - my ($current, $ignore, $showall, $selectall, $w_size, $info_widget, $showall_button, $selectall_button, $go, %items) = 0, 0, 0, 0; + my ($curr, $info_widget, $w_size, $go, $idle); + my %wtree; + + my $w = my_gtk->new(''); my $details = new Gtk::VBox(0,0); - $compss->{tree} = new Gtk::Tree(); - $compss->{tree}->set_selection_mode('multiple'); - - my $clean; $clean = sub { - my ($p) = @_; - foreach (values %{$p->{childs}}) { - &$clean($_) if $_->{childs}; - delete $_->{itemNB}; - delete $_->{tree}; - delete $_->{packages_item}; + my $tree = Gtk::CTree->new(2, 0); + $tree->set_selection_mode('browse'); + $tree->set_column_auto_resize($_, 1) foreach 0..1; + + my $parent; $parent = sub { + if (my $w = $wtree{$_[0]}) { return $w } + my $s; foreach (split '/', $_[0]) { + $wtree{"$s/$_"} ||= + $tree->insert_node($s ? $parent->($s) : undef, undef, [$_], 5, (undef) x 4, 0, 0); + $s = "$s/$_"; } - }; &$clean($compss); + $wtree{$s}; + }; + my ($root, $leaf); + foreach (@$compss) { + ($root, $leaf) = m|(.*)/(.+)|o or ($root, $leaf) = ('', $_); + my $node = $tree->insert_node($parent->($root), undef, [$leaf], 5, (undef) x 4, 1, 0); + } - my $update = sub { - my $size = 0; - $ignore = 1; - foreach (grep { $_->[0] } values %items) { - $compss->{tree}->unselect_child($_->[0]); - $compss->{tree}->select_child($_->[0]) if pkgs::packageFlagSelected($_->[1]); - } - $ignore = 0; - - foreach (values %{$packages->[0]}) { - $size += pkgs::packageSize($_) - ($_->{installedCumulSize} || 0) if pkgs::packageFlagSelected($_); #- on upgrade, installed packages will be removed. - } + gtkadd($w->{window}, + gtkpack_(new Gtk::VBox(0,5), + 0, _("Choose the packages you want to install"), + 1, gtkpack(new Gtk::HBox(0,0), + createScrolledWindow($tree), + gtkadd(gtkset_usize(new Gtk::Frame(_("Info")), 150, 0), + createScrolledWindow($info_widget = new Gtk::Text), + )), + 0, gtkpack__(new Gtk::HBox(0,0), $w_size = new Gtk::Label('')), + 0, gtkpack(new Gtk::HBox(0,10), + $go = gtksignal_connect(new Gtk::Button(_("Install")), "clicked" => sub { $w->{retval} = 1; Gtk->main_quit }), + ) + )); + $w->{window}->set_usize(map { $_ - 2 * $my_gtk::border - 4 } $::windowwidth, $::windowheight); + $go->grab_focus; + $w->show; - $w_size->set(_("Total size: ") . int (pkgs::correctSize($size / sqr(1024))) . " / $availableSpace " . _("KB") ); - }; - my $new_item = sub { - my ($p, $name, $parent) = @_; - my $w = create_treeitem($name); - $items{++$itemsNB} = [ $w, $p ]; - undef $parent->{packages_item}{$itemsNB} if $parent; - $w->show; - $w->set_sensitive(!pkgs::packageFlagBase($p) && !pkgs::packageFlagInstalled($p)); - $w->signal_connect(focus_in_event => sub { - my $p = eval { pkgs::getHeader ($p) }; #- TODO - gtktext_insert($info_widget, $@ ? _("Bad package") : - _("Version: %s\n", c::headerGetEntry($p, 'version') . '-' . c::headerGetEntry($p, 'release')) . - _("Size: %d KB\n", c::headerGetEntry($p, 'size') / 1024) . - - formatLines(c::headerGetEntry($p, 'description'))); - }) unless $p->{childs}; - $itemsNB; + my $display_info = sub { + my $p = $packages->[0]{$curr} or return gtktext_insert($info_widget, ''); + pkgs::extractHeaders($o->{prefix}, [$p]); + $p->{header} or die; + + my $ind = $o->{compssListLevels}{$o->{install_class}}; + my $imp = translate($pkgs::compssListDesc{pkgs::packageFlagBase($p) ? 100 : round_down($p->{values}[$ind], 10)}); + + gtktext_insert($info_widget, $@ ? _("Bad package") : + _("Version: %s\n", pkgs::packageVersion($p) . '-' . pkgs::packageRelease($p)) . + _("Size: %d KB\n", pkgs::packageSize($p) / 1024) . + ($imp && _("Importance: %s\n", $imp)) . + formatLines(c::headerGetEntry($p->{header}, 'description'))); + c::headerFree(delete $p->{header}); + 0; }; - $compss->{tree}->signal_connect(selection_changed => sub { - $ignore and return; + $tree->signal_connect(tree_select_row => sub { + Gtk->timeout_remove($idle) if $idle; - my %s; @s{$_[0]->selection} = (); - my @changed; - #- needs to find @changed first, _then_ change the selected, otherwise - #- we won't be able to find the changed - foreach (values %items) { - push @changed, $_->[1] if (pkgs::packageFlagSelected($_->[1]) xor exists $s{$_->[0]}); - } - #- works before @changed is (or must be!) one element - foreach (@changed) { - if ($_->{childs}) { - my $pkg = $_; - pkgs::packageSetFlagSelected($pkg, !pkgs::packageFlagSelected($pkg)); - my $f; $f = sub { - my ($p) = @_; - $p->{itemNB} or return; - if ($p->{packages}) { - foreach (keys %{$p->{packages_item} || {}}) { - my ($a, $b) = @{$items{$_}}; - $a and pkgs::setPackageSelection($packages, $b, pkgs::packageFlagSelected($pkg)); - } - } else { - foreach (values %{$p->{childs}}) { - pkgs::packageSetFlagSelected($_, pkgs::packageFlagSelected($pkg)); - &$f($_); - } - } - }; &$f($_); -#- } elsif ($_->{base}) { -#- $o->ask_warn('', _("Sorry, i won't unselect this package. The system needs it")); -#- } elsif ($_->{installed}) { -#- $o->ask_warn('', _("Sorry, i won't select this package. A more recent version is already installed")); - } else { - pkgs::togglePackageSelection($packages, $_); - } - } - &$update(); + $_[1]->row->is_leaf or return; + ($curr) = $tree->node_get_pixtext($_[1], 0); + + $idle = Gtk->timeout_add(100, $display_info); }); -#- my $select_add = sub { -#- my ($ind, $level) = @{$o->{packages_}}{"ind", "select_level"}; -#- $level = max(0, min(100, ($level + $_[0]))); -#- $o->{packages_}{select_level} = $level; -#- -#- pkgs::unselect_all($packages); -#- foreach (pkgs::allpackages($packages)) { -#- pkgs::select($packages, $_) if $_->{values}[$ind] >= $level; -#- } -#- &$update; -#- }; - - my $show_add = sub { - my ($ind, $level) = @{$o->{packages_}}{"ind", "show_level"}; - $level = max(0, min(90, ($level + $_[0]))); - $o->{packages_}{show_level} = $level; - - my $update_tree = sub { - my $P = shift; - my $i = 0; foreach (@_) { - my ($flag, $itemNB, $q) = @$_; - my $item = $items{$flag || $itemNB}[0] if $flag || $itemNB; - if ($flag) { - $P->{tree}->insert($item, $i) if $flag ne "1"; - $item->set_subtree($q->{tree}) if $flag ne "1" && $q->{tree}; - $i++; - } elsif ($itemNB) { - delete $items{$itemNB}; - delete $P->{packages_item}{$itemNB}; - $P->{tree}->remove_item($item) if $P->{tree}; - } - } - }; - my $f; $f = sub { - my ($p) = @_; - if ($p->{packages}) { - my %l; $l{$items{$_}[1]} = $_ foreach keys %{$p->{packages_item}}; - map { - [ $_->{values}[$ind] >= $level ? - ($l{$_} ? 1 : &$new_item($_, pkgs::packageName($_), $p)) : '', $l{$_}, $_ ]; - } sort { - pkgs::packageName($a) cmp pkgs::packageName($b) } @{$p->{packages}}; - } else { - map { - my $P = $p->{childs}{$_}; - my @L; @L = &$f($P) if !$P->{values} || $P->{values}[$ind] > ($::expert ? -1 : 0); - if (grep { $_->[0] } @L) { - my $r = $P->{tree} ? 1 : do { - my $t = $P->{tree} = new Gtk::Tree(); $t->show; - $P->{itemNB} = &$new_item($P, $_); - }; - &$update_tree($P, @L); - [ $r, $P->{itemNB}, $P ]; - } else { - &$update_tree($P, @L); - delete $P->{tree}; - [ '', delete $P->{itemNB}, $P ]; - } - } sort keys %{$p->{childs} || {}}; - } - }; - $ignore = 1; - &$update_tree($compss, &$f($compss)); - &$update; - $ignore = 0; - }; + my $update_size = sub { + my $size = 0; + foreach (values %{$packages->[0]}) { + $size += pkgs::packageSize($_) - ($_->{installedCumulSize} || 0) if pkgs::packageFlagSelected($_); #- on upgrade, installed packages will be removed. + } + $w_size->set(_("Total size: %d / %d KB", + pkgs::correctSize($size / sqr(1024)), + install_any::getAvailableSpace($o) / sqr(1024))); - gtkadd($w->{window}, gtkpack_(new Gtk::VBox(0,5), - 0, _("Choose the packages you want to install"), - 1, gtkpack(new Gtk::HBox(0,0), - createScrolledWindow($compss->{tree}), - gtkadd(gtkset_usize(new Gtk::Frame(_("Info")), 150, 0), - createScrolledWindow($info_widget = new Gtk::Text), - ), - ), - 0, gtkpack_(new Gtk::HBox(0,0), 0, $w_size = new Gtk::Label('')), - 0, gtkpack(new Gtk::HBox(0,10), - map { $go ||= $_; $_ } - map { gtksignal_connect(new Gtk::Button($_->[0]), "clicked" => $_->[1]) } - [ _("Install") => sub { $w->{retval} = 1; Gtk->main_quit } ], - #- keep show more or less [ _("Show less") => sub { &$show_add(+10) } ], - #- keep show more or less [ _("Show more") => sub { &$show_add(-10) } ], - ) - )); - $w->{window}->set_usize(map { $_ - 2 * $my_gtk::border - 4 } $::windowwidth, $::windowheight); - $w->show; - &$show_add(0); - &$update(); - $go->grab_focus; + }; + &$update_size(); $w->main; } diff --git a/perl-install/install_steps_interactive.pm b/perl-install/install_steps_interactive.pm index 53665bec3..142c785bd 100644 --- a/perl-install/install_steps_interactive.pm +++ b/perl-install/install_steps_interactive.pm @@ -79,7 +79,7 @@ sub selectKeyboard($) { my $langs = $o->ask_many_from_list('', _("You can choose other languages that will be available after install"), [ lang::list() ]) or goto &selectLanguage if $::expert; - lang::set_langs($o->{langs} = grep_index { $langs->[$::i] } lang::list()); + $o->{langs} = [ $o->{lang}, grep_index { $langs->[$::i] } lang::list() ]; } } #------------------------------------------------------------------------------ diff --git a/perl-install/lang.pm b/perl-install/lang.pm index 96c5de80f..298225425 100644 --- a/perl-install/lang.pm +++ b/perl-install/lang.pm @@ -236,8 +236,6 @@ sub set_langs { my ($l) = @_; $ENV{RPM_INSTALL_LANG} = member('all', @$l) ? 'all' : join ':', uniq(map { substr($languages{$_}[2], 0, 2) } @$l); - -# $ENV{RPM_INSTALL_LANG} = join ':', uniq(map { split ':', $languages{$_}[3] } @{$_[0]}); } sub write { diff --git a/perl-install/pkgs.pm b/perl-install/pkgs.pm index d2cbc116e..e47b03d65 100644 --- a/perl-install/pkgs.pm +++ b/perl-install/pkgs.pm @@ -2,7 +2,7 @@ package pkgs; use diagnostics; use strict; -use vars qw(*LOG %compssList @skip_list %by_lang @preferred $limitMinTrans $limitMaxTrans $PKGS_SELECTED $PKGS_FORCE $PKGS_INSTALLED $PKGS_BASE $PKGS_SKIP $PKGS_UNSKIP); +use vars qw(*LOG %compssListDesc @skip_list %by_lang @preferred $limitMinTrans $limitMaxTrans $PKGS_SELECTED $PKGS_FORCE $PKGS_INSTALLED $PKGS_BASE $PKGS_SKIP $PKGS_UNSKIP); use common qw(:common :file :functional); use install_any; @@ -15,7 +15,8 @@ use lang; use c; #- lower bound on the left ( aka 90 means [90-100[ ) -%compssList = ( +%compssListDesc = ( + 100 => __("mandatory"), #- do not use it, it's for base packages 90 => __("must have"), #- every install have these packages (unless hand de-selected in expert, or not enough room) 80 => __("important"), #- every beginner/custom install have these packages (unless not enough space) #- has minimum X install (XFree86 + icewm)(normal) @@ -284,7 +285,6 @@ sub psUsingHdlist($) { flags => 0, #- flags }; $packages[0]{packageName($pkg)} = $pkg; - print packageName($pkg), "\n"; } else { die "cannot determine how to handle such file in $newf: $_"; } @@ -341,14 +341,9 @@ sub getProvides($) { } } -sub category2packages($) { - my ($p) = @_; - $p->{packages} || [ map { @{ category2packages($_) } } values %{$p->{childs}} ]; -} - -sub readCompss($) { +sub readCompss { my ($packages) = @_; - my ($compss, $compss_, $ps) = { childs => {} }; + my ($p, @compss); my $f = install_any::getFile("compss") or die "can't find compss"; foreach (<$f>) { @@ -356,40 +351,26 @@ sub readCompss($) { s/#.*//; if (/^(\S+)/) { - my $p = $compss; - my @l = split ':', $1; - foreach (@l) { - $p->{childs}{$_} ||= { childs => {} }; - $p = $p->{childs}{$_}; - } - $ps = $p->{packages} ||= []; - $compss_->{$1} = $p; + s|:|/|g; + $p = $1 if /^(\S+)/; } else { - /(\S+)/ or log::l("bad line in compss: $_"), next; - push @$ps, $packages->[0]{$1} || do { log::l("unknown package $1 (in compss)"); next }; + /(\S+)/; + $packages->[0]{$1} or log::l("unknown package $1 in compss"), next; + push @compss, "$p/$1"; } } - ($compss, $compss_); + \@compss; } -sub readCompssList($$$) { - my ($packages, $compss_) = @_; +sub readCompssList { + my ($packages) = @_; my $f = install_any::getFile("compssList") or die "can't find compssList"; - local $_ = <$f>; - my $level = [ split ]; + my @levels = split ' ', <$f>; - my $nb_values = 3; - my $e; foreach (<$f>) { /^\s*$/ || /^#/ and next; - - /^packages\s*$/ and do { $e = $packages->[0]; next }; - /^categories\s*$/ and do { $e = $compss_; next }; - my ($name, @values) = split; - - $e or log::l("neither packages nor categories"); - my $p = $e->{$name} or log::l("unknown entry $name (in compssList)"), next; + my $p = $packages->[0]{$name} or log::l("unknown entry $name (in compssList)"), next; $p->{values} = \@values; } @@ -399,33 +380,38 @@ sub readCompssList($$$) { foreach ("locales-$_", @{$p->{provides} || []}, @{$by_lang{$_} || []}) { next if $done{$_}; $done{$_} = 1; my $p = $packages->[0]{$_} or next; - $p->{values} = [ map { $_ + 90 } @{$p->{values} || [ (0) x $nb_values ]} ]; + $p->{values} = [ map { $_ + 90 } @{$p->{values} || [ (0) x @levels ]} ]; } } - $level; + return { map_index { $_ => $::i } @levels }; } sub readCompssUsers { my ($packages, $compss) = @_; my (%compssUsers, @sorted, $l); + my %compss; m|(.*)/(.*)| && push @{$compss{$1}}, $2 foreach @$compss; + my $map = sub { + $l or return; + $_ = $packages->[0]{$_} or log::l("unknown package $1 (in compssUsers)") foreach @$l; + }; my $f = install_any::getFile("compssUsers") or die "can't find compssUsers"; foreach (<$f>) { /^\s*$/ || /^#/ and next; s/#.*//; if (/^(\S.*)/) { + &$map; push @sorted, $1; $compssUsers{$1} = $l = []; } elsif (/\s+\+(\S+)/) { - push @$l, $packages->[0]{$1} || do { log::l("unknown package $1 (in compssUsers)"); next }; + push @$l, $1; } elsif (/\s+(\S+)/) { - my $p = $compss; - $p &&= $p->{childs}{$_} foreach split ':', $1; - $p or log::l("unknown category $1 (in compssUsers)"), next; - push @$l, @{ category2packages($p) }; + s|:|/|g; /\s+(\S+)/; + push @$l, @{$compss{$1} || log::l("unknown category $1 (in compssUsers)") && []}; } } + &$map; \%compssUsers, \@sorted; } @@ -438,13 +424,10 @@ sub readCompssUsers { sub setSelectedFromCompssList { my ($compssListLevels, $packages, $min_level, $max_size, $install_class) = @_; - my ($ind); + my $ind = $compssListLevels->{$install_class} or log::l("unknown install class $install_class in compssList"), return; my @packages = allPackages($packages); my @places = do { - map_index { $ind = $::i if $_ eq $install_class } @$compssListLevels; - defined $ind or log::l("unknown install class $install_class in compssList"), return; - #- special case for /^k/ aka kde stuff my @values = map { $_->{values}[$ind] + (packageFlagUnskip($_) && packageName($_) !~ /^k/ ? 10 : 0) } @packages; sort { $values[$b] <=> $values[$a] } 0 .. $#packages; diff --git a/perl-install/share/compssList b/perl-install/share/compssList index c4f9f5299..c8ea95197 100644 --- a/perl-install/share/compssList +++ b/perl-install/share/compssList @@ -1,7 +1,5 @@ normal server developer -packages - AfterStep 55 0 53 AnotherLevel 25 0 27 BasiliskII 35 0 10 @@ -995,250 +993,3 @@ zip 70 65 87 zlib 16 60 94 zlib-devel 10 0 72 zsh 20 50 72 - -categories - -administration:rpm:console 90 70 80 -administration:rpm:x11 80 0 80 -administration:system:console 40 0 80 -administration:utilities:console 90 75 80 -administration:utilities:x11 80 0 80 -amusement:console 40 0 80 -amusement:x11 80 0 80 -archiving:console 45 76 80 -archiving:x11 80 0 80 -base 0 0 80 -cd-burning:console 45 0 80 -cd-burning:x11 50 0 80 -communications:modem:console 48 79 80 -communications:modem:x11 80 58 80 -communications:pilot:console 40 35 80 -communications:pilot:x11 55 0 80 -compression:console 48 35 30 -compression:x11 58 50 55 -configuration:kernel:console 40 70 70 -configuration:kernel:x11 50 50 70 -configuration:keyboard:console 45 30 55 -configuration:identification:console 45 79 80 -configuration:identification:x11 80 1 10 -configuration:libs:x11 50 50 55 -configuration:mail:console 40 78 55 -configuration:network:firewall:console 45 79 80 -configuration:network:firewall:x11 22 59 20 -configuration:network:ftp:x11 55 59 72 -configuration:network:http:x11 20 59 40 -configuration:network:mail:console 40 75 70 -configuration:network:mail:x11 50 59 10 -configuration:power:x11 50 50 55 -configuration:time:console 45 75 80 -configuration:time:x11 50 50 20 -configuration:sound:console 42 30 50 -configuration:system:console 90 30 10 -configuration:system:x11 20 57 40 -configuration:xfree:console 50 55 70 -configuration:xfree:x11 50 68 10 -daemons:administartion 0 70 10 -daemons:console 0 0 30 -daemons:database 0 0 72 -daemons:disk 0 0 40 -daemons:kernel 0 0 30 -daemons:network:base 0 0 80 -daemons:network:corba 0 0 70 -daemons:network:dhcp 0 0 55 -daemons:network:ftp 0 0 55 -daemons:network:http 0 0 55 -daemons:network:mail 0 0 10 -daemons:network:midnight_commander 0 0 30 -daemons:network:name_server 0 0 20 -daemons:network:netware 0 0 50 -daemons:network:nfs 0 0 50 -daemons:network:nis 0 0 10 -daemons:network:routing 0 0 55 -daemons:network:samba 0 0 10 -daemons:network:snmp 0 0 50 -daemons:network:slip 0 0 00 -daemons:network:telnet 0 0 00 -daemons:network:uucp 0 0 00 -daemons:network:usenet 0 0 00 -daemons:network:vnc 0 0 00 -daemons:power 0 0 00 -daemons:print 0 0 00 -daemons:security 0 0 00 -daemons:sound 0 0 00 -daemons:time 0 0 00 -daemons:xfree86 0 0 00 -database 20 80 00 -developpment:debuggers:console 11 0 80 -developpment:debuggers:x11 10 20 80 -developpment:libs:cdrecord 11 0 80 -developpment:libs:compression 11 0 80 -developpment:libs:database 11 0 80 -developpment:libs:fonts 11 0 80 -developpment:libs:gnome 11 0 80 -developpment:libs:graphics 11 0 80 -developpment:libs:gtk 11 0 80 -developpment:libs:filesystems 11 0 80 -developpment:libs:kde 11 0 80 -developpment:libs:language 11 20 80 -developpment:libs:misc 11 0 80 -developpment:libs:mouse 11 0 80 -developpment:libs:network 11 0 80 -developpment:libs:qt 11 0 80 -developpment:libs:sound 11 0 80 -developpment:libs:user-interface 11 0 80 -developpment:language 11 0 80 -developpment:tools:console 11 0 80 -developpment:tools:x11 11 0 80 -disks 0 70 70 -documentation:languages:chinese 90 30 80 -documentation:languages:croatian 90 30 80 -documentation:languages:czech 90 30 80 -documentation:languages:en 90 30 80 -documentation:languages:french 90 30 80 -documentation:languages:german 90 30 80 -documentation:languages:greek 90 30 80 -documentation:languages:indonesian 90 30 80 -documentation:languages:italian 90 30 80 -documentation:languages:japanese 90 30 80 -documentation:languages:korean 90 30 80 -documentation:languages:polish 90 30 80 -documentation:languages:russian 90 30 80 -documentation:languages:serbian 90 30 80 -documentation:languages:slovenian 90 30 80 -documentation:languages:spanish 90 30 80 -documentation:languages:swedish 90 30 80 -documentation:languages:turkish 90 30 80 -documentation:misc 90 39 80 -documentation:tools:console 90 70 72 -documentation:tools:x11 80 50 50 -editors:console 42 75 72 -editors:x11 50 55 72 -emulators:console 40 2 50 -emulators 50 2 50 -filemanagers:console 40 75 72 -filemanagers:x11 59 0 70 -files:console 0 70 10 -files:x11 59 55 50 -finances 0 0 00 -games:console 40 1 40 -games:x11 50 1 55 -gnome 69 32 40 -identification:x11 80 55 30 -info:console 40 75 80 -info:x11 51 52 80 -kde:administration:utilities 70 75 81 -kde:administration:rpm 70 75 81 -kde:amusement 70 70 81 -kde:base 0 0 0 -kde:cd-burning 70 74 81 -kde:communications:fax 70 77 81 -kde:communications:modem 70 77 81 -kde:communications:pilot 70 77 81 -kde:configuration:network 70 78 81 -kde:configuration:power 70 76 81 -kde:configuration:time 70 76 81 -kde:configuration:system 70 75 81 -kde:deloppment:tools 30 20 54 -kde:filemanagers 70 73 81 -kde:games 70 70 81 -kde:identification 70 78 81 -kde:monitoring 70 78 81 -kde:monitoring:cpu 70 78 81 -kde:monitoring:disks 70 78 81 -kde:monitoring:mail 70 78 81 -kde:monitoring:network 70 78 81 -kde:monitoring:memory 70 78 81 -kde:multimedia:graphics 70 75 81 -kde:multimedia:image-viewer 70 76 81 -kde:multimedia:sound 70 75 81 -kde:multimedia:video 70 75 81 -kde:network 70 79 81 -kde:office 70 75 81 -kde:science 70 72 81 -kde:themes 70 72 81 -kde:utilities 70 78 81 -kernel 0 19 80 -libs:application 10 20 80 -libs:compression 10 20 80 -libs:database 10 20 80 -libs:fonts:console 10 20 80 -libs:fonts:x11 10 20 80 -libs:gnome 10 20 80 -libs:graphics 10 20 80 -libs:gtk 10 20 80 -libs:kde 10 20 80 -libs:math 10 20 80 -libs:misc:console 10 20 80 -libs:misc:x11 10 20 80 -libs:network 10 20 80 -libs:qt 10 20 80 -libs:sound 10 20 80 -libs:user_interface 10 20 80 -misc:console 40 75 72 -monitoring:cpu:x11 50 56 80 -monitoring:disks:x11 50 56 80 -monitoring:misc:console 12 79 80 -monitoring:misc:x11 50 56 80 -monitoring:memory:console 12 79 80 -monitoring:memory:x11 50 56 80 -monitoring:network:console 12 79 80 -monitoring:network:x11 50 59 80 -monitoring:power:x11 50 55 80 -multimedia:graphic:acquisition 55 32 70 -multimedia:graphic:console 45 32 70 -multimedia:graphic:image-viewer 80 30 72 -multimedia:graphic:x11 80 50 72 -multimedia:sound:players:console 45 30 70 -multimedia:sound:players:x11 80 30 70 -multimedia:sounds:sounds 80 30 55 -multimedia:video 80 30 55 -network:ftp:console 90 70 70 -network:ftp:x11 55 55 70 -network:irc&co:console 45 70 70 -network:irc&co:x11 55 55 70 -network:mail:console 40 74 72 -network:mail:x11 55 55 72 -network:misc:console 41 74 72 -network:misc:x11 50 55 72 -network:netware:console 20 74 72 -network:nfs:console 40 74 72 -network:nis:console 40 74 72 -network:tools:console 40 74 72 -network:tools:x11 50 55 72 -network:usenet:console 40 74 72 -network:usenet:x11 55 55 72 -network:web:console 41 74 72 -network:web:x11 80 56 80 -office:dictionary:console 45 30 72 -office:textviewer:x11 55 50 72 -office:word_processor:console 45 30 72 -office:word_processor:x11 80 50 72 -print:console 45 76 55 -print:x11 80 50 70 -productivity:console 45 32 50 -productivity:x11 80 0 72 -science:chemistry:x11 55 0 72 -science:math:console 40 0 72 -science:math:x11 55 0 72 -science:meteo:console 45 0 72 -science:meteo:x11 55 0 72 -shells 0 78 80 -terminal:console 49 79 80 -terminal:x11 80 30 72 -text:console 40 74 80 -text:x11 55 59 80 -time:console 45 70 80 -time:x11 80 30 80 -translations 90 35 80 -updates:console 0 38 80 -updates:x11 80 0 80 -utilities:console:kernel 0 74 80 -utilities:console:misc 42 73 72 -utilities:x11:misc 55 0 72 -window-managers:configuration:console 80 30 70 -window-managers:configuration:x11 85 0 80 -window-managers:themes 80 0 80 -window-managers:window-managers 85 0 80 -xfree86:backgrounds 80 30 80 -xfree86:base 0 0 00 -xfree86:fonts 0 0 00 |