diff options
Diffstat (limited to 'pdb/groups/plug_in.pdb')
-rw-r--r-- | pdb/groups/plug_in.pdb | 449 |
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; |