register some missing enums.

2004-10-25  Michael Natterer  <mitch@gimp.org>

	* libgimpbase/gimpbaseenums.[ch]: register some missing enums.

	* tools/pdbgen/enumcode.pl: removed code to generate
	plug-ins/script-fu/script-fu-constants.c, generate code to
	explicitely initialize and query all of libgimp*'s enums
	and write it to libgimp/gimpenums.c.tail

	* libgimp/gimpenums.h: regenerated.

	* libgimp/Makefile.am: append gimpenums.c.tail to gimpenums.c

	* libgimp/gimp.c (gimp_main): call g_type_init() and
	_gimp_enums_init().

	* libgimp/gimp.def: added gimp_enums_get_type_names().

	* plug-ins/script-fu/Makefile.am
	* plug-ins/script-fu/script-fu-constants.[ch]: removed these files.

	* plug-ins/script-fu/siod-wrapper.c: dynamically register all
	constants using gimp_enums_get_type_names() and introspection.
	Also register the built-in unit types.

	* plug-ins/script-fu/script-fu.c: changed accordingly.
This commit is contained in:
Michael Natterer 2004-10-25 19:29:00 +00:00 committed by Michael Natterer
parent 76d874e29c
commit b030530936
15 changed files with 510 additions and 372 deletions

View file

@ -1,3 +1,30 @@
2004-10-25 Michael Natterer <mitch@gimp.org>
* libgimpbase/gimpbaseenums.[ch]: register some missing enums.
* tools/pdbgen/enumcode.pl: removed code to generate
plug-ins/script-fu/script-fu-constants.c, generate code to
explicitely initialize and query all of libgimp*'s enums
and write it to libgimp/gimpenums.c.tail
* libgimp/gimpenums.h: regenerated.
* libgimp/Makefile.am: append gimpenums.c.tail to gimpenums.c
* libgimp/gimp.c (gimp_main): call g_type_init() and
_gimp_enums_init().
* libgimp/gimp.def: added gimp_enums_get_type_names().
* plug-ins/script-fu/Makefile.am
* plug-ins/script-fu/script-fu-constants.[ch]: removed these files.
* plug-ins/script-fu/siod-wrapper.c: dynamically register all
constants using gimp_enums_get_type_names() and introspection.
Also register the built-in unit types.
* plug-ins/script-fu/script-fu.c: changed accordingly.
2004-10-25 Michael Natterer <mitch@gimp.org>
Don't store human readable and translatable enum/flag strings in

View file

@ -7,3 +7,4 @@ _libs
.deps
*.la
gimpenums.c
gimpenums.c.tail

View file

@ -332,7 +332,7 @@ uninstall-local: uninstall-ms-lib uninstall-libtool-import-lib
gen_sources = xgen-cec
CLEANFILES = $(gen_sources)
$(srcdir)/gimpenums.c: $(srcdir)/gimpenums.h $(GIMP_MKENUMS)
$(srcdir)/gimpenums.c: $(srcdir)/gimpenums.h $(srcdir)/gimpenums.c.tail $(GIMP_MKENUMS)
$(GIMP_MKENUMS) \
--fhead "#include \"config.h\"\n#include <glib-object.h>\n#include \"libgimpbase/gimpbase.h\"\n#include \"gimpenums.h\"" \
--fprod "\n/* enumerations from \"@filename@\" */" \
@ -343,5 +343,6 @@ $(srcdir)/gimpenums.c: $(srcdir)/gimpenums.h $(GIMP_MKENUMS)
--dprod " { @VALUENAME@, @valuedesc@, @valuehelp@ }," \
--dtail " { 0, NULL, NULL }\n };\n\n static GType type = 0;\n\n if (! type)\n {\n type = g_@type@_register_static (\"@EnumName@\", values);\n gimp_type_set_translation_domain (type, GETTEXT_PACKAGE \"-libgimp\");\n gimp_@type@_set_value_descriptions (type, descs);\n }\n\n return type;\n}\n" \
$(srcdir)/gimpenums.h > xgen-cec \
&& cat $(srcdir)/gimpenums.c.tail >> xgen-cec \
&& cp xgen-cec $(@F) \
&& rm -f xgen-cec

View file

@ -359,6 +359,8 @@ gimp_main (const GimpPlugInInfo *info,
wire_set_writer (gimp_write);
wire_set_flusher (gimp_flush);
g_type_init ();
_gimp_enums_init ();
/* initialize units */
{

View file

@ -144,6 +144,7 @@ EXPORTS
gimp_edit_paste
gimp_edit_stroke
gimp_ellipse_select
gimp_enums_get_type_names
gimp_equalize
gimp_eraser
gimp_eraser_default

View file

@ -427,6 +427,11 @@ typedef enum
} GimpTransferMode;
void _gimp_enums_init (void);
const gchar ** gimp_enums_get_type_names (gint *n_type_names);
G_END_DECLS
#endif /* __GIMP_ENUMS_H__ */

View file

@ -143,6 +143,240 @@ gimp_image_type_get_type (void)
return type;
}
GType
gimp_pdb_arg_type_get_type (void)
{
static const GEnumValue values[] =
{
{ GIMP_PDB_INT32, "GIMP_PDB_INT32", "int32" },
{ GIMP_PDB_INT16, "GIMP_PDB_INT16", "int16" },
{ GIMP_PDB_INT8, "GIMP_PDB_INT8", "int8" },
{ GIMP_PDB_FLOAT, "GIMP_PDB_FLOAT", "float" },
{ GIMP_PDB_STRING, "GIMP_PDB_STRING", "string" },
{ GIMP_PDB_INT32ARRAY, "GIMP_PDB_INT32ARRAY", "int32array" },
{ GIMP_PDB_INT16ARRAY, "GIMP_PDB_INT16ARRAY", "int16array" },
{ GIMP_PDB_INT8ARRAY, "GIMP_PDB_INT8ARRAY", "int8array" },
{ GIMP_PDB_FLOATARRAY, "GIMP_PDB_FLOATARRAY", "floatarray" },
{ GIMP_PDB_STRINGARRAY, "GIMP_PDB_STRINGARRAY", "stringarray" },
{ GIMP_PDB_COLOR, "GIMP_PDB_COLOR", "color" },
{ GIMP_PDB_REGION, "GIMP_PDB_REGION", "region" },
{ GIMP_PDB_DISPLAY, "GIMP_PDB_DISPLAY", "display" },
{ GIMP_PDB_IMAGE, "GIMP_PDB_IMAGE", "image" },
{ GIMP_PDB_LAYER, "GIMP_PDB_LAYER", "layer" },
{ GIMP_PDB_CHANNEL, "GIMP_PDB_CHANNEL", "channel" },
{ GIMP_PDB_DRAWABLE, "GIMP_PDB_DRAWABLE", "drawable" },
{ GIMP_PDB_SELECTION, "GIMP_PDB_SELECTION", "selection" },
{ GIMP_PDB_BOUNDARY, "GIMP_PDB_BOUNDARY", "boundary" },
{ GIMP_PDB_PATH, "GIMP_PDB_PATH", "path" },
{ GIMP_PDB_PARASITE, "GIMP_PDB_PARASITE", "parasite" },
{ GIMP_PDB_STATUS, "GIMP_PDB_STATUS", "status" },
{ GIMP_PDB_END, "GIMP_PDB_END", "end" },
{ 0, NULL, NULL }
};
static const GimpEnumDesc descs[] =
{
{ GIMP_PDB_INT32, "GIMP_PDB_INT32", NULL },
{ GIMP_PDB_INT16, "GIMP_PDB_INT16", NULL },
{ GIMP_PDB_INT8, "GIMP_PDB_INT8", NULL },
{ GIMP_PDB_FLOAT, "GIMP_PDB_FLOAT", NULL },
{ GIMP_PDB_STRING, "GIMP_PDB_STRING", NULL },
{ GIMP_PDB_INT32ARRAY, "GIMP_PDB_INT32ARRAY", NULL },
{ GIMP_PDB_INT16ARRAY, "GIMP_PDB_INT16ARRAY", NULL },
{ GIMP_PDB_INT8ARRAY, "GIMP_PDB_INT8ARRAY", NULL },
{ GIMP_PDB_FLOATARRAY, "GIMP_PDB_FLOATARRAY", NULL },
{ GIMP_PDB_STRINGARRAY, "GIMP_PDB_STRINGARRAY", NULL },
{ GIMP_PDB_COLOR, "GIMP_PDB_COLOR", NULL },
{ GIMP_PDB_REGION, "GIMP_PDB_REGION", NULL },
{ GIMP_PDB_DISPLAY, "GIMP_PDB_DISPLAY", NULL },
{ GIMP_PDB_IMAGE, "GIMP_PDB_IMAGE", NULL },
{ GIMP_PDB_LAYER, "GIMP_PDB_LAYER", NULL },
{ GIMP_PDB_CHANNEL, "GIMP_PDB_CHANNEL", NULL },
{ GIMP_PDB_DRAWABLE, "GIMP_PDB_DRAWABLE", NULL },
{ GIMP_PDB_SELECTION, "GIMP_PDB_SELECTION", NULL },
{ GIMP_PDB_BOUNDARY, "GIMP_PDB_BOUNDARY", NULL },
{ GIMP_PDB_PATH, "GIMP_PDB_PATH", NULL },
{ GIMP_PDB_PARASITE, "GIMP_PDB_PARASITE", NULL },
{ GIMP_PDB_STATUS, "GIMP_PDB_STATUS", NULL },
{ GIMP_PDB_END, "GIMP_PDB_END", NULL },
{ 0, NULL, NULL }
};
static GType type = 0;
if (! type)
{
type = g_enum_register_static ("GimpPDBArgType", values);
gimp_type_set_translation_domain (type, GETTEXT_PACKAGE "-libgimp");
gimp_enum_set_value_descriptions (type, descs);
}
return type;
}
GType
gimp_pdb_proc_type_get_type (void)
{
static const GEnumValue values[] =
{
{ GIMP_INTERNAL, "GIMP_INTERNAL", "internal" },
{ GIMP_PLUGIN, "GIMP_PLUGIN", "plugin" },
{ GIMP_EXTENSION, "GIMP_EXTENSION", "extension" },
{ GIMP_TEMPORARY, "GIMP_TEMPORARY", "temporary" },
{ 0, NULL, NULL }
};
static const GimpEnumDesc descs[] =
{
{ GIMP_INTERNAL, "GIMP_INTERNAL", NULL },
{ GIMP_PLUGIN, "GIMP_PLUGIN", NULL },
{ GIMP_EXTENSION, "GIMP_EXTENSION", NULL },
{ GIMP_TEMPORARY, "GIMP_TEMPORARY", NULL },
{ 0, NULL, NULL }
};
static GType type = 0;
if (! type)
{
type = g_enum_register_static ("GimpPDBProcType", values);
gimp_type_set_translation_domain (type, GETTEXT_PACKAGE "-libgimp");
gimp_enum_set_value_descriptions (type, descs);
}
return type;
}
GType
gimp_pdb_status_type_get_type (void)
{
static const GEnumValue values[] =
{
{ GIMP_PDB_EXECUTION_ERROR, "GIMP_PDB_EXECUTION_ERROR", "execution-error" },
{ GIMP_PDB_CALLING_ERROR, "GIMP_PDB_CALLING_ERROR", "calling-error" },
{ GIMP_PDB_PASS_THROUGH, "GIMP_PDB_PASS_THROUGH", "pass-through" },
{ GIMP_PDB_SUCCESS, "GIMP_PDB_SUCCESS", "success" },
{ GIMP_PDB_CANCEL, "GIMP_PDB_CANCEL", "cancel" },
{ 0, NULL, NULL }
};
static const GimpEnumDesc descs[] =
{
{ GIMP_PDB_EXECUTION_ERROR, "GIMP_PDB_EXECUTION_ERROR", NULL },
{ GIMP_PDB_CALLING_ERROR, "GIMP_PDB_CALLING_ERROR", NULL },
{ GIMP_PDB_PASS_THROUGH, "GIMP_PDB_PASS_THROUGH", NULL },
{ GIMP_PDB_SUCCESS, "GIMP_PDB_SUCCESS", NULL },
{ GIMP_PDB_CANCEL, "GIMP_PDB_CANCEL", NULL },
{ 0, NULL, NULL }
};
static GType type = 0;
if (! type)
{
type = g_enum_register_static ("GimpPDBStatusType", values);
gimp_type_set_translation_domain (type, GETTEXT_PACKAGE "-libgimp");
gimp_enum_set_value_descriptions (type, descs);
}
return type;
}
GType
gimp_message_handler_type_get_type (void)
{
static const GEnumValue values[] =
{
{ GIMP_MESSAGE_BOX, "GIMP_MESSAGE_BOX", "message-box" },
{ GIMP_CONSOLE, "GIMP_CONSOLE", "console" },
{ GIMP_ERROR_CONSOLE, "GIMP_ERROR_CONSOLE", "error-console" },
{ 0, NULL, NULL }
};
static const GimpEnumDesc descs[] =
{
{ GIMP_MESSAGE_BOX, "GIMP_MESSAGE_BOX", NULL },
{ GIMP_CONSOLE, "GIMP_CONSOLE", NULL },
{ GIMP_ERROR_CONSOLE, "GIMP_ERROR_CONSOLE", NULL },
{ 0, NULL, NULL }
};
static GType type = 0;
if (! type)
{
type = g_enum_register_static ("GimpMessageHandlerType", values);
gimp_type_set_translation_domain (type, GETTEXT_PACKAGE "-libgimp");
gimp_enum_set_value_descriptions (type, descs);
}
return type;
}
GType
gimp_stack_trace_mode_get_type (void)
{
static const GEnumValue values[] =
{
{ GIMP_STACK_TRACE_NEVER, "GIMP_STACK_TRACE_NEVER", "never" },
{ GIMP_STACK_TRACE_QUERY, "GIMP_STACK_TRACE_QUERY", "query" },
{ GIMP_STACK_TRACE_ALWAYS, "GIMP_STACK_TRACE_ALWAYS", "always" },
{ 0, NULL, NULL }
};
static const GimpEnumDesc descs[] =
{
{ GIMP_STACK_TRACE_NEVER, "GIMP_STACK_TRACE_NEVER", NULL },
{ GIMP_STACK_TRACE_QUERY, "GIMP_STACK_TRACE_QUERY", NULL },
{ GIMP_STACK_TRACE_ALWAYS, "GIMP_STACK_TRACE_ALWAYS", NULL },
{ 0, NULL, NULL }
};
static GType type = 0;
if (! type)
{
type = g_enum_register_static ("GimpStackTraceMode", values);
gimp_type_set_translation_domain (type, GETTEXT_PACKAGE "-libgimp");
gimp_enum_set_value_descriptions (type, descs);
}
return type;
}
GType
gimp_progress_command_get_type (void)
{
static const GEnumValue values[] =
{
{ GIMP_PROGRESS_COMMAND_START, "GIMP_PROGRESS_COMMAND_START", "start" },
{ GIMP_PROGRESS_COMMAND_END, "GIMP_PROGRESS_COMMAND_END", "end" },
{ GIMP_PROGRESS_COMMAND_SET_TEXT, "GIMP_PROGRESS_COMMAND_SET_TEXT", "set-text" },
{ GIMP_PROGRESS_COMMAND_SET_VALUE, "GIMP_PROGRESS_COMMAND_SET_VALUE", "set-value" },
{ 0, NULL, NULL }
};
static const GimpEnumDesc descs[] =
{
{ GIMP_PROGRESS_COMMAND_START, "GIMP_PROGRESS_COMMAND_START", NULL },
{ GIMP_PROGRESS_COMMAND_END, "GIMP_PROGRESS_COMMAND_END", NULL },
{ GIMP_PROGRESS_COMMAND_SET_TEXT, "GIMP_PROGRESS_COMMAND_SET_TEXT", NULL },
{ GIMP_PROGRESS_COMMAND_SET_VALUE, "GIMP_PROGRESS_COMMAND_SET_VALUE", NULL },
{ 0, NULL, NULL }
};
static GType type = 0;
if (! type)
{
type = g_enum_register_static ("GimpProgressCommand", values);
gimp_type_set_translation_domain (type, GETTEXT_PACKAGE "-libgimp");
gimp_enum_set_value_descriptions (type, descs);
}
return type;
}
/* Generated data ends here */

View file

@ -26,10 +26,6 @@ G_BEGIN_DECLS
/* For information look into the C source or the html documentation */
/*
* these enums that are registered with the type system
*/
#define GIMP_TYPE_CHECK_SIZE (gimp_check_size_get_type ())
GType gimp_check_size_get_type (void) G_GNUC_CONST;
@ -84,11 +80,7 @@ typedef enum
} GimpImageType;
/*
* non-registered enums
*/
typedef enum /*< skip >*/
typedef enum /*< skip >*/
{
GIMP_UNIT_PIXEL = 0,
@ -102,7 +94,12 @@ typedef enum /*< skip >*/
GIMP_UNIT_PERCENT = 65536 /*< pdb-skip >*/
} GimpUnit;
typedef enum /*< skip >*/
#define GIMP_TYPE_PDB_ARG_TYPE (gimp_pdb_arg_type_get_type ())
GType gimp_pdb_arg_type_get_type (void) G_GNUC_CONST;
typedef enum
{
GIMP_PDB_INT32,
GIMP_PDB_INT16,
@ -129,7 +126,12 @@ typedef enum /*< skip >*/
GIMP_PDB_END
} GimpPDBArgType;
typedef enum /*< skip >*/
#define GIMP_TYPE_PDB_PROC_TYPE (gimp_pdb_proc_type_get_type ())
GType gimp_pdb_proc_type_get_type (void) G_GNUC_CONST;
typedef enum
{
GIMP_INTERNAL,
GIMP_PLUGIN,
@ -137,7 +139,12 @@ typedef enum /*< skip >*/
GIMP_TEMPORARY
} GimpPDBProcType;
typedef enum /*< skip >*/
#define GIMP_TYPE_PDB_STATUS_TYPE (gimp_pdb_status_type_get_type ())
GType gimp_pdb_status_type_get_type (void) G_GNUC_CONST;
typedef enum
{
GIMP_PDB_EXECUTION_ERROR,
GIMP_PDB_CALLING_ERROR,
@ -146,21 +153,36 @@ typedef enum /*< skip >*/
GIMP_PDB_CANCEL
} GimpPDBStatusType;
typedef enum /*< skip >*/
#define GIMP_TYPE_MESSAGE_HANDLER_TYPE (gimp_message_handler_type_get_type ())
GType gimp_message_handler_type_get_type (void) G_GNUC_CONST;
typedef enum
{
GIMP_MESSAGE_BOX,
GIMP_CONSOLE,
GIMP_ERROR_CONSOLE
} GimpMessageHandlerType;
typedef enum /*< skip >*/
#define GIMP_TYPE_STACK_TRACE_MODE (gimp_stack_trace_mode_get_type ())
GType gimp_stack_trace_mode_get_type (void) G_GNUC_CONST;
typedef enum
{
GIMP_STACK_TRACE_NEVER,
GIMP_STACK_TRACE_QUERY,
GIMP_STACK_TRACE_ALWAYS
} GimpStackTraceMode;
typedef enum /*< skip >*/
#define GIMP_TYPE_PROGRESS_COMMAND (gimp_progress_command_get_type ())
GType gimp_progress_command_get_type (void) G_GNUC_CONST;
typedef enum
{
GIMP_PROGRESS_COMMAND_START,
GIMP_PROGRESS_COMMAND_END,

View file

@ -28,8 +28,6 @@ script_fu_SOURCES = \
script-fu-interface.h \
script-fu-text-console.h \
script-fu-text-console.c \
script-fu-constants.c \
script-fu-constants.h \
script-fu-intl.h \
script-fu-scripts.c \
script-fu-scripts.h \

View file

@ -28,7 +28,6 @@
#include "script-fu-types.h"
#include "script-fu-constants.h"
#include "script-fu-console.h"
#include "script-fu-interface.h"
#include "script-fu-scripts.h"
@ -281,6 +280,11 @@ init_procedures (void)
static void
init_constants (void)
{
const gchar **enum_type_names;
gint n_enum_type_names;
gint i;
GimpUnit unit;
setvar (cintern ("gimp-directory"),
strcons (-1, (gchar *) gimp_directory ()), NIL);
@ -296,8 +300,63 @@ init_constants (void)
setvar (cintern ("gimp-sysconf-directory"),
strcons (-1, (gchar *) gimp_sysconf_directory ()), NIL);
/* Generated constants */
init_generated_constants ();
enum_type_names = gimp_enums_get_type_names (&n_enum_type_names);
for (i = 0; i < n_enum_type_names; i++)
{
const gchar *enum_name = enum_type_names[i];
GType enum_type = g_type_from_name (enum_name);
GEnumClass *enum_class = g_type_class_ref (enum_type);
GEnumValue *value;
for (value = enum_class->values; value->value_name; value++)
{
if (! strncmp ("GIMP_", value->value_name, 5))
{
gchar *scheme_name;
gchar *s;
scheme_name = g_strdup (value->value_name + 5);
for (s = scheme_name; *s; s++)
if (*s == '_')
*s = '-';
g_print ("registering %s \"%s\" = %d\n",
enum_name, scheme_name, value->value);
setvar (rintern (scheme_name), flocons (value->value), NIL);
g_free (scheme_name);
}
else
{
g_print ("EEK: enum %s has evil value \"%s\"\n",
enum_name, value->value_name);
}
}
g_type_class_unref (enum_class);
}
for (unit = GIMP_UNIT_PIXEL;
unit < gimp_unit_get_number_of_built_in_units ();
unit++)
{
gchar *tmp;
gchar *scheme_name;
tmp = g_ascii_strup (gimp_unit_get_singular (unit), -1);
scheme_name = g_strconcat ("UNIT-", tmp, NULL);
g_free (tmp);
g_print ("registering GimpUnit \"%s\" = %d\n",
scheme_name, unit);
setvar (rintern (scheme_name), flocons (unit), NIL);
g_free (scheme_name);
}
/* These are for backwards compatibility; they should be removed sometime */
setvar (cintern ("gimp-dir"),
@ -329,13 +388,6 @@ init_constants (void)
setvar (cintern ("BLUR"), flocons (GIMP_BLUR_CONVOLVE), NIL);
setvar (cintern ("SHARPEN"), flocons (GIMP_SHARPEN_CONVOLVE), NIL);
setvar (cintern ("RGB-IMAGE"), flocons (GIMP_RGB_IMAGE), NIL);
setvar (cintern ("RGBA-IMAGE"), flocons (GIMP_RGBA_IMAGE), NIL);
setvar (cintern ("GRAY-IMAGE"), flocons (GIMP_GRAY_IMAGE), NIL);
setvar (cintern ("GRAYA-IMAGE"), flocons (GIMP_GRAYA_IMAGE), NIL);
setvar (cintern ("INDEXED-IMAGE"), flocons (GIMP_INDEXED_IMAGE), NIL);
setvar (cintern ("INDEXEDA-IMAGE"), flocons (GIMP_INDEXEDA_IMAGE), NIL);
setvar (cintern ("WHITE-MASK"), flocons (GIMP_ADD_WHITE_MASK), NIL);
setvar (cintern ("BLACK-MASK"), flocons (GIMP_ADD_BLACK_MASK), NIL);
setvar (cintern ("ALPHA-MASK"), flocons (GIMP_ADD_ALPHA_MASK), NIL);

View file

@ -1,255 +0,0 @@
/* The GIMP -- an image manipulation program
* Copyright (C) 1995-2003 Spencer Kimball and Peter Mattis
*
* 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.
*/
/* NOTE: This file is autogenerated by enumcode.pl. */
#include "siod/siod.h"
void
init_generated_constants (void)
{
setvar (cintern ("ADD-WHITE-MASK"), flocons (0), NIL);
setvar (cintern ("ADD-BLACK-MASK"), flocons (1), NIL);
setvar (cintern ("ADD-ALPHA-MASK"), flocons (2), NIL);
setvar (cintern ("ADD-ALPHA-TRANSFER-MASK"), flocons (3), NIL);
setvar (cintern ("ADD-SELECTION-MASK"), flocons (4), NIL);
setvar (cintern ("ADD-COPY-MASK"), flocons (5), NIL);
setvar (cintern ("FG-BG-RGB-MODE"), flocons (0), NIL);
setvar (cintern ("FG-BG-HSV-MODE"), flocons (1), NIL);
setvar (cintern ("FG-TRANSPARENT-MODE"), flocons (2), NIL);
setvar (cintern ("CUSTOM-MODE"), flocons (3), NIL);
setvar (cintern ("BRUSH-HARD"), flocons (0), NIL);
setvar (cintern ("BRUSH-SOFT"), flocons (1), NIL);
setvar (cintern ("FG-BUCKET-FILL"), flocons (0), NIL);
setvar (cintern ("BG-BUCKET-FILL"), flocons (1), NIL);
setvar (cintern ("PATTERN-BUCKET-FILL"), flocons (2), NIL);
setvar (cintern ("CHANNEL-OP-ADD"), flocons (0), NIL);
setvar (cintern ("CHANNEL-OP-SUBTRACT"), flocons (1), NIL);
setvar (cintern ("CHANNEL-OP-REPLACE"), flocons (2), NIL);
setvar (cintern ("CHANNEL-OP-INTERSECT"), flocons (3), NIL);
setvar (cintern ("RED-CHANNEL"), flocons (0), NIL);
setvar (cintern ("GREEN-CHANNEL"), flocons (1), NIL);
setvar (cintern ("BLUE-CHANNEL"), flocons (2), NIL);
setvar (cintern ("GRAY-CHANNEL"), flocons (3), NIL);
setvar (cintern ("INDEXED-CHANNEL"), flocons (4), NIL);
setvar (cintern ("ALPHA-CHANNEL"), flocons (5), NIL);
setvar (cintern ("IMAGE-CLONE"), flocons (0), NIL);
setvar (cintern ("PATTERN-CLONE"), flocons (1), NIL);
setvar (cintern ("NO-DITHER"), flocons (0), NIL);
setvar (cintern ("FS-DITHER"), flocons (1), NIL);
setvar (cintern ("FSLOWBLEED-DITHER"), flocons (2), NIL);
setvar (cintern ("FIXED-DITHER"), flocons (3), NIL);
setvar (cintern ("MAKE-PALETTE"), flocons (0), NIL);
setvar (cintern ("REUSE-PALETTE"), flocons (1), NIL);
setvar (cintern ("WEB-PALETTE"), flocons (2), NIL);
setvar (cintern ("MONO-PALETTE"), flocons (3), NIL);
setvar (cintern ("CUSTOM-PALETTE"), flocons (4), NIL);
setvar (cintern ("NORMAL-CONVOL"), flocons (0), NIL);
setvar (cintern ("ABSOLUTE-CONVOL"), flocons (1), NIL);
setvar (cintern ("NEGATIVE-CONVOL"), flocons (2), NIL);
setvar (cintern ("BLUR-CONVOLVE"), flocons (0), NIL);
setvar (cintern ("SHARPEN-CONVOLVE"), flocons (1), NIL);
setvar (cintern ("DODGE"), flocons (0), NIL);
setvar (cintern ("BURN"), flocons (1), NIL);
setvar (cintern ("FOREGROUND-FILL"), flocons (0), NIL);
setvar (cintern ("BACKGROUND-FILL"), flocons (1), NIL);
setvar (cintern ("WHITE-FILL"), flocons (2), NIL);
setvar (cintern ("TRANSPARENT-FILL"), flocons (3), NIL);
setvar (cintern ("PATTERN-FILL"), flocons (4), NIL);
setvar (cintern ("GRADIENT-SEGMENT-RGB"), flocons (0), NIL);
setvar (cintern ("GRADIENT-SEGMENT-HSV-CCW"), flocons (1), NIL);
setvar (cintern ("GRADIENT-SEGMENT-HSV-CW"), flocons (2), NIL);
setvar (cintern ("GRADIENT-SEGMENT-LINEAR"), flocons (0), NIL);
setvar (cintern ("GRADIENT-SEGMENT-CURVED"), flocons (1), NIL);
setvar (cintern ("GRADIENT-SEGMENT-SINE"), flocons (2), NIL);
setvar (cintern ("GRADIENT-SEGMENT-SPHERE-INCREASING"), flocons (3), NIL);
setvar (cintern ("GRADIENT-SEGMENT-SPHERE-DECREASING"), flocons (4), NIL);
setvar (cintern ("GRADIENT-LINEAR"), flocons (0), NIL);
setvar (cintern ("GRADIENT-BILINEAR"), flocons (1), NIL);
setvar (cintern ("GRADIENT-RADIAL"), flocons (2), NIL);
setvar (cintern ("GRADIENT-SQUARE"), flocons (3), NIL);
setvar (cintern ("GRADIENT-CONICAL-SYMMETRIC"), flocons (4), NIL);
setvar (cintern ("GRADIENT-CONICAL-ASYMMETRIC"), flocons (5), NIL);
setvar (cintern ("GRADIENT-SHAPEBURST-ANGULAR"), flocons (6), NIL);
setvar (cintern ("GRADIENT-SHAPEBURST-SPHERICAL"), flocons (7), NIL);
setvar (cintern ("GRADIENT-SHAPEBURST-DIMPLED"), flocons (8), NIL);
setvar (cintern ("GRADIENT-SPIRAL-CLOCKWISE"), flocons (9), NIL);
setvar (cintern ("GRADIENT-SPIRAL-ANTICLOCKWISE"), flocons (10), NIL);
setvar (cintern ("HISTOGRAM-VALUE"), flocons (0), NIL);
setvar (cintern ("HISTOGRAM-RED"), flocons (1), NIL);
setvar (cintern ("HISTOGRAM-GREEN"), flocons (2), NIL);
setvar (cintern ("HISTOGRAM-BLUE"), flocons (3), NIL);
setvar (cintern ("HISTOGRAM-ALPHA"), flocons (4), NIL);
setvar (cintern ("ALL-HUES"), flocons (0), NIL);
setvar (cintern ("RED-HUES"), flocons (1), NIL);
setvar (cintern ("YELLOW-HUES"), flocons (2), NIL);
setvar (cintern ("GREEN-HUES"), flocons (3), NIL);
setvar (cintern ("CYAN-HUES"), flocons (4), NIL);
setvar (cintern ("BLUE-HUES"), flocons (5), NIL);
setvar (cintern ("MAGENTA-HUES"), flocons (6), NIL);
setvar (cintern ("ICON-TYPE-STOCK-ID"), flocons (0), NIL);
setvar (cintern ("ICON-TYPE-INLINE-PIXBUF"), flocons (1), NIL);
setvar (cintern ("ICON-TYPE-IMAGE-FILE"), flocons (2), NIL);
setvar (cintern ("RGB"), flocons (0), NIL);
setvar (cintern ("GRAY"), flocons (1), NIL);
setvar (cintern ("INDEXED"), flocons (2), NIL);
setvar (cintern ("RGB-IMAGE"), flocons (0), NIL);
setvar (cintern ("RGBA-IMAGE"), flocons (1), NIL);
setvar (cintern ("GRAY-IMAGE"), flocons (2), NIL);
setvar (cintern ("GRAYA-IMAGE"), flocons (3), NIL);
setvar (cintern ("INDEXED-IMAGE"), flocons (4), NIL);
setvar (cintern ("INDEXEDA-IMAGE"), flocons (5), NIL);
setvar (cintern ("NORMAL-MODE"), flocons (0), NIL);
setvar (cintern ("DISSOLVE-MODE"), flocons (1), NIL);
setvar (cintern ("BEHIND-MODE"), flocons (2), NIL);
setvar (cintern ("MULTIPLY-MODE"), flocons (3), NIL);
setvar (cintern ("SCREEN-MODE"), flocons (4), NIL);
setvar (cintern ("OVERLAY-MODE"), flocons (5), NIL);
setvar (cintern ("DIFFERENCE-MODE"), flocons (6), NIL);
setvar (cintern ("ADDITION-MODE"), flocons (7), NIL);
setvar (cintern ("SUBTRACT-MODE"), flocons (8), NIL);
setvar (cintern ("DARKEN-ONLY-MODE"), flocons (9), NIL);
setvar (cintern ("LIGHTEN-ONLY-MODE"), flocons (10), NIL);
setvar (cintern ("HUE-MODE"), flocons (11), NIL);
setvar (cintern ("SATURATION-MODE"), flocons (12), NIL);
setvar (cintern ("COLOR-MODE"), flocons (13), NIL);
setvar (cintern ("VALUE-MODE"), flocons (14), NIL);
setvar (cintern ("DIVIDE-MODE"), flocons (15), NIL);
setvar (cintern ("DODGE-MODE"), flocons (16), NIL);
setvar (cintern ("BURN-MODE"), flocons (17), NIL);
setvar (cintern ("HARDLIGHT-MODE"), flocons (18), NIL);
setvar (cintern ("SOFTLIGHT-MODE"), flocons (19), NIL);
setvar (cintern ("GRAIN-EXTRACT-MODE"), flocons (20), NIL);
setvar (cintern ("GRAIN-MERGE-MODE"), flocons (21), NIL);
setvar (cintern ("COLOR-ERASE-MODE"), flocons (22), NIL);
setvar (cintern ("MASK-APPLY"), flocons (0), NIL);
setvar (cintern ("MASK-DISCARD"), flocons (1), NIL);
setvar (cintern ("EXPAND-AS-NECESSARY"), flocons (0), NIL);
setvar (cintern ("CLIP-TO-IMAGE"), flocons (1), NIL);
setvar (cintern ("CLIP-TO-BOTTOM-LAYER"), flocons (2), NIL);
setvar (cintern ("FLATTEN-IMAGE"), flocons (3), NIL);
setvar (cintern ("MESSAGE-BOX"), flocons (0), NIL);
setvar (cintern ("CONSOLE"), flocons (1), NIL);
setvar (cintern ("ERROR-CONSOLE"), flocons (2), NIL);
setvar (cintern ("OFFSET-BACKGROUND"), flocons (0), NIL);
setvar (cintern ("OFFSET-TRANSPARENT"), flocons (1), NIL);
setvar (cintern ("ORIENTATION-HORIZONTAL"), flocons (0), NIL);
setvar (cintern ("ORIENTATION-VERTICAL"), flocons (1), NIL);
setvar (cintern ("ORIENTATION-UNKNOWN"), flocons (2), NIL);
setvar (cintern ("PDB-INT32"), flocons (0), NIL);
setvar (cintern ("PDB-INT16"), flocons (1), NIL);
setvar (cintern ("PDB-INT8"), flocons (2), NIL);
setvar (cintern ("PDB-FLOAT"), flocons (3), NIL);
setvar (cintern ("PDB-STRING"), flocons (4), NIL);
setvar (cintern ("PDB-INT32ARRAY"), flocons (5), NIL);
setvar (cintern ("PDB-INT16ARRAY"), flocons (6), NIL);
setvar (cintern ("PDB-INT8ARRAY"), flocons (7), NIL);
setvar (cintern ("PDB-FLOATARRAY"), flocons (8), NIL);
setvar (cintern ("PDB-STRINGARRAY"), flocons (9), NIL);
setvar (cintern ("PDB-COLOR"), flocons (10), NIL);
setvar (cintern ("PDB-REGION"), flocons (11), NIL);
setvar (cintern ("PDB-DISPLAY"), flocons (12), NIL);
setvar (cintern ("PDB-IMAGE"), flocons (13), NIL);
setvar (cintern ("PDB-LAYER"), flocons (14), NIL);
setvar (cintern ("PDB-CHANNEL"), flocons (15), NIL);
setvar (cintern ("PDB-DRAWABLE"), flocons (16), NIL);
setvar (cintern ("PDB-SELECTION"), flocons (17), NIL);
setvar (cintern ("PDB-BOUNDARY"), flocons (18), NIL);
setvar (cintern ("PDB-PATH"), flocons (19), NIL);
setvar (cintern ("PDB-PARASITE"), flocons (20), NIL);
setvar (cintern ("PDB-STATUS"), flocons (21), NIL);
setvar (cintern ("PDB-END"), flocons (22), NIL);
setvar (cintern ("INTERNAL"), flocons (0), NIL);
setvar (cintern ("PLUGIN"), flocons (1), NIL);
setvar (cintern ("EXTENSION"), flocons (2), NIL);
setvar (cintern ("TEMPORARY"), flocons (3), NIL);
setvar (cintern ("PDB-EXECUTION-ERROR"), flocons (0), NIL);
setvar (cintern ("PDB-CALLING-ERROR"), flocons (1), NIL);
setvar (cintern ("PDB-PASS-THROUGH"), flocons (2), NIL);
setvar (cintern ("PDB-SUCCESS"), flocons (3), NIL);
setvar (cintern ("PDB-CANCEL"), flocons (4), NIL);
setvar (cintern ("PAINT-CONSTANT"), flocons (0), NIL);
setvar (cintern ("PAINT-INCREMENTAL"), flocons (1), NIL);
setvar (cintern ("PROGRESS-COMMAND-START"), flocons (0), NIL);
setvar (cintern ("PROGRESS-COMMAND-END"), flocons (1), NIL);
setvar (cintern ("PROGRESS-COMMAND-SET-TEXT"), flocons (2), NIL);
setvar (cintern ("PROGRESS-COMMAND-SET-VALUE"), flocons (3), NIL);
setvar (cintern ("REPEAT-NONE"), flocons (0), NIL);
setvar (cintern ("REPEAT-SAWTOOTH"), flocons (1), NIL);
setvar (cintern ("REPEAT-TRIANGULAR"), flocons (2), NIL);
setvar (cintern ("ROTATE-90"), flocons (0), NIL);
setvar (cintern ("ROTATE-180"), flocons (1), NIL);
setvar (cintern ("ROTATE-270"), flocons (2), NIL);
setvar (cintern ("RUN-INTERACTIVE"), flocons (0), NIL);
setvar (cintern ("RUN-NONINTERACTIVE"), flocons (1), NIL);
setvar (cintern ("RUN-WITH-LAST-VALS"), flocons (2), NIL);
setvar (cintern ("PIXELS"), flocons (0), NIL);
setvar (cintern ("POINTS"), flocons (1), NIL);
setvar (cintern ("STACK-TRACE-NEVER"), flocons (0), NIL);
setvar (cintern ("STACK-TRACE-QUERY"), flocons (1), NIL);
setvar (cintern ("STACK-TRACE-ALWAYS"), flocons (2), NIL);
setvar (cintern ("SHADOWS"), flocons (0), NIL);
setvar (cintern ("MIDTONES"), flocons (1), NIL);
setvar (cintern ("HIGHLIGHTS"), flocons (2), NIL);
setvar (cintern ("UNIT-PIXEL"), flocons (0), NIL);
setvar (cintern ("UNIT-INCH"), flocons (1), NIL);
setvar (cintern ("UNIT-MM"), flocons (2), NIL);
setvar (cintern ("UNIT-POINT"), flocons (3), NIL);
setvar (cintern ("UNIT-PICA"), flocons (4), NIL);
setvar (cintern ("UNIT-END"), flocons (5), NIL);
return;
}

View file

@ -1,24 +0,0 @@
/* The GIMP -- an image manipulation program
* Copyright (C) 1999 Manish Singh
*
* 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.
*/
#ifndef __SCRIPT_FU_CONSTANTS_H__
#define __SCRIPT_FU_CONSTANTS_H__
void init_generated_constants (void);
#endif /* __SCRIPT_FU_CONSTANTS_H__ */

View file

@ -32,7 +32,6 @@
#include "siod-wrapper.h"
#include "script-fu-console.h"
#include "script-fu-constants.h"
#include "script-fu-scripts.h"
#include "script-fu-server.h"
#include "script-fu-text-console.h"

View file

@ -28,7 +28,6 @@
#include "script-fu-types.h"
#include "script-fu-constants.h"
#include "script-fu-console.h"
#include "script-fu-interface.h"
#include "script-fu-scripts.h"
@ -281,6 +280,11 @@ init_procedures (void)
static void
init_constants (void)
{
const gchar **enum_type_names;
gint n_enum_type_names;
gint i;
GimpUnit unit;
setvar (cintern ("gimp-directory"),
strcons (-1, (gchar *) gimp_directory ()), NIL);
@ -296,8 +300,63 @@ init_constants (void)
setvar (cintern ("gimp-sysconf-directory"),
strcons (-1, (gchar *) gimp_sysconf_directory ()), NIL);
/* Generated constants */
init_generated_constants ();
enum_type_names = gimp_enums_get_type_names (&n_enum_type_names);
for (i = 0; i < n_enum_type_names; i++)
{
const gchar *enum_name = enum_type_names[i];
GType enum_type = g_type_from_name (enum_name);
GEnumClass *enum_class = g_type_class_ref (enum_type);
GEnumValue *value;
for (value = enum_class->values; value->value_name; value++)
{
if (! strncmp ("GIMP_", value->value_name, 5))
{
gchar *scheme_name;
gchar *s;
scheme_name = g_strdup (value->value_name + 5);
for (s = scheme_name; *s; s++)
if (*s == '_')
*s = '-';
g_print ("registering %s \"%s\" = %d\n",
enum_name, scheme_name, value->value);
setvar (rintern (scheme_name), flocons (value->value), NIL);
g_free (scheme_name);
}
else
{
g_print ("EEK: enum %s has evil value \"%s\"\n",
enum_name, value->value_name);
}
}
g_type_class_unref (enum_class);
}
for (unit = GIMP_UNIT_PIXEL;
unit < gimp_unit_get_number_of_built_in_units ();
unit++)
{
gchar *tmp;
gchar *scheme_name;
tmp = g_ascii_strup (gimp_unit_get_singular (unit), -1);
scheme_name = g_strconcat ("UNIT-", tmp, NULL);
g_free (tmp);
g_print ("registering GimpUnit \"%s\" = %d\n",
scheme_name, unit);
setvar (rintern (scheme_name), flocons (unit), NIL);
g_free (scheme_name);
}
/* These are for backwards compatibility; they should be removed sometime */
setvar (cintern ("gimp-dir"),
@ -329,13 +388,6 @@ init_constants (void)
setvar (cintern ("BLUR"), flocons (GIMP_BLUR_CONVOLVE), NIL);
setvar (cintern ("SHARPEN"), flocons (GIMP_SHARPEN_CONVOLVE), NIL);
setvar (cintern ("RGB-IMAGE"), flocons (GIMP_RGB_IMAGE), NIL);
setvar (cintern ("RGBA-IMAGE"), flocons (GIMP_RGBA_IMAGE), NIL);
setvar (cintern ("GRAY-IMAGE"), flocons (GIMP_GRAY_IMAGE), NIL);
setvar (cintern ("GRAYA-IMAGE"), flocons (GIMP_GRAYA_IMAGE), NIL);
setvar (cintern ("INDEXED-IMAGE"), flocons (GIMP_INDEXED_IMAGE), NIL);
setvar (cintern ("INDEXEDA-IMAGE"), flocons (GIMP_INDEXEDA_IMAGE), NIL);
setvar (cintern ("WHITE-MASK"), flocons (GIMP_ADD_WHITE_MASK), NIL);
setvar (cintern ("BLACK-MASK"), flocons (GIMP_ADD_BLACK_MASK), NIL);
setvar (cintern ("ALPHA-MASK"), flocons (GIMP_ADD_ALPHA_MASK), NIL);

View file

@ -32,60 +32,7 @@ require 'util.pl';
*write_file = \&Gimp::CodeGen::util::write_file;
*FILE_EXT = \$Gimp::CodeGen::util::FILE_EXT;
my $enumfile = "$destdir/plug-ins/script-fu/script-fu-constants.c$FILE_EXT";
open ENUMFILE, "> $enumfile" or die "Can't open $enumfile: $!\n";
print ENUMFILE <<'GPL';
/* The GIMP -- an image manipulation program
* Copyright (C) 1995-2003 Spencer Kimball and Peter Mattis
*
* 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.
*/
/* NOTE: This file is autogenerated by enumcode.pl. */
GPL
print ENUMFILE <<CODE;
#include "siod/siod.h"
void
init_generated_constants (void)
{
CODE
foreach (sort keys %enums) {
my $enum = $enums{$_};
foreach $symbol (@{$enum->{symbols}}) {
my $sym = $symbol;
$sym =~ s/^GIMP\_//;
$sym =~ s/_/-/g;
print ENUMFILE <<CODE;
setvar (cintern ("$sym"), flocons ($enum->{mapping}->{$symbol}), NIL);
CODE
}
print ENUMFILE "\n";
}
print ENUMFILE " return;\n}\n";
close ENUMFILE;
&write_file($enumfile);
$enumfile = "$destdir/libgimp/gimpenums.h$FILE_EXT";
my $enumfile = "$destdir/libgimp/gimpenums.h$FILE_EXT";
open ENUMFILE, "> $enumfile" or die "Can't open $enumfile: $!\n";
print ENUMFILE <<'LGPL';
@ -150,6 +97,11 @@ foreach (sort keys %enums) {
print ENUMFILE <<HEADER;
void _gimp_enums_init (void);
const gchar ** gimp_enums_get_type_names (gint *n_type_names);
G_END_DECLS
#endif /* $guard */
@ -157,3 +109,74 @@ HEADER
close ENUMFILE;
&write_file($enumfile);
$enumfile = "$destdir/libgimp/gimpenums.c.tail$FILE_EXT";
open ENUMFILE, "> $enumfile" or die "Can't open $enumfile: $!\n";
print ENUMFILE <<CODE;
typedef GType (* GimpGetTypeFunc) (void);
static GimpGetTypeFunc get_type_funcs[] =
{
CODE
foreach (sort keys %enums) {
if (! ($_ =~ /GimpUnit/)) {
my $enum = $enums{$_};
my $func = $_;
for ($func) { s/Gimp//; s/PDB/Pdb/; s/([A-Z][^A-Z]+)/\L\1\E_/g; s/_$// }
print ENUMFILE " gimp_$func\_get_type,\n";
}
}
print ENUMFILE <<CODE;
};
static const gchar *type_names[] =
{
CODE
foreach (sort keys %enums) {
if (! ($_ =~ /GimpUnit/)) {
my $enum = $enums{$_};
my $gtype = $_;
print ENUMFILE " \"$gtype\",\n";
}
}
print ENUMFILE <<CODE;
};
void
_gimp_enums_init (void)
{
GimpGetTypeFunc *funcs;
gint i;
GType type;
for (i = 0, funcs = get_type_funcs; *funcs; i++, funcs++)
{
type = (*funcs) ();
g_type_class_ref (type);
}
}
const gchar **
gimp_enums_get_type_names (gint *n_type_names)
{
g_return_val_if_fail (n_type_names != NULL, NULL);
*n_type_names = G_N_ELEMENTS (type_names);
return type_names;
}
CODE
close ENUMFILE;
&write_file($enumfile);