2006-05-03 Michael Natterer <mitch@gimp.org> Made an object out of the plug-in struct. Also change refcounting considerably: - gimp_plug_in_open() adds a reference that is only dropped by gimp_plug_in_close(). - temporarily ref the plug-in while handling messages. - remporarily ref the plug-in while a recursive main loop is running. - each caller of gimp_plug_in_new() also unrefs the plug-in before returning, the only reference that persists across functions (that keeps the plug-in alive) is the one added by open(). * app/plug-in/plug-in.[ch] * app/plug-in/plug-in-context.[ch] * app/plug-in/plug-in-message.[ch] * app/plug-in/plug-in-progress.[ch]: removed these files... * app/plug-in/gimpplugin.[ch] * app/plug-in/gimpplugin-context.[ch] * app/plug-in/gimpplugin-message.[ch] * app/plug-in/gimpplugin-progress.[ch]: ...and added here as GObject. * app/plug-in/plug-in-proc-frame.[ch]: removed... * app/plug-in/gimppluginprocframe.[ch]: ...and added with a namespace. * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/gimppluginmanager-call.c * app/plug-in/gimppluginmanager-file.c * app/plug-in/gimppluginmanager.[ch] * app/pdb/gimppluginprocedure.c * app/pdb/gimptemporaryprocedure.c * app/pdb/gimptemporaryprocedure.h * tools/pdbgen/pdb/context.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/message.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/pdb/progress.pdb * tools/pdbgen/pdb/undo.pdb: changed accordingly. * app/pdb/context_cmds.c * app/pdb/drawable_cmds.c * app/pdb/help_cmds.c * app/pdb/message_cmds.c * app/pdb/plug_in_cmds.c * app/pdb/progress_cmds.c * app/pdb/undo_cmds.c: regenerated.
258 lines
6.6 KiB
Text
258 lines
6.6 KiB
Text
# The GIMP -- an image manipulation program
|
|
# Copyright (C) 1995 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.
|
|
|
|
# "Perlized" from C source by Manish Singh <yosh@gimp.org>
|
|
|
|
sub image_undo_group_start {
|
|
$blurb = 'Starts a group undo.';
|
|
|
|
$help = <<'HELP';
|
|
This function is used to start a group undo--necessary for logically combining
|
|
two or more undo operations into a single operation. This call must be used in
|
|
conjunction with a 'gimp-image-undo-group-end' call.
|
|
HELP
|
|
|
|
&std_pdb_misc;
|
|
$date = '1997';
|
|
|
|
@inargs = (
|
|
{ name => 'image', type => 'image',
|
|
desc => 'The ID of the image in which to open an undo group' }
|
|
);
|
|
|
|
%invoke = (
|
|
headers => [ qw("core/gimp.h" "plug-in/gimppluginmanager.h"
|
|
"plug-in/gimpplugin.h") ],
|
|
code => <<'CODE'
|
|
{
|
|
GimpPlugIn *plug_in = gimp->plug_in_manager->current_plug_in;
|
|
gchar *undo_desc = NULL;
|
|
|
|
if (plug_in)
|
|
undo_desc = gimp_plug_in_get_undo_desc (plug_in);
|
|
|
|
gimp_image_undo_group_start (image, GIMP_UNDO_GROUP_MISC, undo_desc);
|
|
|
|
if (undo_desc)
|
|
g_free (undo_desc);
|
|
}
|
|
CODE
|
|
);
|
|
}
|
|
|
|
sub image_undo_group_end {
|
|
$blurb = 'Finish a group undo.';
|
|
|
|
$help = <<'HELP';
|
|
This function must be called once for each 'gimp-image-undo-group-start' call
|
|
that is made.
|
|
HELP
|
|
|
|
&std_pdb_misc;
|
|
$date = '1997';
|
|
|
|
@inargs = (
|
|
{ name => 'image', type => 'image',
|
|
desc => 'The ID of the image in which to close an undo group' }
|
|
);
|
|
|
|
%invoke = (
|
|
code => <<'CODE'
|
|
{
|
|
gimp_image_undo_group_end (image);
|
|
}
|
|
CODE
|
|
);
|
|
}
|
|
|
|
sub image_undo_is_enabled {
|
|
$blurb = "Check if the image's undo stack is enabled.";
|
|
|
|
$help = <<'HELP';
|
|
This procedure checks if the image's undo stack is currently enabled or
|
|
disabled. This is useful when several plugins or scripts call each other
|
|
and want to check if their caller has already used 'gimp_image_undo_disable'
|
|
or 'gimp_image_undo_freeze'.
|
|
HELP
|
|
|
|
&raphael_pdb_misc('1999');
|
|
|
|
@inargs = (
|
|
{ name => 'image', type => 'image',
|
|
desc => 'The image' }
|
|
);
|
|
|
|
@outargs = (
|
|
{ name => 'enabled', type => 'boolean',
|
|
desc => 'TRUE if undo is enabled for this image' }
|
|
);
|
|
|
|
%invoke = (
|
|
code => <<'CODE'
|
|
{
|
|
enabled = gimp_image_undo_is_enabled (image);
|
|
}
|
|
CODE
|
|
);
|
|
}
|
|
|
|
sub image_undo_disable {
|
|
$blurb = "Disable the image's undo stack.";
|
|
|
|
$help = <<'HELP';
|
|
This procedure disables the image's undo stack, allowing subsequent operations
|
|
to ignore their undo steps. This is generally called in conjunction with
|
|
'gimp_image_undo_enable' to temporarily disable an image undo stack. This is
|
|
advantageous because saving undo steps can be time and memory intensive.
|
|
HELP
|
|
|
|
&std_pdb_misc;
|
|
|
|
@inargs = (
|
|
{ name => 'image', type => 'image',
|
|
desc => 'The image' }
|
|
);
|
|
|
|
@outargs = (
|
|
{ name => 'disabled', type => 'boolean',
|
|
desc => 'TRUE if the image undo has been disabled' }
|
|
);
|
|
|
|
%invoke = (
|
|
code => <<'CODE'
|
|
{
|
|
disabled = gimp_image_undo_disable (image);
|
|
}
|
|
CODE
|
|
);
|
|
}
|
|
|
|
sub image_undo_enable {
|
|
$blurb = "Enable the image's undo stack.";
|
|
|
|
$help = <<'HELP';
|
|
This procedure enables the image's undo stack, allowing subsequent operations
|
|
to store their undo steps. This is generally called in conjunction with
|
|
'gimp_image_undo_disable' to temporarily disable an image undo stack.
|
|
HELP
|
|
|
|
&std_pdb_misc;
|
|
|
|
@inargs = (
|
|
{ name => 'image', type => 'image',
|
|
desc => 'The image' }
|
|
);
|
|
|
|
@outargs = (
|
|
{ name => 'enabled', type => 'boolean',
|
|
desc => 'TRUE if the image undo has been enabled' }
|
|
);
|
|
|
|
%invoke = (
|
|
code => <<'CODE'
|
|
{
|
|
enabled = gimp_image_undo_enable (image);
|
|
}
|
|
CODE
|
|
);
|
|
}
|
|
|
|
sub image_undo_freeze {
|
|
$blurb = "Freeze the image's undo stack.";
|
|
|
|
&adam_pdb_misc('1999');
|
|
|
|
$help = <<'HELP';
|
|
This procedure freezes the image's undo stack, allowing subsequent operations
|
|
to ignore their undo steps. This is generally called in conjunction with
|
|
'gimp_image_undo_thaw' to temporarily disable an image undo stack. This is
|
|
advantageous because saving undo steps can be time and memory intensive.
|
|
'gimp_image_undo_{freeze,thaw}' and 'gimp_image_undo_{disable,enable}' differ
|
|
in that the former does not free up all undo steps when undo is thawed, so is
|
|
more suited to interactive in-situ previews. It is important in this case
|
|
that the image is back to the same state it was frozen in before thawing, else
|
|
'undo' behaviour is undefined.
|
|
HELP
|
|
|
|
@inargs = (
|
|
{ name => 'image', type => 'image',
|
|
desc => 'The image' }
|
|
);
|
|
|
|
@outargs = (
|
|
{ name => 'frozen', type => 'boolean',
|
|
desc => 'TRUE if the image undo has been frozen' }
|
|
);
|
|
|
|
%invoke = (
|
|
code => <<'CODE'
|
|
{
|
|
frozen = gimp_image_undo_freeze (image);
|
|
}
|
|
CODE
|
|
);
|
|
}
|
|
|
|
sub image_undo_thaw {
|
|
$blurb = "Thaw the image's undo stack.";
|
|
|
|
&adam_pdb_misc('1999');
|
|
|
|
$help = <<'HELP';
|
|
This procedure thaws the image's undo stack, allowing subsequent operations to
|
|
store their undo steps. This is generally called in conjunction with
|
|
'gimp_image_undo_freeze' to temporarily freeze an image undo stack.
|
|
'gimp_image_undo_thaw' does NOT free the undo stack as
|
|
'gimp_image_undo_enable' does, so is suited for situations where one wishes to
|
|
leave the undo stack in the same state in which one found it despite
|
|
non-destructively playing with the image in the meantime. An example would be
|
|
in-situ plugin previews. Balancing freezes and thaws and ensuring image
|
|
consistancy is the responsibility of the caller.
|
|
HELP
|
|
|
|
@inargs = (
|
|
{ name => 'image', type => 'image',
|
|
desc => 'The image' }
|
|
);
|
|
|
|
@outargs = (
|
|
{ name => 'thawed', type => 'boolean',
|
|
desc => 'TRUE if the image undo has been thawed' }
|
|
);
|
|
|
|
%invoke = (
|
|
code => <<'CODE'
|
|
{
|
|
thawed = gimp_image_undo_thaw (image);
|
|
}
|
|
CODE
|
|
);
|
|
}
|
|
|
|
|
|
@headers = qw("core/gimpimage-undo.h");
|
|
|
|
@procs = qw(image_undo_group_start image_undo_group_end
|
|
image_undo_is_enabled
|
|
image_undo_disable image_undo_enable
|
|
image_undo_freeze image_undo_thaw);
|
|
|
|
%exports = (app => [@procs], lib => [@procs]);
|
|
|
|
$desc = 'Undo';
|
|
|
|
1;
|