Author: sparky                       Date: Sat Dec  2 03:12:44 2006 GMT
Module: vfmg                          Tag: HEAD
---- Log message:
- it sucks ! CVS cannot handle symlinks...

---- Files affected:
vfmg/VFMG:
   DR17_out.pm (1.2 -> 1.3)  (NEW)

---- Diffs:

================================================================
Index: vfmg/VFMG/DR17_out.pm
diff -u /dev/null vfmg/VFMG/DR17_out.pm:1.3
--- /dev/null   Sat Dec  2 04:12:44 2006
+++ vfmg/VFMG/DR17_out.pm       Sat Dec  2 04:12:39 2006
@@ -0,0 +1,294 @@
+package VFMG::Output;
+
+use strict;
+use warnings;
+use File::Path qw(mkpath);
+
+sub decode_tags() {
+       return qw(GenericName Comment);
+}
+
+sub destdir() {
+       return "$ENV{'HOME'}/.e/e/applications/favorite";
+}
+
+sub icons_dir() {
+       return "$ENV{'HOME'}/.e/e/applications/all";
+}
+
+my %DR;
+
+sub e17($$$);
+sub e17($$$) {
+       my ($no, $dir, $tab) = @_;
+       my $dirs = "";
+       my $apps = "";
+       my @edje = qw(edje_cc -id . -fd . icon.edc icon.eap);
+       foreach my $entry (sort main::cmpdname keys %{$main::menu[$no]}) {
+               my $icon_exists = 0;
+               my $d = $main::desktop[$entry];
+               my $name = $$d{Name};
+               print $tab.$name.".." if $main::o_verbose;
+               my $icon = $$d{Icon};
+
+               if ( defined $DR{existing}->{$$d{file}} ) {
+                       my $e = $DR{existing}->{$$d{file}};
+                       if (
+                               -r "$main::opt{icons_dir}/$$d{file}.eap"
+                                       and
+                               (
+                                       (not defined $$e{Name} and not defined 
$$d{Name}) 
+                                               or ($$e{Name} eq $$d{Name})
+                               )
+                               and
+                               (
+                                       (not defined $$e{GenericName} and not 
defined $$d{GenericName})
+                                               or ($$e{GenericName} eq 
$$d{GenericName})
+                               )
+                               and
+                               (
+                                       (not defined $$e{Comment} and not 
defined $$d{Comment})
+                                               or ($$e{Comment} eq 
$$d{Comment})
+                               )
+                               and
+                               (
+                                       (not defined $$e{Exec} and not defined 
$$d{Exec})
+                                               or ($$e{Exec} eq $$d{Exec} )
+                               )
+                       )
+                       {
+                               if ( -r $icon ) {
+                                       (my $md5 = `md5sum $icon`) =~ 
s/\s+.*//s;
+                                       if ( defined $$e{IconMD5} ) {
+                                               $icon_exists = 1 if ( $md5 eq 
$$e{IconMD5} );
+                                       }
+                               } else {
+                                       $icon_exists = 1 unless defined 
$$e{IconMD5};
+                               }
+                       }
+               }
+               
+               unless ( $icon_exists ) {
+                       delete $DR{existing}->{$$d{file}}
+                               if exists $DR{existing}->{$$d{file}};
+                       my $md5;
+                       if ( -r $icon ) {
+                               ($md5 = `md5sum $icon`) =~ s/\s+.*//s;
+                       }
+                       my $e = {
+                               Name    => $$d{Name},
+                               GenericName     => $$d{GenericName},
+                               Comment => $$d{Comment},
+                               Exec    => $$d{Exec},
+                               IconMD5 => $md5
+                       };
+                       $DR{existing}->{$$d{file}} = $e;
+                       
+                       unlink $DR{icon};
+                       if ( not -r $icon and defined $DR{text_icon} ) {
+                               ( my $exe = $DR{text_icon} ) =~ s/%1/"$name"/;
+                               system($exe);
+                       } else {
+                               $icon = $DR{tmp}."/blank.xpm" unless -r $icon;
+                               main::scale_icon($icon);
+                       }
+                       die "No icon $DR{icon}\n" unless -r $DR{icon};
+                       print ".." if $main::o_verbose;
+               }
+               
+               if ($main::menu[$no]{$entry} < 0) {
+                       if ( $icon_exists ) {
+                               $apps .= $$d{file} . ".eap\n";
+                               print "..EXISTS\n" if $main::o_verbose;
+                               next;
+                       }
+                       my $file = "$main::opt{icons_dir}/$$d{file}.eap";
+
+                       unlink "icon.eap";
+                       system(@edje);
+                       print ".." if $main::o_verbose;
+                       my @eapp = qw(enlightenment_eapp icon.eap);
+                       push @eapp, "-set-name",$name;
+                       push @eapp, "-set-generic",$$d{GenericName}
+                               if $$d{GenericName};
+                       push @eapp, "-set-comment",$$d{Comment}
+                               if $$d{Comment};
+                       push @eapp, "-set-exe",$$d{Exec};
+                       if ( defined $DR{wcnt} and exists $DR{wcnt}{$$d{file}} 
) {
+                               my $wcnt = $DR{wcnt}{$$d{file}};
+                               push @eapp, "-set-win-class", $$wcnt[0]
+                                       if defined $$wcnt[0];
+                               push @eapp, "-set-win-name", $$wcnt[1] if 
defined $$wcnt[1];
+                               push @eapp, "-set-win-title", $$wcnt[2]
+                                       if defined $$wcnt[2];
+                               push @eapp, "-set-win-role", $$wcnt[3] if 
defined $$wcnt[3];
+                       } else {
+                               if ( $$d{term} == 1 ) {
+                                       if ( defined $main::opt{termapp_class} 
) {
+                                               (my $tapp = 
$main::opt{termapp_class}) =~ s/%1/$$d{bin}/;
+                                               push @eapp, "-set-win-class", 
$tapp;
+                                       }
+                                       if ( defined $main::opt{termapp_name} ) 
{
+                                               (my $tapp = 
$main::opt{termapp_name}) =~ s/%1/$$d{bin}/;
+                                               push @eapp, "-set-win-name", 
$tapp;
+                                       }
+                               } else {
+                                       (my $exe = (split /\s/, $$d{Exec})[0]) 
=~ s#.*/##;
+                                       $exe = ucfirst lc $exe;
+                                       push @eapp, "-set-win-class", $exe;
+                               }
+                       }
+                       system(@eapp);
+                       rename "icon.eap", $file;
+                       
+                       print "..DONE\n" if $main::o_verbose;
+                       $apps .= $$d{file} . ".eap\n";
+               } else {
+                       my $subdir = sprintf "%s/%s", $dir, $$d{file};
+                       my $file = $subdir . "/.directory.eap";
+                       my $file2 = "$main::opt{icons_dir}/$$d{file}.eap";
+                       mkpath($subdir,0,0700);
+                       print ".." if $main::o_verbose;
+                       unless ( $icon_exists ) {
+                               unlink "icon.eap";
+                               system(@edje);
+                               print ".." if $main::o_verbose;
+                               system("enlightenment_eapp","icon.eap",
+                                       "-set-name",$name);
+                       }
+                       rename "icon.eap", $file2;
+                       symlink ($file2, $file);
+
+                       print "..DONE\n" if $main::o_verbose;
+                       e17($main::menu[$no]{$entry},$subdir,"$tab\t");
+                       $dirs .= $$d{file}."\n";
+               }
+       }
+       open F_OUT, ">> $dir/.order" or warn "$dir/.order: $!\n";
+       print F_OUT $dirs;
+       print F_OUT $apps;
+       close F_OUT;    
+}
+
+sub do_menu() {
+       die "Enlightenment DR17 requires icon scaling\n"
+               unless $main::opt{icons_scale};
+       die "Enlightenment DR17 conflicts with icons fork\n"
+               if $main::opt{icons_fork};
+       
+       $| = 1;
+       print "Generating DR17 menu, this may take a long time\n";
+       $DR{tmp} = $ENV{'TMPDIR'};
+       $DR{tmp} = $ENV{'TMP'}  unless -d $DR{tmp};
+       $DR{tmp} = "/tmp"  unless -d $DR{tmp};
+       $DR{icon} = $DR{tmp}."/icon.".$main::opt{icons_oext};
+       
+       $main::opt{convert} =~ s/\%out/$DR{icon}/g;
+       chdir($DR{tmp});
+       unlink $DR{icon};
+       # icon is allways needed
+       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.$main::opt{icons_oext}" 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.$main::opt{icons_oext}";
+                                       }
+                               }
+                       }
+               }
+       }
+EOF
+       close F_OUT; # }}}
+       
+       $main::opt{wcnt_file} = "" unless defined $main::opt{wcnt_file};
+       $DR{wcnt} = {};
+       foreach my $wcnt_file (split /\s*;\s*/, $main::opt{wcnt_file}) { # {{{
+               unless (open F_IN, $wcnt_file) {
+                       warn "Can't open WCNT file '$wcnt_file': $!\n";
+                       next;
+               }
+               while ( <F_IN> ) {
+                       next if /^\s*#/;
+                       next unless s/^\s*(\S+)//;
+                       my $name = $1;
+                       $DR{wcnt}{$name} = [undef, undef, undef];
+                       foreach my $num (0..3) {
+                               last unless s/^\s*"(([^"]|\")*?[^\\])"// or 
s/^\s*(\S+)//;
+                               $DR{wcnt}{$name}[$num] = $1 unless $1 eq "*";
+                       }
+                       warn "Omitted: $_\n" if length($_) and $main::o_verbose;
+               }
+               close F_IN;
+       } # }}}
+       $DR{wcnt} = undef unless %{$DR{wcnt}};
+       
+       $DR{text_icon} = $main::opt{text_icon};
+       if ( defined $DR{text_icon} ) {
+               $DR{text_icon} =~ s#\%in#$DR{tmp}/blank.xpm#g;
+               $DR{text_icon} =~ s#\%out#$DR{icon}#g;
+       }
+
+       $DR{existing} = {};
+       if (not $main::opt{full_regen} and
+               open F_IN, "$main::opt{icons_dir}/.existing") {
+
+               my $icon = "broken?";
+               while (my $line = <F_IN>) {
+                       if ( $line =~ /^\[(.*)\]$/ ) {
+                               $icon = $1;
+                               $DR{existing}->{$icon} = {};
+                       } elsif ( $line =~ /^(\S+?):\t(.*)$/ ) {
+                               $DR{existing}->{$icon}->{$1} = $2;
+                       }
+               }
+               close F_IN;
+       }
+
+       e17($main::opt{strip}, $main::opt{destdir}, "");
+       unlink "blank.xpm";
+       unlink "icon.edc";
+       unlink "icon.eap";
+       unlink $DR{icon};
+       unlink "$main::opt{icons_dir}/.eap.cache.cfg"
+               if -r "$main::opt{icons_dir}/.eap.cache.cfg";
+       for my $dir (qw(all bar favorite restart startup)) {
+               unlink "$main::opt{destdir}/../$dir/.eap.cache.cfg"
+                       if -r "$main::opt{destdir}/../$dir/.eap.cache.cfg";
+       }
+       utime undef, undef, "$main::opt{destdir}/../bar/.order";
+
+       open F_OUT, "> $main::opt{icons_dir}/.existing";
+       foreach my $icon ( keys %{$DR{existing}} ) {
+               print F_OUT "[$icon]\n";
+               foreach my $entry ( keys %{$DR{existing}->{$icon}} ) {
+                       print F_OUT "$entry:    
$DR{existing}->{$icon}->{$entry}\n"
+                               if defined $DR{existing}->{$icon}->{$entry};
+               }
+       }
+       close F_OUT;
+       
+       exit;
+}
+
+1;
================================================================
_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to