diff options
Diffstat (limited to 'perl-install/install/steps_gtk.pm')
| -rw-r--r-- | perl-install/install/steps_gtk.pm | 381 | 
1 files changed, 203 insertions, 178 deletions
| diff --git a/perl-install/install/steps_gtk.pm b/perl-install/install/steps_gtk.pm index 2574e2906..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,116 +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(); -	    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) : /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');      } +    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 }, 'drakx-matchbox-window-manager'); +    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) @@ -176,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);  } @@ -204,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  } @@ -230,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; @@ -248,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;              }); @@ -290,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; @@ -313,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; @@ -396,16 +415,17 @@ sub choosePackagesTree {  			    },  			    get_info => sub {  				my $p = install::pkgs::packageByName($packages, $_[0]) or return ''; +				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 @_; @@ -416,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); @@ -438,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} || []}; @@ -450,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") : @@ -462,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) { @@ -479,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' }, my $w) }, +                                interactive::gtk::display_help($o, { interactive_help_id => 'choosePackagesTree' }) },  			    ok => N("Install"),  			    cancel => N("Previous"), @@ -500,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"), @@ -532,7 +557,7 @@ sub installPackages {      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; @@ -555,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);  	}      }; @@ -568,23 +593,24 @@ sub installPackages {  			     $pkg_log_widget->{to_bottom}->('force');  			 }); -    my $release_notes = any::get_release_notes($o); +    state $release_notes ||= any::get_release_notes($o);      my $rel_notes = gtknew('Button', text => N("Release Notes"),                              clicked => sub { $show_release_notes = 1 }); -    ugtk2::gtkadd($w->{window}, my $box = gtknew('VBox', children_tight => [  -	gtknew('Image_using_pixmap', file_ref => \$advertising_image, show_ref => \$show_advertising), +    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 => 0, layout => 'edge', children_loose => [              if_($release_notes, $rel_notes), @@ -599,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 { @@ -612,14 +634,9 @@ sub installPackages {  	    $nb = $amount;  	    $total_size = $total; $current_total_size = 0;  	    $o->{install_start_time} = 0; -	    mygtk2::gtkadd($pkg_log_widget, text => P("%d package", "%d packages", $nb, $nb)); +	    mygtk3::gtkadd($pkg_log_widget, text => P("%d package", "%d packages", $nb, $nb));  	    $w->flush;  	} elsif ($type eq 'open') { -	    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))); -	    $current_total_size += $last_size; -	    $last_size = $p->size;  	    $advertize->(1) if $show_advertising && $total_size > 20_000_000 && time() - $change_time > 20;              # display release notes if requested, when not chrooted: @@ -628,10 +645,17 @@ sub installPackages {                  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]; +	    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;  	    $w->flush;  	} elsif ($type eq 'inst' && $subtype eq 'progress') { -	    $o->{install_start_time} = time() unless $o->{install_start_time}; +	    $o->{install_start_time} ||= time();  	    gtkval_modify(\$pkg_progress, $total ? $amount / $total : 0);  	    my $dtime = time() - $o->{install_start_time}; @@ -667,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); @@ -681,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); @@ -711,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',  @@ -737,15 +761,15 @@ sub ask_deselect_media__copy_on_disk {      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 => [ @@ -761,17 +785,17 @@ 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 }),  		]),  	    ]),  	); @@ -781,4 +805,5 @@ It will then continue from the hard drive and the packages will remain available      log::l("keeping media " . join ',', map { $_->{rpmsdir} } grep { !$_->{ignore} } @$hdlists);  } +  1; | 
