Author: sparky                       Date: Tue Nov  1 14:49:50 2005 GMT
Module: vfmg                          Tag: DEVEL
---- Log message:
- basic enlightenment DR17 support
- case insensitive sorting (still is not sorting non ACSII names well)

---- Files affected:
vfmg:
   vfmg (1.73.2.21 -> 1.73.2.22) 

---- Diffs:

================================================================
Index: vfmg/vfmg
diff -u vfmg/vfmg:1.73.2.21 vfmg/vfmg:1.73.2.22
--- vfmg/vfmg:1.73.2.21 Tue Nov  1 12:40:51 2005
+++ vfmg/vfmg   Tue Nov  1 15:49:45 2005
@@ -37,11 +37,20 @@
 my $o_output;
 $defopt{xterm}="$ENV{'VFMG_TERM'}" if $ENV{'VFMG_TERM'};
 
+my @wms = qw(DR17 aewm afterstep blackbox enlightenment fbpanel fluxbox fvwm
+       fvwm2 icewm metisse openbox olvwm qvwm wmaker wmaker-old xfce4 xpde);
+
+# %destdir and %iconsdir should only contain directories propsed by WM
 my %destdir = (
+       DR17                    =>      
"$ENV{'HOME'}/.e/e/applications/favorite",
        afterstep               =>      
"$ENV{'HOME'}/GNUstep/Library/AfterStep/start",
        enlightenment   =>      "$ENV{'HOME'}/.enlightenment/menus",
        xpde                    =>      "$ENV{'HOME'}/.xpde/Start 
Menu/Programs",
 );
+my %iconsdir = (
+       DR17                    =>      "$ENV{'HOME'}/.e/e/applications/all",
+       enlightenment   =>      "$ENV{'HOME'}/.enlightenment/icons",
+);
 
 Getopt::Long::Configure("bundling");
 GetOptions(
@@ -71,9 +80,6 @@
        'destdir|D=s'   =>      \$opt{destdir},
        );
 
-my @wms = qw(aewm afterstep blackbox enlightenment fbpanel fluxbox fvwm fvwm2
-       icewm metisse openbox olvwm qvwm wmaker wmaker-old xfce4 xpde);
-
 if($o_help) { # {{{
        local $" = ", ";
        print<<EOF;
@@ -166,6 +172,9 @@
 
 # check dependencies
 $opt{exec}=1 if $opt{exec_full};
+if ( grep { $o_output eq $_ } keys %iconsdir ) {
+       $opt{icons_dir} = $iconsdir{$o_output} unless (length $opt{icons_dir});
+}
 if ($opt{icons_scale}) {
        if ( length $opt{icons_dir} ) {
                my $conv = (split /\s/, $opt{convert})[0];
@@ -391,7 +400,7 @@
        $tags{Exec} =~ s/([^%])%i/$1$iicon/g;
        $tags{Exec} =~ s/%(?i:[fudn])//g;
        warn "Unknown Exec parameter variable: $1 in $File::Find::name, 
removing\n"
-         if ($tags{Exec} =~ s/(%[^%\s])//);
+         if ($o_verbose and $tags{Exec} =~ s/(%[^%\s])//);
        $tags{Exec} =~ s/%%/%/g;
        push @happs, $File::Find::name;
 
@@ -408,6 +417,7 @@
        open F_IN, "$tmp/applications.menu" or next;
        local $/ = undef;
        ($file = <F_IN>) =~ y/ \t\r\n//d;
+       $file =~ s/<!--.*?-->//g;
        close F_IN;
        last;
 }
@@ -699,6 +709,7 @@
                        local $/ = undef;
                        ($ok = <F_IN>) =~ y/ \t\r\n//d;
                        close F_IN;
+                       $ok =~ s/<!--.*?-->//g;
                        $file = $ok . $file;
                        last;
                }
@@ -795,8 +806,63 @@
 
 $level="";
 sub cmpdname {
-       return $desktop{$a}[1] cmp $desktop{$b}[1];
+       return lc($desktop{$a}[1]) cmp lc($desktop{$b}[1]);
 }
+
+sub DR17 { # {{{
+       my ($no, $dir, $tab)[EMAIL PROTECTED];
+       my $sort = 1;
+       my $apps = "";
+       my @edje = qw(edje_cc -id . -fd . icon.edc);
+       foreach my $entry (sort cmpdname keys %{$menu[$no]}) {
+               my $d = $desktop{$entry};
+               $name = $$d[LOCALENAME];
+               print $tab.$name."..";
+               
+
+               my $icon = $$d[ICON];
+               $icon = "blank.xpm" unless $icon;
+               $icon = scale_icon($icon);
+               die "No icon $icon\n" unless -r $icon;
+               unlink "/tmp/icon.$opt{icons_ext}";
+               symlink $icon, "/tmp/icon.$opt{icons_ext}";
+               die "No icon /tmp/icon.$opt{icons_ext}\n" unless -r 
"/tmp/icon.$opt{icons_ext}";
+               print "..";
+
+               
+               
+               if($menu[$no]{$entry} < 0) {
+                       my $file = "$opt{icons_dir}/$$d[FILENAME].eap";
+
+                       system(@edje,$file);
+                       print "..";
+                       system("enlightenment_eapp",$file,
+                               "-set-name",$name,
+                               "-set-generic",$name,
+                               "-set-exe",$$d[EXEC]);
+                       print "..DONE\n";
+                       $apps .= $$d[FILENAME] . ".eap\n";
+               } else {
+                       my $subdir = sprintf "%s/%.2d_%s", $dir, $sort, 
$$d[FILENAME];
+                       my $file = $subdir . "/.directory.eap";
+                       mkpath($subdir,0,0700);
+                       print "..";
+                       system(@edje, $file);
+                       print "..";
+                       system("enlightenment_eapp",$file,
+                               "-set-name",$name,
+                               "-set-generic",$name);
+                       
+                       print "..DONE\n";
+                       DR17($menu[$no]{$entry},$subdir,$tab."\t");
+                       $sort++;
+               }
+       }
+       open F_OUT, ">> $dir/.order" or warn "$dir/.order: $!\n";
+       print F_OUT $apps;
+       close F_OUT;    
+} # }}}
+
 sub icewm { # {{{
        my $no=$_[0];
        my $apps="";
@@ -1197,6 +1263,43 @@
 }
 
 # WM case {{{
+if ( $o_output eq "DR17" ) { # {{{
+       die "Enlightenment DR17 requires icons scaling\n"
+               unless $opt{icons_scale};
+       $| = 1;
+       print "Generating DR17 menu, this may take a long time\n";
+       chdir("/tmp");
+       # icon is allways neaded
+       open F_OUT, "> blank.xpm"; # {{{
+       print F_OUT <<EOF;
+               static char *blank[] = {
+                       "1 1 1 1",
+                       ". c None",
+                       "."
+               };
+EOF
+       close F_OUT; # }}}
+       open F_OUT, "> icon.edc"; # {{{
+       print F_OUT << "EOF";
+       images { image: "icon.$opt{icons_ext}" COMP; }
+       collections { group {
+           name: "icon";
+           max: 48 48;
+           parts { part {
+               name: "image";
+               mouse_events: 0;
+               description {
+                 state: "default" 0.0;
+                 aspect: 1.0 1.0;
+                 image.normal: "icon.$opt{icons_ext}";
+       } } } } }
+EOF
+       close F_OUT; # }}}
+       DR17($opt{strip},$opt{destdir},"");
+       unlink "blank.xpm";
+       unlink "icon.edc";
+       exit;
+} # }}}
 if($o_output eq "icewm") {
        icewm($opt{strip});
        exit;
@@ -1276,14 +1379,14 @@
        fbpanel($opt{strip});
        exit;
 }
-if($o_output eq "openbox") { # {{{
+if($o_output eq "openbox") {
        print "<openbox_menu>\n" unless $opt{nomenu};
        print qq(<menu id="root-menu" label="PLD Linux">\n) unless $opt{nomenu};
        openbox($opt{strip});
        print "</menu>\n" unless $opt{nomenu};
        print "</openbox_menu>\n" unless $opt{nomenu};
        exit;
-} # }}}
+}
 # WM case }}}
 
 # vi: ts=4 sw=4 noet fdm=marker
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/vfmg/vfmg?r1=1.73.2.21&r2=1.73.2.22&f=u

_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to