vfmg (DEVEL): vfmg - rest WM functions fixed - fvwm and metisse fu...
sparky
sparky at pld-linux.org
Mon Oct 31 15:45:49 CET 2005
Author: sparky Date: Mon Oct 31 14:45:49 2005 GMT
Module: vfmg Tag: DEVEL
---- Log message:
- rest WM functions fixed
- fvwm and metisse functions rewritten
- use qq() to avoid so many \"
- fixed behaviour when two menus have same name
---- Files affected:
vfmg:
vfmg (1.73.2.10 -> 1.73.2.11)
---- Diffs:
================================================================
Index: vfmg/vfmg
diff -u vfmg/vfmg:1.73.2.10 vfmg/vfmg:1.73.2.11
--- vfmg/vfmg:1.73.2.10 Mon Oct 31 04:38:45 2005
+++ vfmg/vfmg Mon Oct 31 15:45:43 2005
@@ -294,7 +294,8 @@
my $mno=0; # menu number
my $trigger=0;
my $tag;
-my $name;
+my $name="";
+my $parent="";
my $dirfile;
my $dir;
my $icon_dir;
@@ -462,6 +463,7 @@
$mno=$menustack[$#menustack];
$#menustack--;
$level--;
+ $parent =~ s/(.*):.*?$/$1/ if length $name;
next;
}
if($tag eq 'include') {
@@ -473,13 +475,14 @@
next;
}
if($tag eq 'name') {
- $name=getname();
- $menu[$menustack[$#menustack]]{$name}=$mno;
+ $name = getname();
+ $parent .= ":".$name;
+ $menu[$menustack[$#menustack]]{$parent}=$mno;
if (length $dirfile) {
- $desktop{$name}=$desktop{""};
+ $desktop{$parent}=$desktop{""};
delete $desktop{""};
} else {
- $desktop{$name}=[$name,$name,""];
+ $desktop{$parent}=[$name,$name,""] unless defined $desktop{$parent};
}
gettag(); # must be </name> else GIGO and we don't care
next;
@@ -551,7 +554,7 @@
$utfname=$name;
}
$dirfile =~ s/\..*?$//;
- $desktop{$name} = [$dirfile, $utfname, $icon];
+ $desktop{$parent} = [$dirfile, $utfname, $icon];
} else {
local $" = "\n- ";
warn "No readable $dirfile in:\n- @tmp\n";
@@ -561,7 +564,7 @@
next;
}
if($tag eq 'mergefile') {
- $name=getname();
+ my $name = getname();
gettag(); # must be </mergefile> else GIGO and we don't care
my $ok;
foreach my $tmp (@xdg_config_dirs, '') {
@@ -660,230 +663,208 @@
$level="";
sub icewm { # {{{
my $no=$_[0];
- foreach my $entry(sort keys %{$menu[$no]}) {
- #next if $menu[$no]{$entry}[0]==0;
- print "$level";
- #print "$no $menu[$no]{$entry}[0] $entry\n";
- $name=$entry;
- $name=~s/\"/\\\"/g;
- if($menu[$no]{$entry}[0]<0) {
- print qq(prog "$name" "$menu[$no]{$entry}[1]" $menu[$no]{$entry}[2]\n);
- } else {
- $menu[$no]{$entry}[1]="folder" if $menu[$no]{$entry}[1] eq "";
- $name=substr($name,1);
- print qq(menu "$name" "$menu[$no]{$entry}[1]" {\n);
+ my $apps="";
+ foreach my $entry (sort {$desktop{$a}[1] cmp $desktop{$b}[1]} keys %{$menu[$no]}) {
+ my $d = $desktop{$entry};
+ $name = $$d[1];
+ $name =~ s/\"/\\\"/g;
+ if($menu[$no]{$entry} < 0) {
+ $apps .= qq(${level}prog "$name" "$$d[2]" $$d[3]\n);
+ } else {
+ my $icon = $$d[2];
+ $icon = "folder" unless length $icon;
+ print qq(${level}menu "$name" "$icon" {\n);
$level.=" ";
- icewm($menu[$no]{$entry}[0]);
+ icewm($menu[$no]{$entry});
$level=substr($level,1);
print "$level}\n";
}
}
+ print $apps;
} # }}}
sub blackbox { # {{{
my $no=$_[0];
- foreach my $entry(sort keys %{$menu[$no]}) {
- print "$level";
- if($menu[$no]{$entry}[0]<0) {
- print "[exec] ($entry) {$menu[$no]{$entry}[2]}\n";
- } else {
- $name=$entry;
- $name=substr($name,1);
- print "[submenu] ($name)\n";
+ my $apps="";
+ foreach my $entry (sort {$desktop{$a}[1] cmp $desktop{$b}[1]} keys %{$menu[$no]}) {
+ my $d = $desktop{$entry};
+ if($menu[$no]{$entry} < 0) {
+ $apps .= "$level"."[exec] ($$d[1]) {$$d[3]}\n";
+ } else {
+ print "$level"."[submenu] ($$d[1])\n";
$level.=" ";
- blackbox($menu[$no]{$entry}[0]);
+ blackbox($menu[$no]{$entry});
$level=substr($level,1);
print "$level\[end]\n";
}
}
+ print $apps;
} # }}}
sub wmakerold { # {{{
my $no=$_[0];
- foreach my $entry(sort keys %{$menu[$no]}) {
- print "$level\"";
- my $name=$entry;
- $name=~s/\"/\\\"/g;
- if($menu[$no]{$entry}[0]<0) {
- print "$name\" EXEC $menu[$no]{$entry}[2]\n";
+ my $apps="";
+ foreach my $entry (sort {$desktop{$a}[1] cmp $desktop{$b}[1]} keys %{$menu[$no]}) {
+ my $d = $desktop{$entry};
+ my $name = $$d[1];
+ $name =~ s/\"/\\\"/g;
+ if($menu[$no]{$entry} < 0) {
+ $apps .= qq($level"$name" EXEC $$d[3]\n);
} else {
- $name=substr($name,1);
- print "$name\" MENU\n";
+ print qq($level"$name" MENU\n);
$level.=" ";
- wmakerold($menu[$no]{$entry}[0]);
+ wmakerold($menu[$no]{$entry});
$level=substr($level,1);
- print "$level\"$name\" END\n";
+ print qq($level"$name" END\n);
}
}
+ print $apps;
} # }}}
sub wmaker { # {{{
- my $no=$_[0];
- my $coma=$_[1];
- foreach my $entry(sort keys %{$menu[$no]}) {
- print "$coma\n$level(\"";
- $name=$entry;
- $name=~s/\"/\\\"/g;
- if($menu[$no]{$entry}[0]<0) {
- $menu[$no]{$entry}[2]=~s/\"/\\\"/g;
- print "$name\", EXEC, \"$menu[$no]{$entry}[2]\")";
+ my ($no, $coma)=@_;
+ my $apps="";
+ foreach my $entry (sort {$desktop{$a}[1] cmp $desktop{$b}[1]} keys %{$menu[$no]}) {
+ my $d = $desktop{$entry};
+ $name = $$d[1];
+ $name =~ s/\"/\\\"/g;
+ if($menu[$no]{$entry} < 0) {
+ (my $exec = $$d[3]) =~ s/\"/\\\"/g;
+ $apps .= "$coma\n".
+ qq{$level("$name", EXEC, "$exec")};
} else {
- $name=substr($name,1);
- print "$name\"";
+ print "$coma\n",
+ qq{$level("$name"};
$level.=" ";
- wmaker($menu[$no]{$entry}[0],",");
+ wmaker($menu[$no]{$entry},",");
$level=substr($level,1);
print "\n$level)";
}
}
+ print $apps;
} # }}}
-sub xfce4 { # {{{
+# sub xfce4 { {{{
+sub xmlname($) {
+ $_ = $_[0];
+ s/&/&/g;
+ s/\"/"/g;
+ s/</</g;
+ s/>/>/g;
+ return $_;
+}
+sub xfce4 {
my $no=$_[0];
- foreach my $entry(sort keys %{$menu[$no]}) {
- print "$level<";
- $name=$entry;
- $name=~s/&/&/g;
- $name=~s/\"/"/g;
- $name=~s/</</g;
- $name=~s/>/>/g;
- if($menu[$no]{$entry}[0]<0) {
- $menu[$no]{$entry}[2]=~s/&/&/g;
- $menu[$no]{$entry}[2]=~s/\"/"/g;
- $menu[$no]{$entry}[2]=~s/</</g;
- $menu[$no]{$entry}[2]=~s/>/>/g;
- print "app name=\"$name\" cmd=\"$menu[$no]{$entry}[2]\" icon=\"$menu[$no]{$entry}[1]\"/>\n";
+ my $apps="";
+ foreach my $entry (sort {$desktop{$a}[1] cmp $desktop{$b}[1]} keys %{$menu[$no]}) {
+ my $d = $desktop{$entry};
+ $name = ($$d[1] =~ /["&<>]/) ? xmlname($$d[1]) : $$d[1];
+ if($menu[$no]{$entry} < 0) {
+ $apps .= qq($level<app name="$name" cmd=");
+ $apps .= ($$d[3] =~ /["&<>]/) ? xmlname($$d[3]) : $$d[3];
+ $apps .= qq(" icon="$$d[2]"/>\n);
} else {
- $name=substr($name,1);
- print "menu name=\"$name\" icon=\"$menu[$no]{$entry}[1]\" visible=\"yes\">\n";
+ print qq($level<menu name="$name" icon="$$d[2]" visible="yes">\n);
$level.=" ";
- xfce4($menu[$no]{$entry}[0]);
+ xfce4($menu[$no]{$entry});
$level=substr($level,1);
print "$level</menu>\n";
}
}
+ print $apps;
} # }}}
sub afterstep { # {{{
- my $no=$_[0];
- my $dir=$_[1];
- print "dir=".$dir;
+ my ($no, $dir)=@_;
+
foreach my $entry(keys %{$menu[$no]}) {
- $name=$entry;
- if($menu[$no]{$entry}[0]<0) {
- $file=$entry;
- $file=~s/\s+/_/g;
- $file=~s|/||g;
+ my $d = $desktop{$entry};
+ $name = encode($o_enc,$$d[1]);
+ if($menu[$no]{$entry} < 0) {
$name=~s/\"/\\\"/g;
- open F_OUT, ">> $dir/$file" or warn "$dir/$file: $!\n";
- print F_OUT "Exec \"$name\" exec $menu[$no]{$entry}[2]\n";
- print F_OUT "MiniPixmap \"$menu[$no]{$entry}[1]\"\n" if $menu[$no]{$entry}[1] ne "";
- #print F_OUT "MiniPixmap \"mini-app.xpm\"\n";
- close F_OUT;
+ my $F_OUT;
+ open $F_OUT, ">> $dir/$$d[0]" or warn "$dir/$$d[0]: $!\n";
+ print $F_OUT qq(Exec "$name" exec $$d[3]\n);
+ print $F_OUT qq(MiniPixmap "$$d[2]"\n) if length $$d[2];
+ close $F_OUT;
} else {
- $name=substr($name,1);
- $name=~s|/||g;
+ $name =~ s|/||g;
mkpath("$dir/$name",0,0700);
- afterstep($menu[$no]{$entry}[0],"$dir/$name");
+ afterstep($menu[$no]{$entry},"$dir/$name");
}
}
} # }}}
sub fvwm { # {{{
- my $no=$_[0];
- my $file=$_[1];
+ my ($no, $file, $basename)=@_;
$file=~s|^\.||;
- my $basename=$_[2];
- foreach my $entry(keys %{$menu[$no]}) {
- if($menu[$no]{$entry}[0]>=0) {
- $name=substr($entry,1);
- $name=~s|/||g;
- my $menutitle=$name;
- $name=~s/\s+/_/g;
- fvwm($menu[$no]{$entry}[0],"$file.$name","$menutitle");
- }
- }
- if (!$file) {
- return;
- }
- print "Popup \"$file\"\n";
- print "\tTitle \"$basename\"\n";
- foreach my $entry(keys %{$menu[$no]}) {
- if($menu[$no]{$entry}[0]<0) {
- $name=$entry;
- $name=~s/\"/\\\"/g;
- print "\tExec \"$name\"\texec $menu[$no]{$entry}[2]\n";
+
+ my $apps = "";
+ my $this_menu = "";
+ $this_menu .= qq(Popup "$file"\n\tTitle "$basename"\n);
+ foreach my $entry (sort {$desktop{$a}[1] cmp $desktop{$b}[1]} keys %{$menu[$no]}) {
+ my $d = $desktop{$entry};
+ if($menu[$no]{$entry} < 0) {
+ $name = $$d[1];
+ $name =~ s/\"/\\\"/g;
+ $apps .= qq(\tExec "$name"\texec $$d[3]\n);
} else {
- $name=substr($entry,1);
- $name=~s|/||g;
- my $menutitle=$name;
- $name=~s/\s+/_/g;
- print "\tPopup \"$menutitle\"\t$file.$name\n";
+ $name = $$d[0];
+ $name =~ s/\s+/_/g;
+ $this_menu .= qq(\tPopup "$$d[1]"\t$file.$name\n);
+ fvwm($menu[$no]{$entry},"$file.$name",$$d[1]);
}
}
- print "EndPopup\n\n";
+ print $this_menu . $apps . "EndPopup\n\n" if length $file;
} # }}}
sub fvwm2 { # {{{
my $no=$_[0];
- my $file;
- foreach my $entry(sort keys %{$menu[$no]}) {
- print "AddToMenu $level \"";
- $name=$entry;
- $name=~s/\"/\\\"/g;
- if($menu[$no]{$entry}[0]<0) {
- print "$name\" Exec $menu[$no]{$entry}[2] &\n";
- print "Style \"$name\" Icon $menu[$no]{$entry}[1]\n" if $menu[$no]{$entry}[1] ne "";
- } else {
- $name=substr($name,1);
- $file=$name;
- $file=~s/\s+/_/g;
- $level.=".$file";
- print "$name\" Popup $level\n";
+ my $apps="";
+ foreach my $entry (sort {$desktop{$a}[1] cmp $desktop{$b}[1]} keys %{$menu[$no]}) {
+ my $d = $desktop{$entry};
+ ( my $name = $$d[1] ) =~ s/\"/\\\"/g;
+ if($menu[$no]{$entry}<0) {
+ $apps .= qq(AddToMenu $level "$name" Exec $$d[3] &\n);
+ $apps .= qq(Style "$name" Icon $$d[2]\n) if length $$d[2];
+ } else {
+ my $file = $$d[0];
+ $file =~ s/\s+/_/g;
+ $level .= ".$file";
+ print qq(AddToMenu $level "$name" Popup $level\n);
print "DestroyMenu recreate $level\n\n";
- print "AddToMenu $level \"$name\" Title\n";
- fvwm2($menu[$no]{$entry}[0]);
+ print qq(AddToMenu $level "$name" Title\n);
+ fvwm2($menu[$no]{$entry});
$level=~s/\.$file$//;
}
}
- print "\n";
+ print $apps."\n";
} # }}}
sub metisse { # {{{
- my ( $no, $file, $basename ) = @_;
- $file=~s|^\.||;
- my $icon="";
- foreach my $entry (keys %{$menu[$no]}) {
- if($menu[$no]{$entry} >= 0) {
- $name = $desktop{$entry}[0];
- $name =~ s|/||g;
- $name =~ s/\s+/_/g;
- metisse($menu[$no]{$entry},"$file.$name",$desktop{$entry}[1]);
- }
- }
- return unless length $file;
+ my ($no, $file, $basename) = @_;
+ $file =~ s|^\.||;
- my $apps="";
- print "DestroyMenu $file\n";
- print "AddToMenu $file \"$basename\" Title\n";
+ my $apps = "";
+ my $this_menu = "";
+ $this_menu .= qq(DestroyMenu $file\nAddToMenu $file "$basename" Title\n);
foreach my $entry (sort {$desktop{$a}[1] cmp $desktop{$b}[1]} keys %{$menu[$no]}) {
my $d = $desktop{$entry};
+ my $icon = "";
$icon = $$d[2] if $o_icons;
- $icon = scale_icon($icon,"png","-geometry","21x18") if $icon;
+ $icon = scale_icon($$d[2],"png","-geometry","21x18") if $icon;
$icon = "\%$icon\%" if $icon;
- if($menu[$no]{$entry}<0) {
- $name = $$d[1];
- $name =~ s/\"/\\\"/g;
- $apps .= "+ \"$icon$name\"\tExec exec $$d[3]\n";
+ if($menu[$no]{$entry} < 0) {
+ ( my $name = $$d[1] ) =~ s/\"/\\\"/g;
+ $apps .= qq(+ "$icon$name"\tExec exec $$d[3]\n);
} else {
- $name = $$d[0];
- $name =~ s|/||g;
- $name =~ s/\s+/_/g;
- print "+ \"$icon$$d[1]\"\tPopup\t$file.$name\n";
+ ( my $name = $$d[0] ) =~ s/\s+/_/g;
+ $this_menu .= qq(+ "$icon$$d[1]"\tPopup\t$file.$name\n);
+ metisse($menu[$no]{$entry},"$file.$name",$$d[1]);
}
}
- print $apps. "\n";
+ print $this_menu . $apps . "\n" if length $file;
} # }}}
sub olvwm { # {{{
@@ -893,13 +874,13 @@
my $d = $desktop{$entry};
( my $name = $$d[1] ) =~ s/\"/\\\"/g;
if($menu[$no]{$entry}<0) {
- $apps .= "$level\"$name\" exec $$d[3]\n";
+ $apps .= qq($level"$name" exec $$d[3]\n);
} else {
- print "$level\"$name\" MENU\n";
+ print qq($level"$name" MENU\n);
$level.=" ";
olvwm($menu[$no]{$entry});
$level=substr($level,1);
- print "$level\"$name\" END PIN\n";
+ print qq($level"$name" END PIN\n);
}
}
print $apps;
@@ -911,11 +892,11 @@
foreach my $entry (sort {$desktop{$a}[1] cmp $desktop{$b}[1]} keys %{$menu[$no]}) {
my $d = $desktop{$entry};
( my $name = $$d[1] ) =~ s/\"/\\\"/g;
- if($menu[$no]{$entry}<0) {
+ if($menu[$no]{$entry} < 0) {
( my $exec = $$d[3] ) =~ s/\"/\\\"/g;
- $apps .= "${level}\"$name\" \"$$d[2]\" \"$exec\"\n";
+ $apps .= qq($level"$name" "$$d[2]" "$exec"\n);
} else {
- print "${level}\"$name\" \"$$d[2]\"\n",
+ print qq($level"$name" "$$d[2]"\n),
"$level+\n";
$level.=" ";
qvwm($menu[$no]{$entry});
@@ -935,9 +916,9 @@
( my $name = $$d[1] ) =~ s/\"/\\\"/g;
if($menu[$no]{$entry}<0) {
( my $exec = $$d[3] ) =~ s/\"/\\\"/g;
- $apps .= "${level}cmd \"$name\" \"$exec\"\n";
+ $apps .= qq(${level}cmd "$name" "$exec"\n);
} else {
- print "${level}menu \"$name\"\n";
+ print qq(${level}menu "$name"\n);
$level.=" ";
aewm($menu[$no]{$entry});
$level=substr($level,1);
@@ -951,7 +932,7 @@
my ($no, $mfile, $title)=@_;
my $F_OUT;
open $F_OUT, ">> $dir/$mfile.menu" or warn "$dir/$mfile.menu: $!\n";
- print $F_OUT "\"$title\"\n";
+ print $F_OUT qq("$title"\n);
my $apps="";
foreach my $entry (sort {$desktop{$a}[1] cmp $desktop{$b}[1]} keys %{$menu[$no]}) {
my $d = $desktop{$entry};
@@ -961,10 +942,10 @@
$icon=$$d[2] if $o_icons;
$icon=scale_icon($icon,"png","-geometry","18x18") if length $icon;
if($menu[$no]{$entry}<0) {
- $apps.="\"$name\" \"$icon\" exec \"$$d[3]\"\n";
+ $apps .= qq("$name" "$icon" exec "$$d[3]"\n);
} else {
- print $F_OUT "\"$name\" \"$icon\" menu \"$dir/$$d[0].menu\"\n";
- enlightenment($menu[$no]{$entry},"$$d[0]","$name");
+ print $F_OUT qq("$name" "$icon" menu "$dir/$$d[0].menu"\n);
+ enlightenment($menu[$no]{$entry},$$d[0],$name);
}
}
print $F_OUT $apps;
@@ -976,7 +957,7 @@
foreach my $entry (keys %{$menu[$no]}) {
my $d = $desktop{$entry};
$name = encode($o_enc,$$d[1]);
- if($menu[$no]{$entry}<0) {
+ if($menu[$no]{$entry} < 0) {
$name =~ s/\"/\\\"/g;
open F_OUT, ">> $dir/$$d[0].lnk" or warn "$dir/$$d[0].lnk: $!\n";
print F_OUT "[Shortcut]\n",
@@ -1024,13 +1005,13 @@
my $d = $desktop{$entry};
if($menu[$no]{$entry}<0) {
$apps .=
- "${level}<item label=\"$$d[1]\">\n".
- "${level} <action name=\"Execute\">\n".
- "${level} <execute>$$d[3]</execute>\n".
- "${level} </action>\n".
- "${level}</item>\n";
+ qq($level<item label="$$d[1]">\n).
+ qq($level <action name="Execute">\n).
+ qq($level <execute>$$d[3]</execute>\n).
+ qq($level </action>\n).
+ qq($level</item>\n);
} else {
- print "${level}<menu id=\"$$d[1]\" label=\"$$d[1]\">\n";
+ print qq($level<menu id="$$d[1]" label="$$d[1]">\n);
$level.=" ";
openbox($menu[$no]{$entry});
$level=substr($level,1);
@@ -1072,6 +1053,7 @@
} else {
wmaker(0,"");
}
+ print "\n";
exit;
}
if($o_output eq "xfce4") {
@@ -1097,11 +1079,11 @@
}
afterstep($o_strip,$dir);
exit;
-}
+} # }}}
if($o_output eq "fvwm") {
fvwm($o_strip,"", "fvwm");
exit;
-} # }}}
+}
if($o_output eq "fluxbox") { # This is the same as blackbox (I hope so)
print "[begin] (Fluxbox)\n" unless $o_nomenu;
blackbox($o_strip);
================================================================
---- CVS-web:
http://cvs.pld-linux.org/vfmg/vfmg?r1=1.73.2.10&r2=1.73.2.11&f=u
More information about the pld-cvs-commit
mailing list