mirror of https://github.com/GNOME/gimp.git
450 lines
12 KiB
Plaintext
450 lines
12 KiB
Plaintext
# GIMP - The GNU 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 3 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, see <https://www.gnu.org/licenses/>.
|
|
|
|
# "Perlized" from C source by Manish Singh <yosh@gimp.org>
|
|
|
|
sub plugins_query {
|
|
$blurb = 'Queries the plug-in database for its contents.';
|
|
$help = 'This procedure queries the contents of the plug-in database.';
|
|
|
|
&andy_pdb_misc('1998');
|
|
|
|
@inargs = (
|
|
{ name => 'search_string', type => 'string', no_validate => 1,
|
|
desc => 'If not an empty string then use this as a search pattern' }
|
|
);
|
|
|
|
@outargs = (
|
|
{ name => 'menu_path', type => 'stringarray',
|
|
desc => 'The menu path of the plug-in',
|
|
array => { name => 'num_plugins',
|
|
desc => 'The number of plug-ins' } },
|
|
{ name => 'plugin_accelerator', type => 'stringarray',
|
|
desc => 'String representing keyboard accelerator (could be empty
|
|
string)',
|
|
array => { name => 'num_plugins', no_declare => 1,
|
|
desc => 'The number of plug-ins' } },
|
|
{ name => 'plugin_location', type => 'stringarray',
|
|
desc => 'Location of the plug-in program',
|
|
array => { name => 'num_plugins', no_declare => 1,
|
|
desc => 'The number of plug-ins' } },
|
|
{ name => 'plugin_image_type', type => 'stringarray',
|
|
desc => 'Type of image that this plug-in will work on',
|
|
array => { name => 'num_plugins', no_declare => 1,
|
|
desc => 'The number of plug-ins' } },
|
|
{ name => 'plugin_install_time', type => 'int32array',
|
|
desc => 'Time that the plug-in was installed',
|
|
array => { name => 'num_plugins', no_declare => 1,
|
|
desc => 'The number of plug-ins' } },
|
|
{ name => 'plugin_real_name', type => 'stringarray',
|
|
desc => 'The internal name of the plug-in',
|
|
array => { name => 'num_plugins', no_declare => 1,
|
|
desc => 'The number of plug-ins' } }
|
|
);
|
|
|
|
%invoke = (
|
|
code => <<'CODE'
|
|
{
|
|
num_plugins = gimp_plug_in_manager_query (gimp->plug_in_manager,
|
|
search_string,
|
|
&menu_path,
|
|
&plugin_accelerator,
|
|
&plugin_location,
|
|
&plugin_image_type,
|
|
&plugin_real_name,
|
|
&plugin_install_time);
|
|
}
|
|
CODE
|
|
);
|
|
}
|
|
|
|
sub plugin_domain_register {
|
|
$blurb = 'Registers a textdomain for localisation.';
|
|
|
|
$help = <<'HELP';
|
|
This procedure adds a textdomain to the list of domains Gimp searches
|
|
for strings when translating its menu entries. There is no need to
|
|
call this function for plug-ins that have their strings included in
|
|
the 'gimp-std-plugins' domain as that is used by default. If the compiled
|
|
message catalog is not in the standard location, you may specify an
|
|
absolute path to another location. This procedure can only be called
|
|
in the query function of a plug-in and it has to be called before any
|
|
procedure is installed.
|
|
HELP
|
|
|
|
&neo_pdb_misc('2000');
|
|
|
|
@inargs = (
|
|
{ name => 'domain_name', type => 'string',
|
|
desc => 'The name of the textdomain (must be unique)' },
|
|
{ name => 'domain_path', type => 'string', no_validate => 1,
|
|
desc => 'The absolute path to the compiled message catalog (may be
|
|
NULL)' }
|
|
);
|
|
|
|
%invoke = (
|
|
code => <<'CODE'
|
|
{
|
|
GimpPlugIn *plug_in = gimp->plug_in_manager->current_plug_in;
|
|
|
|
if (plug_in && plug_in->call_mode == GIMP_PLUG_IN_CALL_QUERY)
|
|
{
|
|
gimp_plug_in_def_set_locale_domain (plug_in->plug_in_def,
|
|
domain_name, domain_path);
|
|
}
|
|
else
|
|
{
|
|
success = FALSE;
|
|
}
|
|
}
|
|
CODE
|
|
);
|
|
}
|
|
|
|
sub plugin_help_register {
|
|
$blurb = "Register a help path for a plug-in.";
|
|
|
|
$help = <<HELP;
|
|
|
|
This procedure registers user documentation for the calling plug-in
|
|
with the GIMP help system. The domain_uri parameter points to the root
|
|
directory where the plug-in help is installed. For each supported
|
|
language there should be a file called 'gimp-help.xml' that maps the
|
|
help IDs to the actual help files.
|
|
HELP
|
|
|
|
&mitch_pdb_misc('2000');
|
|
|
|
@inargs = (
|
|
{ name => 'domain_name', type => 'string',
|
|
desc => "The XML namespace of the plug-in's help pages" },
|
|
{ name => 'domain_uri', type => 'string',
|
|
desc => "The root URI of the plug-in's help pages" }
|
|
);
|
|
|
|
%invoke = (
|
|
code => <<'CODE'
|
|
{
|
|
GimpPlugIn *plug_in = gimp->plug_in_manager->current_plug_in;
|
|
|
|
if (plug_in && plug_in->call_mode == GIMP_PLUG_IN_CALL_QUERY)
|
|
{
|
|
gimp_plug_in_def_set_help_domain (plug_in->plug_in_def,
|
|
domain_name, domain_uri);
|
|
}
|
|
else
|
|
{
|
|
success = FALSE;
|
|
}
|
|
}
|
|
CODE
|
|
);
|
|
}
|
|
|
|
sub plugin_menu_register {
|
|
$blurb = "Register an additional menu path for a plug-in procedure.";
|
|
|
|
$help = <<HELP;
|
|
This procedure installs an additional menu entry for the given procedure.
|
|
HELP
|
|
|
|
&mitch_pdb_misc('2004', '2.2');
|
|
|
|
@inargs = (
|
|
{ name => 'procedure_name', type => 'string', non_empty => 1,
|
|
desc => 'The procedure for which to install the menu path' },
|
|
{ name => 'menu_path', type => 'string',
|
|
desc => "The procedure's additional menu path" }
|
|
);
|
|
|
|
%invoke = (
|
|
code => <<'CODE'
|
|
{
|
|
GimpPlugIn *plug_in = gimp->plug_in_manager->current_plug_in;
|
|
|
|
if (plug_in)
|
|
{
|
|
gchar *canonical = gimp_canonicalize_identifier (procedure_name);
|
|
success = gimp_plug_in_menu_register (plug_in, canonical, menu_path);
|
|
g_free (canonical);
|
|
}
|
|
else
|
|
{
|
|
success = FALSE;
|
|
}
|
|
}
|
|
CODE
|
|
);
|
|
}
|
|
|
|
sub plugin_menu_branch_register {
|
|
$blurb = "Register a sub-menu.";
|
|
|
|
$help = <<HELP;
|
|
This procedure installs a sub-menu which does not belong to any procedure.
|
|
The menu-name should be the untranslated menu label. GIMP will look up the
|
|
translation in the textdomain registered for the plug-in.
|
|
HELP
|
|
|
|
&mitch_pdb_misc('2005', '2.4');
|
|
|
|
@inargs = (
|
|
{ name => 'menu_path', type => 'string',
|
|
desc => "The sub-menu's menu path" },
|
|
{ name => 'menu_name', type => 'string',
|
|
desc => 'The name of the sub-menu' }
|
|
);
|
|
|
|
%invoke = (
|
|
code => <<'CODE'
|
|
{
|
|
GimpPlugIn *plug_in = gimp->plug_in_manager->current_plug_in;
|
|
|
|
if (plug_in)
|
|
{
|
|
gimp_plug_in_manager_add_menu_branch (gimp->plug_in_manager,
|
|
plug_in->file, menu_path, menu_name);
|
|
}
|
|
else
|
|
{
|
|
success = FALSE;
|
|
}
|
|
}
|
|
CODE
|
|
);
|
|
}
|
|
|
|
sub plugin_icon_register {
|
|
$blurb = "Register an icon for a plug-in procedure.";
|
|
|
|
$help = <<HELP;
|
|
This procedure installs an icon for the given procedure.
|
|
HELP
|
|
|
|
&mitch_pdb_misc('2004', '2.2');
|
|
|
|
@inargs = (
|
|
{ name => 'procedure_name', type => 'string', wrap => 1, non_empty => 1,
|
|
desc => 'The procedure for which to install the icon' },
|
|
{ name => 'icon_type', type => 'enum GimpIconType',
|
|
desc => 'The type of the icon' },
|
|
{ name => 'icon_data', type => 'int8array',
|
|
desc => "The procedure's icon. The format depends on the
|
|
'icon_type' parameter",
|
|
array => { name => 'icon_data_length', type => '1 <= int32',
|
|
desc => "The length of 'icon-data'" } }
|
|
);
|
|
|
|
%invoke = (
|
|
code => <<'CODE'
|
|
{
|
|
GimpPlugIn *plug_in = gimp->plug_in_manager->current_plug_in;
|
|
|
|
if (plug_in && plug_in->call_mode == GIMP_PLUG_IN_CALL_QUERY)
|
|
{
|
|
GimpPlugInProcedure *proc;
|
|
gchar *canonical;
|
|
|
|
canonical = gimp_canonicalize_identifier (procedure_name);
|
|
|
|
proc = gimp_plug_in_procedure_find (plug_in->plug_in_def->procedures,
|
|
canonical);
|
|
|
|
g_free (canonical);
|
|
|
|
if (proc)
|
|
gimp_plug_in_procedure_set_icon (proc, icon_type,
|
|
icon_data, icon_data_length);
|
|
else
|
|
success = FALSE;
|
|
}
|
|
else
|
|
{
|
|
success = FALSE;
|
|
}
|
|
}
|
|
CODE
|
|
);
|
|
}
|
|
|
|
sub plugin_set_pdb_error_handler {
|
|
$blurb = "Sets an error handler for procedure calls.";
|
|
|
|
$help = <<HELP;
|
|
This procedure changes the way that errors in procedure calls are
|
|
handled. By default GIMP will raise an error dialog if a procedure
|
|
call made by a plug-in fails. Using this procedure the plug-in can
|
|
change this behavior. If the error handler is set to
|
|
%GIMP_PDB_ERROR_HANDLER_PLUGIN, then the plug-in is responsible for
|
|
calling gimp_get_pdb_error() and handling the error whenever one if
|
|
its procedure calls fails. It can do this by displaying the error
|
|
message or by forwarding it in its own return values.
|
|
HELP
|
|
|
|
&neo_pdb_misc('2008', '2.6');
|
|
|
|
@inargs = (
|
|
{ name => 'handler', type => 'enum GimpPDBErrorHandler',
|
|
desc => "Who is responsible for handling procedure call errors" }
|
|
);
|
|
|
|
%invoke = (
|
|
code => <<'CODE'
|
|
{
|
|
GimpPlugIn *plug_in = gimp->plug_in_manager->current_plug_in;
|
|
|
|
if (plug_in)
|
|
{
|
|
gimp_plug_in_set_error_handler (plug_in, handler);
|
|
}
|
|
else
|
|
{
|
|
success = FALSE;
|
|
}
|
|
}
|
|
CODE
|
|
);
|
|
}
|
|
|
|
sub plugin_get_pdb_error_handler {
|
|
$blurb = "Retrieves the active error handler for procedure calls.";
|
|
|
|
$help = <<HELP;
|
|
This procedure retrieves the currently active error handler for
|
|
procedure calls made by the calling plug-in. See
|
|
gimp_plugin_set_pdb_error_handler() for details.
|
|
HELP
|
|
|
|
&neo_pdb_misc('2008', '2.6');
|
|
|
|
@outargs = (
|
|
{ name => 'handler', type => 'enum GimpPDBErrorHandler',
|
|
desc => "Who is responsible for handling procedure call errors" }
|
|
);
|
|
|
|
%invoke = (
|
|
code => <<'CODE'
|
|
{
|
|
GimpPlugIn *plug_in = gimp->plug_in_manager->current_plug_in;
|
|
|
|
if (plug_in)
|
|
{
|
|
handler = gimp_plug_in_get_error_handler (plug_in);
|
|
}
|
|
else
|
|
{
|
|
success = FALSE;
|
|
}
|
|
}
|
|
CODE
|
|
);
|
|
}
|
|
|
|
sub plugin_enable_precision {
|
|
$blurb = "Switches this plug-in to using the real bit depth of drawables.";
|
|
|
|
$help = <<HELP;
|
|
Switches this plug-in to using the real bit depth of drawables. This
|
|
setting can only be enabled, and not disabled again during the
|
|
lifetime of the plug-in. Using gimp_drawable_get_buffer(),
|
|
gimp_drawable_get_shadow_buffer() or gimp_drawable_get_format() will
|
|
automatically call this function.
|
|
HELP
|
|
|
|
&mitch_pdb_misc('2012', '2.10');
|
|
|
|
%invoke = (
|
|
code => <<'CODE'
|
|
{
|
|
GimpPlugIn *plug_in = gimp->plug_in_manager->current_plug_in;
|
|
|
|
if (plug_in)
|
|
{
|
|
gimp_plug_in_enable_precision (plug_in);
|
|
}
|
|
else
|
|
{
|
|
success = FALSE;
|
|
}
|
|
}
|
|
CODE
|
|
);
|
|
}
|
|
|
|
sub plugin_precision_enabled {
|
|
$blurb = "Whether this plug-in is using the real bit depth of drawables.";
|
|
|
|
$help = <<HELP;
|
|
Returns whether this plug-in is using the real bit depth of drawables,
|
|
which can be more than 8 bits per channel.
|
|
HELP
|
|
|
|
&mitch_pdb_misc('2012', '2.10');
|
|
|
|
@outargs = (
|
|
{ name => 'enabled', type => 'boolean',
|
|
desc => "Whether precision is enabled" }
|
|
);
|
|
|
|
%invoke = (
|
|
code => <<'CODE'
|
|
{
|
|
GimpPlugIn *plug_in = gimp->plug_in_manager->current_plug_in;
|
|
|
|
if (plug_in)
|
|
{
|
|
enabled = gimp_plug_in_precision_enabled (plug_in);
|
|
}
|
|
else
|
|
{
|
|
success = FALSE;
|
|
}
|
|
}
|
|
CODE
|
|
);
|
|
}
|
|
|
|
@headers = qw(<string.h>
|
|
<stdlib.h>
|
|
"libgimpbase/gimpbase.h"
|
|
"core/gimp.h"
|
|
"plug-in/gimpplugin.h"
|
|
"plug-in/gimpplugindef.h"
|
|
"plug-in/gimppluginmanager.h"
|
|
"plug-in/gimppluginmanager-menu-branch.h"
|
|
"plug-in/gimppluginmanager-query.h"
|
|
"plug-in/gimppluginprocedure.h");
|
|
|
|
@procs = qw(plugins_query
|
|
plugin_domain_register
|
|
plugin_help_register
|
|
plugin_menu_register
|
|
plugin_menu_branch_register
|
|
plugin_icon_register
|
|
plugin_set_pdb_error_handler
|
|
plugin_get_pdb_error_handler
|
|
plugin_enable_precision
|
|
plugin_precision_enabled);
|
|
|
|
%exports = (app => [@procs], lib => [@procs[1,2,3,4,5,6,7,8,9]]);
|
|
|
|
$desc = 'Plug-in';
|
|
$doc_title = 'gimpplugin';
|
|
$doc_short_desc = 'Functions useful for plug-ins, e.g. registration and progress indicators.';
|
|
$doc_long_desc = 'Functions useful for plug-ins, e.g. registration and progress indicators.';
|
|
|
|
1;
|