summaryrefslogtreecommitdiffstats
path: root/perl-install/install/share/po/sv.po
diff options
context:
space:
mode:
authorThierry Vignaud <tv@mandriva.org>2008-01-17 13:36:11 +0000
committerThierry Vignaud <tv@mandriva.org>2008-01-17 13:36:11 +0000
commitfbec9b408aecad6e21fa0b99c9cf84a6737f338d (patch)
tree8f637c4d3115f7e7f90476db26e87b6da1086ef1 /perl-install/install/share/po/sv.po
parent1e99b3897d90477c37befaef8f527fbd697e2efe (diff)
downloaddrakx-fbec9b408aecad6e21fa0b99c9cf84a6737f338d.tar
drakx-fbec9b408aecad6e21fa0b99c9cf84a6737f338d.tar.gz
drakx-fbec9b408aecad6e21fa0b99c9cf84a6737f338d.tar.bz2
drakx-fbec9b408aecad6e21fa0b99c9cf84a6737f338d.tar.xz
drakx-fbec9b408aecad6e21fa0b99c9cf84a6737f338d.zip
sync with code
Diffstat (limited to 'perl-install/install/share/po/sv.po')
-rw-r--r--perl-install/install/share/po/sv.po198
1 files changed, 104 insertions, 94 deletions
diff --git a/perl-install/install/share/po/sv.po b/perl-install/install/share/po/sv.po
index 309f5f2b9..21ab3b415 100644
--- a/perl-install/install/share/po/sv.po
+++ b/perl-install/install/share/po/sv.po
@@ -16,7 +16,7 @@ msgid ""
msgstr ""
"Project-Id-Version: DrakX-sv\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-10-01 09:12+0200\n"
+"POT-Creation-Date: 2008-01-17 14:35+0100\n"
"PO-Revision-Date: 2007-03-18 12:05+0100\n"
"Last-Translator: Kenneth Krekula <kenneth.krekula@kiruna.se>\n"
"Language-Team: <sv@li.org>\n"
@@ -156,7 +156,7 @@ msgid "Finding packages to upgrade..."
msgstr "Söker efter paket att uppdatera..."
#. -PO: keep the double empty lines between sections, this is formatted a la LaTeX
-#: any.pm:610
+#: any.pm:620
#, c-format
msgid ""
"You have selected the following server(s): %s\n"
@@ -180,7 +180,7 @@ msgstr ""
"Vill du verkligen installera dessa servrar?\n"
#. -PO: keep the double empty lines between sections, this is formatted a la LaTeX
-#: any.pm:633
+#: any.pm:643
#, c-format
msgid ""
"The following packages will be removed to allow upgrading your system: %s\n"
@@ -193,67 +193,72 @@ msgstr ""
"\n"
"Vill du verkligen ta bort dessa paket?\n"
-#: any.pm:1055
+#: any.pm:857
+#, fuzzy, c-format
+msgid "Error reading file %s"
+msgstr "Laddar ner filen %s..."
+
+#: any.pm:1065
#, c-format
msgid "The following disk(s) were renamed:"
msgstr "Följande disk(ar) har döpts om:"
-#: any.pm:1057
+#: any.pm:1067
#, c-format
msgid "%s (previously named as %s)"
msgstr "%s (gamla namnet %s)"
-#: any.pm:1114
+#: any.pm:1124
#, c-format
msgid "HTTP"
msgstr "HTTP"
-#: any.pm:1114
+#: any.pm:1124
#, c-format
msgid "FTP"
msgstr "FTP"
-#: any.pm:1114
+#: any.pm:1124
#, c-format
msgid "NFS"
msgstr "NFS"
-#: any.pm:1133 steps_interactive.pm:922
+#: any.pm:1143 steps_interactive.pm:923
#, c-format
msgid "Network"
msgstr "Nätverk"
-#: any.pm:1137
+#: any.pm:1147
#, c-format
msgid "Please choose a media"
msgstr "Välj media"
-#: any.pm:1153
+#: any.pm:1163
#, c-format
msgid "File already exists. Overwrite it?"
msgstr "Filen finns redan. Skriv över?"
-#: any.pm:1157
+#: any.pm:1167
#, c-format
msgid "Permission denied"
msgstr "Åtkomst nekad"
-#: any.pm:1205
+#: any.pm:1215
#, c-format
msgid "Bad NFS name"
msgstr "Felaktigt NFS namn"
-#: any.pm:1226
+#: any.pm:1236
#, c-format
msgid "Bad media %s"
msgstr "Oanvändbart media %s"
-#: any.pm:1269
+#: any.pm:1279
#, c-format
msgid "Can not make screenshots before partitioning"
msgstr "Kan inte ta skärmdumpar före partitionering"
-#: any.pm:1277
+#: any.pm:1287
#, c-format
msgid "Screenshots will be available after install in %s"
msgstr "Skärmdumpar kommer att finnas tillgängliga efter installationen i %s"
@@ -268,7 +273,7 @@ msgstr "Installation"
msgid "Configuration"
msgstr "Konfiguration"
-#: install2.pm:165
+#: install2.pm:166
#, c-format
msgid "You must also format %s"
msgstr "Du måste också formatera %s"
@@ -297,12 +302,12 @@ msgstr "Stoppar nätverket"
msgid "Downloading file %s..."
msgstr "Laddar ner filen %s..."
-#: media.pm:808
+#: media.pm:806
#, c-format
msgid "Copying some packages on disks for future use"
msgstr "Kopierar några paket till hårddisken för senare användning"
-#: media.pm:861
+#: media.pm:859
#, c-format
msgid "Copying in progress"
msgstr "Kopiering pågår"
@@ -332,7 +337,7 @@ msgstr "trevligt"
msgid "maybe"
msgstr "tveksamt"
-#: pkgs.pm:245
+#: pkgs.pm:254
#, c-format
msgid ""
"Some packages requested by %s cannot be installed:\n"
@@ -673,7 +678,7 @@ msgstr ""
"Ett fel uppstod och jag vet inte hur det kan hanteras på ett\n"
"bra sätt. Fortsätt på egen risk."
-#: steps.pm:433
+#: steps.pm:436
#, c-format
msgid ""
"Some important packages did not get installed properly.\n"
@@ -701,7 +706,12 @@ msgstr "Mandriva Linux installation %s"
msgid "<Tab>/<Alt-Tab> between elements"
msgstr "<Tab>/<Alt-Tab> mellan element"
-#: steps_gtk.pm:189
+#: steps_gtk.pm:82
+#, c-format
+msgid "Xorg server is slow to start. Please wait..."
+msgstr ""
+
+#: steps_gtk.pm:192
#, c-format
msgid ""
"Your system is low on resources. You may have some problem installing\n"
@@ -714,73 +724,73 @@ msgstr ""
"installationen istället. För att göra det tryck F1 när du startar\n"
"från cd-skivan, skriv sedan \"text\"."
-#: steps_gtk.pm:256 steps_interactive.pm:435 steps_interactive.pm:564
+#: steps_gtk.pm:259 steps_interactive.pm:435 steps_interactive.pm:564
#: steps_list.pm:30
#, c-format
msgid "Package Group Selection"
msgstr "Val av paketgrupper"
-#: steps_gtk.pm:277 steps_interactive.pm:581
+#: steps_gtk.pm:280 steps_interactive.pm:581
#, c-format
msgid "Individual package selection"
msgstr "Välj enskilda paket"
-#: steps_gtk.pm:299 steps_interactive.pm:507
+#: steps_gtk.pm:302 steps_interactive.pm:507
#, c-format
msgid "Total size: %d / %d MB"
msgstr "Total storlek: %d / %d MB"
-#: steps_gtk.pm:344
+#: steps_gtk.pm:347
#, c-format
msgid "Bad package"
msgstr "Ogiltigt paket"
-#: steps_gtk.pm:346
+#: steps_gtk.pm:349
#, c-format
msgid "Version: "
msgstr "Version: "
-#: steps_gtk.pm:347
+#: steps_gtk.pm:350
#, c-format
msgid "Size: "
msgstr "Storlek: "
-#: steps_gtk.pm:347
+#: steps_gtk.pm:350
#, c-format
msgid "%d KB\n"
msgstr "%d KB\n"
-#: steps_gtk.pm:348
+#: steps_gtk.pm:351
#, c-format
msgid "Importance: "
msgstr "Betydelsegrad: "
-#: steps_gtk.pm:382
+#: steps_gtk.pm:385
#, c-format
msgid "You can not select/unselect this package"
msgstr "Du kan inte välja/välja bort detta paket."
-#: steps_gtk.pm:386
+#: steps_gtk.pm:389
#, c-format
msgid "due to missing %s"
msgstr "pga saknande %s"
-#: steps_gtk.pm:387
+#: steps_gtk.pm:390
#, c-format
msgid "due to unsatisfied %s"
msgstr "på grund av otillräckliga %s"
-#: steps_gtk.pm:388
+#: steps_gtk.pm:391
#, c-format
msgid "trying to promote %s"
msgstr "försöker befordra %s"
-#: steps_gtk.pm:389
+#: steps_gtk.pm:392
#, c-format
msgid "in order to keep %s"
msgstr "för att behålla %s"
-#: steps_gtk.pm:394
+#: steps_gtk.pm:397
#, c-format
msgid ""
"You can not select this package as there is not enough space left to install "
@@ -789,109 +799,109 @@ msgstr ""
"Du kan inte välja detta paket eftersom det inte finns tillräckligt med "
"utrymme."
-#: steps_gtk.pm:397
+#: steps_gtk.pm:400
#, c-format
msgid "The following packages are going to be installed"
msgstr "Följande paket kommer att installeras"
-#: steps_gtk.pm:398
+#: steps_gtk.pm:401
#, c-format
msgid "The following packages are going to be removed"
msgstr "Följande paket kommer att tas bort"
-#: steps_gtk.pm:423
+#: steps_gtk.pm:426
#, c-format
msgid "This is a mandatory package, it can not be unselected"
msgstr "Detta är ett obligatoriskt paket som inte kan väljas bort."
-#: steps_gtk.pm:425
+#: steps_gtk.pm:428
#, c-format
msgid "You can not unselect this package. It is already installed"
msgstr "Du kan inte välja bort detta paket. Det är redan installerat."
-#: steps_gtk.pm:427
+#: steps_gtk.pm:430
#, c-format
msgid "You can not unselect this package. It must be upgraded"
msgstr "Du kan inte välja bort det här paketet. Det måste uppdateras."
-#: steps_gtk.pm:431
+#: steps_gtk.pm:434
#, c-format
msgid "Show automatically selected packages"
msgstr "Visa automatiskt valda paket"
-#: steps_gtk.pm:433
+#: steps_gtk.pm:436
#, c-format
msgid "Install"
msgstr "Installera"
-#: steps_gtk.pm:436
+#: steps_gtk.pm:439
#, c-format
msgid "Load/Save selection"
msgstr "Ladda/Spara markering"
-#: steps_gtk.pm:437
+#: steps_gtk.pm:440
#, c-format
msgid "Updating package selection"
msgstr "Uppdaterar paketval"
-#: steps_gtk.pm:442
+#: steps_gtk.pm:445
#, c-format
msgid "Minimal install"
msgstr "Minimal installation"
-#: steps_gtk.pm:456
+#: steps_gtk.pm:459
#, c-format
msgid "Software Management"
msgstr "Programhantering"
-#: steps_gtk.pm:456 steps_interactive.pm:393
+#: steps_gtk.pm:459 steps_interactive.pm:393
#, c-format
msgid "Choose the packages you want to install"
msgstr "Välj paketen som du vill installera"
-#: steps_gtk.pm:473 steps_interactive.pm:595 steps_list.pm:32
+#: steps_gtk.pm:476 steps_interactive.pm:595 steps_list.pm:32
#, c-format
msgid "Installing"
msgstr "Installerar"
-#: steps_gtk.pm:499
+#: steps_gtk.pm:502
#, c-format
msgid "No details"
msgstr "Inga detaljer"
-#: steps_gtk.pm:514
+#: steps_gtk.pm:517
#, c-format
msgid "Time remaining "
msgstr "Återstående tid "
-#: steps_gtk.pm:515
-#, c-format
-msgid "Estimating"
+#: steps_gtk.pm:518
+#, fuzzy, c-format
+msgid "(estimating...)"
msgstr "Uppskattar"
-#: steps_gtk.pm:542
+#: steps_gtk.pm:545
#, c-format
msgid "%d package"
msgid_plural "%d packages"
msgstr[0] "%d paketet"
msgstr[1] "%d paket"
-#: steps_gtk.pm:588 steps_interactive.pm:782 steps_list.pm:43
+#: steps_gtk.pm:591 steps_interactive.pm:783 steps_list.pm:43
#, c-format
msgid "Summary"
msgstr "Sammanfattning"
-#: steps_gtk.pm:605
+#: steps_gtk.pm:608
#, c-format
msgid "Configure"
msgstr "Konfigurera"
-#: steps_gtk.pm:622 steps_interactive.pm:778 steps_interactive.pm:934
+#: steps_gtk.pm:625 steps_interactive.pm:779 steps_interactive.pm:935
#, c-format
msgid "not configured"
msgstr "Inte inställt"
-#: steps_gtk.pm:658 steps_interactive.pm:278
+#: steps_gtk.pm:661 steps_interactive.pm:278
#, c-format
msgid ""
"The following installation media have been found.\n"
@@ -900,7 +910,7 @@ msgstr ""
"Följande installationskällor har hittats.\n"
"Du kan välja bort dom du inte önskar använda dig av."
-#: steps_gtk.pm:667 steps_interactive.pm:284
+#: steps_gtk.pm:670 steps_interactive.pm:284
#, c-format
msgid ""
"You have the option to copy the contents of the CDs onto the hard drive "
@@ -913,7 +923,7 @@ msgstr ""
"Installationen kommer att fortsätta från hårddisken och paketen kommer att "
"fortsätta vara tillgängliga när systemet är färdiginstallerat."
-#: steps_gtk.pm:669 steps_interactive.pm:286
+#: steps_gtk.pm:672 steps_interactive.pm:286
#, c-format
msgid "Copy whole CDs"
msgstr "Kopiera hela CD skivor"
@@ -1186,40 +1196,40 @@ msgstr ""
"\n"
"Vill du installera uppdateringarna?"
-#: steps_interactive.pm:713
+#: steps_interactive.pm:714
#, c-format
msgid "Contacting the mirror to get the list of available packages..."
msgstr ""
"Kontaktar webbplatsen för att hämta en lista över tillgängliga paket..."
-#: steps_interactive.pm:719
+#: steps_interactive.pm:720
#, c-format
msgid "Unable to contact mirror %s"
msgstr "Kan inte kontakta spegeln %s"
#. -PO: example: lilo-graphic on /dev/hda1
-#: steps_interactive.pm:825
+#: steps_interactive.pm:826
#, c-format
msgid "%s on %s"
msgstr "%s på %s"
-#: steps_interactive.pm:859 steps_interactive.pm:866 steps_interactive.pm:880
-#: steps_interactive.pm:898 steps_interactive.pm:913
+#: steps_interactive.pm:860 steps_interactive.pm:867 steps_interactive.pm:881
+#: steps_interactive.pm:899 steps_interactive.pm:914
#, c-format
msgid "Hardware"
msgstr "Hårdvara"
-#: steps_interactive.pm:881 steps_interactive.pm:899
+#: steps_interactive.pm:882 steps_interactive.pm:900
#, c-format
msgid "Sound card"
msgstr "Ljudkort"
-#: steps_interactive.pm:902
+#: steps_interactive.pm:903
#, c-format
msgid "Do you have an ISA sound card?"
msgstr "Har du ett ISA-ljudkort?"
-#: steps_interactive.pm:904
+#: steps_interactive.pm:905
#, c-format
msgid ""
"Run \"alsaconf\" or \"sndconfig\" after installation to configure your sound "
@@ -1228,62 +1238,62 @@ msgstr ""
"Kör \"alsaconf\" eller \"sndconfig\" efter installationen för att "
"konfigurera ljudkortet."
-#: steps_interactive.pm:906
+#: steps_interactive.pm:907
#, c-format
msgid "No sound card detected. Try \"harddrake\" after installation"
msgstr "Inget ljudkort hittades. Prova \"harddrake\" efter installationen."
-#: steps_interactive.pm:914
+#: steps_interactive.pm:915
#, c-format
msgid "Graphical interface"
msgstr "Grafiskt gränssnitt"
-#: steps_interactive.pm:921 steps_interactive.pm:932
+#: steps_interactive.pm:922 steps_interactive.pm:933
#, c-format
msgid "Network & Internet"
msgstr "Nätverk & Internet"
-#: steps_interactive.pm:933
+#: steps_interactive.pm:934
#, c-format
msgid "Proxies"
msgstr "Proxyservrar"
-#: steps_interactive.pm:934
+#: steps_interactive.pm:935
#, c-format
msgid "configured"
msgstr "konfigurerad"
-#: steps_interactive.pm:944
+#: steps_interactive.pm:945
#, c-format
msgid "Security Level"
msgstr "Säkerhetsnivå:"
-#: steps_interactive.pm:963
+#: steps_interactive.pm:964
#, c-format
msgid "Firewall"
msgstr "Brandvägg"
-#: steps_interactive.pm:967
+#: steps_interactive.pm:968
#, c-format
msgid "activated"
msgstr "aktiverad"
-#: steps_interactive.pm:967
+#: steps_interactive.pm:968
#, c-format
msgid "disabled"
msgstr "inaktiverad"
-#: steps_interactive.pm:981
+#: steps_interactive.pm:982
#, c-format
msgid "You have not configured X. Are you sure you really want this?"
msgstr "Du har inte konfigurerat X. Är du säker på att du vill göra detta?"
-#: steps_interactive.pm:1008
+#: steps_interactive.pm:1009
#, c-format
msgid "Preparing bootloader..."
msgstr "Förbereder starthanterare..."
-#: steps_interactive.pm:1018
+#: steps_interactive.pm:1019
#, c-format
msgid ""
"You appear to have an OldWorld or Unknown machine, the yaboot bootloader "
@@ -1296,12 +1306,12 @@ msgstr ""
"eller något liknande för att starta datorn. Kernelargumentet för roten är "
"root=%s"
-#: steps_interactive.pm:1024
+#: steps_interactive.pm:1025
#, c-format
msgid "Do you want to use aboot?"
msgstr "Vill du använda aboot?"
-#: steps_interactive.pm:1027
+#: steps_interactive.pm:1028
#, c-format
msgid ""
"Error installing aboot, \n"
@@ -1310,7 +1320,7 @@ msgstr ""
"Fel vid installationen av aboot.\n"
"Vill du försöka ändå, fast det kan förstöra den första partitionen?"
-#: steps_interactive.pm:1039
+#: steps_interactive.pm:1040
#, c-format
msgid ""
"In this security level, access to the files in the Windows partition is "
@@ -1319,17 +1329,17 @@ msgstr ""
"På den här säkerhetsnivån är tillgång till Windowspartitionen förbehållen "
"administratören."
-#: steps_interactive.pm:1071
+#: steps_interactive.pm:1072
#, c-format
msgid "Insert a blank floppy in drive %s"
msgstr "Sätt in en tom diskett i diskettenhet %s"
-#: steps_interactive.pm:1073
+#: steps_interactive.pm:1074
#, c-format
msgid "Creating auto install floppy..."
msgstr "Skapar automatisk installationsdiskett"
-#: steps_interactive.pm:1084
+#: steps_interactive.pm:1085
#, c-format
msgid ""
"Some steps are not completed.\n"
@@ -1340,22 +1350,22 @@ msgstr ""
"\n"
"Vill du verkligen avbryta nu?"
-#: steps_interactive.pm:1094
+#: steps_interactive.pm:1095
#, c-format
msgid "Congratulations"
msgstr "Gratulerar"
-#: steps_interactive.pm:1098
+#: steps_interactive.pm:1099
#, c-format
msgid "Reboot"
msgstr "Starta om"
-#: steps_interactive.pm:1102 steps_interactive.pm:1103
+#: steps_interactive.pm:1103 steps_interactive.pm:1104
#, c-format
msgid "Generate auto install floppy"
msgstr "Genererar automatisk installationsdiskett"
-#: steps_interactive.pm:1104
+#: steps_interactive.pm:1105
#, c-format
msgid ""
"The auto install can be fully automated if wanted,\n"
@@ -1370,17 +1380,17 @@ msgstr ""
"\n"
"Du kan tänkas vilja köra samma installation i repris.\n"
-#: steps_interactive.pm:1109
+#: steps_interactive.pm:1110
#, c-format
msgid "Replay"
msgstr "Repris"
-#: steps_interactive.pm:1109
+#: steps_interactive.pm:1110
#, c-format
msgid "Automated"
msgstr "Automatiserad"
-#: steps_interactive.pm:1112
+#: steps_interactive.pm:1113
#, c-format
msgid "Save packages selection"
msgstr "Spara paketval"
my $dir = "/usr/X11R6/bin"; my $prog = /Xsun|Xpmac|XFree86/ ? $_ : "XF86_$_"; unless (-x "$dir/$prog") { unlink $_ foreach glob_("$dir/X*"); install_any::getAndSaveFile("Mandrake/mdkinst$dir/$prog", "$dir/$prog") or die "failed to get server $prog: $!"; chmod 0755, "$dir/$prog"; } if (/FB/) { !$o->{vga16} && $o->{allowFB} or next; $o->{allowFB} = &$launchX($prog) #- keep in mind FB is used. and goto OK; } else { $o->{vga16} = 1 if /VGA16/; &$launchX($prog) and goto OK; } } return undef; } } OK: install_gtk::init_gtk(); install_gtk::init_sizes(); install_gtk::install_theme($o, install_gtk::default_theme($o)); install_gtk::create_logo_window($o); $ugtk2::force_center = [ $::rootwidth - $::windowwidth, $::logoheight, $::windowwidth, $::windowheight ]; $o = (bless {}, ref $type || $type)->SUPER::new($o); $o->interactive::gtk::new; $o; } sub enteringStep { my ($o, $step) = @_; printf "Entering step `%s'\n", $o->{steps}{$step}{text}; $o->SUPER::enteringStep($step); install_gtk::create_steps_window($o); # install_gtk::create_help_window($o); #- HACK: without this it doesn't work (reaches step doPartitionDisks then fail) $o->set_help($o->{step}); } sub leavingStep { my ($o, $step) = @_; $o->SUPER::leavingStep($step); } sub charsetChanged { my ($o) = @_; Gtk2->set_locale; install_gtk::install_theme($o); install_gtk::create_steps_window($o); } #-###################################################################################### #- Steps Functions #-###################################################################################### sub selectLanguage { my ($o, $first_time) = @_; $o->SUPER::selectLanguage; $o->ask_warn('', N("Your system is low on resources. You may have some problem installing Mandrake Linux. If that occurs, you can try a text install instead. For this, press `F1' when booting on CDROM, then enter `text'.")) if $first_time && availableRamMB() < 60; # 60MB } #------------------------------------------------------------------------------ sub selectMouse { my ($o, $force) = @_; my %old = %{$o->{mouse}}; $o->SUPER::selectMouse($force) or return; my $mouse = $o->{mouse}; $mouse->{type} eq 'none' || $old{type} eq $mouse->{type} && $old{name} eq $mouse->{name} && $old{device} eq $mouse->{device} && !$force and return; local $ugtk2::grab = 1; #- unsure a crazy mouse don't go wild clicking everywhere while (1) { my $xId = mouse::xmouse2xId($mouse->{XMOUSETYPE}); my $x_protocol_changed = $old{device} ne $mouse->{device} || $xId != mouse::xmouse2xId($old{XMOUSETYPE}); if ($x_protocol_changed) { log::l("telling X server to use another mouse"); eval { modules::load('serial') } if $mouse->{device} =~ /ttyS/; if (!$::testing) { devices::make($mouse->{device}); symlinkf($mouse->{device}, "/dev/mouse"); c::setMouseLive($ENV{DISPLAY}, $xId, $mouse->{nbuttons} < 3); } } mouse::test_mouse_install($mouse, $x_protocol_changed) and return; %old = %$mouse; $o->SUPER::selectMouse(1); $mouse = $o->{mouse}; } } sub reallyChooseGroups { my ($o, $size_to_display, $individual, $val) = @_; my $w = ugtk2->new(''); my $tips = Gtk2::Tooltips->new; my $w_size = Gtk2::Label->new(&$size_to_display); my $entry = sub { my ($e) = @_; my $text = translate($o->{compssUsers}{$e}{label}); my $help = translate($o->{compssUsers}{$e}{descr}); my $check = Gtk2::CheckButton->new($text); $check->set_active($val->{$e}); $check->signal_connect(clicked => sub { $val->{$e} = $check->get_active; $w_size->set(&$size_to_display); }); gtkset_tip($tips, $check, $help); #gtkpack_(Gtk2::HBox->new(0, 0), 0, gtkpng($file), 1, $check); $check; }; my $entries_in_path = sub { my ($path) = @_; translate($path), map { $entry->($_) } grep { $o->{compssUsers}{$_}{path} eq $path } @{$o->{compssUsersSorted}}; }; gtkadd($w->{window}, gtkpack_($w->create_box_with_title(N("Package Group Selection")), 1, gtkpack_(Gtk2::VBox->new(0, 0), 1, gtkpack_(Gtk2::HBox->new(0, 0), $o->{meta_class} eq 'server' ? ( 1, gtkpack(Gtk2::VBox->new(0, 0), $entries_in_path->('Server'), ), 1, gtkpack(Gtk2::VBox->new(0, 0), $entries_in_path->('Graphical Environment'), '', $entries_in_path->('Development'), '', $entries_in_path->('Utilities'), ), ) : ( 1, gtkpack(Gtk2::VBox->new(0, 0), $entries_in_path->('Workstation'), '', $entry->('Development|Development'), $entry->('Development|Documentation'), $entry->('Development|LSB'), ), 0, gtkpack(Gtk2::VBox->new(0, 0), $entries_in_path->('Server'), '', $entries_in_path->('Graphical Environment'), ), ), )), 1, '', 0, gtkadd(Gtk2::HBox->new(0, 0), $w_size, if_($individual, do { my $check = Gtk2::CheckButton->new(N("Individual package selection")); $check->set_active($$individual); $check->signal_connect(clicked => sub { $$individual = $check->get_active }); $check; }), gtksignal_connect(Gtk2::Button->new(N("Next ->")), clicked => sub { Gtk2->main_quit }), ), ), ); $w->main; 1; } sub choosePackagesTree { my ($o, $packages, $limit_to_medium) = @_; my $available = install_any::getAvailableSpace($o); my $availableCorrected = pkgs::invCorrectSize($available / sqr(1024)) * sqr(1024); my $common; $common = { get_status => sub { my $size = pkgs::selectedSize($packages); N("Total size: %d / %d MB", pkgs::correctSize($size / sqr(1024)), $available / sqr(1024)); }, node_state => sub { my $p = pkgs::packageByName($packages, $_[0]) or return; pkgs::packageMedium($packages, $p)->{selected} or return; $p->flag_base and return 'base'; $p->flag_installed && !$p->flag_upgrade and return 'installed'; $p->flag_selected and return 'selected'; return 'unselected'; }, build_tree => sub { my ($add_node, $flat) = @_; if ($flat) { foreach (sort map { $_->name } grep { !$limit_to_medium || pkgs::packageMedium($packages, $_) == $limit_to_medium } @{$packages->{depslist}}) { $add_node->($_, undef); } } else { foreach my $root (@{$o->{compssUsersSorted}}) { my (%fl, @firstchoice, @others); #$fl{$_} = $o->{compssUsersChoice}{$_} foreach @{$o->{compssUsers}{$root}{flags}}; #- FEATURE:improve choce of packages... $fl{$_} = 1 foreach @{$o->{compssUsers}{$root}{flags}}; foreach my $p (@{$packages->{depslist}}) { !$limit_to_medium || pkgs::packageMedium($packages, $p) == $limit_to_medium or next; my @flags = $p->rflags; next if !($p->rate && any { any { !/^!/ && $fl{$_} } split('\|\|') } @flags); $p->rate >= 3 ? push(@firstchoice, $p->name) : push(@others, $p->name); } my $root2 = join('|', map { translate($_) } split('\|', $root)); $add_node->($_, $root2) foreach sort @firstchoice; $add_node->($_, $root2 . '|' . N("Other")) foreach sort @others; } } }, get_info => sub { my $p = pkgs::packageByName($packages, $_[0]) or return ''; pkgs::extractHeaders($o->{prefix}, [$p], $packages->{mediums}); my $imp = translate($pkgs::compssListDesc{$p->flag_base ? 5 : $p->rate}); my $info = $@ ? N("Bad package") : (N("Name: %s\n", $p->name) . N("Version: %s\n", $p->version . '-' . $p->release) . N("Size: %d KB\n", $p->size / 1024) . ($imp && N("Importance: %s\n", $imp)) . "\n" . formatLines(c::from_utf8($p->description))); return $info; }, toggle_nodes => sub { my $set_state = shift @_; my @n = map { pkgs::packageByName($packages, $_) } @_; my %l; my $isSelection = !$n[0]->flag_selected; foreach (@n) { #pkgs::togglePackageSelection($packages, $_, my $l = {}); #@l{grep {$l->{$_}} keys %$l} = (); pkgs::togglePackageSelection($packages, $_, \%l); } if (my @l = map { $packages->{depslist}[$_]->name } keys %l) { #- check for size before trying to select. my $size = pkgs::selectedSize($packages); foreach (@l) { my $p = pkgs::packageByName($packages, $_); $p->flag_selected or $size += $p->size; } if (pkgs::correctSize($size / sqr(1024)) > $available / sqr(1024)) { return $o->ask_warn('', N("You can't select this package as there is not enough space left to install it")); } @l > @n && $common->{state}{auto_deps} and $o->ask_okcancel('', [ $isSelection ? N("The following packages are going to be installed") : N("The following packages are going to be removed"), common::formatList(20, sort @l) ], 1) || return; if ($isSelection) { pkgs::selectPackage($packages, $_) foreach @n; } else { pkgs::unselectPackage($packages, $_) foreach @n; } foreach (@l) { my $p = pkgs::packageByName($packages, $_); $set_state->($_, $p->flag_selected ? 'selected' : 'unselected'); } } else { $o->ask_warn('', N("You can't select/unselect this package")); } }, grep_allowed_to_toggle => sub { grep { $_ ne N("Other") && !pkgs::packageByName($packages, $_)->flag_base } @_; }, grep_unselected => sub { grep { !pkgs::packageByName($packages, $_)->flag_selected } @_; }, check_interactive_to_toggle => sub { my $p = pkgs::packageByName($packages, $_[0]) or return; if ($p->flag_base) { $o->ask_warn('', N("This is a mandatory package, it can't be unselected")); } elsif ($p->flag_installed && !$p->flag_upgrade) { $o->ask_warn('', N("You can't unselect this package. It is already installed")); } elsif ($p->flag_selected && $p->flag_installed) { if ($::expert) { $o->ask_yesorno('', N("This package must be upgraded.\nAre you sure you want to deselect it?")) or return; return 1; } else { $o->ask_warn('', N("You can't unselect this package. It must be upgraded")); } } else { return 1 } return; }, auto_deps => N("Show automatically selected packages"), ok => N("Install"), cancel => $limit_to_medium && N("Cancel"), icons => [ { icon => 'floppy', help => N("Load/Save on floppy"), wait_message => N("Updating package selection"), code => sub { $o->loadSavePackagesOnFloppy($packages); 1 }, }, if_(0, { icon => 'feather', help => N("Minimal install"), code => sub { install_any::unselectMostPackages($o); pkgs::setSelectedFromCompssList($packages, { SYSTEM => 1 }, 4, $availableCorrected); 1; } }), ], state => { auto_deps => 1, flat => $limit_to_medium, }, }; $o->set_help('choosePackagesTree'); $o->ask_browse_tree_info('', N("Choose the packages you want to install"), $common); } #------------------------------------------------------------------------------ sub beforeInstallPackages { my ($o) = @_; $o->SUPER::beforeInstallPackages; install_any::copy_advertising($o); } #------------------------------------------------------------------------------ sub installPackages { my ($o, $packages) = @_; my ($current_total_size, $last_size, $nb, $total_size, $start_time, $last_dtime, $_trans_progress_total); my $w = ugtk2->new(N("Installing")); $w->sync; my $text = Gtk2::Label->new; my ($advertising, $change_time, $i); my $show_advertising if 0; $show_advertising = to_bool(@install_any::advertising_images) if !defined $show_advertising; my ($msg, $msg_time_remaining, $msg_time_total) = map { Gtk2::Label->new($_) } '', (N("Estimating")) x 2; my ($progress, $progress_total) = map { Gtk2::ProgressBar->new } (1..2); gtkadd($w->{window}, my $box = Gtk2::VBox->new(0,10)); $box->pack_end(gtkshow(gtkpack(gtkset_size_request(Gtk2::VBox->new(0,5), $::windowwidth * 0.6, -1), $msg, $progress, create_packtable({}, [N("Time remaining "), $msg_time_remaining], # [N("Total time "), $msg_time_total], ), $text, $progress_total, gtkadd(create_hbox(), my $cancel = Gtk2::Button->new(N("Cancel")), my $details = Gtk2::Button->new(N("Details")), ), )), 0, 1, 0); $details->hide if !@install_any::advertising_images; $w->sync; $msg->set(N("Please wait, preparing installation...")); gtkset_mousecursor_normal($cancel->window); gtkset_mousecursor_normal($details->window); my $advertize = sub { @install_any::advertising_images or return; $show_advertising ? $_->hide : $_->show foreach $msg, $progress, $text; gtkdestroy($advertising) if $advertising; if ($show_advertising && $_[0]) { $change_time = time(); my $f = $install_any::advertising_images[$i++ % @install_any::advertising_images]; log::l("advertising $f"); my $pl = $f; $pl =~ s/\.png$/\.pl/; my $icon_name = $f; $icon_name =~ s/\.png$/_icon\.png/; my ($draw_text, $width, $height, @data, $icon, $icon_dx, $icon_dy, $icon_px); -e $pl and $draw_text = 1; eval(cat_($pl)) if $draw_text; my $pix = gtkcreate_pixbuf($f); $icon_px = gtkcreate_pixbuf($icon_name) if $icon; my $dbl_area; my $darea = Gtk2::DrawingArea->new; gtkpack($box, $advertising = !$draw_text ? gtkcreate_img($f) : gtksignal_connect(gtkset_size_request($darea, $width, $height), expose_event => sub { my (undef, undef, $dx, $dy) = $darea->allocation->values; if (!defined($dbl_area)) { $darea->window->draw_rectangle($darea->style->bg_gc('active'), 1, 0, 0, $dx, $dy); $pix->render_to_drawable($darea->window, $darea->style->bg_gc('normal'), 0, 0, ($dx-$width)/2, 0, $width, $height, 'none', 0, 0); my $yicon = 0; my $decy = 0; my $first = 1; foreach (@data) { my ($text, $x, $y, $area_width, $area_height, $bold) = @$_; my ($width, $_height, $lines, $widths, $heights, $_ascents, $_descents) = get_text_coord($text, $darea, $area_width, $area_height, 1, 0, 1, 1); if ($first && $icon) { my $iconx = ($dx-$width)/2 + $x + ${$widths}[0] - $icon_dx; my $icony = $y + ${$heights}[0] - $icon_dy/2; $icony > 0 or $icony = 0; $icon_px->render_to_drawable($darea->window, $darea->style->bg_gc('normal'), 0, 0, $iconx, $icony, $icon_dx, $icon_dy, 'none', 0, 0); $yicon = $icony + $icon_dy; } my $i = 0; $yicon > $y + ${$heights}[0] and $decy = $yicon - ($y + ${$heights}[$i]); foreach (@{$lines}) { my $layout = $darea->create_pango_layout($_); my $draw_lay = sub { my ($gc, $decx, $decy) = @_; $darea->window->draw_layout($gc, ($dx-$width)/2 + $x + ${$widths}[$i] + $decx, ($first ? 0 : $decy) + $y + ${$heights}[$i] + $decy, $layout); }; $bold and $draw_lay->($darea->style->black_gc, 1, 1); $draw_lay->($darea->style->white_gc, 0, 0); $layout->unref; $i++; } $first = 0; } } })); } else { $advertising = undef; } }; $cancel->signal_connect(clicked => sub { $pkgs::cancel_install = 1 }); $details->signal_connect(clicked => sub { invbool \$show_advertising; $advertize->(1); }); $advertize->(); my $oldInstallCallback = \&pkgs::installCallback; local *pkgs::installCallback = sub { my ($data, $type, $id, $subtype, $amount, $total) = @_; if ($type eq 'user' && $subtype eq 'install') { #- $amount and $total are used to return number of package and total size. $nb = $amount; $total_size = $total; $current_total_size = 0; $start_time = time(); $msg->set(N("%d packages", $nb)); $w->flush; } elsif ($type eq 'inst' && $subtype eq 'start') { $progress->set_fraction(0); my $p = $data->{depslist}[$id]; $msg->set(N("Installing package %s", $p->name)); $current_total_size += $last_size; $last_size = $p->size; $text->set((split /\n/, c::from_utf8($p->summary))[0] || ''); $advertize->(1) if $show_advertising && $total_size > 20_000_000 && time() - $change_time > 20; $w->flush; } elsif ($type eq 'inst' && $subtype eq 'progress') { $progress->set_fraction($total ? $amount / $total : 0); my $dtime = time() - $start_time; my $ratio = $total_size == 0 ? 0 : pkgs::size2time($current_total_size + $amount, $total_size) / pkgs::size2time($total_size, $total_size); $ratio >= 1 and $ratio = 1; my $total_time = $ratio ? $dtime / $ratio : time(); $progress_total->set_fraction($ratio); if ($dtime != $last_dtime && $current_total_size > 80_000_000) { $msg_time_total->set(formatTime(10 * round($total_time / 10) + 10)); #- $msg_time_total->set(formatTimeRaw($total_time) . " " . formatTimeRaw($dtime / $ratio2)); $msg_time_remaining->set(formatTime(10 * round(max($total_time - $dtime, 0) / 10) + 10)); $last_dtime = $dtime; } $w->flush; } else { goto $oldInstallCallback } }; #- the modification is not local as the box should be living for other package installation. undef *install_any::changeMedium; *install_any::changeMedium = sub { my ($method, $medium) = @_; #- if not using a cdrom medium, always abort. if ($method eq 'cdrom' && !$::oem) { local $ugtk2::grab = 1; my $name = pkgs::mediumDescr($o->{packages}, $medium); local $| = 1; print "\a"; my $time = time(); my $r = $name !~ /commercial/i || ($o->{useless_thing_accepted2} ||= $o->ask_from_list_('', formatAlaTeX(install_messages::com_license()), [ N_("Accept"), N_("Refuse") ], "Accept") eq "Accept"); $r &&= $o->ask_okcancel('', N("Change your Cd-Rom! Please insert the Cd-Rom labelled \"%s\" in your drive and press Ok when done. If you don't have it, press Cancel to avoid installation from this Cd-Rom.", $name), 1); #- add the elapsed time (otherwise the predicted time will be rubbish) $start_time += time() - $time; return $r; } }; my $install_result; local $ugtk2::pop_it = 1; catch_cdie { $install_result = $o->install_steps::installPackages($packages) } sub { if ($@ =~ /^error ordering package list: (.*)/) { $o->ask_yesorno('', [ N("There was an error ordering packages:"), $1, N("Go on anyway?") ], 1) and return 1; ${$_[0]} = "already displayed"; } elsif ($@ =~ /^error installing package list: (.*)/) { $o->ask_yesorno('', [ N("There was an error installing packages:"), $1, N("Go on anyway?") ], 1) and return 1; ${$_[0]} = "already displayed"; } 0; }; if ($pkgs::cancel_install) { $pkgs::cancel_install = 0; die 'already displayed'; } $w->destroy; $install_result; } sub set_help { my ($o, @l) = @_; my @l2 = map {