SVN: vfmg/trunk/vfmg
sparky
sparky at pld-linux.org
Fri Jan 19 21:18:53 CET 2007
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]++;
}
}
}
More information about the pld-cvs-commit
mailing list