2006-03-30 Michael Natterer <mitch@gimp.org>
* app/pdb/procedural_db.[ch] (struct Argument): replace the value
union by a GValue.
(procedural_db_argument_init)
(procedural_db_compat_arg_init): new functions to initialize
an Argument. They call g_value_init() on the Argument's value.
(procedural_db_arguments)
(procedural_db_return_values): initialize the returned Argument
arrays so their GValues are ready to use. Allow to get the
(unsuccessful) return values of a NULL ProcRecord.
(procedural_db_destroy_args): g_value_unset() the values. Added a
"gboolean full_destroy" parameter. Its only effect is to destroy
PDB arrays, everything else is nicely memory managed by GValue.
(procedural_db_execute)
(procedural_db_run_proc): do GValue stuff. Added n_args and
n_return_vals parameters to execute().
(procedural_db_execute_proc): private function to execute a
procedure. Validates the passed in arguments using the registered
GParamSpecs before passing them to the resp. exec method.
* app/plug-in/plug-in-params.[ch] (plug_in_params_to_args): needs
an array of ProcArgs now in order to initialize the Arguments'
GValues correctly. Passing NULL ProcArgs uses
procedural_db_compat_arg_init(), so procedures (plug-ins)
returning more values than expected work.
(plug_in_args_to_params): do GValue stuff here too.
(plug_in_args_destroy): removed this function,
procedural_db_destroy_args() does the same now.
* app/plug-in/plug-in-message.c (plug_in_handle_proc_run):
simplified quite a bit because everything returns n_return_values
now. Call plug_in_params_to_args() only of the procedure was found.
(plug_in_handle_proc_return_priv): pass ProcRecs to
plug_in_params_to_args().
* app/batch.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-ins.c
* app/plug-in/plug-in-progress.c
* app/plug-in/plug-in-run.[ch]
* app/widgets/gimphelp.c
* app/widgets/gimppdbdialog.c
* app/xcf/xcf.c
* tools/pdbgen/pdb/fileops.pdb: changed accordingly: don't
g_new/g_free Argument arrays, always use procedural_db_foo()
functions. Use GValue functions to get/set Arguments.
* tools/pdbgen/pdb.pl: added get_value_func and set_value_func to
all PDB types. Removed id_func, id_ret_func and check_func. Added
flags which indicated that a type is an ID. Removed unused utility
functions.
* tools/pdbgen/lib.pl: use the flag instead of looking at
functions and value types.
* tools/pdbgen/app.pl: use the get_value_func and set_value_func
to marshal inargs and outargs. Removed all checks performed on
inargs because that's done by GParamSpec validation now. Added the
missing bits to register excluded values with GimpParamSpecEnum.
* app/pdb/*_cmds.c: regenerated.
2006-03-29 Michael Natterer <mitch@gimp.org>
* tools/pdbgen/pdb/fileops.pdb (file_save): pass the filename, not
a GimpImage to file_utils_filename_to_uri(). Fixes bug #336527.
* app/pdb/fileops_cmds.c: regenerated.
2006-03-29 Michael Natterer <mitch@gimp.org>
* app/pdb/procedural_db.[ch] (procedural_db_init_proc): return the
procedure.
* tools/pdbgen/app.pl: use a local ProcRecord* variable so the
generated code becomes more readable.
* app/pdb/*_cmds.c: regenerated.
2006-03-28 Michael Natterer <mitch@gimp.org>
* app/pdb/procedural_db.[ch] (struct ProcArg): replace "name"
and "description" by a GParamSpec.
(procedural_db_init_proc)
(procedural_db_add_argument)
(procedural_db_add_return_value)
(procedural_db_add_compat_arg)
(procedural_db_add_compat_val): new functions which dynamically
allocate and register arguments and return value arrays based on
GParamSpecs.
* app/pdb/procedural-db-query.c
* app/plug-in/plug-in-message.c
* app/plug-in/plug-in-proc-def.c
* app/plug-in/plug-in-rc.c
* app/xcf/xcf.c
* tools/pdbgen/pdb/procedural_db.pdb: changed accordingly.
* tools/pdbgen/app.pl: get rid of all ProcArg arrays and generate
code that registers args and values with the procedures.
* app/pdb/*_cmds.c: regenerated.
2006-03-27 Michael Natterer <mitch@gimp.org>
* app/pdb/procedural_db.h (ArgMarshal): pass the ProcRecord as
first parameter, so marshallers have access to their ProcRecord
without the need for global variables.
* app/pdb/procedural_db.c
* tools/pdbgen/app.pl: changed addordingly.
* tools/pdbgen/app.pl: removed support for invoke->proc. Introduce
invoke->no_marshalling instead which indicates that invoke->code
should be used literally as marshaller code, without any
substitutions or generated variables.
* tools/pdbgen/pdb/fileops.pdb: changed accordingly.
* app/pdb/*_cmds.c: regenerated.
2006-03-26 Michael Natterer <mitch@gimp.org>
* tools/pdbgen/lib.pl: removed support for arg->implicit_fill.
* tools/pdbgen/pdb/progress.pdb (progress_init): remove it without
replacement, the generated function on the libgimp side is
internal anyway.
* libgimp/gimpprogress_pdb.[ch] (_gimp_progress_init): rgenerated
with a display_ID parameter.
* libgimp/gimpprogress.c (gimp_progress_init): pass
gimp_default_display() to _gimp_progress_init().
2006-03-22 Michael Natterer <mitch@gimp.org>
* tools/pdbgen/app.pl: removed support for invoke->pass_through.
* tools/pdbgen/pdb/fileops.pdb: added a C utility function and
call it from both register_load_handler() and
register_magic_load_handler() instead of letting the generated
invokers call each other.
* app/pdb/fileops_cmds.c: regenerated.
2006-03-21 Michael Natterer <mitch@gimp.org>
* tools/pdbgen/app.pl: removed support for arg->cond.
* tools/pdbgen/edit.pdb
* tools/pdbgen/image.pdb: move its logic into the C code.
* app/pdb/edit_cmds.c
* app/pdb/image_cmds.c: regenerated.
2006-03-18 Michael Natterer <mitch@gimp.org>
* tools/pdbgen/app.pl
* tools/pdbgen/pdb/progress.pdb: got rid of the unused
arg->no_id_lookup.
* tools/pdbgen/pdb/plug_in.pdb: flattened a forgotten foreach().
2006-03-18 Michael Natterer <mitch@gimp.org>
* tools/pdbgen/app.pl: removed support for arg->on_success and
arg->on_fail.
* tools/pdbgen/pdb/gradient_select.pdb
* tools/pdbgen/pdb/gradients.pdb
* tools/pdbgen/pdb/paint_tools.pdb
* tools/pdbgen/pdb/selection_tools.pdb: moved their logic to the C
code.
* app/pdb/gradient_select_cmds.c
* app/pdb/gradients_cmds.c
* app/pdb/paint_tools_cmds.c
* app/pdb/selection_tools_cmds.c: regenerated.
2006-03-17 Michael Natterer <mitch@gimp.org>
* tools/pdbgen/pdb.pl: generically map NULL to -1 when returning
object IDs.
* tools/pdbgen/app.pl: remove support for "return_fail => foo"
which did the same on a per-return-value basis. Removed some more
obscure perl without any effect on the generated code.
* tools/pdbgen/pdb/image.pdb
* tools/pdbgen/pdb/text_tool.pdb: don't use "return_fail => foo".
* app/pdb/channel_cmds.c
* app/pdb/display_cmds.c
* app/pdb/drawable_cmds.c
* app/pdb/drawable_transform_cmds.c
* app/pdb/edit_cmds.c
* app/pdb/fileops_cmds.c
* app/pdb/image_cmds.c
* app/pdb/layer_cmds.c
* app/pdb/selection_cmds.c
* app/pdb/transform_tools_cmds.c
* app/pdb/vectors_cmds.c: regenerated.
2006-03-16 Michael Natterer <mitch@gimp.org>
* tools/pdbgen/pdb/image.pdb: replaced code generated by now gone
utility functions list_proc() and type_move() by pdbgen
boilerplate code. Fixed wrapper of gimp_image_lower_channel() to
actually lower the channel (it was lowering the active layer).
* app/pdb/image_cmds.c
* libgimp/gimpimage_pdb.[ch]: regenerated.
2006-03-15 Michael Natterer <mitch@gimp.org>
* tools/pdbgen/pdb/channel.pdb
* tools/pdbgen/pdb/layer.pdb: removed dim(), accessors(),
get_prop() and set_prop() utility functions and expand everything
to pdbgen boilerplate code. Use the real layer mask API instead of
the crap from pdb_glue.h. Fixed some API docs.
* app/pdb/channel_cmds.c
* app/pdb/layer_cmds.c
* libgimp/gimplayer_pdb.c: regenerated.
* app/pdb/Makefile.am
* app/pdb/pdb_glue.h: bye bye uglyness.
2006-03-15 Michael Natterer <mitch@gimp.org>
* tools/pdbgen/pdb.pl: define init values for all pdb types.
* tools/pdbgen/app.pl: unconditionally initialize all return
values, and no parameter.
* tools/pdbgen/pdb/*.pdb: removed init => 1 from all arguments
and return values.
* app/pdb/*_cmds.c: regenerated.
2006-03-14 Michael Natterer <mitch@gimp.org>
* tools/pdbgen/pdb/*.pdb: remove lots of perl crack:
- create almost all parameter arrays manually instead of
generating them from utility functions
- removed lots of other utility functions
- moved variable declarations into the enclosed code snippets
where possible
- some cleanup and API doc fixes
* tools/pdbgen/stddefs.pdb: added some perl crack:
define utility functions for all contributors which own more than
some functions, so they can change their names and email addresses
at a central place.
* app/pdb/[many].c: regenerated.
* libgimp/gimpcolor_pdb.c
* libgimp/gimpdrawabletransform_pdb.c
* libgimp/gimptransformtools_pdb.c
* libgimp/gimpvectors_pdb.c: ditto. Changed affect only API docs.
2006-03-13 Michael Natterer <mitch@gimp.org>
* app/core/gimpimage-guides.[ch]: added gimp_image_get_guide() and
gimp_image_get_next_guide(), which take a guide_ID and return the
image's GimpGuide with that ID (the one after that for next_guide())
* tools/pdbgen/pdb/guides.pdb: use them instead of having this
code here.
* app/pdb/guides_cmds.c: regenerated.
2006-03-02 Michael Natterer <mitch@gimp.org>
* app/core/gimppickable.[ch]: added new methods ::get_bytes() and
::flush()
* app/core/gimpchannel.c
* app/core/gimpdrawable.c
* app/core/gimpimagemap.c
* app/core/gimpprojection.c: implement ::get_bytes()
* app/core/gimpprojection.c: implement ::flush() (immediately
process both the idle renderer's queue and the unflushed update
areas, to make sure that any reading from the projection will
re-construct it).
* app/core/gimp-edit.c
* app/core/gimpchannel.c
* app/core/gimpimage-contiguous-region.c
* app/core/gimpimage-crop.c
* app/core/gimppalette-import.c
* app/paint/gimpclone.c
* app/tools/gimpbycolorselecttool.c
* app/tools/gimpiscissorstool.c
* tools/pdbgen/pdb/image.pdb: use the pickable interface more
consistently when reading from any drawable or the projection, and
call gimp_pickable_flush() before doing so. Fixes bug #332933.
* app/core/gimpimage-pick-color.c: added comment why the we don't
call gimp_pickable_flush() here.
* app/pdb/image_cmds.c
* libgimp/gimpimage_pdb.c: regenerated.
2006-03-02 Sven Neumann <sven@gimp.org>
* tools/pdbgen/pdb/image.pdb: corrected documentation for
gimp_image_[lower|raise]_layer(). We do not any longer refuse to
raise and lower based on a missing alpha channel.
* app/pdb/image_cmds.c
* libgimp/gimpimage_pdb.c: regenerated.
2006-02-21 Michael Natterer <mitch@gimp.org>
* app/plug-in/Makefile.am
* app/plug-in/plug-in-data.[ch]: new files which keep the
plug-in data list.
* app/pdb/procedural_db.[ch]: removed here, it only cluttered the
file with unrelated functionality.
* app/core/gimp.[ch]
* app/actions/plug-in-commands.c
* tools/pdbgen/pdb/procedural_db.pdb: changed accordingly.
* app/pdb/procedural_db_cmds.c: regenerated.
2006-02-20 Sven Neumann <sven@gimp.org>
* tools/pdbgen/pdb/progress.pdb
* libgimp/gimpprogress.[ch]: applied slightly modified patch from
Stephane Chauveau. Wraps the gimp_progress_update() PDB call so
that redundant progress updates are suppressed in libgimp. This
gives a noticeable speedup for all plug-ins that update the
progress too often (bug #331470).
* libgimp/gimpprogress_pdb.[ch]: regenerated.
2006-01-11 Sven Neumann <sven@gimp.org>
* app/plug-in/plug-in.[ch]
* tools/pdbgen/pdb/plug_in.pdb: moved code from the PDB wrapper to
a utility function in the core.
* app/pdb/plug_in_cmds.c: regenerated.
2006-01-11 Sven Neumann <sven@gimp.org>
* tools/pdbgen/pdb/plug_in.pdb (plugin_menu_register): warn if a
plug-in attempts to register a menu path for a procedure that it
didn't install.
* app/pdb/plug_in_cmds.c: regenerated.
2006-01-05 Sven Neumann <sven@gimp.org>
* tools/pdbgen/pdb/brush.pdb (gimp-brush-set-spacing): allow to
change the spacing of brushes the user doesn't have write access
to. The user interface allows to do that as well.
* app/pdb/brush_cmds.c: regenerated.