mirror of
https://gitlab.gnome.org/GNOME/gimp
synced 2024-10-22 04:22:29 +00:00
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:
parent
5cf5b8ca1c
commit
73a9abd337
15
ChangeLog
15
ChangeLog
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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__ */
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue