diff options
author | Thierry Vignaud <tvignaud@mandriva.org> | 2003-11-28 15:47:06 +0000 |
---|---|---|
committer | Thierry Vignaud <tvignaud@mandriva.org> | 2003-11-28 15:47:06 +0000 |
commit | 89de618049bbf67ad93e0bd3b66943e0f5dfa797 (patch) | |
tree | 1f8cf76136d4a76b3a4e115e9557cf0853822406 | |
parent | 661e027db76ed63c7bc63669dd058e138b5d44cb (diff) | |
download | drakx-89de618049bbf67ad93e0bd3b66943e0f5dfa797.tar drakx-89de618049bbf67ad93e0bd3b66943e0f5dfa797.tar.gz drakx-89de618049bbf67ad93e0bd3b66943e0f5dfa797.tar.bz2 drakx-89de618049bbf67ad93e0bd3b66943e0f5dfa797.tar.xz drakx-89de618049bbf67ad93e0bd3b66943e0f5dfa797.zip |
on interface team request:
- try to make button packing more readable
- comment some parameters and what is done
- add space to split buttons in two packs but if there's one button
(so that eg XFdrake's quit button still get centered)
- pack button the kde order while installing or while under kde, gnome
order else:
o kde order is help/advanced/_____/ok/cancel
o gnome order is help/advanced/_____/ok/cancel
o wizard order is help/advanced/_____/previous/next
-rw-r--r-- | perl-install/ugtk2.pm | 40 |
1 files changed, 27 insertions, 13 deletions
diff --git a/perl-install/ugtk2.pm b/perl-install/ugtk2.pm index 92a9411f0..7c2ed376f 100644 --- a/perl-install/ugtk2.pm +++ b/perl-install/ugtk2.pm @@ -478,26 +478,40 @@ sub create_packtable { $w } +my $wm_is_kde; sub create_okcancel { my ($w, $o_ok, $o_cancel, $o_spread, @other) = @_; - my $wizard_buttons = $::isWizard && !$w->{pop_it}; - my $cancel = defined $o_cancel || defined $o_ok ? $o_cancel : $wizard_buttons ? N("<- Previous") : N("Cancel"); - my $ok = defined $o_ok ? $o_ok : $wizard_buttons ? ($::Wizard_finished ? N("Finish") : N("Next ->")) : N("Ok"); - my $b1 = gtksignal_connect($w->{ok} = Gtk2::Button->new($ok), clicked => $w->{ok_clicked} || sub { $w->{retval} = 1; Gtk2->main_quit }); - my $b2 = $cancel && gtksignal_connect($w->{cancel} = Gtk2::Button->new($cancel), clicked => $w->{cancel_clicked} || sub { log::l("default cancel_clicked"); undef $w->{retval}; Gtk2->main_quit }); - gtksignal_connect($w->{wizcancel} = Gtk2::Button->new(N("Cancel")), clicked => sub { die 'wizcancel' }) if $wizard_buttons && !$::isInstall; - my @l = grep { $_ } $wizard_buttons ? (if_(!$::isInstall, $w->{wizcancel}), - if_(!$::Wizard_no_previous, $b2), $b1) : ($::isInstall ? ($b1, $b2) : $b2, $b1); + # @other is a list of extra buttons (usually help (eg: XFdrake/drakx caller) or advanced (eg: interactive caller) button) + # extra buttons have the following structure [ label, handler, is_first ] + local $::isWizard = $::isWizard && !$w->{pop_it}; + my $cancel = defined $o_cancel || defined $o_ok ? $o_cancel : $::isWizard ? N("<- Previous") : N("Cancel"); + my $ok = defined $o_ok ? $o_ok : $::isWizard ? ($::Wizard_finished ? N("Finish") : N("Next ->")) : N("Ok"); + my $bok = $ok && gtksignal_connect($w->{ok} = Gtk2::Button->new($ok), clicked => $w->{ok_clicked} || sub { $w->{retval} = 1; Gtk2->main_quit }); + my $bprev = $cancel && gtksignal_connect($w->{cancel} = Gtk2::Button->new($cancel), clicked => $w->{cancel_clicked} || sub { log::l("default cancel_clicked"); undef $w->{retval}; Gtk2->main_quit }); + $w->{wizcancel} = gtksignal_connect(Gtk2::Button->new(N("Cancel")), clicked => sub { die 'wizcancel' }) if $::isWizard && !$::isInstall; + if (!defined $wm_is_kde) { + require any; + $wm_is_kde = $::isInstall || any::running_window_manager() eq "kwin" || 0; + } my @l2 = map { gtksignal_connect(Gtk2::Button->new($_->[0]), clicked => $_->[1]) } grep { $_->[2] } @other; my @r2 = map { gtksignal_connect(Gtk2::Button->new($_->[0]), clicked => $_->[1]) } grep { !$_->[2] } @other; + # we put space to group buttons in two packs (but if there's only one when not in wizard mode) + my @extras = (@l2, @r2, if_($::isWizard || $ok && $cancel, Gtk2::Label->new)); + my @l; # buttons list + if ($::isWizard) { + # wizard mode: order is cancel/extras/white/prev/next + push @l, if_(!$::isInstall, $w->{wizcancel}), @extras, if_(!$::Wizard_no_previous, $bprev), $bok; + } else { + # normal mode: cancel/ok button follow current desktop's HIG + my @extras = (@l2, @r2, if_($ok && $cancel, Gtk2::Label->new)); # space buttons but if there's only one + push @l, $wm_is_kde ? ($bok, @extras, $bprev) : ($bprev, @extras, $bok); + } my $box = create_hbox($o_spread || "edge"); - $box->pack_start($_, 0, 0, 1) foreach @l2; - $box->pack_end($_, 0, 0, 1) foreach uniq(@r2, @l); - foreach (@l2, @r2, @l) { - $_->show; - $_->can_default($wizard_buttons); + foreach (grep { $_ } @l) { + $box->pack_start(gtkshow($_), 0, 0, 1); + $_->can_default($::isWizard); } $box; } |