libgimp: allow to call gimp_procedure_add_menu_path() on installed procs

Adding menu paths must be possible even after the procedure has been
installed, script-fu registers all menu paths afer installing its
procedures so they are properly sorted.
This commit is contained in:
Michael Natterer 2019-08-12 19:06:13 +02:00
parent 9582cf7717
commit b33c3086a9
1 changed files with 14 additions and 0 deletions

View File

@ -80,6 +80,8 @@ struct _GimpProcedurePrivate
GimpRunFunc run_func; GimpRunFunc run_func;
gpointer run_data; gpointer run_data;
GDestroyNotify run_data_destroy; GDestroyNotify run_data_destroy;
gboolean installed;
}; };
@ -295,6 +297,8 @@ gimp_procedure_real_install (GimpProcedure *procedure)
gsize icon_data_length = 0; gsize icon_data_length = 0;
gint i; gint i;
g_return_if_fail (procedure->priv->installed == FALSE);
args = gimp_procedure_get_arguments (procedure, &n_args); args = gimp_procedure_get_arguments (procedure, &n_args);
return_vals = gimp_procedure_get_return_values (procedure, &n_return_vals); return_vals = gimp_procedure_get_return_values (procedure, &n_return_vals);
@ -392,6 +396,8 @@ gimp_procedure_real_install (GimpProcedure *procedure)
_gimp_plugin_menu_register (gimp_procedure_get_name (procedure), _gimp_plugin_menu_register (gimp_procedure_get_name (procedure),
list->data); list->data);
} }
procedure->priv->installed = TRUE;
} }
static void static void
@ -400,6 +406,8 @@ gimp_procedure_real_uninstall (GimpProcedure *procedure)
GimpPlugIn *plug_in; GimpPlugIn *plug_in;
GPProcUninstall proc_uninstall; GPProcUninstall proc_uninstall;
g_return_if_fail (procedure->priv->installed == TRUE);
proc_uninstall.name = (gchar *) gimp_procedure_get_name (procedure); proc_uninstall.name = (gchar *) gimp_procedure_get_name (procedure);
plug_in = gimp_procedure_get_plug_in (procedure); plug_in = gimp_procedure_get_plug_in (procedure);
@ -407,6 +415,8 @@ gimp_procedure_real_uninstall (GimpProcedure *procedure)
if (! gp_proc_uninstall_write (_gimp_plug_in_get_write_channel (plug_in), if (! gp_proc_uninstall_write (_gimp_plug_in_get_write_channel (plug_in),
&proc_uninstall, plug_in)) &proc_uninstall, plug_in))
gimp_quit (); gimp_quit ();
procedure->priv->installed = FALSE;
} }
static GimpValueArray * static GimpValueArray *
@ -660,6 +670,10 @@ gimp_procedure_add_menu_path (GimpProcedure *procedure,
procedure->priv->menu_paths = g_list_append (procedure->priv->menu_paths, procedure->priv->menu_paths = g_list_append (procedure->priv->menu_paths,
g_strdup (menu_path)); g_strdup (menu_path));
if (procedure->priv->installed)
_gimp_plugin_menu_register (gimp_procedure_get_name (procedure),
menu_path);
} }
/** /**