move the code to gimpparamspecs-body.c and include it from both app/
and libgimp/. They are the same apart from a minor difference which we
Also share the entire libgimp/gimpparamspecs.h header with the core.
GimpDisplay contains only the ID logic and the "gimp" and "config"
pointers, and lives in the core.
GimpDisplayImpl is a subclass and contains all the actual display
stuff. The subclass is only an implementation detail and doesn't
appear in any API.
Remove all hacks which pass displays as gpointer, GObject or
GimpObject through the core, or even lookup its type by name,
just use GimpDisplay.
Turn all ID param specs into object param specs (e.g. GimpParamImageID
becomes GimpParamImage) and convert between IDs and objects in
gimpgpparams.c directly above the the wire protocol, so all of app/,
libgimp/ and plug-ins/ can deal directly with objects down to the
lowest level and not care about IDs.
Use the actual object param specs for procedure arguments and return
values again instead of a plain g_param_spec_object() and bring back
the none_ok parameter.
This implies changing the PDB type checking functions to work on pure
integers instead of IDs (one can't check whether object creation is
possible if performing that check requires the object to already
exist).
For example gimp_foo_is_valid() becomes gimp_foo_id_is_valid() and is
not involved in automatic object creation magic at the protocol
level. Added wrappers which still say gimp_foo_is_valid() and take the
respective objects.
Adapted all code, and it all becomes nicer and less convoluted, even
the generated PDB wrappers in app/ and libgimp/.
It's just too weird to be public. Remove its properties from the wire
protocol and from pluginrc. Instead, have all GParamSpecs' flags on
the wire and in pluginrc, so we can use stuff like
GIMP_PARAM_NO_VALIDATE.
Port the remaining few places to GIMP_PROC_ARG_STRING().
I'm sure something is broken now wrt UTF-8 validation,
will add tighter checks in the next commit.
all the stuff from app/core/gimpparamspecs.[ch] that is not about
image, drawable etc IDs, these will have to go to libgimp with
different implementations than in app/.
2009-01-17 Michael Natterer <mitch@gimp.org>
* all files with a GPL header and all COPYING files:
Change licence to GPLv3 (and to LGPLv3 for libgimp).
Cleaned up some copyright headers and regenerated the parsers in
the ImageMap plugin.
svn path=/trunk/; revision=27913
2008-07-12 Sven Neumann <sven@gimp.org>
* app/core/gimpparamspecs.[ch]: added GIMP_TYPE_COLOR_ARRAY and
GIMP_TYPE_PARAM_COLOR_ARRAY in preparation for fixing bug
#332206.
svn path=/trunk/; revision=26150
2007-10-31 Michael Natterer <mitch@gimp.org>
* app/core/gimpparamspecs.[ch] (GimpParamSpecString): remove
member "null_ok" and use GParamSpecString's "ensure_non_null"
instead.
svn path=/trunk/; revision=24022
2007-04-26 Michael Natterer <mitch@gimp.org>
* app/core/gimpparamspecs.[ch]: renamed GimpParamSpecString's
flag "no_validate" to "allow_non_utf8".
* tools/pdbgen/app.pl
* tools/pdbgen/pdb/*.pdb: renamed argument flag
"no_validate" (which turns off utf8-validation for strings) to
"allow_non_utf8" and renamed "no_success" (which turns off
argument validation alltogether) to "no_validate".
Doesn't affect generated code.
svn path=/trunk/; revision=22350
2006-05-06 Michael Natterer <mitch@gimp.org>
* app/core/gimpparamspecs.[ch]: added "gboolean none_ok" members
to GimpParamSpecImageID, GimpParamSpecItemID and
GimpParamSpecDisplayID. If none_ok is set, allow '0' and '-1' as
valid IDs. Added "none_ok" parameter to all ID param spec
constructors.
* app/pdb/gimp-pdb-compat.c: set none_ok to TRUE in all compat
param specs, so only IDs that are really random garbage don't pass
validation. Fixes validation errors with 0 and -1 IDs.
* tools/pdbgen/app.pl: set none_ok to FALSE by default. Added
support for $arg->{none_ok} to control it.
* tools/pdbgen/pdb/image.pdb
* tools/pdbgen/pdb/progress.pdb
* tools/pdbgen/pdb/text_tool.pdb: use none_ok instead of
no_success (which disables validation entirely).
* app/pdb/[many]_cmds.c: regenerated.
2006-04-03 Michael Natterer <mitch@gimp.org>
* app/core/gimpparamspecs.[ch]: added a shitload of new GTypes and
corresponding GParamSpecs to use them as PDB arguments.
Each GimpPDBArgType has one or more corresponding GTypes in the
core now.
* app/pdb/gimpargument.[ch] (struct GimpArgument)
(struct GimpArgumentSpec): removed "value" member because the
GValue's/GParamSpec's GType carries just as much information now.
(gimp_argument_type_to_pdb_arg_type): new function which maps
GTypes to GimpPDBArgType.
(gimp_pdb_arg_type_to_string): formerly known as
procedural_db_type_name().
* app/pdb/gimpprocedure.[ch]
* app/pdb/procedural_db.[ch]: completely switch to GValue. Use the
new GParamSpecs for procedure arguments. GimpPDBArgType is only
used for adding compat args/values of plug-in procedures.
(procedural_db_run_proc): the va_list expects a sequence of
(GType, value, GType, value, ..., G_TYPE_NONE) now.
* app/plug-in/plug-in-params.[ch]: changed accordingly.
(plug_in_param_defs_check): removed this function.
* app/plug-in/plug-in-message.c (plug_in_handle_proc_install): use
plug_in_proc_args_check() instead and initialize the GimpProcedure
before doing so.
* tools/pdbgen/app.pl
* tools/pdbgen/pdb.pl: use the new param spec types and their
utility functions. Changed argument/value registration
accordingly.
* app/pdb/procedural-db-query.c
* app/actions/plug-in-commands.c
* app/actions/vectors-commands.c
* app/core/gimppdbprogress.c
* app/dialogs/about-dialog.c
* app/file/file-open.c
* app/file/file-save.c
* app/plug-in/plug-in-progress.c
* app/plug-in/plug-in-rc.c
* app/plug-in/plug-ins.c
* app/widgets/gimpbrushselect.c
* app/widgets/gimpfontselect.c
* app/widgets/gimpgradientselect.c
* app/widgets/gimphelp.c
* app/widgets/gimppaletteselect.c
* app/widgets/gimppatternselect.c
* tools/pdbgen/pdb/fileops.pdb
* tools/pdbgen/pdb/image.pdb
* tools/pdbgen/pdb/procedural_db.pdb: changed accordingly.
* app/pdb/*_cmds.c: regenerated.
2006-04-02 Michael Natterer <mitch@gimp.org>
* app/core/gimpparamspecs.[ch]: removed GIMP_TYPE_PARASITE,
GIMP_TYPE_PARAM_PARASITE and the GimpRGB utility functions. Some
fixes/cleanup in the new array and string array code.
* libgimpbase/gimpbase.def
* libgimpbase/gimpparasite.[ch]
* libgimpcolor/gimpcolor.def
* libgimpcolor/gimprgb.[ch]: added the parasite and rgb stuff here.
* app/pdb/gimpargument.c: #include "libgimpbase/gimpbase.h"
* app/pdb/procedural_db.c: removed unused variable.
2006-03-29 Michael Natterer <mitch@gimp.org>
* app/core/gimpparamspecs.[ch]: added GimpParamSpecEnum, which is
a GParamSpecEnum plus the possibility to exclude values.
Fixed lots of validation functions.
Made all structs and macros public.
2006-03-28 Michael Natterer <mitch@gimp.org>
* app/core/gimpparamspecs.[ch] (gimp_param_spec_string): reordered
params to be consistent with other param specs.
(gimp_value_get_rgb): utility function which reads the value
into a GimpRGB struct, instead of returning a pointer.
(gimp_value_set_rgb): added for symmetry. Just calls
g_value_set_boxed().
2006-03-27 Michael Natterer <mitch@gimp.org>
* app/core/Makefile.am
* app/core/gimpparamspecs.[ch]: new unused files. Checked in so
they can be easily reviewed.