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>
* tools/pdbgen/pdb.pl: added a const_type member to all PDB types,
Removed casts from all get_value_funcs which return const
pointers, they can stay const now.
* tools/pdbgen/app.pl: use the const_type to declare input args.
* app/pdb/gimpprocedure.h: pass const arguments to the internal
marshallers.
* app/xcf/xcf.c: changed accordingly.
* tools/pdbgen/pdb/paint_tools.pdb
* tools/pdbgen/pdb/paths.pdb: added some const qualifiers.
* tools/pdbgen/lib.pl: use the const_type for input args instead
of adding the const qualifier based on the type.
* app/pdb/_cmds.c
* libgimp/gimpparasite_pdb.[ch]: regenerated.
Unrelated:
* app/pdb/gimpargument.c (gimp_arguments_destroy): no need any
more to destroy the argument array in reverse order (we don't need
access to the previous element because arrays in GValues memory
manage themselves now).
2006-03-31 Michael Natterer <mitch@gimp.org>
* app/pdb/gimpprocedure.h (struct ProcRecord): added new member
"gboolean static_strings", so the ProcRecord struct and its
strings can be marked as static separately.
* app/pdb/gimpprocedure.[ch] (gimp_procedure_dispose): removed.
(gimp_procedure_free): don't free the struct if it's static.
(gimp_procedure_set_strings)
(gimp_procedure_set_static_strings)
(gimp_procedure_take_strings): new functions to set a procedure's
strings.
* app/pdb/procedural_db.c (procedural_db_free_entry): simply call
gimp_procedure_free() on all procedures, the memory-manage
themselves now.
* app/plug-in/plug-in-message.c (plug_in_handle_proc_install): use
gimp_procedure_set_strings() instead of setting them manually.
* app/xcf/xcf.c: register gimp-xcf-load and gimp-xcf-save
dynamically so further ProcRecord struct changes don't affect this
file.
* tools/pdbgen/app.pl: set "static_proc" to TRUE for static procs.
* app/pdb/*_cmds.c: regenerated.
2006-03-31 Michael Natterer <mitch@gimp.org>
* app/pdb/gimpprocedure.[ch] (struct ProcRecord): added new member
"gboolean static_proc" which indicates whether a ProcRecord struct
and its strings are static.
(gimp_procedure_dispose): new function which frees the procedure's
args and values, and its strings if it is not static.
* app/xcf/xcf.c
* tools/pdbgen/app.pl: set "static_proc" to TRUE for static procs.
* app/pdb/procedural_db.c (procedural_db_free): call
gimp_procedure_free() or gimp_procedure_dispose(), depending on
procedure->static_proc.
* app/pdb/procedural_db.h: removed #if 0'ed cruft.
* app/plug-in/plug-in-proc-def.[ch]: removed
plug_in_proc_def_get_proc().
* app/file/file-open.c
* app/file/file-save.c
* tools/pdbgen/pdb/fileops.pdb: access proc_def->procedure directly.
* app/pdb/*_cmds.c: regenerated.
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>
* 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.
2005-09-09 Michael Natterer <mitch@gimp.org>
Added parent window API to the GimpProgress interface and to
the libgimp progress stuff. Might look strange, but does
the right thing in almost all cases (image window, file dialog,
script-fu dialog etc). Fixes bug #62988.
* app/core/gimpprogress.[ch]: added GimpProgress::get_window()
which should return a toplevel window ID if the progress is in a
window that wants to be the transient parent of plug-in dialogs.
* app/widgets/gimpwidgets-utils.[ch] (gimp_window_get_native): new
function which returns the window handle of a GtkWindow's GdkWindow.
* app/widgets/gimpfiledialog.c: implement ::get_window().
* app/display/gimpdisplay.[ch]: ditto. Removed window handle API.
* app/gui/gui-vtable.c: changed accordingly.
* libgimpbase/gimpbaseenums.[ch] (enum GimpProgressCommand):
added GIMP_PROGRESS_COMMAND_GET_WINDOW.
* app/plug-in/plug-in-progress.[ch] (plug_in_progress_get_window):
new function. Also renamed some functions to match the
GimpProgress interface, and not the legacy PDB procedure names.
* tools/pdbgen/pdb/progress.pdb
* app/core/gimppdbprogress.c: implement get_window() on both
sides of the wire, keeping backward compatibility (hopefully).
* libgimp/gimpprogress.[ch]: deprecated gimp_progress_install()
and added gimp_progress_install_vtable() which takes a vtable with
padding to be extensible. Added get_window() vtable entry and
dispatch it accordingly. Also added pulse() which was implemented
in a hackish way before. Everything is of course backward
compatible.
* libgimp/gimpprogressbar.c: inmplement the get_window() stuff
so a plug-in dialog containing a progress can be the transient
parent of another dialog in another plug-in.
* libgimp/gimpui.[ch] (gimp_ui_get_progress_window): new function
which returns a foreign GdkWindow of this plug-ins progress
window.
Renamed gimp_window_set_transient_for_default_display() to
gimp_window_set_transient() and make it use the progress' window
handle instead of the display's (which is the right thing to do in
almost all cases).
* libgimp/gimp.def
* libgimp/gimpui.def: add the new functions.
* tools/pdbgen/enums.pl
* app/pdb/internal_procs.c
* app/pdb/progress_cmds.c
* libgimp/gimpprogress_pdb.[ch]: regenerated.
* libgimp/gimpexport.c
* plug-ins/*/*.c: follow API change.
2005-08-05 Manish Singh <yosh@gimp.org>
* tools/pdbgen/pdbgen.pl: store canonical names of proc names and
args in the proc structure.
* tools/pdbgen/app.pl
* tools/pdbgen/lib.pl: use the above.
* app/pdb/*_cmds.c: regenerated.
2005-08-03 Michael Natterer <mitch@gimp.org>
Changed naming scheme for PDB procedure names from
random_crap_that_traditionally_has_underscores to
enforced-canonical-identifiers. I'm pretty sure some things are
broken after this commit. More changes to come...
* libgimpbase/gimpbase.def
* libgimpbase/gimputils.[ch]: added gimp_canonicalize_identifier().
* app/pdb/procedural_db.[ch] (struct ProcRecord): added
"gchar *original_name" to keep a procedure's original name as
reigstered by plug-ins (compat cruft).
(procedural_db_init_procs): canonicalized list of deprecated
procedures.
* app/plug-in/plug-in-proc-def.c (plug_in_proc_def_free): free
original_name.
* app/plug-in/plug-in-message.c: canonicalize procedure names
which are received over the wire.
* app/plug-in/plug-in-rc.c: serialize the original_name and create
the canonicalized name on-the-fly when deserializing.
* app/plug-in/plug-in-run.c: pass the original_name to plug-ins
when running them because they strcmp() the passed procedure name.
* app/plug-in/plug-ins.c (plug_ins_add_to_db): pass
canonical procedure names to procedural_db_execute().
(plug_ins_file_proc_compare): special-case "gimp-xcf", not "gimp_xcf".
* app/xcf/xcf.c: changed static XCF procedures accordingly.
* tools/pdbgen/app.pl
* tools/pdbgen/lib.pl: do some trivial substitutions to generate
canonicalized names in app/, and C identifiers with underscores in
libgimp/.
* tools/pdbgen/pdb/brushes.pdb
* tools/pdbgen/pdb/fileops.pdb
* tools/pdbgen/pdb/gradients.pdb
* tools/pdbgen/pdb/image.pdb
* tools/pdbgen/pdb/palettes.pdb
* tools/pdbgen/pdb/patterns.pdb
* tools/pdbgen/pdb/plug_in.pdb
* tools/pdbgen/pdb/procedural_db.pdb
* tools/pdbgen/pdb/text_tool.pdb
* tools/pdbgen/pdb/transform_tools.pdb: canonicaloized procedure
names in calls to std_pdb_deprecated() and in procedure names in
generated C code.
* app/pdb/*_cmds.c
* libgimp/*_pdb.c: regenerated.
2005-02-12 Sven Neumann <sven@gimp.org>
* app/core/gimpprogress.[ch]: added GimpProgress::pulse.
* app/display/gimpdisplay.c
* app/display/gimpstatusbar.c
* app/widgets/gimpfiledialog.c
* app/widgets/gimpprogressbox.c
* app/widgets/gimpprogressdialog.c
* app/widgets/gimpthumbbox.c: implement it in the classes that
implement the GimpProgress interface.
* app/plug-in/plug-in-progress.[ch]: allow plug-ins to pulse their
progress.
* tools/pdbgen/pdb/progress.pdb: added a procedure for the new
functionality.
* app/pdb/internal_procs.c
* app/pdb/progress_cmds.c
* libgimp/gimpprogress_pdb.[ch]: regenerated.
* libgimp/gimp.def: updated.
2004-10-06 Michael Natterer <mitch@gimp.org>
* app/pdb/procedural_db.h (struct ProcRecord): changed new member
"deprecated" from "gboolean" to a "gchar*" which holds the name of
the replacement procedure.
* tools/pdbgen/app.pl: changed accordingly.
* app/plug-in/plug-in-message.c (plug_in_handle_proc_run): show
the name of the replacement procedure in the warning message.
* tools/pdbgen/stddefs.pdb: added utility function
std_pdb_deprecated() which takes the name of the replacement
procedure and fills the blurb, help, author, copyright, date and
deprecated fields of the procedure definition.
* tools/pdbgen/pdb/brushes.pdb
* tools/pdbgen/pdb/gradients.pdb
* tools/pdbgen/pdb/image.pdb
* tools/pdbgen/pdb/palettes.pdb
* tools/pdbgen/pdb/patterns.pdb
* tools/pdbgen/pdb/text_tool.pdb: use it instead of duplicating
the same code and strings for all deprecated procedures.
* app/pdb/*_cmds.c: regenerated.
2004-10-06 Michael Natterer <mitch@gimp.org>
* tools/pdbgen/pdb/brush.pdb: return the mask's bpp and the
brush's pixmap data if it has one.
* tools/pdbgen/pdb/pattern.pdb: cleaned up.
* tools/pdbgen/pdb/image.pdb: added $deprecated = 1 to deprecated
functions even if they are not exported to libgimp any more.
* app/pdb/procedural_db.h (struct ProcRecord): added member
"gboolean deprecated".
* tools/pdbgen/app.pl
* app/xcf/xcf.c: fill it accordingly.
* app/plug-in/plug-in-message.c (plug_in_handle_proc_run): warn
not only for deprecated procedured which are in the compat hach
table, but also for procedures with deprecated flag set to TRUE.
* app/pdb/*_cmds.c
* libgimp/gimpbrush_pdb.[ch]
* libgimp/gimppattern_pdb.[ch]: regenerated.
* libgimp/gimpbrushmenu.c
* plug-ins/gfig/gfig-style.c: changed accordingly.
2004-08-30 Michael Natterer <mitch@gimp.org>
* app/plug-in/plug-in-progress.[ch]: added boolean return values
to plug_in_progress_install(), uninstall() and cancel(). Added
checks to make sure the installed progress_callback exists, has
the correct signature and was installed by this plug-in.
* tools/pdbgen/pdb/progress.pdb: use the return values to let the
PDB wrappers succeed/fail.
* app/pdb/progress_cmds.c: regenerated.
2004-08-29 Michael Natterer <mitch@gimp.org>
Added an API to allow plug-ins to embed the progress for the
actions they trigger into their own GUI (attention: half-done and
broken code ahead...)
* app/core/Makefile.am
* app/core/core-types.h
* app/core/gimppdbprogress.[ch]: new object implementing dispatching
progress calls to a temporary PDB procedure in a plug-in.
* app/Makefile.am: force to link gimppdbprogress.o, bah!
* app/plug-in/plug-in-progress.[ch]: added API to install,
uninstall and cancel a PDB progress for this plug-in, but disabled
the implementation because it doesn't work yet.
* tools/pdbgen/pdb/progress.pdb: added pdb wrappers for the new
install, uninstall and cancel functions.
* libgimp/Makefile.am
* libgimp/gimp.h
* libgimp/gimpprogress.[ch]: added an API around the PDB progress
stuff.
* app/pdb/internal_procs.c
* app/pdb/progress_cmds.c
* libgimp/gimpprogress_pdb.[ch]: regenerated.
* plug-ins/script-fu/script-fu-scripts.c: use the new API to show
the progress in the script-fu dialog.
2004-08-27 Michael Natterer <mitch@gimp.org>
Moved the gimp_progress_init() and gimp_progress_update() PDB
functions to their own group because they don't belong to the
"Plug-In" namespace and will soon get more functions.
* tools/pdbgen/pdb/plug_in.pdb: removed the progress stuff...
* tools/pdbgen/pdb/progress.pdb: ...and added it here.
* tools/pdbgen/Makefile.am
* tools/pdbgen/groups.pl
* app/pdb/Makefile.am
* libgimp/Makefile.am: changed accordingly.
* libgimp/gimpprogress_pdb.[ch]: new generated files.
* app/pdb/internal_procs.c
* app/pdb/plug_in_cmds.c
* libgimp/gimp_pdb.h
* libgimp/gimpplugin_pdb.[ch]: regenerated.