#!/usr/bin/perl
### vim:ft=perl:fdm=marker
###
### dynamic wallpaper generator for fvwm
###   takes three parameters:
###     'wallpaper directory'
###     'menu-name'
###     'picture-suffix'
###     'program'
###
### Naming for wallpapers:
###     catergorie-number-name.${picture-suffix}
###
### To give you an idea what i mean:
###
### % ls -1
### cars-000-audiA4.png
### cars-001-audiRSQ.png
### cars-002-autoB4cabrio.png
### cars-004-generalsmokie.png
### cars-005-mustang.png
### cars-006-generallee.png
### cars-007-charger.png
### computer-000-help.png
### computer-001-hack.png
### female-000-db.png
### misc-000-butterfly.png
### misc-001-hackse.png
### misc-002-dontgetcaught.png
### misc-003-cannabis.png
### nature-000-cloudylake.png
### nature-001-darklake.png
### nature-002-colorfulllake.png
### tech-000-submarine.png
### tech-001-helicopter.png
###
### Frank Terbeck <ft@bewatermyfriend.org>
### Last-Modified: Fri Nov 21 18:48:36 2008
###
### <http://ft.bewatermyfriend.org/comp/fvwm.html>
###

my $menu  = $ARGV[1];
my $dir   = $ARGV[0];
my $suff  = $ARGV[2];
my $prog  = $ARGV[3];
my $i;
opendir(DIR, $dir) or die "couldn't open \"$dir\"\n";
my @pics = sort grep { /\.$suff$/ && -f "$dir/$_" } readdir(DIR);
closedir(DIR);
my @string;
my $key;
my %cat;

for $i (0..$#pics) {
  if ($pics[$i] =~ m/([a-zA-Z0-9]*)-([0-9]*)-([a-zA-Z0-9]*)\.png/g) {
    $cat{$1}{"$2. $3"} = $pics[$i];
  }
  elsif ($pics[$i] =~ m/([a-zA-Z0-9]*)-([0-9]*)\.png/g) {
    $cat{$1}{"pic $2"} = $pics[$i];
  }
  else {
    $cat{unsorted}{$pics[$i]} = $pics[$i];
  }
}

foreach $key (sort keys %cat) {
  my $ikey;
  print   "DestroyMenu  recreate $menu-$key\n";
  print   "AddToMenu    $menu-$key     \"$key\"  Title\n";
  foreach $ikey (sort keys %{ $cat{$key} }) {
    $sc_ikey=$ikey;
    $sc_ikey=~s/(00)([0-9])(.*)/$1&$2$3/;
    print "AddToMenu    $menu-$key     \"\%$dir/thumbs/$cat{$key}{$ikey}\%$sc_ikey\"         Exec exec $prog \"$dir/$cat{$key}{$ikey}\"\n";
    #print "AddToMenu    $menu-$key     \"$ikey\"         Exec exec $prog \"$dir/$cat{$key}{$ikey}\"\n";
  }
}

foreach $key (sort keys %cat) {
  print "AddToMenu $menu \"$key\" PopUp $menu-$key\n";
}