Author: sparky                       Date: Sat Dec  2 02:54:24 2006 GMT
Module: vfmg                          Tag: HEAD
---- Log message:
- backend for new e17, using desktop-like files

---- Files affected:
vfmg/VFMG:
   e17-desktop_out.pm (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: vfmg/VFMG/e17-desktop_out.pm
diff -u /dev/null vfmg/VFMG/e17-desktop_out.pm:1.1
--- /dev/null   Sat Dec  2 03:54:24 2006
+++ vfmg/VFMG/e17-desktop_out.pm        Sat Dec  2 03:54:19 2006
@@ -0,0 +1,115 @@
+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/menu/all";
+}
+
+sub icons_dir() {
+       return "$ENV{'HOME'}/.e/e/applications/all";
+}
+
+=example e17 desktop
+[Desktop Entry]
+Encoding=UTF-8
+Name=<name>
+GenericName=<generic>
+Comment=<comment>
+Exec=<exec>
+StartupWMClass=<class>
+X-Enlightenment-WindowName=
+X-Enlightenment-WindowTitle=
+X-Enlightenment-WindowRole=
+Icon=<icon>
+StartupNotify=true
+Type=Application
+=cut
+
+my %DR;
+
+sub e17($$$);
+sub e17($$$) {
+       my ($no, $dir, $tab) = @_;
+       my $dirs = "";
+       my $apps = "";
+       foreach my $entry (sort main::cmpdname keys %{$main::menu[$no]}) {
+               my $icon_exists = 0;
+               my $d = $main::desktop[$entry];
+               my $icon = "";
+               $icon = main::scale_icon($$d{Icon}) if $main::opt{icons};
+
+               my $common_desk = "[Desktop Entry]\n" .
+                               "Encoding=UTF-8\n" .
+                               "Name=$$d{Name}\n";
+               $common_desk .= "Comment=$$d{Comment}\n" if exists $$d{Comment};
+               $common_desk .= "Icon=$icon\n" if length $icon;
+
+               if ($main::menu[$no]{$entry} < 0) {
+                       open F_OUT, ">", 
"$main::opt{destdir}/../../all/$$d{file}.desktop"
+                               or die "Can't create .desktop 
$main::opt{destdir}/../../all/$$d{file}.desktop file: $!\n";
+                       print F_OUT $common_desk;
+                       print F_OUT "GenericName=$$d{GenericName}\n"
+                               if exists $$d{GenericName};
+                       print F_OUT "StartupNotify=true\n" if exists 
$$d{StartupNotify}
+                               and $$d{StartupNotify} =~ /^(1|true)$/;
+                       print F_OUT "Exec=$$d{Exec}\n",
+                               "Type=Application\n";
+                       close F_OUT;
+
+                       $apps .= "$$d{file}.desktop\n";
+               } else {
+                       my $subdir = sprintf "$dir/$$d{file}";
+                       mkpath($subdir,0,0700);
+                       open F_OUT, "> $subdir/.directory";
+                       print F_OUT $common_desk;
+                       print F_OUT "Type=Directory\n";
+                       close F_OUT;
+
+                       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() {
+=to implement later
+       $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}};
+=cut
+       
+       e17($main::opt{strip}, $main::opt{destdir}, "");
+}
+
+1;
+
+# vi: ts=4 sw=4
================================================================
_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to