Author: sparky
Date: Fri Jan 19 21:18:52 2007
New Revision: 8175
Modified:
vfmg/trunk/vfmg
Log:
- allow promoting submenu with more than one entry
Modified: vfmg/trunk/vfmg
==============================================================================
--- vfmg/trunk/vfmg (original)
+++ vfmg/trunk/vfmg Fri Jan 19 21:18:52 2007
@@ -86,7 +86,11 @@
'encoding|E=s' => \$opt{encoding},
'clear|c!' => \$opt{clear},
- 'promote|p!' => \$opt{promote},
+ 'promote|p:+' => \$opt{promote},
+ 'no-promote' => sub { $opt{promote} = 0 },
+ 'promote-category' => sub { $opt{promote} = abs(
$opt{promote}) },
+ 'no-promote-category'
+ => sub { $opt{promote} = -
abs( $opt{promote}) },
'strip|s!' => \$opt{strip},
'addmenu|m!' => \$opt{addmenu},
'only-in|o=s' => \$opt{only_in},
@@ -757,33 +761,32 @@
} #}}}
if ( $opt{promote} ) { # {{{
+ my $promote_num = abs( $opt{promote} );
my @count;
- for ( my $i = $#menu; $i >= 0; $i-- ) {
+ for ( my $i = $#menu; $i >= 0; $i-- ) { # for each menu:
$count[$i] = 0;
- foreach my $entry ( keys %{$menu[$i]} ) {
+ foreach my $entry ( keys %{$menu[$i]} ) { # for each menu entry:
my $mno = $menu[$i]{$entry};
- if ( $mno < 0 ) {
+ if ( $mno < 0 ) { # application
$count[$i]++;
- } else { # submenu
- if ( $count[$mno] == 0 ) {
- delete( $menu[$i]{$entry} );
- } else {
- if ( $count[$mno] == 1 ) { #only one
entry in submenu
- foreach my $name ( keys
%{$menu[$mno]} ) {
-# warn "Promoting:
$desktop[$name][1] --> $desktop[$entry][1]\n" if $o_verbose;
- $desktop[$name]{Name} =
$desktop[$entry]{Name}
- . " / " .
$desktop[$name]{Name};
- if ( $menu[$mno]{$name}
== -1 ) { # it's aplication
-
$menu[$i]{$name} = -1;
- } else {
-
$menu[$i]{$name} = $menu[$mno]{$name};
- delete(
$menu[$mno]{$name} );
- }
- }
- delete( $menu[$i]{$entry} );
+ } elsif ( $count[$mno] == 0 ) { # empty submenu
+ delete $menu[$i]{$entry};
+ } elsif ( $count[$mno] <= $promote_num ) { # small menu
+ foreach my $name ( keys %{$menu[$mno]} ) {
+ $desktop[$name]{Name} =
$desktop[$entry]{Name}
+ . " / " . $desktop[$name]{Name}
+ if $opt{promote} > 0;
+ if ( $menu[$mno]{$name} == -1 ) { #
application
+ $menu[$i]{$name} = -1; # add
application
+ } else {
+ $menu[$i]{$name} =
$menu[$mno]{$name}; # add submenu
+ delete $menu[$mno]{$name}; #
remove old submenu
}
- $count[$i]++;
}
+ delete $menu[$i]{$entry};
+ $count[$i] += $count[$mno];
+ } else { # big menu
+ $count[$i]++;
}
}
}
_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit