removed function plug_in_proc_args_check().

2006-04-09  Michael Natterer  <mitch@gimp.org>

	* app/plug-in/plug-in-params.[ch]: removed function
	plug_in_proc_args_check().

	* app/pdb/gimppluginprocedure.[ch]: added new function
	gimp_plug_in_procedure_add_menu_path() which performs all menu
	path checks that were in the function above and adds the new
	menu_path to the procedure's list of menu_paths.

	* app/plug-in/plug-in-message.c (plug_in_handle_proc_install)
	* app/plug-in/plug-in.c (plug_in_menu_register): use the new
	function and removed manual adding of the menu path to
	proc->menu_paths.
This commit is contained in:
Michael Natterer 2006-04-09 17:08:56 +00:00 committed by Michael Natterer
parent 5cf5b8ca1c
commit 73a9abd337
11 changed files with 414 additions and 270 deletions

View file

@ -1,3 +1,18 @@
2006-04-09 Michael Natterer <mitch@gimp.org>
* app/plug-in/plug-in-params.[ch]: removed function
plug_in_proc_args_check().
* app/pdb/gimppluginprocedure.[ch]: added new function
gimp_plug_in_procedure_add_menu_path() which performs all menu
path checks that were in the function above and adds the new
menu_path to the procedure's list of menu_paths.
* app/plug-in/plug-in-message.c (plug_in_handle_proc_install)
* app/plug-in/plug-in.c (plug_in_menu_register): use the new
function and removed manual adding of the menu path to
proc->menu_paths.
2006-04-09 Michael Natterer <mitch@gimp.org>
* app/plug-in/Makefile.am

View file

@ -30,6 +30,7 @@
#include "pdb-types.h"
#include "core/gimp.h"
#include "core/gimpparamspecs.h"
#include "plug-in/plug-in.h"
#include "plug-in/plug-ins.h"
@ -202,6 +203,178 @@ gimp_plug_in_procedure_get_progname (const GimpPlugInProcedure *proc)
return GIMP_PLUG_IN_PROCEDURE_GET_CLASS (proc)->get_progname (proc);
}
gboolean
gimp_plug_in_procedure_add_menu_path (GimpPlugInProcedure *proc,
const gchar *menu_path,
GError **error)
{
GimpProcedure *procedure;
gchar *basename = NULL;
gchar *prefix;
gchar *p;
g_return_val_if_fail (GIMP_IS_PLUG_IN_PROCEDURE (proc), FALSE);
g_return_val_if_fail (menu_path != NULL, FALSE);
g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
procedure = GIMP_PROCEDURE (proc);
prefix = g_strdup (menu_path);
p = strchr (prefix, '>') + 1;
if (p)
*p = '\0';
if (strcmp (prefix, "<Toolbox>") == 0 ||
strcmp (prefix, "<Image>") == 0)
{
if ((procedure->num_args < 1) ||
! GIMP_IS_PARAM_SPEC_INT32 (procedure->args[0]))
{
basename = g_filename_display_basename (proc->prog);
g_set_error (error, 0, 0,
"Plug-In \"%s\"\n(%s)\n\n"
"attempted to install %s procedure \"%s\" "
"which does not take the standard %s Plug-In "
"arguments.\n"
"(INT32)",
basename, gimp_filename_to_utf8 (proc->prog),
prefix, GIMP_OBJECT (proc)->name, prefix);
goto failure;
}
}
else if (strcmp (prefix, "<Load>") == 0)
{
if ((procedure->num_args < 3) ||
! GIMP_IS_PARAM_SPEC_INT32 (procedure->args[0]) ||
! G_IS_PARAM_SPEC_STRING (procedure->args[1]) ||
! G_IS_PARAM_SPEC_STRING (procedure->args[2]))
{
basename = g_filename_display_basename (proc->prog);
g_set_error (error, 0, 0,
"Plug-In \"%s\"\n(%s)\n\n"
"attempted to install <Load> procedure \"%s\" "
"which does not take the standard <Load> Plug-In "
"arguments.\n"
"(INT32, STRING, STRING)",
basename, gimp_filename_to_utf8 (proc->prog),
GIMP_OBJECT (proc)->name);
goto failure;
}
if ((procedure->num_values < 1) ||
! GIMP_IS_PARAM_SPEC_IMAGE_ID (procedure->values[0]))
{
basename = g_filename_display_basename (proc->prog);
g_set_error (error, 0, 0,
"Plug-In \"%s\"\n(%s)\n\n"
"attempted to install <Load> procedure \"%s\" "
"which does not return the standard <Load> Plug-In "
"values.\n"
"(IMAGE)",
basename, gimp_filename_to_utf8 (proc->prog),
GIMP_OBJECT (proc)->name);
goto failure;
}
}
else if (strcmp (prefix, "<Save>") == 0)
{
if ((procedure->num_args < 5) ||
! GIMP_IS_PARAM_SPEC_INT32 (procedure->args[0]) ||
! GIMP_IS_PARAM_SPEC_IMAGE_ID (procedure->args[1]) ||
! GIMP_IS_PARAM_SPEC_DRAWABLE_ID (procedure->args[2]) ||
! G_IS_PARAM_SPEC_STRING (procedure->args[3]) ||
! G_IS_PARAM_SPEC_STRING (procedure->args[4]))
{
basename = g_filename_display_basename (proc->prog);
g_set_error (error, 0, 0,
"Plug-In \"%s\"\n(%s)\n\n"
"attempted to install <Save> procedure \"%s\" "
"which does not take the standard <Save> Plug-In "
"arguments.\n"
"(INT32, IMAGE, DRAWABLE, STRING, STRING)",
basename, gimp_filename_to_utf8 (proc->prog),
GIMP_OBJECT (proc)->name);
goto failure;
}
}
else if (strcmp (prefix, "<Brushes>") == 0 ||
strcmp (prefix, "<Gradients>") == 0 ||
strcmp (prefix, "<Palettes>") == 0 ||
strcmp (prefix, "<Patterns>") == 0 ||
strcmp (prefix, "<Fonts>") == 0 ||
strcmp (prefix, "<Buffers>") == 0)
{
if ((procedure->num_args < 1) ||
! GIMP_IS_PARAM_SPEC_INT32 (procedure->args[0]))
{
basename = g_filename_display_basename (proc->prog);
g_set_error (error, 0, 0,
"Plug-In \"%s\"\n(%s)\n\n"
"attempted to install %s procedure \"%s\" "
"which does not take the standard %s Plug-In "
"arguments.\n"
"(INT32)",
basename, gimp_filename_to_utf8 (proc->prog),
prefix, GIMP_OBJECT (proc)->name, prefix);
goto failure;
}
}
else
{
basename = g_filename_display_basename (proc->prog);
g_set_error (error, 0, 0,
"Plug-In \"%s\"\n(%s)\n"
"attempted to install procedure \"%s\" "
"in the invalid menu location \"%s\".\n"
"Use either \"<Toolbox>\", \"<Image>\", "
"\"<Load>\", \"<Save>\", \"<Brushes>\", "
"\"<Gradients>\", \"<Palettes>\", \"<Patterns>\" or "
"\"<Buffers>\".",
basename, gimp_filename_to_utf8 (proc->prog),
GIMP_OBJECT (proc)->name,
menu_path);
goto failure;
}
p = strchr (menu_path, '>') + 1;
if (*p != '/' && *p != '\0')
{
basename = g_filename_display_basename (proc->prog);
g_set_error (error, 0, 0,
"Plug-In \"%s\"\n(%s)\n"
"attempted to install procedure \"%s\"\n"
"in the invalid menu location \"%s\".\n"
"The menu path must look like either \"<Prefix>\" "
"or \"<Prefix>/path/to/item\".",
basename, gimp_filename_to_utf8 (proc->prog),
GIMP_OBJECT (proc)->name,
menu_path);
goto failure;
}
g_free (prefix);
g_free (basename);
proc->menu_paths = g_list_append (proc->menu_paths, g_strdup (menu_path));
return TRUE;
failure:
g_free (prefix);
g_free (basename);
return FALSE;
}
gchar *
gimp_plug_in_procedure_get_label (const GimpPlugInProcedure *proc,
const gchar *locale_domain)

View file

@ -83,6 +83,9 @@ GimpPlugInProcedure * gimp_plug_in_procedure_find (GSList
const gchar *proc_name);
const gchar * gimp_plug_in_procedure_get_progname (const GimpPlugInProcedure *proc);
gboolean gimp_plug_in_procedure_add_menu_path (GimpPlugInProcedure *proc,
const gchar *menu_path,
GError **error);
gchar * gimp_plug_in_procedure_get_label (const GimpPlugInProcedure *proc,
const gchar *locale_domain);

View file

@ -637,25 +637,13 @@ plug_in_handle_proc_install (PlugIn *plug_in,
{
GError *error = NULL;
if (! plug_in_proc_args_check (plug_in->name,
plug_in->prog,
canonical,
proc_install->menu_path,
procedure->args,
procedure->num_args,
procedure->values,
procedure->num_values,
&error))
if (! gimp_plug_in_procedure_add_menu_path (proc,
proc_install->menu_path,
&error))
{
g_message (error->message);
g_clear_error (&error);
}
else
{
proc->menu_paths =
g_list_append (proc->menu_paths,
g_strdup (proc_install->menu_path));
}
}
else
{

View file

@ -1021,6 +1021,20 @@ plug_in_menu_register (PlugIn *plug_in,
return FALSE;
}
switch (GIMP_PROCEDURE (proc)->proc_type)
{
case GIMP_INTERNAL:
return FALSE;
case GIMP_PLUGIN:
case GIMP_EXTENSION:
if (! plug_in->query && ! plug_in->init)
return FALSE;
case GIMP_TEMPORARY:
break;
}
if (! proc->menu_label)
{
g_message ("Plug-in \"%s\"\n(%s)\n"
@ -1037,15 +1051,7 @@ plug_in_menu_register (PlugIn *plug_in,
return FALSE;
}
if (! plug_in_proc_args_check (plug_in->name,
plug_in->prog,
proc_name,
menu_path,
GIMP_PROCEDURE (proc)->args,
GIMP_PROCEDURE (proc)->num_args,
GIMP_PROCEDURE (proc)->values,
GIMP_PROCEDURE (proc)->num_values,
&error))
if (! gimp_plug_in_procedure_add_menu_path (proc, menu_path, &error))
{
g_message (error->message);
g_clear_error (&error);
@ -1053,22 +1059,6 @@ plug_in_menu_register (PlugIn *plug_in,
return FALSE;
}
switch (GIMP_PROCEDURE (proc)->proc_type)
{
case GIMP_INTERNAL:
return FALSE;
case GIMP_PLUGIN:
case GIMP_EXTENSION:
if (! plug_in->query && ! plug_in->init)
return FALSE;
case GIMP_TEMPORARY:
break;
}
proc->menu_paths = g_list_append (proc->menu_paths, g_strdup (menu_path));
if (GIMP_IS_TEMPORARY_PROCEDURE (proc) && ! plug_in->gimp->no_interface)
{
gimp_menus_create_item (plug_in->gimp, proc, menu_path);

View file

@ -30,6 +30,7 @@
#include "pdb-types.h"
#include "core/gimp.h"
#include "core/gimpparamspecs.h"
#include "plug-in/plug-in.h"
#include "plug-in/plug-ins.h"
@ -202,6 +203,178 @@ gimp_plug_in_procedure_get_progname (const GimpPlugInProcedure *proc)
return GIMP_PLUG_IN_PROCEDURE_GET_CLASS (proc)->get_progname (proc);
}
gboolean
gimp_plug_in_procedure_add_menu_path (GimpPlugInProcedure *proc,
const gchar *menu_path,
GError **error)
{
GimpProcedure *procedure;
gchar *basename = NULL;
gchar *prefix;
gchar *p;
g_return_val_if_fail (GIMP_IS_PLUG_IN_PROCEDURE (proc), FALSE);
g_return_val_if_fail (menu_path != NULL, FALSE);
g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
procedure = GIMP_PROCEDURE (proc);
prefix = g_strdup (menu_path);
p = strchr (prefix, '>') + 1;
if (p)
*p = '\0';
if (strcmp (prefix, "<Toolbox>") == 0 ||
strcmp (prefix, "<Image>") == 0)
{
if ((procedure->num_args < 1) ||
! GIMP_IS_PARAM_SPEC_INT32 (procedure->args[0]))
{
basename = g_filename_display_basename (proc->prog);
g_set_error (error, 0, 0,
"Plug-In \"%s\"\n(%s)\n\n"
"attempted to install %s procedure \"%s\" "
"which does not take the standard %s Plug-In "
"arguments.\n"
"(INT32)",
basename, gimp_filename_to_utf8 (proc->prog),
prefix, GIMP_OBJECT (proc)->name, prefix);
goto failure;
}
}
else if (strcmp (prefix, "<Load>") == 0)
{
if ((procedure->num_args < 3) ||
! GIMP_IS_PARAM_SPEC_INT32 (procedure->args[0]) ||
! G_IS_PARAM_SPEC_STRING (procedure->args[1]) ||
! G_IS_PARAM_SPEC_STRING (procedure->args[2]))
{
basename = g_filename_display_basename (proc->prog);
g_set_error (error, 0, 0,
"Plug-In \"%s\"\n(%s)\n\n"
"attempted to install <Load> procedure \"%s\" "
"which does not take the standard <Load> Plug-In "
"arguments.\n"
"(INT32, STRING, STRING)",
basename, gimp_filename_to_utf8 (proc->prog),
GIMP_OBJECT (proc)->name);
goto failure;
}
if ((procedure->num_values < 1) ||
! GIMP_IS_PARAM_SPEC_IMAGE_ID (procedure->values[0]))
{
basename = g_filename_display_basename (proc->prog);
g_set_error (error, 0, 0,
"Plug-In \"%s\"\n(%s)\n\n"
"attempted to install <Load> procedure \"%s\" "
"which does not return the standard <Load> Plug-In "
"values.\n"
"(IMAGE)",
basename, gimp_filename_to_utf8 (proc->prog),
GIMP_OBJECT (proc)->name);
goto failure;
}
}
else if (strcmp (prefix, "<Save>") == 0)
{
if ((procedure->num_args < 5) ||
! GIMP_IS_PARAM_SPEC_INT32 (procedure->args[0]) ||
! GIMP_IS_PARAM_SPEC_IMAGE_ID (procedure->args[1]) ||
! GIMP_IS_PARAM_SPEC_DRAWABLE_ID (procedure->args[2]) ||
! G_IS_PARAM_SPEC_STRING (procedure->args[3]) ||
! G_IS_PARAM_SPEC_STRING (procedure->args[4]))
{
basename = g_filename_display_basename (proc->prog);
g_set_error (error, 0, 0,
"Plug-In \"%s\"\n(%s)\n\n"
"attempted to install <Save> procedure \"%s\" "
"which does not take the standard <Save> Plug-In "
"arguments.\n"
"(INT32, IMAGE, DRAWABLE, STRING, STRING)",
basename, gimp_filename_to_utf8 (proc->prog),
GIMP_OBJECT (proc)->name);
goto failure;
}
}
else if (strcmp (prefix, "<Brushes>") == 0 ||
strcmp (prefix, "<Gradients>") == 0 ||
strcmp (prefix, "<Palettes>") == 0 ||
strcmp (prefix, "<Patterns>") == 0 ||
strcmp (prefix, "<Fonts>") == 0 ||
strcmp (prefix, "<Buffers>") == 0)
{
if ((procedure->num_args < 1) ||
! GIMP_IS_PARAM_SPEC_INT32 (procedure->args[0]))
{
basename = g_filename_display_basename (proc->prog);
g_set_error (error, 0, 0,
"Plug-In \"%s\"\n(%s)\n\n"
"attempted to install %s procedure \"%s\" "
"which does not take the standard %s Plug-In "
"arguments.\n"
"(INT32)",
basename, gimp_filename_to_utf8 (proc->prog),
prefix, GIMP_OBJECT (proc)->name, prefix);
goto failure;
}
}
else
{
basename = g_filename_display_basename (proc->prog);
g_set_error (error, 0, 0,
"Plug-In \"%s\"\n(%s)\n"
"attempted to install procedure \"%s\" "
"in the invalid menu location \"%s\".\n"
"Use either \"<Toolbox>\", \"<Image>\", "
"\"<Load>\", \"<Save>\", \"<Brushes>\", "
"\"<Gradients>\", \"<Palettes>\", \"<Patterns>\" or "
"\"<Buffers>\".",
basename, gimp_filename_to_utf8 (proc->prog),
GIMP_OBJECT (proc)->name,
menu_path);
goto failure;
}
p = strchr (menu_path, '>') + 1;
if (*p != '/' && *p != '\0')
{
basename = g_filename_display_basename (proc->prog);
g_set_error (error, 0, 0,
"Plug-In \"%s\"\n(%s)\n"
"attempted to install procedure \"%s\"\n"
"in the invalid menu location \"%s\".\n"
"The menu path must look like either \"<Prefix>\" "
"or \"<Prefix>/path/to/item\".",
basename, gimp_filename_to_utf8 (proc->prog),
GIMP_OBJECT (proc)->name,
menu_path);
goto failure;
}
g_free (prefix);
g_free (basename);
proc->menu_paths = g_list_append (proc->menu_paths, g_strdup (menu_path));
return TRUE;
failure:
g_free (prefix);
g_free (basename);
return FALSE;
}
gchar *
gimp_plug_in_procedure_get_label (const GimpPlugInProcedure *proc,
const gchar *locale_domain)

View file

@ -83,6 +83,9 @@ GimpPlugInProcedure * gimp_plug_in_procedure_find (GSList
const gchar *proc_name);
const gchar * gimp_plug_in_procedure_get_progname (const GimpPlugInProcedure *proc);
gboolean gimp_plug_in_procedure_add_menu_path (GimpPlugInProcedure *proc,
const gchar *menu_path,
GError **error);
gchar * gimp_plug_in_procedure_get_label (const GimpPlugInProcedure *proc,
const gchar *locale_domain);

View file

@ -637,25 +637,13 @@ plug_in_handle_proc_install (PlugIn *plug_in,
{
GError *error = NULL;
if (! plug_in_proc_args_check (plug_in->name,
plug_in->prog,
canonical,
proc_install->menu_path,
procedure->args,
procedure->num_args,
procedure->values,
procedure->num_values,
&error))
if (! gimp_plug_in_procedure_add_menu_path (proc,
proc_install->menu_path,
&error))
{
g_message (error->message);
g_clear_error (&error);
}
else
{
proc->menu_paths =
g_list_append (proc->menu_paths,
g_strdup (proc_install->menu_path));
}
}
else
{

View file

@ -18,8 +18,6 @@
#include "config.h"
#include <string.h>
#include <glib-object.h>
#include "libgimpbase/gimpbase.h"
@ -495,170 +493,3 @@ plug_in_params_destroy (GPParam *params,
g_free (params);
}
gboolean
plug_in_proc_args_check (const gchar *plug_in_name,
const gchar *plug_in_prog,
const gchar *procedure_name,
const gchar *menu_path,
GParamSpec **args,
guint32 n_args,
GParamSpec **return_vals,
guint32 n_return_vals,
GError **error)
{
gchar *prefix;
gchar *p;
g_return_val_if_fail (plug_in_name != NULL, FALSE);
g_return_val_if_fail (plug_in_prog != NULL, FALSE);
g_return_val_if_fail (procedure_name != NULL, FALSE);
g_return_val_if_fail (menu_path != NULL, FALSE);
g_return_val_if_fail (args == NULL || n_args > 0, FALSE);
g_return_val_if_fail (return_vals == NULL || n_return_vals > 0, FALSE);
g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
prefix = g_strdup (menu_path);
p = strchr (prefix, '>') + 1;
if (p)
*p = '\0';
if (strcmp (prefix, "<Toolbox>") == 0 ||
strcmp (prefix, "<Image>") == 0)
{
if ((n_args < 1) ||
! GIMP_IS_PARAM_SPEC_INT32 (args[0]))
{
g_set_error (error, 0, 0,
"Plug-In \"%s\"\n(%s)\n\n"
"attempted to install %s procedure \"%s\" "
"which does not take the standard %s Plug-In "
"arguments.\n"
"(INT32)",
gimp_filename_to_utf8 (plug_in_name),
gimp_filename_to_utf8 (plug_in_prog),
prefix, procedure_name, prefix);
goto failure;
}
}
else if (strcmp (prefix, "<Load>") == 0)
{
if ((n_args < 3) ||
! GIMP_IS_PARAM_SPEC_INT32 (args[0]) ||
! G_IS_PARAM_SPEC_STRING (args[1]) ||
! G_IS_PARAM_SPEC_STRING (args[2]))
{
g_set_error (error, 0, 0,
"Plug-In \"%s\"\n(%s)\n\n"
"attempted to install <Load> procedure \"%s\" "
"which does not take the standard <Load> Plug-In "
"arguments.\n"
"(INT32, STRING, STRING)",
gimp_filename_to_utf8 (plug_in_name),
gimp_filename_to_utf8 (plug_in_prog),
procedure_name);
goto failure;
}
if ((n_return_vals < 1) ||
! GIMP_IS_PARAM_SPEC_IMAGE_ID (return_vals[0]))
{
g_set_error (error, 0, 0,
"Plug-In \"%s\"\n(%s)\n\n"
"attempted to install <Load> procedure \"%s\" "
"which does not return the standard <Load> Plug-In "
"values.\n"
"(IMAGE)",
gimp_filename_to_utf8 (plug_in_name),
gimp_filename_to_utf8 (plug_in_prog),
procedure_name);
goto failure;
}
}
else if (strcmp (prefix, "<Save>") == 0)
{
if ((n_args < 5) ||
! GIMP_IS_PARAM_SPEC_INT32 (args[0]) ||
! GIMP_IS_PARAM_SPEC_IMAGE_ID (args[1]) ||
! GIMP_IS_PARAM_SPEC_DRAWABLE_ID (args[2]) ||
! G_IS_PARAM_SPEC_STRING (args[3]) ||
! G_IS_PARAM_SPEC_STRING (args[4]))
{
g_set_error (error, 0, 0,
"Plug-In \"%s\"\n(%s)\n\n"
"attempted to install <Save> procedure \"%s\" "
"which does not take the standard <Save> Plug-In "
"arguments.\n"
"(INT32, IMAGE, DRAWABLE, STRING, STRING)",
gimp_filename_to_utf8 (plug_in_name),
gimp_filename_to_utf8 (plug_in_prog),
procedure_name);
goto failure;
}
}
else if (strcmp (prefix, "<Brushes>") == 0 ||
strcmp (prefix, "<Gradients>") == 0 ||
strcmp (prefix, "<Palettes>") == 0 ||
strcmp (prefix, "<Patterns>") == 0 ||
strcmp (prefix, "<Fonts>") == 0 ||
strcmp (prefix, "<Buffers>") == 0)
{
if ((n_args < 1) ||
! GIMP_IS_PARAM_SPEC_INT32 (args[0]))
{
g_set_error (error, 0, 0,
"Plug-In \"%s\"\n(%s)\n\n"
"attempted to install %s procedure \"%s\" "
"which does not take the standard %s Plug-In "
"arguments.\n"
"(INT32)",
gimp_filename_to_utf8 (plug_in_name),
gimp_filename_to_utf8 (plug_in_prog),
prefix, procedure_name, prefix);
goto failure;
}
}
else
{
g_set_error (error, 0, 0,
"Plug-In \"%s\"\n(%s)\n"
"attempted to install procedure \"%s\" "
"in the invalid menu location \"%s\".\n"
"Use either \"<Toolbox>\", \"<Image>\", "
"\"<Load>\", \"<Save>\", \"<Brushes>\", "
"\"<Gradients>\", \"<Palettes>\", \"<Patterns>\" or "
"\"<Buffers>\".",
gimp_filename_to_utf8 (plug_in_name),
gimp_filename_to_utf8 (plug_in_prog),
procedure_name,
menu_path);
goto failure;
}
p = strchr (menu_path, '>') + 1;
if (*p != '/' && *p != '\0')
{
g_set_error (error, 0, 0,
"Plug-In \"%s\"\n(%s)\n"
"attempted to install procedure \"%s\"\n"
"in the invalid menu location \"%s\".\n"
"The menu path must look like either \"<Prefix>\" "
"or \"<Prefix>/path/to/item\".",
gimp_filename_to_utf8 (plug_in_name),
gimp_filename_to_utf8 (plug_in_prog),
procedure_name,
menu_path);
goto failure;
}
g_free (prefix);
return TRUE;
failure:
g_free (prefix);
return FALSE;
}

View file

@ -20,28 +20,18 @@
#define __PLUG_IN_PARAMS_H__
GValueArray * plug_in_params_to_args (GParamSpec **pspecs,
gint n_pspecs,
GPParam *params,
gint n_params,
gboolean return_values,
gboolean full_copy);
GPParam * plug_in_args_to_params (GValueArray *args,
gboolean full_copy);
GValueArray * plug_in_params_to_args (GParamSpec **pspecs,
gint n_pspecs,
GPParam *params,
gint n_params,
gboolean return_values,
gboolean full_copy);
GPParam * plug_in_args_to_params (GValueArray *args,
gboolean full_copy);
void plug_in_params_destroy (GPParam *params,
gint n_params,
gboolean full_destroy);
gboolean plug_in_proc_args_check (const gchar *plug_in_name,
const gchar *plug_in_prog,
const gchar *procedure_name,
const gchar *menu_path,
GParamSpec **args,
guint32 n_args,
GParamSpec **values,
guint32 n_return_vals,
GError **error);
void plug_in_params_destroy (GPParam *params,
gint n_params,
gboolean full_destroy);
#endif /* __PLUG_IN_PARAMS_H__ */

View file

@ -1021,6 +1021,20 @@ plug_in_menu_register (PlugIn *plug_in,
return FALSE;
}
switch (GIMP_PROCEDURE (proc)->proc_type)
{
case GIMP_INTERNAL:
return FALSE;
case GIMP_PLUGIN:
case GIMP_EXTENSION:
if (! plug_in->query && ! plug_in->init)
return FALSE;
case GIMP_TEMPORARY:
break;
}
if (! proc->menu_label)
{
g_message ("Plug-in \"%s\"\n(%s)\n"
@ -1037,15 +1051,7 @@ plug_in_menu_register (PlugIn *plug_in,
return FALSE;
}
if (! plug_in_proc_args_check (plug_in->name,
plug_in->prog,
proc_name,
menu_path,
GIMP_PROCEDURE (proc)->args,
GIMP_PROCEDURE (proc)->num_args,
GIMP_PROCEDURE (proc)->values,
GIMP_PROCEDURE (proc)->num_values,
&error))
if (! gimp_plug_in_procedure_add_menu_path (proc, menu_path, &error))
{
g_message (error->message);
g_clear_error (&error);
@ -1053,22 +1059,6 @@ plug_in_menu_register (PlugIn *plug_in,
return FALSE;
}
switch (GIMP_PROCEDURE (proc)->proc_type)
{
case GIMP_INTERNAL:
return FALSE;
case GIMP_PLUGIN:
case GIMP_EXTENSION:
if (! plug_in->query && ! plug_in->init)
return FALSE;
case GIMP_TEMPORARY:
break;
}
proc->menu_paths = g_list_append (proc->menu_paths, g_strdup (menu_path));
if (GIMP_IS_TEMPORARY_PROCEDURE (proc) && ! plug_in->gimp->no_interface)
{
gimp_menus_create_item (plug_in->gimp, proc, menu_path);