#!/usr/bin/perl

# For faster multiple execs, start a gimp, and do Xtns/Perl/Server.
# Warning! Error message are the worst ever. Unquote the "set_trace" if you need troubleshooting.

use Gimp qw(:consts main xlfd_size :auto);
use MDK::Common;

Gimp::init();
#Gimp::set_trace(TRACE_ALL);

$| = 1;

sub create_file {
    my ($backimg, $fontname, $text, $outfile) = @_;
    my $img = gimp_file_load($backimg, $backimg);
    gimp_palette_set_foreground([255, 255, 255]);
    my $layer = gimp_text_fontname($img, -1, 0, 10, $text, 0, 1, 250, 1, $fontname);
    my $width = gimp_drawable_width($layer);
    gimp_image_merge_visible_layers($img, 0);
    gimp_crop($img, $width, 40, 0, 0);
    gimp_file_save($img, gimp_image_active_drawable($img), $outfile, $outfile);
}

my $wd = chomp_(`pwd`);

my $font = 'SOME NICE FONT';
my %meuh = (install => 'Software Packages Installation', remove => 'Software Packages Removal', update => 'Mandrake Update');

mkdir "title/en";
create_file("$wd/title-back.png", $font, $meuh{$_}, "$wd/title/en/title-$_.png") foreach keys %meuh;

foreach my $po (glob('../po/*.po')) {
    my ($poname) = $po =~ m|/([^/\.]+)\.po$|;
    print "[$poname] ";
    my $charset;
    my @lines = cat_($po);
    foreach (@lines) {
	/^"Content-Type: .*; charset=(.*)/ and $charset = $1;
    }
    if ($charset =~ /^(iso-8859-15?)|(utf-8)/i) {
	foreach my $k (keys %meuh) {
	    my $str = $meuh{$k};
	    my $i18n;
	    each_index { /^msgid "\Q$str/ && ($lines[$::i-1] !~ /fuzzy/) and $i18n = $lines[$::i+1] } @lines;  
	    if ($i18n =~ /^msgstr "(.+)"$/) {
		$i18n = $1;
		if ($charset =~ /^utf-8/i) {
		    output("/tmp/create_titles_temp", $i18n);
		    $i18n = `iconv -f UTF8 -t iso-8859-1 /tmp/create_titles_temp 2>/dev/null`;
		    $? and next;
		}
		mkdir "title/$poname";
		create_file("$wd/title-back.png",
			    $font,
			    $i18n,
			    "$wd/title/$poname/title-$k.png");
		print ".";
	    }
	}
    } else {
	print "- ignoring, charset is not iso-8859-1 or UTF8\n";
    }
    print "\n";
}

Gimp::end();