2008-07-18 Sven Neumann <sven@gimp.org>
* app/core/core-types.h: removed delta_time, delta_x, delta_y,
distance and random from the GimpCoords struct. These don't need
to be kept here and they can't be properly interpolated.
* app/core/gimpcoords.c: changed accordingly.
* app/xcf/xcf-load.c (xcf_load_vector): the size of the
GimpCoords
struct changed.
* app/display/gimpdisplayshell.[ch] (struct _GimpDisplayShell):
added some members to store values from the last event that are
needed in gimp_display_shell_eval_event() and which are not any
longer part of GimpCoords.
* app/display/gimpdisplayshell-coords.c
(gimp_display_shell_eval_event): changed accordingly.
* app/paint/gimppaintoptions.c: calculate a random number when
one
is needed.
* app/paint/gimpbrushcore.c (gimp_brush_core_interpolate):
GimpCoords doesn't have a "random" field any longer.
svn path=/trunk/; revision=26232
2007-12-21 Michael Natterer <mitch@gimp.org>
* app/xcf/xcf-save.c
* app/xcf/xcf-load.c: use accessors for colormap, parasites and
more item, layer, channel and mask properties instead of accessing
the object structs directly. Some minor style cleanups.
svn path=/trunk/; revision=24423
2007-12-18 Michael Natterer <mitch@gimp.org>
* app/xcf/xcf-load.c
* app/xcf/xcf-save.c: use the proper APIs to get/set many item,
layer, channel and vectors properties instead of reading/writing
their struct members directly.
svn path=/trunk/; revision=24397
2007-09-24 Simon Budig <simon@gimp.org>
* app/xcf/xcf-load.c: use the correct default values for the
control points of a loaded path.
Fixes bug #479176.
svn path=/trunk/; revision=23637
2007-07-06 Sven Neumann <sven@gimp.org>
* app/xcf/xcf-load.c (xcf_load_image): marked two error messages
as translatable strings.
* libgimpbase/gimputils.c (gimp_any_to_utf8): insert a blank
before the text that marks the string as invalid.
svn path=/trunk/; revision=22887
2007-07-05 Sven Neumann <sven@gimp.org>
* app/xcf/xcf-read.c (xcf_read_int32) (xcf_read_int8): return the
number of bytes that have been read from the file.
* app/xcf/xcf-load.c (xcf_load_prop): return FALSE when reading fails.
svn path=/trunk/; revision=22873
2007-06-25 Sven Neumann <sven@gimp.org>
* configure.in: removed extra check for gthread and fold it into
the GLIB and GTK checks.
* */Makefile.am: changed accordingly.
* app/main.c (main): always call g_thread_init().
svn path=/trunk/; revision=22832
2007-05-22 Sven Neumann <sven@gimp.org>
* app/base/siox.c: allocate structs using GSlice.
* app/base/tile-swap.[ch]
* app/xcf/xcf-load.c: removed dead code that used to deal with
swapping from XCF files. Simplified swap file code quite a bit.
svn path=/trunk/; revision=22585
2007-05-22 Michael Natterer <mitch@gimp.org>
* app/base/tile.[ch]: changed tile_init() to tile_new() and return
a GSlice-allocated Tile structure.
(tile_destroy): free it using GSLice.
* app/base/tile-manager.c: use tile_new() instead of g_new plus
tile_init(). Also allocate TileManager itself using GSlice.
* app/xcf/xcf-load.c (xcf_load_parasite): allocate parasites using
gimp_parasite_new().
svn path=/trunk/; revision=22571
2007-01-26 Tor Lillqvist <tml@novell.com>
Fix#398311 in GIMP until corresponding abstraction has been added
to GLib:
* app/base/tile-private.h: Use gint64 instead of off_t. (I assume
the configury makes sure GIMP is always compiled as
large-file-aware on Unix with an off_t of at least 64 bits?)
Introduce wrapper macros LARGE_SEEK() and LARGE_TRUNCATE(). On
Win32 LARGE_SEEK() calls _lseeki64() in the Microsoft C library,
and LARGE_TRUNCATE calls a new internal function
gimp_win32_large_truncate(). On Unix they call lseek() and
ftruncate().
* app/base/tile-swap.c: Use gint64 instead of off_t. Use
LARGE_SEEK() and LARGE_TRUNCATE() instead of lseek() and
ftruncate().
(gimp_win32_large_truncate): New function. Calls LARGE_SEEK() and
SetEndOfFile().
* app/xcf/xcf-load.c (xcf_swap_func): Use LARGE_SEEK() instead of
lseek().
svn path=/trunk/; revision=21785
2006-11-22 Simon Budig <simon@gimp.org>
* app/xcf/xcf-load.c: load the channels in the proper order.
fixes bug #378003. Thanks to Chris Mohler for spotting this.
2006-11-13 Michael Natterer <mitch@gimp.org>
* app/xcf/xcf.c (xcf_load_invoker): fix g_str_has_prefix() change
below. Now we can open XCF files again. Fixes bug #374657.
2006-10-16 Michael Natterer <mitch@gimp.org>
* app/core/gimpitem.[ch]: removed the "floating" flag and the
floating/sink API.
(gimp_item_init): call g_object_force_floating() instead.
* app/core/gimpimage.c
* app/core/gimplayer.c
* app/xcf/xcf-load.c
* tools/pdbgen/pdb/drawable.pdb
* tools/pdbgen/pdb/image.pdb: use combinations of
g_object_ref_sink() and g_object_unref() instead of
gimp_item_sink(). Use g_object_is_floating() instead of
gimp_item_is_floating().
* app/pdb/drawable_cmds.c
* app/pdb/image_cmds.c: regenerated.
2006-10-11 Raphael Quinet <raphael@gimp.org>
* app/xcf/xcf-load.c (xcf_load_tile_rle): workaround for bug
#357809: avoid crashing when invalid offsets are read for a
compressed tile in the XCF file.
2006-10-09 Michael Natterer <mitch@gimp.org>
Added message severities and make sure all messages are routed
through a central function, so redirecting to the error console or
stderr work again:
* app/core/core-enums.[ch]: added enum GimpMessageSeverity { INFO,
WARNING, ERROR }.
* app/core/gimp.[ch] (gimp_message)
(gimp_message_valist): added severity parameter. Changed
"GimpProgress *progress" parameter to "GObject *handler", where
"handler" can be either a GimpProgress, a GtkWidget or NULL.
* app/core/gimp-gui.[ch] (gimp_show_message): ditto. Honor
--console-messages again. Always dispatch to the GUI message
handler first if it exists.
* app/gui/gui-message.[ch]: pass severity parameters around.
(gui_message_error_dialog): if "handler" is a progress, dispatch
the message to it first. If it is a widget (and *not* a progress),
use a GtkMessageDialog on top of that widget's toplevel. Fall
back to the usual GimpErrorDialog otherwise.
* app/core/gimpprogress.[ch] (gimp_progress_message): added
severity parameter. Also added boolean return value to the virtual
function so it can decide to fail if it can't handle the message.
* app/display/gimpdisplay.c: implement GimpProgress::message() and
redirect the message to GimpDisplayShell.
* app/display/gimpdisplayshell-progress.c: implement
GimpProgress::message() and redirect the message to GimpStatusbar
if it is not an error and if the status bar is visible.
* app/display/gimpstatusbar.[ch]: implement GimpProgress::message(),
but fail on messages that contain a newline. Show the right icons
for the message severities (work in progress).
* app/display/gimpdisplayshell.[ch]: removed
gimp_display_shell_message() and its _valist() variant.
* app/widgets/gimperrorconsole.[ch]: show the right icons for the
message severities.
* app/widgets/gimpthumbbox.c (gimp_thumb_box_progress_message):
return TRUE to swallow all messages.
* app/widgets/gimpwidgets-utils.[ch]: removed
gimp_show_message_dialog(). Added gimp_get_message_stock_id().
* app/errors.c
* app/actions/edit-commands.c
* app/actions/error-console-commands.c
* app/actions/file-commands.c
* app/actions/select-commands.c
* app/actions/text-editor-commands.c
* app/actions/vectors-commands.c
* app/core/gimpimage-convert.c
* app/core/gimpimagefile.c
* app/dialogs/convert-dialog.c
* app/dialogs/file-open-dialog.c
* app/dialogs/file-open-location-dialog.c
* app/dialogs/file-save-dialog.c
* app/dialogs/palette-import-dialog.c
* app/dialogs/stroke-dialog.c
* app/display/gimpdisplayshell-dnd.c
* app/pdb/gimppdb.c
* app/plug-in/gimpplugin.c
* app/tools/gimpimagemaptool.c
* app/tools/gimptool.c
* app/tools/gimpvectortool.c
* app/widgets/gimpactionview.c
* app/widgets/gimpcontrollerlist.c
* app/widgets/gimppdbdialog.c
* app/widgets/gimpvectorstreeview.c
* app/xcf/xcf-load.c
* app/xcf/xcf-save.c
* app/xcf/xcf.c
* tools/pdbgen/pdb/brush.pdb
* tools/pdbgen/pdb/gradient.pdb
* tools/pdbgen/pdb/image.pdb
* tools/pdbgen/pdb/message.pdb
* tools/pdbgen/pdb/palette.pdb: added severity parameter to
gimp_message() calls. Convert all calls to
gimp_show_message_dialog() and gimp_display_shell_message() to
gimp_message(). Also converted some more g_message() calls.
* app/pdb/brush_cmds.c
* app/pdb/gradient_cmds.c
* app/pdb/image_cmds.c
* app/pdb/message_cmds.c
* app/pdb/palette_cmds.c: regenerated.
2006-08-15 Hans Breuer <hans@breuer.org>
* **/makefile.msc app/gimpcore.def : updated
* app/xcf/xcf-save.c(1464) : error C2036: 'void *' : unknown size
pointer arithmetics on void a pointer looks like a GCC extension
* app/tools/gimpbrightnesscontrasttool.c
app/tools/gimpcolorbalancetool.c
app/tools/gimphuesaturationtool.c
app/tools/gimpcolorizetool.c : #include "core/gimp.h" for gimp_message
* app/tools/gimpiscissorstool.c : use RINT() rather than rint()
* app/widgets/gimpcontrollerlist.c : #include "gimpwidgets-utils.h"
for gimp_show_message_dialog
* app/core/gimpprogress.c(229) : 'gimp_progress_message' must
return a value
2006-07-10 Sven Neumann <sven@gimp.org>
* app/xcf/xcf-load.c: use a signed variable when attempting to
skip over unknown properties and check for EOF. Fixes bug #345802.
* app/xcf/xcf-read.c: cleanup, nothing really changed
2006-07-06 Sven Neumann <sven@gimp.org>
* app/xcf/xcf-save.c (xcf_save_image_props): removed redundant
call to xcf_save_prop() for PROP_PARASITES. Spotted by Henning
Makholm (bug #346754).
2006-07-06 Sven Neumann <sven@gimp.org>
* app/xcf/xcf-load.c (xcf_load_vector): applied a patch from
Henning Makholm that introduces a sanity check on the number of
axes (bug #346742).
* app/core/gimpguide.c
* app/core/gimpguide.h: new files, implementing GuideGimp as a GimpObject
* app/core/Makefile.am: add new files as sources
* app/core/gimpimage-guides.h
* app/core/gimpimage-guides.c: use the new object instead of defining
GimpGuide here as a struct.
* app/core/gimpimage-crop.c
* app/core/gimpimage-duplicate.c
* app/core/gimpimage-flip.c
* app/core/gimpimage-resize.c
* app/core/gimpimage-rotate.c
* app/core/gimpimage-scale.c
* app/core/gimpimage-snap.c
* app/core/gimpimage-undo-push.c
* app/core/gimpimage.c
* app/display/gimpdisplayshell-draw.c
* app/display/gimpdisplayshell.c
* app/pdb/guides_cmds.c
* app/tools/gimpmovetool.c
* app/xcf/xcf-save.c
* tools/pdbgen/pdb/guides.pdb: include "core/gimpguide.h", and use
g_object_ref/unref instead of gimp_image_guide_ref/unref.
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/xcf/xcf.c: require real image IDs, but allow images without
active drawable.
* 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-26 Michael Natterer <mitch@gimp.org>
* app/pdb/Makefile.am
* app/pdb/pdb-types.h
* app/pdb/gimppdb.[ch]: new object GimpPDB which keeps all
procedures and functions to register and run them. Renamed all
functions and did some cleanups.
* app/pdb/gimp-pdb.[ch]
* app/core/gimp.[ch]: removed the same stuff here.
* app/pdb/gimp-pdb-query.[ch]: removed these files...
* app/pdb/gimppdb-query.[ch]: ...added here as members of GimpPDB.
* app/pdb/gimp-pdb-compat.h: fix include guard.
* app/batch.c
* app/actions/vectors-commands.c
* app/dialogs/about-dialog.c
* app/file/file-open.c
* app/file/file-save.c
* app/plug-in/plug-in-message.c
* app/plug-in/plug-ins.c
* app/widgets/gimpfiledialog.c
* app/widgets/gimphelp.c
* app/xcf/xcf.c
* tools/pdbgen/pdb/brush_select.pdb
* tools/pdbgen/pdb/fileops.pdb
* tools/pdbgen/pdb/font_select.pdb
* tools/pdbgen/pdb/gradient_select.pdb
* tools/pdbgen/pdb/palette_select.pdb
* tools/pdbgen/pdb/pattern_select.pdb
* tools/pdbgen/pdb/procedural_db.pdb: changed includes and function
calls accordingly.
* tools/pdbgen/app.pl: pass around GimpPDB instead of Gimp
pointers to register the internal procedures with. Changed some
newlines in the generated code.
* app/pdb/*_cmds.c
* app/pdb/internal_procs.[ch]: regenerated.
* app/core/gimppdbprogress.[ch]
* app/widgets/gimppdbdialog.[ch]: added "pdb" CONSTRUCT_ONLY
properties.
* app/plug-in/plug-in-progress.c
* app/gui/gui-vtable.c: pass gimp->pdb when creating them.
* app/widgets/gimpbrushselect.c
* app/widgets/gimpfontselect.c
* app/widgets/gimpgradientselect.c
* app/widgets/gimppaletteselect.c
* app/widgets/gimppatternselect.c: use the new local pdb pointers
instead of some foo->bar->gimp->pdb overkill.
2006-04-09 Michael Natterer <mitch@gimp.org>
* app/plug-in/plug-ins.[ch]: remove plug_ins_add_internal() and
made plug_ins_procedure_insert() public as plug_ins_procedure_add().
There's no reason internal plug-ins should be treated differently.
* app/xcf/xcf.c: use plug_ins_procedure_add().
* app/plug-in/plug-ins-help.c: fix comment.
2006-04-09 Michael Natterer <mitch@gimp.org>
* app/xcf/xcf.c (xcf_init): don't register the XCF procedures
with the PDB here...
* app/plug-in/plug-ins.c (plug_ins_add_to_db): ... instead, don't
special case internal procedures here so they get registered along
with all other plug-in procedures.
2006-04-07 Michael Natterer <mitch@gimp.org>
* app/pdb/gimp-pdb.c (gimp_pdb_register)
(gimp_pdb_unregister): ref all registered procedures.
* app/xcf/xcf.c
* tools/pdbgen/app.pl: unref newly created procedures after
registering them.
* app/core/gimp.[ch]: renamed member "plug_in_proc_defs" to
"plug_in_procedures". Renamed "proc_def" variables to "procedure".
* app/actions/plug-in-actions.c
* app/menus/plug-in-menus.c: changed accordingly.
* app/plug-in/plug-ins.[ch]: keep a reference to all procs which
are in gimp->plug_in_procedures.
(plug_ins_exit): unref them all and free the list. Apparently we
were leaking them before on exit.
* app/plug-in/plug-in-def.[ch]: s/proc_defs/procedures/. Ref
procedures added with plug_in_def_add_procedure(). Added
plug_in_def_remove_procedure() which unrefs them again. Removed
"free_proc_defs" parameter from plug_in_def_free() and always
unref the procedures.
* app/plug-in/plug-in.[ch]: added plug_in_add_temp_proc() and
plug_in_remove_temp() proc. Ref the added procedures.
* app/plug-in/plug-in-message.c: use the new APIs instead of
adding/removing procs and temp procs from their lists manually.
Unref the newly created procedure after adding then to the
plug_in_def or plug_in.
* app/plug-in/plug-in-rc.[ch]
* app/plug-in/plug-ins-query.c
* tools/pdbgen/pdb/plug_in.pdb: changed accordingly.
* app/pdb/*_cmds.c: regenerated.
2006-04-05 Michael Natterer <mitch@gimp.org>
* app/plug-in/plug-in-types.h
* app/plug-in/plug-in-proc-def.[ch]: renamed to GimpPlugInProcedure
and made a GObject derived from GimpProcedure (instead of having
a pointer to a GimpProcedure). Added image_types and file_magic
utility functions taken from plug-ins.[ch]. Still lives in the
same crappy files because I am undecided where to put it...
* app/pdb/gimpprocedure.c (gimp_procedure_real_execute): removed
switch() statement and always call the internal marshaller because
GimpProcedure::execute() is properly overridden by
GimpPlugInProcedure now.
* app/plug-in/plug-ins.[ch]: removed the mime_type and file_magic
utilities added to GimpPlugInProcedure.
* app/actions/file-commands.c
* app/actions/plug-in-actions.[ch]
* app/actions/plug-in-commands.[ch]
* app/core/gimp-gui.[ch]
* app/core/gimp.[ch]
* app/core/gimpimage.[ch]
* app/dialogs/file-open-dialog.c
* app/dialogs/file-save-dialog.c
* app/dialogs/print-size-dialog.c
* app/file/file-open.[ch]
* app/file/file-save.[ch]
* app/file/file-utils.[ch]
* app/gui/gui-vtable.c
* app/menus/plug-in-menus.[ch]
* app/plug-in/plug-in-def.[ch]
* app/plug-in/plug-in-message.c
* app/plug-in/plug-in-rc.c
* app/plug-in/plug-in-run.c
* app/plug-in/plug-in.c
* app/plug-in/plug-ins-query.c
* app/widgets/gimpactiongroup.[ch]
* app/widgets/gimpdnd-xds.c
* app/widgets/gimpfiledialog.[ch]
* app/widgets/gimpfileprocview.[ch]
* app/widgets/gimppluginaction.[ch]
* app/xcf/xcf.c
* tools/pdbgen/pdb/fileops.pdb
* tools/pdbgen/pdb/plug_in.pdb: changed addordingly.
* app/pdb/fileops_cmds.c
* app/pdb/plug_in_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-04-02 Michael Natterer <mitch@gimp.org>
* app/core/gimpparasitelist.[ch] (gimp_parasite_list_add): removed
the return value again.
(gimp_parasite_list_find): return a const parasite.
* app/core/gimp-parasites.[ch]
* app/core/gimpimage.[ch]
* app/core/gimpitem.[ch] (*_parasite_attach): take a const
parasite. Make a local copy of the parasite struct because
gimp_parasite_shift_parent() changes it.
(*_parasite_find): return a const parasite.
* app/core/gimptemplate.c
* app/text/gimptextlayer-xcf.c
* app/xcf/xcf-load.c: changed accordingly.
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/plug-in/plug-in-proc-def.h (struct PlugInProcDef)
(plug_in_proc_def_set_icon): changed "icon_data" from gchar* to
guint8*.
* app/plug-in/plug-in-proc-def.c
* app/plug-in/plug-in-rc.c
* app/xcf/xcf.c: cast a bit to the fix resulting warnings. There
are less casts needed than before.
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-31 Michael Natterer <mitch@gimp.org>
* app/pdb/gimpprocedure.[ch]: added gimp_procedure_new() and
gimp_procedure_free() functions.
* app/plug-in/plug-in-proc-def.h (struct PlugInProcDef): use a
ProcRecord pointer instead of including the entire struct.
* app/plug-in/plug-in-proc-def.c: use the new() and free()
functions above to allocate/free the ProcRecord.
* app/actions/plug-in-actions.c
* app/actions/plug-in-commands.c
* app/menus/plug-in-menus.c
* app/plug-in/plug-in-message.c
* app/plug-in/plug-in-rc.c
* app/plug-in/plug-in-run.c
* app/plug-in/plug-in.c
* app/plug-in/plug-ins-query.c
* app/plug-in/plug-ins.c
* app/xcf/xcf.c: changed accordingly.
Unrelated:
* app/pdb/gimpprocedure.c (gimp_procedure_execute): be more verbose
when warning about out-of-bounds parameter values.
* tools/pdbgen/pdb/fileops.pdb: allow GIMP_RUN_WITH_LAST_VALS for
file_save because indirect saving (e.g. remote or compressed)
needs it.
* app/pdb/fileops_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-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-08-05 Sven Neumann <sven@gimp.org>
* app/xcf/xcf-load.c (xcf_load_image): disable undo while the
image is being loaded.
* app/core/gimpitem.c (gimp_item_parasite_attach): don't try to
push an undo step if undo is disabled. Gets rid of warnings while
loading an XCF file with undoable drawable parasites.
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-04-25 Sven Neumann <sven@gimp.org>
* app/plug-in/plug-in-proc-def.h: added a boolean flag to the
ProcDef struct to identify file procedures.
* app/xcf/xcf.c: changed accordingly.
* app/plug-in/plug-ins.c: look at the new flag instead of checking
extensions, prefixes and magics being non-NULL. A file plug-in
doesn't necessarily have any of these fields set.
* app/plug-in/plug-in-rc.c: changed pluginrc format to contain an
extra section for file procedures. Moved all file related info there.
2005-04-20 Michael Natterer <mitch@gimp.org>
* app/xcf/xcf-load.c (xcf_load_layer): initialize text_layer_flags
with 0 so it doesn't contain random garbage if the text layer
flags in the XCF have default values (are not saved at all). Fixes
bug #301028. Initialize other stuff too for the sake of sanity.
2004-11-01 Sven Neumann <sven@gimp.org>
* app/widgets/gimpfiledialog.c (gimp_file_dialog_add_filters):
don't check for file_proc->menu_paths. Our load and save procedure
don't necessarily register a menu path any longer.
* app/plug-in/plug-ins.c: minor cleanup.
* app/xcf/xcf.c (xcf_init): no need for adding menu paths for the
XCF load and save procedures.
* tools/pdbgen/pdb/fileops.pdb: fixed outdated documentation.
* app/pdb/fileops_cmds.c
* libgimp/gimpfileops_pdb.c: regenerated.
2004-10-12 Sven Neumann <sven@gimp.org>
* app/core/gimpimage.[ch]: renamed struct member "unit" to
"resolution_unit".
* app/actions/image-commands.c
* app/core/gimp-edit.c
* app/core/gimpimage-duplicate.c
* app/core/gimpimage-undo-push.c
* app/dialogs/info-window.c
* app/vectors/gimpvectors-export.c
* app/widgets/gimptoolbox-dnd.c:
* app/xcf/xcf-load.c
* app/xcf/xcf-save.c: changed accordingly. Use gimp_image_get_unit()
where appropriate.
* app/core/gimptemplate.c (gimp_template_set_from_image): fixed
unit handling. Don't touch the template unit, it is used as the
initial display unit. This will need further changes...
2004-10-10 Sven Neumann <sven@gimp.org>
* app/widgets/gimpcontainerview.c (gimp_container_view_lookup):
handle NULL as viewable parameter as a workaround for bug #149906.
* app/widgets/gimpthumbbox.c (gimp_thumb_box_auto_thumbnail): made
the code more robust.
* app/xcf/xcf-private.h
* app/xcf/xcf.c: added a const qualifier.
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-10 Michael Natterer <mitch@gimp.org>
Redid the whole internal progress stuff: don't pass around
progress_callback and progress_data; instead, provide a
pointer to a GimpProgressInterface which can be implemented
by a variety of backends.
Addresses (but not yet fixes) bugs #6010, #97266 and #135185.
* app/display/Makefile.am
* app/display/gimpprogress.[ch]: removed the old progress hack.
* app/core/Makefile.am
* app/core/core-types.h
* app/core/gimpprogress.[ch]: implement GimpProgressInterface.
* app/widgets/Makefile.am
* app/widgets/widgets-types.h
* app/widgets/gimpprogressdialog.[ch]: the standalone progress
dialog as widget implementing GimpProgressInterface.
* app/display/gimpdisplay.c
* app/display/gimpstatusbar.[ch]
* app/widgets/gimpfiledialog.[ch]
* app/widgets/gimpthumbbox.[ch]: added GimpProgressInterface
implementation to these classes.
* app/core/gimp-gui.[ch]
* app/gui/gui-vtable.c: replaced the old progress vtable entries
by two new to create and destroy a GimpProgressDialog in case
no other progress is available.
* app/pdb/procedural_db.[ch]
* app/plug-in/plug-in-run.[ch]
* tools/pdbgen/app.pl: pass a GimpProgress to all PDB wrappers and
all plug-ins.
* app/plug-in/plug-in.[ch]
* app/plug-in/plug-ins.c
* app/plug-in/plug-in-message.c
* app/plug-in/plug-in-progress.c: handle the case there the
plug-in was crated with a progress as well as the case where it
wasn't.
* app/app_procs.c
* app/batch.c
* app/xcf/xcf.c
* app/file/file-open.[ch]
* app/file/file-save.[ch]
* app/widgets/gimphelp.c
* app/widgets/gimpbrushselect.c
* app/widgets/gimpfontselect.c
* app/widgets/gimpgradientselect.c
* app/widgets/gimppaletteselect.c
* app/widgets/gimppatternselect.c: changed accordingly.
* app/core/gimpimagefile.[ch]
* app/display/gimpdisplayshell-dnd.c
* app/gui/file-open-dialog.c
* app/gui/file-open-location-dialog.c
* app/gui/file-save-dialog.c
* app/widgets/gimplayertreeview.c
* app/widgets/gimptoolbox-dnd.c: pass a GimpProgress to all file
related functions. Embed the progress in the file dialog where
possible.
* app/core/gimpdrawable-blend.[ch]
* app/core/gimpdrawable-transform.[ch]
* app/core/gimpimage-convert.[ch]
* app/core/gimpimage-flip.[ch]
* app/core/gimpimage-resize.[ch]
* app/core/gimpimage-rotate.[ch]
* app/core/gimpimage-scale.[ch]
* app/core/gimpitem-linked.[ch]
* app/core/gimpitem.[ch]
* app/core/gimpchannel.c
* app/core/gimpdrawable.c
* app/core/gimplayer.c
* app/core/gimpselection.c
* app/vectors/gimpvectors.c: replaced callback/data by GimpProgress.
* app/tools/gimpblendtool.c
* app/tools/gimptransformtool.c
* app/gui/convert-dialog.c
* app/actions/documents-commands.c
* app/actions/file-commands.c
* app/actions/image-commands.c
* app/actions/layers-commands.c
* app/actions/plug-in-commands.c
* app/actions/vectors-commands.c
* tools/pdbgen/pdb/convert.pdb
* tools/pdbgen/pdb/edit.pdb
* tools/pdbgen/pdb/image.pdb
* tools/pdbgen/pdb/layer.pdb: changed callers accordingly.
* app/pdb/*_cmds.c: regenerated.
2004-07-27 Sven Neumann <sven@gimp.org>
* libgimpbase/Makefile.am
* libgimpbase/gimpbase.h
* libgimpbase/gimpbase.def
* libgimpbase/gimpmemsize.[ch]: added new files with memsize
related functions (moved here from gimputil.c) and
GIMP_TYPE_MEMSIZE (moved here from app/config/gimpconfig-types.[ch]).
* libgimpbase/gimputils.[ch]: removed gimp_memsize_to_string() here.
* libgimpbase/gimpunit.[ch]: added GIMP_TYPE_UNIT (moved here from
app/config/gimpconfig-types.[ch]).
* libgimpbase/gimpbase-private.c
* libgimp/gimptile.c
* libgimp/gimpunitcache.c
* plug-ins/help/domain.c
* app/xcf/xcf-read.c: need to include glib-object.h.
* plug-ins/common/uniteditor.c: use GIMP_TYPE_UNIT.
* app/config/gimpconfig-types.[ch]: removed code that lives in
libgimpbase now.
* app/config/gimpconfig-deserialize.c: changed accordingly.
* app/config/gimpbaseconfig.c
* app/config/gimpdisplayconfig.c
* app/core/gimpcontext.c
* app/gui/grid-dialog.c
* app/tools/gimpcolortool.c
* app/widgets/gimpaction.c
* app/widgets/gimpunitstore.c: no need to include gimpconfig-types.h
any longer.
2004-07-17 Sven Neumann <sven@gimp.org>
* app/xcf/xcf.c (xcf_init): also register the internal XCF
handlers according to the new scheme.
* plug-ins/common/Makefile.am
* plug-ins/common/plugin-defs.pl
* plug-ins/common/hrz.c: removed the HRZ file plug-in since it
doesn't seem to be very useful.
2004-05-18 Michael Natterer <mitch@gimp.org>
Allow plug-ins to register menu icons. Fixes bug #120500.
* app/core/core-enums.[ch]: added enum GimpIconType which can
be one of { STOCK_ID, IMAGE_FILE, INLINE_PIXBUF }.
* app/config/gimpconfigwriter.[ch] (gimp_config_writer_data)
* app/config/gimpscanner.[ch] (gimp_scanner_parse_data): new
functions which write/parse raw binary data. Needed for storing
inline pixbufs in pluginrc.
* app/config/gimpconfigwriter.[ch] (gimp_config_writer_identifier):
new function which writes out an unquoted and unescaped string.
* app/plug-in/plug-in-proc.[ch] (struct PlugInProcDef): added
new members "icon_type", "icon_data_length" and "icon_data".
Reordered members so file_proc specific stuff is at the end.
(plug_in_proc_def_get_stock_id)
(plug_in_proc_def_get_pixbuf): new functions to access the
procedure's icon.
* app/plug-in/plug-in-rc.c: save/restore the registered icons.
* app/actions/file-dialog-actions.c
* app/actions/plug-in-actions.c: set the action's stock ID from
the procedure's stock ID.
* app/widgets/gimppluginaction.c
(gimp_plug_in_action_connect_proxy): if the procedure provides a
pixbuf, set it as icon for the menu item.
* app/menus/file-dialog-menu.[ch]
* app/menus/file-open-menu.c
* app/menus/file-save-menu.c
* app/xcf/xcf.c: changed accordingly.
* tools/pdbgen/pdb/plug_in.pdb (plugin_icon_register): new PDB
function which can be called during query().
* tools/pdbgen/enums.pl
* app/pdb/internal_procs.c
* app/pdb/plug_in_cmds.c
* libgimp/gimpenums.h
* libgimp/gimpplugin_pdb.c
* libgimp/gimpplugin_pdb.h
* plug-ins/pygimp/gimpenums.py
* plug-ins/script-fu/script-fu-constants.c: regenerated.
* plug-ins/common/plugindetails.c
* plug-ins/common/uniteditor.c
* plug-ins/print/print.c: register stock_id icons.
* plug-ins/common/screenshot.c: register an inline_pixbuf icon for
testing purposes (used emblem-camera.png from gnome-icon-theme).
* app/actions/dialogs-actions.c
* app/actions/file-actions.c: unrelated: added some more icons
to menu items.
2004-05-14 Sven Neumann <sven@gimp.org>
* tools/pdbgen/pdb/fileops.pdb: added new PDB function
gimp_register_file_handler_mime() that allows to associate a MIME
type with a file procecdurre.
* app/pdb/fileops_cmds.c
* app/pdb/internal_procs.c
* libgimp/gimpfileops_pdb.[ch]: regenerated.
* app/plug-in/plug-in-proc.[ch]
* app/plug-in/plug-in-rc.c
* app/plug-in/plug-ins.[ch]: store a mimetype with file procedures.
* app/actions/file-commands.c
* app/core/gimpdocumentlist.[ch]
* app/core/gimpimagefile.[ch]
* app/file/file-open.[ch]
* app/file/file-save.c: set the thumbnail's mimetype from the file
procedure used to load/save the image.
* app/xcf/xcf.c
* plug-ins/bmp/bmp.c
* plug-ins/common/csource.c
* plug-ins/common/dicom.c
* plug-ins/common/gif.c
* plug-ins/common/gifload.c
* plug-ins/common/jpeg.c
* plug-ins/common/mng.c
* plug-ins/common/png.c
* plug-ins/common/postscript.c
* plug-ins/common/psd.c
* plug-ins/common/psd_save.c
* plug-ins/common/sunras.c
* plug-ins/common/svg.c
* plug-ins/common/tga.c
* plug-ins/common/tiff.c
* plug-ins/common/wmf.c
* plug-ins/common/xbm.c
* plug-ins/common/xpm.c
* plug-ins/common/xwd.c
* plug-ins/faxg3/faxg3.c
* plug-ins/winicon/main.c: register a mimetype, set a translatable
action name (taken from shared-mime-info) and register to the <Load>
and <Save> menus using gimp_plugin_menu_register().
2004-05-10 Sven Neumann <sven@gimp.org>
* app/xcf/xcf-save.c (xcf_save_prop): fixed size of colormap
property. Patch by Daniel Kobras, fixes bug #142149.