summaryrefslogtreecommitdiffstats
path: root/perl-install/install_steps_gtk.pm
diff options
context:
space:
mode:
Diffstat (limited to 'perl-install/install_steps_gtk.pm')
-rw-r--r--perl-install/install_steps_gtk.pm120
1 files changed, 44 insertions, 76 deletions
diff --git a/perl-install/install_steps_gtk.pm b/perl-install/install_steps_gtk.pm
index fad541525..7e826c514 100644
--- a/perl-install/install_steps_gtk.pm
+++ b/perl-install/install_steps_gtk.pm
@@ -46,23 +46,30 @@ sub new($$) {
if ($server eq 'Xnest') {
push @options, '-ac', '-geometry', $o->{vga} || ($o->{vga16} ? '640x480' : '800x600');
} elsif ($::globetrotter || !$::move) {
- install_gtk::createXconf($f, @{$o->{mouse}}{"XMOUSETYPE", "device"}, $o->{mouse}{wacom}[0], $Driver);
+ #- use alternate mouse in install if mouse is unsafe or needs some specific module (e.g. synaptics)
+ my $mouse = is_empty_hash_ref($o->{mouse}{alternate_install}) ? $o->{mouse} : $o->{mouse}{alternate_install};
+ install_gtk::createXconf($f, @$mouse{"XMOUSETYPE", "device"}, $o->{mouse}{wacom}[0], $Driver);
- push @options, if_(!$::globetrotter, '-kb'), '-allowMouseOpenFail', '-xf86config', $f if arch() !~ /^sparc/ && arch() ne 'ppc';
+ push @options, if_(!$::globetrotter, '-kb'), '-allowMouseOpenFail', '-xf86config', $f if arch() !~ /^sparc/;
push @options, 'tty7', '-dpms', '-s', '240';
- #- old weird servers: Xpmac and Xsun
- push @options, cat_('/proc/cmdline') !~ /ofonly/ ? ('-mode', '17', '-depth', '32') : '-mach64' if $server =~ /Xpmac/;
- push @options, '-fp', '/usr/X11R6/lib/X11/fonts:unscaled' if $server =~ /Xsun|Xpmac/;
+ #- old weird servers: Xsun
+ push @options, '-fp', '/usr/X11R6/lib/X11/fonts:unscaled' if $server =~ /Xsun/;
}
if (!fork()) {
c::setsid();
exec $server, @options or c::_exit(1);
}
+
+ #- wait for the server to start
+ foreach (1..5) {
+ sleep 1;
+ last if fuzzy_pidofs(qr/\b$server\b/);
+ log::l("$server still not running, trying again");
+ }
my $nb;
foreach (1..60) {
- sleep 1;
log::l("Server died"), return 0 if !fuzzy_pidofs(qr/\b$server\b/);
$nb++ if xf86misc::main::Xtest($wanted_DISPLAY);
if ($nb > 2) { #- one succeeded test is not enough :-(
@@ -70,6 +77,7 @@ sub new($$) {
log::l("AFAIK X server is up");
return 1;
}
+ sleep 1;
}
log::l("Timeout!!");
0;
@@ -96,8 +104,6 @@ sub new($$) {
require Xconfig::card;
my ($card) = Xconfig::card::probe();
@servers = map { if_($_, "Driver:$_") } $card && $card->{Driver}, 'fbdev';
- } elsif (arch() eq "ppc") {
- @servers = qw(Xpmac);
}
if (($::move || $::globetrotter) && !$::testing) {
@@ -111,10 +117,10 @@ sub new($$) {
foreach (@servers) {
log::l("Trying with server $_");
my $dir = "/usr/X11R6/bin";
- my ($prog, $Driver) = /Driver:(.*)/ ? ('Xorg', $1) : /Xsun|Xpmac|Xnest|^X_move$/ ? $_ : "XF86_$_";
+ my ($prog, $Driver) = /Driver:(.*)/ ? ('Xorg', $1) : /Xsun|Xnest|^X_move$/ ? $_ : "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: $!";
+ install_any::getAndSaveFile("install/stage2/live$dir/$prog", "$dir/$prog") or die "failed to get server $prog: $!";
chmod 0755, "$dir/$prog";
}
if (/FB/i) {
@@ -203,7 +209,7 @@ sub selectMouse {
}
sub reallyChooseGroups {
- my ($o, $size_to_display, $individual, $val) = @_;
+ my ($o, $size_to_display, $individual, $_compssUsers) = @_;
my $w = ugtk2->new('');
my $tips = Gtk2::Tooltips->new;
@@ -211,60 +217,24 @@ sub reallyChooseGroups {
my $entry = sub {
my ($e) = @_;
- my $text = translate($o->{compssUsers}{$e}{label});
- my $help = translate($o->{compssUsers}{$e}{descr});
+ my $text = translate($e->{label});
+ my $help = translate($e->{descr});
my $check = Gtk2::CheckButton->new($text);
- $check->set_active($val->{$e});
+ $check->set_active($e->{selected});
$check->signal_connect(clicked => sub {
- $val->{$e} = $check->get_active;
+ $e->{selected} = $check->get_active;
$w_size->set_label(&$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}};
- };
+ #- when restarting this step, it might be necessary to reload the compssUsers.pl (bug 11558). kludgy.
+ if (!ref $o->{gtk_display_compssUsers}) { install_any::load_rate_files($o) }
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->('Workstation'),
- '',
- $entries_in_path->('Server'),
- ),
- 1, gtkpack(Gtk2::VBox->new(0, 0),
- $entries_in_path->('Graphical Environment'),
- '',
- $entries_in_path->('Development'),
- '',
- $entries_in_path->('Utilities'),
- ),
- ) : $o->{meta_class} eq 'desktop' ? (
- 1, gtkpack(Gtk2::VBox->new(0, 0),
- $entries_in_path->('Workstation'),
- ),
- ) : (
- 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, '',
+ 1, $o->{gtk_display_compssUsers}->($entry),
+ 1, '',
0, gtkadd(Gtk2::HBox->new(0, 0),
gtksignal_connect(Gtk2::Button->new(N("Help")), clicked => $o->interactive_help_sub_display_id('choosePackages')),
$w_size,
@@ -312,10 +282,9 @@ sub choosePackagesTree {
$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 $root (@{$o->{compssUsers}}) {
+ my (@firstchoice, @others);
+ my %fl = map { $_ => 1 } @{$root->{flags}};
foreach my $p (@{$packages->{depslist}}) {
!$o_limit_medium || pkgs::packageMedium($packages, $p) == $o_limit_medium or next;
my @flags = $p->rflags;
@@ -324,7 +293,7 @@ sub choosePackagesTree {
push(@firstchoice, $p->name) :
push(@others, $p->name);
}
- my $root2 = join('|', map { translate($_) } split('\|', $root));
+ my $root2 = translate($root->{path}) . '|' . translate($root->{label});
$add_node->($_, $root2) foreach sort @firstchoice;
$add_node->($_, $root2 . '|' . N("Other")) foreach sort @others;
}
@@ -474,33 +443,38 @@ sub installPackages {
my ($advertising, $change_time, $i);
my $show_advertising if 0;
$show_advertising = to_bool(@install_any::advertising_images) if !defined $show_advertising;
- my $detail_or_not = sub { $show_advertising ? N("Details") : N("No details") };
- my ($msg, $msg_time_remaining, $msg_time_total) = map { Gtk2::Label->new($_) } '', (N("Estimating")) x 2;
+
+ my ($msg, $msg_time_remaining) = map { Gtk2::Label->new($_) } '', N("Estimating");
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(Gtk2::VBox->new(0,5),
$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($detail_or_not->()),
+ my $details = Gtk2::Button->new(''),
),
)), 0, 1, 0);
$details->hide if !@install_any::advertising_images;
$w->sync;
$msg->set_label(N("Please wait, preparing installation..."));
- gtkset_mousecursor_normal($cancel->window);
- gtkset_mousecursor_normal($details->window);
+ foreach ($cancel, $details) {
+ gtkset_mousecursor_normal($_->window);
+ }
my $advertize = sub {
+ my ($update) = @_;
@install_any::advertising_images or return;
- $show_advertising ? $_->hide : $_->show foreach $msg, $progress, $text;
+ foreach ($msg, $progress, $text) {
+ $show_advertising ? $_->hide : $_->show;
+ }
+ $details->set_label($show_advertising ? N("Details") : N("No details"));
+
gtkdestroy($advertising) if $advertising;
- if ($show_advertising && $_[0]) {
+ if ($show_advertising && $update) {
$change_time = time();
my $f = $install_any::advertising_images[$i++ % @install_any::advertising_images];
log::l("advertising $f");
@@ -510,13 +484,11 @@ sub installPackages {
-e $pl and $draw_text = 1;
eval(cat_($pl)) if $draw_text;
my $pix = gtkcreate_pixbuf($f);
- 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);
@@ -531,7 +503,6 @@ sub installPackages {
$draw_lay->($darea->style->black_gc, 0);
$line->{options}{bold} and $draw_lay->($darea->style->black_gc, 1);
}
- }
}));
} else {
$advertising = undef;
@@ -541,10 +512,9 @@ sub installPackages {
$cancel->signal_connect(clicked => sub { $pkgs::cancel_install = 1 });
$details->signal_connect(clicked => sub {
invbool \$show_advertising;
- $details->set_label($detail_or_not->());
$advertize->(1);
});
- $advertize->();
+ $advertize->(0);
my $oldInstallCallback = \&pkgs::installCallback;
local *pkgs::installCallback = sub {
@@ -577,8 +547,6 @@ sub installPackages {
$progress_total->set_fraction($ratio);
if ($dtime != $last_dtime && $current_total_size > 80_000_000) {
- $msg_time_total->set_label(formatTime(10 * round($total_time / 10) + 10));
-#- $msg_time_total->set_label(formatTimeRaw($total_time) . " " . formatTimeRaw($dtime / $ratio2));
$msg_time_remaining->set_label(formatTime(10 * round(max($total_time - $dtime, 0) / 10) + 10));
$last_dtime = $dtime;
}
@@ -591,7 +559,7 @@ sub installPackages {
my ($method, $medium) = @_;
#- if not using a cdrom medium or an iso image, always abort.
- return unless install_any::method_allows_medium_change($method) && !$::oem;
+ return if !install_any::method_allows_medium_change($method) || $::oem;
my $name = pkgs::mediumDescr($o->{packages}, $medium);
local $| = 1; print "\a";