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>
|
2006-04-09 Michael Natterer <mitch@gimp.org>
|
||||||
|
|
||||||
* app/plug-in/Makefile.am
|
* app/plug-in/Makefile.am
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
#include "pdb-types.h"
|
#include "pdb-types.h"
|
||||||
|
|
||||||
#include "core/gimp.h"
|
#include "core/gimp.h"
|
||||||
|
#include "core/gimpparamspecs.h"
|
||||||
|
|
||||||
#include "plug-in/plug-in.h"
|
#include "plug-in/plug-in.h"
|
||||||
#include "plug-in/plug-ins.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);
|
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 *
|
gchar *
|
||||||
gimp_plug_in_procedure_get_label (const GimpPlugInProcedure *proc,
|
gimp_plug_in_procedure_get_label (const GimpPlugInProcedure *proc,
|
||||||
const gchar *locale_domain)
|
const gchar *locale_domain)
|
||||||
|
|
|
@ -83,6 +83,9 @@ GimpPlugInProcedure * gimp_plug_in_procedure_find (GSList
|
||||||
const gchar *proc_name);
|
const gchar *proc_name);
|
||||||
|
|
||||||
const gchar * gimp_plug_in_procedure_get_progname (const GimpPlugInProcedure *proc);
|
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,
|
gchar * gimp_plug_in_procedure_get_label (const GimpPlugInProcedure *proc,
|
||||||
const gchar *locale_domain);
|
const gchar *locale_domain);
|
||||||
|
|
||||||
|
|
|
@ -637,25 +637,13 @@ plug_in_handle_proc_install (PlugIn *plug_in,
|
||||||
{
|
{
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
|
|
||||||
if (! plug_in_proc_args_check (plug_in->name,
|
if (! gimp_plug_in_procedure_add_menu_path (proc,
|
||||||
plug_in->prog,
|
proc_install->menu_path,
|
||||||
canonical,
|
&error))
|
||||||
proc_install->menu_path,
|
|
||||||
procedure->args,
|
|
||||||
procedure->num_args,
|
|
||||||
procedure->values,
|
|
||||||
procedure->num_values,
|
|
||||||
&error))
|
|
||||||
{
|
{
|
||||||
g_message (error->message);
|
g_message (error->message);
|
||||||
g_clear_error (&error);
|
g_clear_error (&error);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
proc->menu_paths =
|
|
||||||
g_list_append (proc->menu_paths,
|
|
||||||
g_strdup (proc_install->menu_path));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -1021,6 +1021,20 @@ plug_in_menu_register (PlugIn *plug_in,
|
||||||
return FALSE;
|
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)
|
if (! proc->menu_label)
|
||||||
{
|
{
|
||||||
g_message ("Plug-in \"%s\"\n(%s)\n"
|
g_message ("Plug-in \"%s\"\n(%s)\n"
|
||||||
|
@ -1037,15 +1051,7 @@ plug_in_menu_register (PlugIn *plug_in,
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! plug_in_proc_args_check (plug_in->name,
|
if (! gimp_plug_in_procedure_add_menu_path (proc, menu_path, &error))
|
||||||
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))
|
|
||||||
{
|
{
|
||||||
g_message (error->message);
|
g_message (error->message);
|
||||||
g_clear_error (&error);
|
g_clear_error (&error);
|
||||||
|
@ -1053,22 +1059,6 @@ plug_in_menu_register (PlugIn *plug_in,
|
||||||
return FALSE;
|
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)
|
if (GIMP_IS_TEMPORARY_PROCEDURE (proc) && ! plug_in->gimp->no_interface)
|
||||||
{
|
{
|
||||||
gimp_menus_create_item (plug_in->gimp, proc, menu_path);
|
gimp_menus_create_item (plug_in->gimp, proc, menu_path);
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
#include "pdb-types.h"
|
#include "pdb-types.h"
|
||||||
|
|
||||||
#include "core/gimp.h"
|
#include "core/gimp.h"
|
||||||
|
#include "core/gimpparamspecs.h"
|
||||||
|
|
||||||
#include "plug-in/plug-in.h"
|
#include "plug-in/plug-in.h"
|
||||||
#include "plug-in/plug-ins.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);
|
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 *
|
gchar *
|
||||||
gimp_plug_in_procedure_get_label (const GimpPlugInProcedure *proc,
|
gimp_plug_in_procedure_get_label (const GimpPlugInProcedure *proc,
|
||||||
const gchar *locale_domain)
|
const gchar *locale_domain)
|
||||||
|
|
|
@ -83,6 +83,9 @@ GimpPlugInProcedure * gimp_plug_in_procedure_find (GSList
|
||||||
const gchar *proc_name);
|
const gchar *proc_name);
|
||||||
|
|
||||||
const gchar * gimp_plug_in_procedure_get_progname (const GimpPlugInProcedure *proc);
|
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,
|
gchar * gimp_plug_in_procedure_get_label (const GimpPlugInProcedure *proc,
|
||||||
const gchar *locale_domain);
|
const gchar *locale_domain);
|
||||||
|
|
||||||
|
|
|
@ -637,25 +637,13 @@ plug_in_handle_proc_install (PlugIn *plug_in,
|
||||||
{
|
{
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
|
|
||||||
if (! plug_in_proc_args_check (plug_in->name,
|
if (! gimp_plug_in_procedure_add_menu_path (proc,
|
||||||
plug_in->prog,
|
proc_install->menu_path,
|
||||||
canonical,
|
&error))
|
||||||
proc_install->menu_path,
|
|
||||||
procedure->args,
|
|
||||||
procedure->num_args,
|
|
||||||
procedure->values,
|
|
||||||
procedure->num_values,
|
|
||||||
&error))
|
|
||||||
{
|
{
|
||||||
g_message (error->message);
|
g_message (error->message);
|
||||||
g_clear_error (&error);
|
g_clear_error (&error);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
proc->menu_paths =
|
|
||||||
g_list_append (proc->menu_paths,
|
|
||||||
g_strdup (proc_install->menu_path));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -18,8 +18,6 @@
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#include <glib-object.h>
|
#include <glib-object.h>
|
||||||
|
|
||||||
#include "libgimpbase/gimpbase.h"
|
#include "libgimpbase/gimpbase.h"
|
||||||
|
@ -495,170 +493,3 @@ plug_in_params_destroy (GPParam *params,
|
||||||
|
|
||||||
g_free (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__
|
#define __PLUG_IN_PARAMS_H__
|
||||||
|
|
||||||
|
|
||||||
GValueArray * plug_in_params_to_args (GParamSpec **pspecs,
|
GValueArray * plug_in_params_to_args (GParamSpec **pspecs,
|
||||||
gint n_pspecs,
|
gint n_pspecs,
|
||||||
GPParam *params,
|
GPParam *params,
|
||||||
gint n_params,
|
gint n_params,
|
||||||
gboolean return_values,
|
gboolean return_values,
|
||||||
gboolean full_copy);
|
gboolean full_copy);
|
||||||
GPParam * plug_in_args_to_params (GValueArray *args,
|
GPParam * plug_in_args_to_params (GValueArray *args,
|
||||||
gboolean full_copy);
|
gboolean full_copy);
|
||||||
|
|
||||||
void plug_in_params_destroy (GPParam *params,
|
void plug_in_params_destroy (GPParam *params,
|
||||||
gint n_params,
|
gint n_params,
|
||||||
gboolean full_destroy);
|
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);
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* __PLUG_IN_PARAMS_H__ */
|
#endif /* __PLUG_IN_PARAMS_H__ */
|
||||||
|
|
|
@ -1021,6 +1021,20 @@ plug_in_menu_register (PlugIn *plug_in,
|
||||||
return FALSE;
|
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)
|
if (! proc->menu_label)
|
||||||
{
|
{
|
||||||
g_message ("Plug-in \"%s\"\n(%s)\n"
|
g_message ("Plug-in \"%s\"\n(%s)\n"
|
||||||
|
@ -1037,15 +1051,7 @@ plug_in_menu_register (PlugIn *plug_in,
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! plug_in_proc_args_check (plug_in->name,
|
if (! gimp_plug_in_procedure_add_menu_path (proc, menu_path, &error))
|
||||||
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))
|
|
||||||
{
|
{
|
||||||
g_message (error->message);
|
g_message (error->message);
|
||||||
g_clear_error (&error);
|
g_clear_error (&error);
|
||||||
|
@ -1053,22 +1059,6 @@ plug_in_menu_register (PlugIn *plug_in,
|
||||||
return FALSE;
|
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)
|
if (GIMP_IS_TEMPORARY_PROCEDURE (proc) && ! plug_in->gimp->no_interface)
|
||||||
{
|
{
|
||||||
gimp_menus_create_item (plug_in->gimp, proc, menu_path);
|
gimp_menus_create_item (plug_in->gimp, proc, menu_path);
|
||||||
|
|
Loading…
Reference in a new issue