#!/usr/bin/perl
#
#  This is a REAL QUICK HACK to add captions to JPG files. We'll replace it
#  with something more Rico Suave(tm) as time goes one.
#
#  Use --force to force the program to process all JPG files regardless of 
#  whether an existing comment exists or not.
#
#  $Id: autocaption,v 1.3 2002/08/23 06:11:26 jjreynold Exp $
#  $Name: v1_0_2 $
#
use Getopt::Long;
&GetOptions('force') or die ("Invalid flag\n");

if (scalar (@ARGV)) {
    @files = @ARGV;
}
else {
    while ($name = <*.jpg *.JPG *.jpeg *.JPEG>) {
	push (@files, $name);
    }
}

foreach $name (@files) {
    $counter++;
    printf ("Processing $name ...\n");
    $qname = quotemeta ($name);
    open (PIPE, "imageindex -caption $qname |") || die;
    $existing_caption = '';
    while (<PIPE>) {
	if (/: "(.*)"\s*$/) {
	    $existing_caption = $1;
	}
    }
    close (PIPE);
    if ($existing_caption) {
	printf ("Existing caption found: \"$existing_caption\"\n");
	if (! defined ($opt_force)) {
	    printf ("Skipping this file. Use -force to re-do caption.\n\n");
	    next;
	}
    }
    else {
	printf ("No existing caption found.\n");
    }
    printf ("Bringing up resized image. Enter a caption with \".\" last line:\n");
    printf ("(entering \".\" will re-use any previous caption)\n");
    if ($pid = fork) {
	$stdin = ''; $caption = '';
	while ($stdin !~ /^\.$/) {
	    $caption .= $stdin;
	    $stdin = <STDIN>;
	}

	chomp ($caption);
	$caption = quotemeta ($caption);
	if ($caption ne '') {
	    printf ("Executing: imageindex -caption $qname $caption\n");
	    system ("imageindex -caption $qname $caption");
	}

	kill 15, $pid;

#	if ($counter > 1) {
#	    last;
#	}
    }
    else {
	exec 'display', '-geometry', '400x300+5+5', $name;
    }


}
