gimp/tools/pdbgen/enumcode-py.pl

124 lines
3.6 KiB
Perl
Raw Normal View History

2000-08-11 04:26:36 +08:00
#!/usr/bin/perl -w
# The GIMP -- an image manipulation program
# Copyright (C) 1999-2003 Manish Singh <yosh@gimp.org>
2000-08-11 04:26:36 +08:00
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUTFILE ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# This file would be included in enumcode.pl, but plug-ins/pygimp isn't
# currently in the distribution, so keep it seperate for now.
BEGIN {
$srcdir = $ENV{srcdir} || '.';
$top_srcdir = $ENV{top_srcdir} || '../..';
$destdir = $ENV{destdir} || '.';
2000-08-11 04:26:36 +08:00
}
use lib $srcdir;
require 'enums.pl';
require 'util.pl';
*enums = \%Gimp::CodeGen::enums::enums;
*write_file = \&Gimp::CodeGen::util::write_file;
*FILE_EXT = \$Gimp::CodeGen::util::FILE_EXT;
my $enumfile = "$destdir/plug-ins/pygimp/gimpenums.py$FILE_EXT";
open ENUMFILE, "> $enumfile" or die "Can't open $enumfile: $!\n";
print ENUMFILE <<'GPL';
# Gimp-Python - allows the writing of Gimp plugins in Python.
# Copyright (C) 1997-2003 James Henstridge <james@daa.com.au>
2000-08-11 04:26:36 +08:00
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# gimpenums.py -- constants for use with the gimp module
#
# this file contains constants that are useful for use in
# gimp plugins. Just add 'from gimpenums import *' to the top
# of the script
# NOTE: This file is autogenerated by enumcode-py.pl.
GPL
print ENUMFILE <<'CODE';
# TRUE and FALSE constants ...
import __builtin__
if not hasattr(__builtin__, 'True'):
__builtin__.True = (1 == 1)
__builtin__.False = (1 != 1)
del __builtin__
FALSE = False
TRUE = True
2000-08-11 04:26:36 +08:00
CODE
$parasitefile = "$top_srcdir/libgimpbase/gimpparasite.h";
open PARASITEFILE, $parasitefile or die "Can't open $parasitefile: $!\n";
print ENUMFILE "# Parasite Flags\n";
while (<PARASITEFILE>) {
if (($sym, $val) = /^#define\s+(GIMP_PARASITE_\w+)\s+(.*)$/) {
$sym =~ s/GIMP_//;
$val =~ s/GIMP_//;
print ENUMFILE "$sym = $val\n";
}
}
close PARASITEFILE;
2000-08-11 04:26:36 +08:00
foreach (sort keys %enums) {
my $enum = $enums{$_}; my $body = ""; my $i=0;
$body .= "\n# ";
$body .= "Gimp" if !/^Gimp/;
$body .= "$_\n";
foreach $symbol (@{$enum->{symbols}}) {
my $sym = $symbol;
# Maybe Python has nice enough namespace handling that we don't
# need to prefix all constants with GIMP_
$sym =~ s/^GIMP\_//;
2000-08-11 04:26:36 +08:00
$body .= "$sym";
if (!$enum->{contig}) {
$i = $enum->{mapping}->{$symbol};
}
$body .= " = $i\n";
$i++ if($enum->{contig});
}
print ENUMFILE $body;
}
print ENUMFILE "\n";
close ENUMFILE;
&write_file($enumfile);