summaryrefslogtreecommitdiffstats
path: root/pdb/groups/plug_in.pdb
diff options
context:
space:
mode:
Diffstat (limited to 'pdb/groups/plug_in.pdb')
-rw-r--r--pdb/groups/plug_in.pdb449
1 files changed, 449 insertions, 0 deletions
diff --git a/pdb/groups/plug_in.pdb b/pdb/groups/plug_in.pdb
new file mode 100644
index 0000000..5addf6a
--- /dev/null
+++ b/pdb/groups/plug_in.pdb
@@ -0,0 +1,449 @@
+# 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;