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.pm405
1 files changed, 225 insertions, 180 deletions
diff --git a/perl-install/install/steps_gtk.pm b/perl-install/install/steps_gtk.pm
index 8532ee616..fa34c947c 100644
--- a/perl-install/install/steps_gtk.pm
+++ b/perl-install/install/steps_gtk.pm
@@ -1,4 +1,4 @@
-package install::steps_gtk; # $Id$
+package install::steps_gtk;
use diagnostics;
use strict;
@@ -15,8 +15,8 @@ use install::steps_interactive;
use interactive::gtk;
use xf86misc::main;
use common;
-use mygtk2;
-use ugtk2 qw(:helpers :wrappers :create);
+use mygtk3;
+use ugtk3 qw(:helpers :wrappers :create);
use devices;
use modules;
use install::gtk;
@@ -36,113 +36,126 @@ sub new($$) {
if (!$::local_install &&
($::testing ? $ENV{DISPLAY} ne $wanted_DISPLAY : $ENV{DISPLAY} =~ /^:\d/)) { #- is the display local or distant?
- my $f = "/tmp/Xconf";
- if (!$::testing) {
- devices::make("/dev/kbd");
- }
-
- #- /tmp is mostly tmpfs, but not fully, since it doesn't allow: mount --bind /tmp/.X11-unix /mnt/tmp/.X11-unix
- mkdir '/tmp/.X11-unix';
- run_program::run('mount', '-t', 'tmpfs', 'none', '/tmp/.X11-unix');
-
- my $launchX = sub {
- my ($server, $Driver) = @_;
-
- mkdir '/var/log' if !-d '/var/log';
-
- my @options = $wanted_DISPLAY;
- if ($server eq 'Xnest') {
- push @options, '-ac', '-geometry', $o->{vga} || ($o->{vga16} ? '640x480' : '800x600');
- } else {
- install::gtk::createXconf($f, @{$o->{mouse}}{'Protocol', 'device'}, $o->{mouse}{wacom}[0], $Driver);
-
- push @options, '-allowMouseOpenFail', '-xf86config', $f if arch() !~ /^sparc/;
- push @options, 'vt7', '-dpi', '75';
- push @options, '-nolisten', 'tcp';
-
- #- old weird servers: Xsun
- push @options, '-fp', '/usr/share/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;
- my $start_time = time();
- foreach (1..60) {
- log::l("waiting for the server to start ($_ $nb)");
- 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 :-(
- log::l("AFAIK X server is up");
- return 1;
- }
- time() - $start_time < 60 or last;
- time() - $start_time > 8 and print N("Xorg server is slow to start. Please wait..."), "\n";
- sleep 1;
- }
- log::l("Timeout!!");
- 0;
- };
- my @servers = qw(Driver:fbdev Driver:vesa); #-)
- if ($::testing) {
- @servers = 'Xnest';
- } elsif (arch() =~ /ia64/) {
- require Xconfig::card;
- my ($card) = Xconfig::card::probe();
- @servers = map { if_($_, "Driver:$_") } $card && $card->{Driver}, 'fbdev';
- } elsif (arch() =~ /i.86/) {
- require Xconfig::card;
- my ($card) = Xconfig::card::probe();
- # early i810 do not support VESA:
- undef @servers if $card && $card->{card_name} eq 'i810';
- log::l("graphical installer not supported on early i810");
- }
-
- foreach (@servers) {
- log::l("Trying with server $_");
- my ($prog, $Driver) = /Driver:(.*)/ ? ('Xorg', $1) : /Xsun|Xnest|^X_move$/ ? $_ : "XF86_$_";
- if (/FB/i) {
- !$o->{vga16} && $o->{allowFB} or next;
-
- $o->{allowFB} = &$launchX($prog, $Driver) #- keep in mind FB is used.
- and goto OK;
- } else {
- $o->{vga16} = 1 if /VGA16/;
- &$launchX($prog, $Driver) and goto OK;
- }
- }
- return undef;
+ _setup_and_start_X($o, $wanted_DISPLAY) or return;
}
- OK:
+
$ENV{DISPLAY} = $wanted_DISPLAY;
require detect_devices;
if (detect_devices::is_xbox()) {
modules::load('xpad');
run_program::run('xset', 'm', '1/8', '1');
}
- run_program::raw({ detach => 1 }, 'drakx-matchbox-window-manager');
+ if (detect_devices::is_qemu()) {
+ mkdir_p('/run/spice-vdagentd');
+ run_program::raw({ detach => 1 }, 'spice-vdagentd', '>', '/dev/null', '2>', '/dev/null', '-X');
+ run_program::raw({ detach => 1 }, 'spice-vdagent', '>', '/dev/null', '2>', '/dev/null');
+ }
+ any::disable_x_screensaver();
+ run_program::raw({ detach => 1 }, 'mutter', '--x11');
install::gtk::init_gtk($o);
install::gtk::init_sizes($o);
install::gtk::install_theme($o);
install::gtk::create_steps_window($o);
_may_configure_framebuffer_640x480($o);
- $ugtk2::grab = 1;
+ $ugtk3::grab = 1;
$o = (bless {}, ref($type) || $type)->SUPER::new($o);
$o->interactive::gtk::new;
+ gtkset_mousecursor_normal();
$o;
}
+sub _setup_and_start_X {
+ my ($o, $wanted_DISPLAY) = @_;
+ my $f = "/tmp/Xconf";
+
+ #- /tmp is mostly tmpfs, but not fully, since it doesn't allow: mount --bind /tmp/.X11-unix /mnt/tmp/.X11-unix
+ mkdir '/tmp/.X11-unix';
+ run_program::run('mount', '-t', 'tmpfs', 'none', '/tmp/.X11-unix');
+
+
+ my @servers = qw(Driver:fbdev Driver:vesa); #-)
+ if ($::testing) {
+ @servers = 'Xnest';
+ } elsif (is_uefi()) {
+ @servers = 'Driver:fbdev';
+ } elsif (arch() =~ /i.86/) {
+ require Xconfig::card;
+ my ($card) = Xconfig::card::probe();
+ if ($card && $card->{card_name} eq 'i810') {
+ # early i810 do not support VESA:
+ log::l("graphical installer not supported on early i810");
+ undef @servers;
+ }
+ }
+
+ foreach (@servers) {
+ log::l("Trying with server $_");
+ my ($prog, $Driver) = /Driver:(.*)/ ? ('Xorg', $1) : $_;
+ if (/FB/i) {
+ !$o->{vga16} && $o->{allowFB} or next;
+
+ $o->{allowFB} = _launchX($o, $f, $prog, $Driver, $wanted_DISPLAY) #- keep in mind FB is used.
+ and return 1;
+ } else {
+ $o->{vga16} = 1 if /VGA16/;
+ _launchX($o, $f, $prog, $Driver, $wanted_DISPLAY) and return 1;
+ }
+ }
+ return undef;
+}
+
+sub _launchX {
+ my ($o, $f, $server, $Driver, $wanted_DISPLAY) = @_;
+
+ mkdir '/var/log' if !-d '/var/log';
+
+ my @options = $wanted_DISPLAY;
+ if ($server eq 'Xnest') {
+ push @options, '-ac', '-geometry', $o->{vga} || ($o->{vga16} ? '640x480' : '1024x768');
+ } else {
+ install::gtk::createXconf($f, $Driver);
+
+ push @options, '-allowMouseOpenFail', '-xf86config', $f;
+ push @options, 'vt7', '-dpi', '75';
+ push @options, '-nolisten', 'tcp';
+ }
+
+ 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;
+ my $start_time = time();
+ foreach (1..60) {
+ log::l("waiting for the server to start ($_ $nb)");
+ if (!fuzzy_pidofs(qr/\b$server\b/)) {
+ log::l("Server died");
+ log::l(any::header("Xorg.log"), cat_("/var/log/Xorg.0.log"));
+ 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 :-(
+ log::l("AFAIK X server is up");
+ return 1;
+ }
+ time() - $start_time < 60 or last;
+ time() - $start_time > 8 and print N("Xorg server is slow to start. Please wait..."), "\n";
+ sleep 1;
+ }
+ log::l("Timeout!!");
+ log::l(any::header("Xorg.log"), cat_("/var/log/Xorg.0.log"));
+ 0;
+}
+
#- if we success to start X in 640x480 using driver "vesa",
#- we configure to use fb on installed system (to ensure splashy works)
#- (useful on 800x480 netbooks)
@@ -173,7 +186,7 @@ sub leavingStep {
sub charsetChanged {
my ($o) = @_;
- Gtk2->set_locale;
+ c::init_setlocale();
install::gtk::load_font($o);
install::gtk::create_steps_window($o);
}
@@ -201,8 +214,8 @@ sub selectLanguage {
$o->ask_warn('',
formatAlaTeX(N("Your system is low on resources. You may have some problem installing
-Mandriva Linux. If that occurs, you can try a text install instead. For this,
-press `F1' when booting on CDROM, then enter `text'."))) if availableRamMB() < 70; # 70MB
+%s. If that occurs, you can try a text install instead. For this,
+press `F1' when booting on CDROM, then enter `text'.", N("Mageia")))) if availableRamMB() < 70; # 70MB
}
@@ -227,14 +240,22 @@ sub selectMouse {
}
}
+sub setPackages {
+ my ($o) = @_;
+ my (undef, $old_title) = get_default_step_items();
+ set_default_step_items(N("Media Selection") || $old_title);
+ install::any::setPackages($o);
+ set_default_step_items($old_title);
+}
+
sub reallyChooseDesktop {
my ($o, $title, $message, $choices, $choice) = @_;
- my $w = ugtk2->new($title);
+ my $w = ugtk3->new($title);
my %tips = (
- KDE => N("Install Mandriva KDE Desktop"),
- GNOME => N("Install Mandriva GNOME Desktop"),
+ KDE => N("Install %s Plasma Desktop", N("Mageia")),
+ GNOME => N("Install %s GNOME Desktop", N("Mageia")),
Custom => N("Custom install"),
);
my $prev;
@@ -245,39 +266,38 @@ sub reallyChooseDesktop {
tip => $tips{$val->[0]},
toggled => sub { $choice = $val if $_[0]->get_active },
active => $choice == $val,
- $prev ? (group => $prev->get_group) : ());
+ if_($prev, join => $prev));
$prev->signal_connect(key_press_event => sub {
my (undef, $event) = @_;
if (!$event || ($event->keyval & 0x7f) == 0xd) {
- Gtk2->main_quit;
+ Gtk3->main_quit;
}
});
my $img = gtksignal_connect(
- gtkadd(Gtk2::EventBox->new, gtknew('Image', file => "desktop-$val->[0]")),
+ gtkadd(Gtk3::EventBox->new, gtknew('Image', file => "desktop-$val->[0]")),
'button-press-event' => sub {
my %title = (
- KDE => N("KDE Desktop"),
+ KDE => N("Plasma Desktop"),
GNOME => N("GNOME Desktop"),
Custom => N("Custom Desktop"),
);
- my $wp = ugtk2->new($title{$val->[0]}, transient => $w->{real_window}, modal => 1);
+ my $wp = ugtk3->new($title{$val->[0]}, transient => $w->{real_window}, modal => 1);
gtkadd($wp->{rwindow},
- gtkpack_(Gtk2::VBox->new,
+ gtknew('VBox', children => [
0, gtknew('Title2', label => N("Here's a preview of the '%s' desktop.", $val->[1]),
# workaround infamous 6 years old gnome bug #101968:
- width => mygtk2::get_label_width(),
+ width => mygtk3::get_label_width(),
),
1, gtknew('Image', file => "desktop-$val->[0]-big"),
- 0, Gtk2::HSeparator->new,
- 0, gtkpack(create_hbox('end'),
- gtknew('Button', text => N("Close"), clicked => sub { Gtk2->main_quit })
- ),
- ),
+ 0, gtknew('HSeparator'),
+ 0, gtknew('HButtonBox', layout => 'end', children_loose => [
+ gtknew('Button', text => N("Close"), clicked => sub { Gtk3->main_quit })
+ ]),
+ ]),
);
$wp->{real_window}->set_size_request(-1, -1);
$wp->{real_window}->grab_focus;
- $wp->{real_window}->grab_focus;
$wp->{real_window}->show_all;
$wp->main;
});
@@ -287,19 +307,17 @@ sub reallyChooseDesktop {
]);
} @$choices;
- ugtk2::gtkadd($w->{window},
+ ugtk3::gtkadd($w->{window},
gtknew('VBox', children => [
0, gtknew('Title2',
# workaround infamous 6 years old gnome bug #101968:
- width => mygtk2::get_label_width(), label => $message . ' ' .
+ width => mygtk3::get_label_width(), label => $message . ' ' .
N("Click on images in order to see a bigger preview")),
1, gtknew('HButtonBox', children_loose => \@l),
0, $w->create_okcancel(N("Next"), undef, '',
[ gtknew('Install_Button', text => N("Help"),
clicked => sub {
- interactive::gtk::display_help(
- $o,
- { interactive_help_id => 'choosePackages#choose-graphical-env' }, $w);
+ interactive::gtk::display_help($o, { interactive_help_id => 'chooseDesktop' });
}), undef, 1 ])
]));
$w->main;
@@ -310,37 +328,41 @@ sub reallyChooseDesktop {
sub reallyChooseGroups {
my ($o, $size_to_display, $individual, $_compssUsers) = @_;
- my $w = ugtk2->new(N("Package Group Selection"));
+ my $w = ugtk3->new(N("Package Group Selection"));
my $w_size = gtknew('Label_Left', text => &$size_to_display, padding => [ 0, 0 ]);
+ my @entries;
my $entry = sub {
my ($e) = @_;
- gtknew('CheckButton',
+ my $w = gtknew('CheckButton',
text => translate($e->{label}),
tip => translate($e->{descr}),
active_ref => \$e->{selected},
toggled => sub {
gtkset($w_size, text => &$size_to_display);
});
+ push @entries, $w;
+ $w;
};
#- 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) }
- ugtk2::gtkadd($w->{window},
- gtknew('VBox', children => [
- 1, $o->{gtk_display_compssUsers}->($entry),
- 1, '',
- 0, if_($individual,
- gtknew('CheckButton', text => N("Individual package selection"), active_ref => $individual),
- ),
- 0, $w_size,
- 0, Gtk2::HSeparator->new,
- 0, gtknew('HButtonBox', layout => 'edge', children_tight => [
- gtknew('Install_Button', text => N("Help"), clicked => sub {
- interactive::gtk::display_help($o, { interactive_help_id => 'choosePackages#choosePackagesGroups' }, $w) }),
- gtknew('Button', text => N("Next"), clicked => sub { Gtk2->main_quit }),
- ]),
- ]),
+ ugtk3::gtkadd($w->{window},
+ gtknew('VBox', children => [
+ 1, gtknew('ScrolledWindow', child => $o->{gtk_display_compssUsers}->($entry)),
+ if_($individual,
+ 0, gtknew('CheckButton', text => N("Individual package selection"), active_ref => $individual),
+ ),
+ 0, $w_size,
+ 0, gtknew('HSeparator'),
+ 0, gtknew('HButtonBox', layout => 'edge', children_tight => [
+ gtknew('Install_Button', text => N("Help"), clicked => sub {
+ interactive::gtk::display_help($o, { interactive_help_id => 'choosePackageGroups' }) }),
+ gtknew('Button', text => N("Unselect All"), clicked => sub { $_->set_active(0) foreach @entries }),
+ gtknew('Button', text => N("Next"), clicked => sub { Gtk3->main_quit }),
+ ]),
+ ],
+ )
);
$w->main;
1;
@@ -359,7 +381,7 @@ sub choosePackagesTree {
},
node_state => sub {
my $p = install::pkgs::packageByName($packages, $_[0]) or return;
- install::pkgs::packageMedium($packages, $p)->{selected} or return;
+ !install::pkgs::packageMedium($packages, $p)->{ignore} or return;
$p->arch eq 'src' and return;
$p->flag_base and return 'base';
$p->flag_installed && !$p->flag_upgrade and return 'installed';
@@ -393,17 +415,17 @@ sub choosePackagesTree {
},
get_info => sub {
my $p = install::pkgs::packageByName($packages, $_[0]) or return '';
- install::pkgs::extractHeaders([$p], $packages->{media});
+ my $description = install::pkgs::get_pkg_info($p);
my $imp = translate($install::pkgs::compssListDesc{$p->flag_base ? 5 : $p->rate});
my $tag = { 'foreground' => 'royalblue3' };
- $@ ? N("Bad package") :
+
[ [ N("Name: "), $tag ], [ $p->name . "\n" ],
[ N("Version: "), $tag ], [ $p->version . '-' . $p->release . "\n" ],
[ N("Size: "), $tag ], [ N("%d KB\n", $p->size / 1024) ],
if_($imp, [ N("Importance: "), $tag ], [ "$imp\n" ]),
- [ "\n" ], [ formatLines($p->description) ] ];
+ [ "\n" ], [ formatLines($description) ] ];
},
toggle_nodes => sub {
my $set_state = shift @_;
@@ -414,6 +436,7 @@ sub choosePackagesTree {
my $state = $packages->{state} ||= {};
$packages->{rpmdb} ||= install::pkgs::rpmDbOpen(); #- WORKAROUND
my @l = $isSelection ? $packages->resolve_requested($packages->{rpmdb}, $state, \%l,
+ no_recommends => $::o->{no_recommends},
callback_choices => \&install::pkgs::packageCallbackChoices) :
$packages->disable_selected($packages->{rpmdb}, $state,
map { $packages->{depslist}[$_] } keys %l);
@@ -436,7 +459,7 @@ sub choosePackagesTree {
}
}
}
- $error = [ N("You can not select/unselect this package"),
+ $error = [ N("You cannot select/unselect this package"),
formatList(20, map { my $rb = $state->{rejected}{$_}{backtrack};
my @froms = keys %{$rb->{closure} || {}};
my @unsatisfied = @{$rb->{unsatisfied} || []};
@@ -448,7 +471,7 @@ sub choosePackagesTree {
$_ . ($s ? " ($s)" : '');
} sort @ask_unselect) ];
} elsif (install::pkgs::correctSize($size / sqr(1024)) > $available / sqr(1024)) {
- $error = N("You can not select this package as there is not enough space left to install it");
+ $error = N("You cannot select this package as there is not enough space left to install it");
} elsif (@l > @_ && $common->{state}{auto_deps}) {
$o->ask_okcancel(N("Confirmation"), [ $isSelection ?
N("The following packages are going to be installed") :
@@ -460,7 +483,8 @@ sub choosePackagesTree {
#- disable selection (or unselection).
$packages->{rpmdb} ||= install::pkgs::rpmDbOpen(); #- WORKAROUND
$isSelection ? $packages->disable_selected($packages->{rpmdb}, $state, @l) :
- $packages->resolve_requested($packages->{rpmdb}, $state, { map { $_->id => 1 } @l });
+ $packages->resolve_requested($packages->{rpmdb}, $state, { map { $_->id => 1 } @l },
+ no_recommends => $::o->{no_recommends});
} else {
#- keep the changes, update visible state.
foreach (@l) {
@@ -477,19 +501,17 @@ sub choosePackagesTree {
check_interactive_to_toggle => sub {
my $p = install::pkgs::packageByName($packages, $_[0]) or return;
if ($p->flag_base) {
- $o->ask_warn('', N("This is a mandatory package, it can not be unselected"));
+ $o->ask_warn('', N("This is a mandatory package, it cannot be unselected"));
} elsif ($p->flag_installed && !$p->flag_upgrade) {
- $o->ask_warn('', N("You can not unselect this package. It is already installed"));
+ $o->ask_warn('', N("You cannot unselect this package. It is already installed"));
} elsif ($p->flag_selected && $p->flag_installed) {
- $o->ask_warn('', N("You can not unselect this package. It must be upgraded"));
+ $o->ask_warn('', N("You cannot unselect this package. It must be upgraded"));
} else { return 1 }
return;
},
auto_deps => N("Show automatically selected packages"),
interactive_help => sub {
- interactive::gtk::display_help($o,
- { interactive_help_id =>
- 'choosePackages#choosePackagesTree' }, $w) },
+ interactive::gtk::display_help($o, { interactive_help_id => 'choosePackagesTree' }) },
ok => N("Install"),
cancel => N("Previous"),
@@ -498,6 +520,11 @@ sub choosePackagesTree {
wait_message => N("Updating package selection"),
code => sub { $o->loadSavePackagesOnFloppy($packages); 1 },
},
+ { icon => 'reload',
+ help => N("Toggle between hierarchical and flat package list"),
+ wait_message => N("Updating package selection"),
+ code => sub { $common->{state}{flat} = !$common->{state}{flat}; 1 },
+ },
if_(0,
{ icon => 'feather',
help => N("Minimal install"),
@@ -525,13 +552,14 @@ sub beforeInstallPackages {
#------------------------------------------------------------------------------
sub installPackages {
- my ($o, $packages) = @_;
+ my ($o) = @_;
my ($current_total_size, $last_size, $nb, $total_size, $last_dtime, $_trans_progress_total);
local $::noborderWhenEmbedded = 1;
- my $w = ugtk2->new(N("Installing"));
+ my $w = ugtk3->new(N("Installing"));
state $show_advertising;
+ my $show_release_notes;
my $pkg_log_widget = gtknew('TextView', editable => 0);
my ($advertising_image, $change_time, $i);
@@ -552,8 +580,8 @@ sub installPackages {
my ($title);
my $pl = $f; $pl =~ s/\.png$/.pl/;
eval(cat_($pl)) if -e $pl;
- $banner->{text} = $title;
- Gtk2::Banner::update_text($banner)
+ # FIXME: This hasn't actually worked for years:
+ #Gtk3::Banner::update_text($banner, $title);
}
};
@@ -565,21 +593,30 @@ sub installPackages {
$pkg_log_widget->{to_bottom}->('force');
});
- ugtk2::gtkadd($w->{window}, my $box = gtknew('VBox', children_tight => [
- gtknew('Image_using_pixmap', file_ref => \$advertising_image, show_ref => \$show_advertising),
+ state $release_notes ||= any::get_release_notes($o);
+ my $rel_notes = gtknew('Button', text => N("Release Notes"),
+ clicked => sub { $show_release_notes = 1 });
+
+ ugtk3::gtkadd($w->{window}, my $box = gtknew('VBox', children_centered => [
+ gtknew('Image', file_ref => \$advertising_image, show_ref => \$show_advertising),
]));
+ my $progress_total = 0;
$box->pack_end(gtkshow(gtknew('VBox', border_width => 7, spacing => 3, children_loose => [
gtknew('ScrolledWindow', child => $pkg_log_widget,
- hide_ref => \$show_advertising, height => 250, to_bottom => 1),
+ hide_ref => \$show_advertising, height => $::real_windowheight - 215, to_bottom => 1),
gtknew('ProgressBar', fraction_ref => \ (my $pkg_progress), hide_ref => \$show_advertising),
gtknew('HButtonBox', layout => 'start', children_loose => [
N("Time remaining:"),
gtknew('Label', text_ref => \ (my $msg_time_remaining = N("(estimating...)"))),
]),
- gtknew('VBox', children_centered => [ gtknew('ProgressBar', fraction_ref => \ (my $progress_total), height => 25) ]),
+ gtknew('VBox', children_centered => [ gtknew('ProgressBar', fraction_ref => \$progress_total, height => 25) ]),
gtknew('HSeparator'),
- gtknew('HButtonBox', spacing => 5, layout => 'end', children_loose => [ $cancel, $details ]),
+ gtknew('HButtonBox', spacing => 0, layout => 'edge', children_loose => [
+ if_($release_notes, $rel_notes),
+ gtknew('HButtonBox', spacing => 5, layout => 'end',
+ children_loose => [ $cancel, $details ]),
+ ]),
])), 0, 1, 0);
#- for the hide_ref & show_ref to work, we must set $show_advertising after packing
@@ -588,10 +625,6 @@ sub installPackages {
$details->hide if !@install::any::advertising_images;
$w->sync;
- foreach ($cancel, $details) {
- gtkset_mousecursor_normal($_->window);
- }
-
$advertize->(0);
local *install::steps::installCallback = sub {
@@ -600,18 +633,29 @@ sub installPackages {
#- $amount and $total are used to return number of package and total size.
$nb = $amount;
$total_size = $total; $current_total_size = 0;
- $o->{install_start_time} = time();
- mygtk2::gtkadd($pkg_log_widget, text => P("%d package", "%d packages", $nb, $nb));
+ $o->{install_start_time} = 0;
+ mygtk3::gtkadd($pkg_log_widget, text => P("%d package", "%d packages", $nb, $nb));
$w->flush;
} elsif ($type eq 'open') {
+ $advertize->(1) if $show_advertising && $total_size > 20_000_000 && time() - $change_time > 20;
+
+ # display release notes if requested, when not chrooted:
+ if ($show_release_notes) {
+ undef $show_release_notes;
+ any::run_display_release_notes($release_notes);
+ $w->flush;
+ }
+ } elsif ($type eq 'inst' && $subtype eq 'start') {
gtkval_modify(\$pkg_progress, 0);
my $p = $packages->{depslist}[$id];
- mygtk2::gtkadd($pkg_log_widget, text => sprintf("\n%s: %s", $p->name, translate($p->summary)));
+ mygtk3::gtkadd($pkg_log_widget, text => sprintf("\n%s: %s", $p->name, translate($p->summary)));
+ $pkg_log_widget->{to_bottom}->('force');
$current_total_size += $last_size;
$last_size = $p->size;
- $advertize->(1) if $show_advertising && $total_size > 20_000_000 && time() - $change_time > 20;
+
$w->flush;
} elsif ($type eq 'inst' && $subtype eq 'progress') {
+ $o->{install_start_time} ||= time();
gtkval_modify(\$pkg_progress, $total ? $amount / $total : 0);
my $dtime = time() - $o->{install_start_time};
@@ -630,7 +674,7 @@ sub installPackages {
}
};
my $install_result;
- catch_cdie { $install_result = $o->install::steps::installPackages($packages) }
+ catch_cdie { $install_result = $o->install::steps::installPackages('interactive') }
sub {
my $rc = install::steps_interactive::installPackages__handle_error($o, $_[0]);
$rc or $w->destroy;
@@ -647,7 +691,7 @@ sub installPackages {
sub summary_prompt {
my ($o, $l, $check_complete) = @_;
- my $w = ugtk2->new(N("Summary"));
+ my $w = ugtk3->new(N("Summary"));
my $set_entry_labels;
my (@table, @widget_list);
@@ -661,14 +705,14 @@ sub summary_prompt {
$group = $e->{group};
push @table, [ gtknew('HBox', children_tight => [
gtknew('Title1',
- label => mygtk2::asteriskize(escape_text_for_TextView_markup_format($group))) ]), '' ];
+ label => mygtk3::asteriskize(escape_text_for_TextView_markup_format($group))) ]), '' ];
}
- $e->{widget} = gtknew('Label_Right', width => $::real_windowwidth * 0.72, alignment => [ 1, 1 ]);
+ $e->{widget} = gtknew('Label_Right', width => $::real_windowwidth * 0.72, alignment => [ 1, 1 ], line_wrap => 1, tip => $e->{tip});
push @table, [], [ gtknew('HBox', children_tight => [ $e->{widget}, gtknew('Alignment', width => 10) ]),
gtknew('Button', text => N("Configure"), clicked => sub {
$w->{rwindow}->hide;
- my ($old_icon, $old_title) = get_default_step_items();
+ my ($_old_icon, $old_title) = get_default_step_items();
set_default_step_items($e->{banner_title} || $old_title);
$e->{clicked}();
set_default_step_items($old_title);
@@ -691,9 +735,9 @@ sub summary_prompt {
};
$set_entry_labels->();
- my $help_sub = sub { interactive::gtk::display_help($o, { interactive_help_id => 'misc-params' }, $w) };
+ my $help_sub = sub { interactive::gtk::display_help($o, { interactive_help_id => 'misc-params' }) };
- ugtk2::gtkadd($w->{window},
+ ugtk3::gtkadd($w->{window},
gtknew('VBox', spacing => 5, children => [
1, gtknew('ScrolledWindow', h_policy => 'never',
child => gtknew('TextView',
@@ -714,18 +758,18 @@ sub ask_deselect_media__copy_on_disk {
my ($o, $hdlists, $o_copy_rpms_on_disk) = @_;
my @names = uniq(map { $_->{name} } @$hdlists);
- my %selection = map { $_->{name} => $_->{selected} } @$hdlists;
+ my %selection = map { $_->{name} => !$_->{ignore} } @$hdlists;
if (@names > 1 || $o_copy_rpms_on_disk) {
- my $w = ugtk2->new(N("Media Selection"));
+ my $w = ugtk3->new(N("Media Selection"));
$w->sync;
- ugtk2::gtkadd(
+ ugtk3::gtkadd(
$w->{window},
gtknew('VBox', children => [
@names > 1 ? (
0, gtknew('Label_Left', padding => [ 0, 0 ],
# workaround infamous 6 years old gnome bug #101968:
- width => mygtk2::get_label_width(),
+ width => mygtk3::get_label_width(),
text => formatAlaTeX(N("The following installation media have been found.
If you want to skip some of them, you can unselect them now."))),
1, gtknew('ScrolledWindow', child => gtknew('VBox', children => [
@@ -741,24 +785,25 @@ If you want to skip some of them, you can unselect them now."))),
if_($o_copy_rpms_on_disk,
0, gtknew('Label_Left', padding => [ 0, 0 ],
# workaround infamous 6 years old gnome bug #101968:
- width => mygtk2::get_label_width(),
- text => N("You have the option to copy the contents of the CDs onto the hard drive before installation.
-It will then continue from the hard drive and the packages will remain available once the system is fully installed.")),
+ width => mygtk3::get_label_width(),
+ text => N("You have the option to copy the contents of the CDs onto the hard disk drive before installation.
+It will then continue from the hard disk drive and the packages will remain available once the system is fully installed.")),
0, gtknew('CheckButton', text => N("Copy whole CDs"), active_ref => $o_copy_rpms_on_disk),
1, gtknew('Alignment'),
0, gtknew('HSeparator'),
),
0, gtknew('HButtonBox', layout => 'edge', children_tight => [
gtknew('Install_Button', text => N("Help"), clicked => sub {
- interactive::gtk::display_help($o, { interactive_help_id => 'choosePackages' }, $w) }),
- gtknew('Button', text => N("Next"), clicked => sub { Gtk2->main_quit }),
+ interactive::gtk::display_help($o, { interactive_help_id => 'choosePackagesTree' }) }),
+ gtknew('Button', text => N("Next"), clicked => sub { Gtk3->main_quit }),
]),
]),
);
$w->main;
}
- $_->{selected} = $selection{$_->{name}} foreach @$hdlists;
- log::l("keeping media " . join ',', map { $_->{rpmsdir} } grep { $_->{selected} } @$hdlists);
+ $_->{ignore} = !$selection{$_->{name}} foreach @$hdlists;
+ log::l("keeping media " . join ',', map { $_->{rpmsdir} } grep { !$_->{ignore} } @$hdlists);
}
+
1;