Mageia Bugzilla – Attachment 4230 Details for
Bug 10887
Feature: Independently install desktop environments
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
New Account
|
Forgot Password
[patch]
Patch for drakx-installer-stage2
perl-install.patch (text/plain), 6.12 KB, created by
Derek Jennings
on 2013-07-31 18:01:50 CEST
(
hide
)
Description:
Patch for drakx-installer-stage2
Filename:
MIME Type:
Creator:
Derek Jennings
Created:
2013-07-31 18:01:50 CEST
Size:
6.12 KB
patch
obsolete
>--- install/steps_gtk.pm 2013-07-31 14:55:11.000000000 +0100 >+++ /home/derek/iso/i586/i586/install/stage2/live/lib/libDrakX/install/steps_gtk.pm 2013-07-31 16:00:29.000000000 +0100 >@@ -243,24 +243,37 @@ > } > > sub reallyChooseDesktop { >- my ($o, $title, $message, $choices, $choice) = @_; >- >+ my ($o, $title, $message, $choices, $default_choice) = @_; > my $w = ugtk2->new($title); >+ my %choice; >+ my $n; > > my %tips = ( > KDE => N("Install %s KDE Desktop", N("Mageia")), > GNOME => N("Install %s GNOME Desktop", N("Mageia")), >+ MATE => N("Install %s MATE Desktop", N("Mageia")), >+ XFCE => N("Install %s XFCE Desktop", N("Mageia")), >+ LXDE => N("Install %s LXDE Desktop", N("Mageia")), >+ RAZOR => N("Install %s RazorQT Desktop", N("Mageia")), >+ E17 => N("Install %s E17 Desktop", N("Mageia")), > Custom => N("Custom install"), > ); > my $prev; >+ my $default_set = 0; > my @l = map { > my $val = $_; >- $prev = gtknew('RadioButton', child => >- gtknew('Label', text => $val->[1]), >+ my $sensitive = grep { $_->[0] =~ /$val->[0]/ or $val->[0] eq 'Custom' } map { $_->{flags} } grep { $_->{path} eq 'Graphical Environment' } map { @$_ } $o->{compssUsers}; >+ $default_set++ if $sensitive; >+ $choice{$val->[0]} = '0'; >+ $prev = gtknew('CheckButton', >+ text => $val->[1], > tip => $tips{$val->[0]}, >- toggled => sub { $choice = $val if $_[0]->get_active }, >- active => $choice == $val, >- $prev ? (group => $prev->get_group) : ()); >+ sensitive => $sensitive ? '1' : '0', >+ toggled => sub { $choice{$val->[0]} = $_[0]->get_active }, >+ active => $default_set == 1 && $sensitive ? ($choice{$val->[0]} = '1') : '0', >+ ); >+ >+ > $prev->signal_connect(key_press_event => sub { > my (undef, $event) = @_; > if (!$event || ($event->keyval & 0x7f) == 0xd) { >@@ -268,11 +281,16 @@ > } > }); > my $img = gtksignal_connect( >- gtkadd(Gtk2::EventBox->new, gtknew('Image', file => "desktop-$val->[0]")), >+ gtkadd(Gtk2::EventBox->new, gtknew('Image', sensitive => $sensitive ? '1' : '0', file => "desktop-$val->[0]")), > 'button-press-event' => sub { > my %title = ( > KDE => N("KDE Desktop"), > GNOME => N("GNOME Desktop"), >+ MATE => N("MATE Desktop"), >+ XFCE => N("XFCE Desktop"), >+ LXDE => N("LXDE Desktop"), >+ RAZOR => N("RazorQT Desktop"), >+ E17 => N("E17 Desktop"), > Custom => N("Custom Desktop"), > ); > >@@ -295,19 +313,26 @@ > $wp->{real_window}->show_all; > $wp->main; > }); >- gtknew('VBox', border_width => 15, spacing => 10, children_tight => [ >+ gtknew('VBox', border_width => 5, spacing => 10, children_tight => [ > $img, > $prev, > ]); > } @$choices; >- >+my @l1 = grep { !($n++ % 2) } @l; >+my @l2 = grep { !(++$n % 2) } @l; > ugtk2::gtkadd($w->{window}, > gtknew('VBox', children => [ > 0, gtknew('Title2', > # workaround infamous 6 years old gnome bug #101968: > width => mygtk2::get_label_width(), label => $message . ' ' . > N("Click on images in order to see a bigger preview")), >- 1, gtknew('HButtonBox', children_loose => \@l), >+ 1, gtknew('ScrolledWindow', h_policy => 'never', child => >+ gtknew('VBox', children => [ >+ 1, gtknew('HButtonBox', spacing => 5, layout => 'edge', children_loose => \@l1), >+ 1, gtknew('HButtonBox', spacing => 5, layout => 'edge', children_loose => \@l2), >+ ] >+ ), >+ ), > 0, $w->create_okcancel(N("Next"), undef, '', > [ gtknew('Install_Button', text => N("Help"), > clicked => sub { >@@ -316,7 +341,7 @@ > ])); > $w->main; > >- $choice; >+ %choice; > } > > sub reallyChooseGroups { > > >--- install/steps_interactive.pm 2013-07-31 14:55:36.000000000 +0100 >+++ /home/derek/iso/i586/i586/install/stage2/live/lib/libDrakX/install/steps_interactive.pm 2013-07-31 15:38:50.000000000 +0100 >@@ -482,34 +482,35 @@ > my @l = group_by2( > KDE => N("KDE"), > GNOME => N("GNOME"), >+ MATE => N("MATE"), >+ XFCE => N("XFCE"), >+ LXDE => N("LXDE"), >+ RAZOR => N("RAZOR"), >+ E17 => N("E17"), > Custom => N("Custom"), > ); >+ > my $title = N("Desktop Selection"); >- my $message = N("You can choose your workstation desktop profile."); >+ my $message = N("You can choose your workstation desktop profile.\nSelect 'Custom' for multiple desktops or package selection."); > > my $default_choice = (find { $rpmsrate_flags_chosen->{"CAT_" . $_->[0]} } @l) || $l[0]; >- my $choice = $default_choice; >+ my $choose = $default_choice; >+ my %choice; > if ($o->isa('interactive::gtk')) { > # perl_checker: require install::steps_gtk >- $choice = install::steps_gtk::reallyChooseDesktop($o, $title, $message, \@l, $default_choice); >+ %choice = install::steps_gtk::reallyChooseDesktop($o, $title, $message, \@l, $default_choice); > } else { > $o->ask_from_({ title => $title, message => $message }, [ >- { val => \$choice, list => \@l, type => 'list', format => sub { $_[0][1] } }, >+ { val => \$choose, list => \@l, type => 'list', format => sub { $_[0][1] } }, > ]); > } >- my $desktop = $choice->[0]; >- log::l("chosen Desktop: $desktop"); >- my @desktops = ('KDE', 'GNOME'); >- if (member($desktop, @desktops)) { >- my ($want, $dontwant) = ($desktop, grep { $desktop ne $_ } @desktops); >- $rpmsrate_flags_chosen->{"CAT_$want"} = 1; >- $rpmsrate_flags_chosen->{"CAT_$dontwant"} = 0; >+ >+ my @want = map { if ($_ eq 'Custom') { >+ $$chooseGroups = $choice{$_} } else { >+ $rpmsrate_flags_chosen->{"CAT_$_"} = $choice{$_} } } keys %choice; > my @flags = map_each { if_($::b, $::a) } %$rpmsrate_flags_chosen; > log::l("flags ", join(' ', sort @flags)); > install::any::unselectMostPackages($o); >- } else { >- $$chooseGroups = 1; >- } > } > > sub chooseGroups {
--- install/steps_gtk.pm 2013-07-31 14:55:11.000000000 +0100 +++ /home/derek/iso/i586/i586/install/stage2/live/lib/libDrakX/install/steps_gtk.pm 2013-07-31 16:00:29.000000000 +0100 @@ -243,24 +243,37 @@ } sub reallyChooseDesktop { - my ($o, $title, $message, $choices, $choice) = @_; - + my ($o, $title, $message, $choices, $default_choice) = @_; my $w = ugtk2->new($title); + my %choice; + my $n; my %tips = ( KDE => N("Install %s KDE Desktop", N("Mageia")), GNOME => N("Install %s GNOME Desktop", N("Mageia")), + MATE => N("Install %s MATE Desktop", N("Mageia")), + XFCE => N("Install %s XFCE Desktop", N("Mageia")), + LXDE => N("Install %s LXDE Desktop", N("Mageia")), + RAZOR => N("Install %s RazorQT Desktop", N("Mageia")), + E17 => N("Install %s E17 Desktop", N("Mageia")), Custom => N("Custom install"), ); my $prev; + my $default_set = 0; my @l = map { my $val = $_; - $prev = gtknew('RadioButton', child => - gtknew('Label', text => $val->[1]), + my $sensitive = grep { $_->[0] =~ /$val->[0]/ or $val->[0] eq 'Custom' } map { $_->{flags} } grep { $_->{path} eq 'Graphical Environment' } map { @$_ } $o->{compssUsers}; + $default_set++ if $sensitive; + $choice{$val->[0]} = '0'; + $prev = gtknew('CheckButton', + text => $val->[1], tip => $tips{$val->[0]}, - toggled => sub { $choice = $val if $_[0]->get_active }, - active => $choice == $val, - $prev ? (group => $prev->get_group) : ()); + sensitive => $sensitive ? '1' : '0', + toggled => sub { $choice{$val->[0]} = $_[0]->get_active }, + active => $default_set == 1 && $sensitive ? ($choice{$val->[0]} = '1') : '0', + ); + + $prev->signal_connect(key_press_event => sub { my (undef, $event) = @_; if (!$event || ($event->keyval & 0x7f) == 0xd) { @@ -268,11 +281,16 @@ } }); my $img = gtksignal_connect( - gtkadd(Gtk2::EventBox->new, gtknew('Image', file => "desktop-$val->[0]")), + gtkadd(Gtk2::EventBox->new, gtknew('Image', sensitive => $sensitive ? '1' : '0', file => "desktop-$val->[0]")), 'button-press-event' => sub { my %title = ( KDE => N("KDE Desktop"), GNOME => N("GNOME Desktop"), + MATE => N("MATE Desktop"), + XFCE => N("XFCE Desktop"), + LXDE => N("LXDE Desktop"), + RAZOR => N("RazorQT Desktop"), + E17 => N("E17 Desktop"), Custom => N("Custom Desktop"), ); @@ -295,19 +313,26 @@ $wp->{real_window}->show_all; $wp->main; }); - gtknew('VBox', border_width => 15, spacing => 10, children_tight => [ + gtknew('VBox', border_width => 5, spacing => 10, children_tight => [ $img, $prev, ]); } @$choices; - +my @l1 = grep { !($n++ % 2) } @l; +my @l2 = grep { !(++$n % 2) } @l; ugtk2::gtkadd($w->{window}, gtknew('VBox', children => [ 0, gtknew('Title2', # workaround infamous 6 years old gnome bug #101968: width => mygtk2::get_label_width(), label => $message . ' ' . N("Click on images in order to see a bigger preview")), - 1, gtknew('HButtonBox', children_loose => \@l), + 1, gtknew('ScrolledWindow', h_policy => 'never', child => + gtknew('VBox', children => [ + 1, gtknew('HButtonBox', spacing => 5, layout => 'edge', children_loose => \@l1), + 1, gtknew('HButtonBox', spacing => 5, layout => 'edge', children_loose => \@l2), + ] + ), + ), 0, $w->create_okcancel(N("Next"), undef, '', [ gtknew('Install_Button', text => N("Help"), clicked => sub { @@ -316,7 +341,7 @@ ])); $w->main; - $choice; + %choice; } sub reallyChooseGroups { --- install/steps_interactive.pm 2013-07-31 14:55:36.000000000 +0100 +++ /home/derek/iso/i586/i586/install/stage2/live/lib/libDrakX/install/steps_interactive.pm 2013-07-31 15:38:50.000000000 +0100 @@ -482,34 +482,35 @@ my @l = group_by2( KDE => N("KDE"), GNOME => N("GNOME"), + MATE => N("MATE"), + XFCE => N("XFCE"), + LXDE => N("LXDE"), + RAZOR => N("RAZOR"), + E17 => N("E17"), Custom => N("Custom"), ); + my $title = N("Desktop Selection"); - my $message = N("You can choose your workstation desktop profile."); + my $message = N("You can choose your workstation desktop profile.\nSelect 'Custom' for multiple desktops or package selection."); my $default_choice = (find { $rpmsrate_flags_chosen->{"CAT_" . $_->[0]} } @l) || $l[0]; - my $choice = $default_choice; + my $choose = $default_choice; + my %choice; if ($o->isa('interactive::gtk')) { # perl_checker: require install::steps_gtk - $choice = install::steps_gtk::reallyChooseDesktop($o, $title, $message, \@l, $default_choice); + %choice = install::steps_gtk::reallyChooseDesktop($o, $title, $message, \@l, $default_choice); } else { $o->ask_from_({ title => $title, message => $message }, [ - { val => \$choice, list => \@l, type => 'list', format => sub { $_[0][1] } }, + { val => \$choose, list => \@l, type => 'list', format => sub { $_[0][1] } }, ]); } - my $desktop = $choice->[0]; - log::l("chosen Desktop: $desktop"); - my @desktops = ('KDE', 'GNOME'); - if (member($desktop, @desktops)) { - my ($want, $dontwant) = ($desktop, grep { $desktop ne $_ } @desktops); - $rpmsrate_flags_chosen->{"CAT_$want"} = 1; - $rpmsrate_flags_chosen->{"CAT_$dontwant"} = 0; + + my @want = map { if ($_ eq 'Custom') { + $$chooseGroups = $choice{$_} } else { + $rpmsrate_flags_chosen->{"CAT_$_"} = $choice{$_} } } keys %choice; my @flags = map_each { if_($::b, $::a) } %$rpmsrate_flags_chosen; log::l("flags ", join(' ', sort @flags)); install::any::unselectMostPackages($o); - } else { - $$chooseGroups = 1; - } } sub chooseGroups {
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 10887
: 4230 |
4231