libgimp: add gimp_procedure_find_argument(), aux_argument(), return_value()

This commit is contained in:
Michael Natterer 2019-10-12 12:49:32 +02:00
parent 6adf77e13a
commit c7c0397fbe
3 changed files with 134 additions and 47 deletions

View file

@ -701,6 +701,9 @@ EXPORTS
gimp_procedure_config_set_values gimp_procedure_config_set_values
gimp_procedure_create_config gimp_procedure_create_config
gimp_procedure_extension_ready gimp_procedure_extension_ready
gimp_procedure_find_argument
gimp_procedure_find_aux_argument
gimp_procedure_find_return_value
gimp_procedure_get_arguments gimp_procedure_get_arguments
gimp_procedure_get_authors gimp_procedure_get_authors
gimp_procedure_get_aux_arguments gimp_procedure_get_aux_arguments

View file

@ -1147,14 +1147,11 @@ void
gimp_procedure_add_argument (GimpProcedure *procedure, gimp_procedure_add_argument (GimpProcedure *procedure,
GParamSpec *pspec) GParamSpec *pspec)
{ {
gint i;
g_return_if_fail (GIMP_IS_PROCEDURE (procedure)); g_return_if_fail (GIMP_IS_PROCEDURE (procedure));
g_return_if_fail (G_IS_PARAM_SPEC (pspec)); g_return_if_fail (G_IS_PARAM_SPEC (pspec));
g_return_if_fail (gimp_is_canonical_identifier (pspec->name)); g_return_if_fail (gimp_is_canonical_identifier (pspec->name));
for (i = 0; i < procedure->priv->n_args; i++) if (gimp_procedure_find_argument (procedure, pspec->name))
if (! strcmp (pspec->name, procedure->priv->args[i]->name))
{ {
g_warning ("Argument with name '%s' already exists on procedure '%s'", g_warning ("Argument with name '%s' already exists on procedure '%s'",
pspec->name, pspec->name,
@ -1162,10 +1159,10 @@ gimp_procedure_add_argument (GimpProcedure *procedure,
return; return;
} }
for (i = 0; i < procedure->priv->n_aux_args; i++) if (gimp_procedure_find_aux_argument (procedure, pspec->name))
if (! strcmp (pspec->name, procedure->priv->aux_args[i]->name))
{ {
g_warning ("Argument with name '%s' already exists on procedure '%s'", g_warning ("Auxiliary argument with name '%s' already exists "
"on procedure '%s'",
pspec->name, pspec->name,
gimp_procedure_get_name (procedure)); gimp_procedure_get_name (procedure));
return; return;
@ -1232,14 +1229,11 @@ void
gimp_procedure_add_aux_argument (GimpProcedure *procedure, gimp_procedure_add_aux_argument (GimpProcedure *procedure,
GParamSpec *pspec) GParamSpec *pspec)
{ {
gint i;
g_return_if_fail (GIMP_IS_PROCEDURE (procedure)); g_return_if_fail (GIMP_IS_PROCEDURE (procedure));
g_return_if_fail (G_IS_PARAM_SPEC (pspec)); g_return_if_fail (G_IS_PARAM_SPEC (pspec));
g_return_if_fail (gimp_is_canonical_identifier (pspec->name)); g_return_if_fail (gimp_is_canonical_identifier (pspec->name));
for (i = 0; i < procedure->priv->n_args; i++) if (gimp_procedure_find_argument (procedure, pspec->name))
if (! strcmp (pspec->name, procedure->priv->args[i]->name))
{ {
g_warning ("Argument with name '%s' already exists on procedure '%s'", g_warning ("Argument with name '%s' already exists on procedure '%s'",
pspec->name, pspec->name,
@ -1247,10 +1241,10 @@ gimp_procedure_add_aux_argument (GimpProcedure *procedure,
return; return;
} }
for (i = 0; i < procedure->priv->n_aux_args; i++) if (gimp_procedure_find_aux_argument (procedure, pspec->name))
if (! strcmp (pspec->name, procedure->priv->aux_args[i]->name))
{ {
g_warning ("Argument with name '%s' already exists on procedure '%s'", g_warning ("Auxiliary argument with name '%s' already exists "
"on procedure '%s'",
pspec->name, pspec->name,
gimp_procedure_get_name (procedure)); gimp_procedure_get_name (procedure));
return; return;
@ -1272,7 +1266,7 @@ gimp_procedure_add_aux_argument (GimpProcedure *procedure,
* @config: a #GObject. * @config: a #GObject.
* @prop_name: property name in @config. * @prop_name: property name in @config.
* *
* Add a new auxiliaty argument to @procedure according to the * Add a new auxiliary argument to @procedure according to the
* specifications of the property @prop_name registered on @config. * specifications of the property @prop_name registered on @config.
* *
* See gimp_procedure_add_aux_argument() for details. * See gimp_procedure_add_aux_argument() for details.
@ -1315,14 +1309,11 @@ void
gimp_procedure_add_return_value (GimpProcedure *procedure, gimp_procedure_add_return_value (GimpProcedure *procedure,
GParamSpec *pspec) GParamSpec *pspec)
{ {
gint i;
g_return_if_fail (GIMP_IS_PROCEDURE (procedure)); g_return_if_fail (GIMP_IS_PROCEDURE (procedure));
g_return_if_fail (G_IS_PARAM_SPEC (pspec)); g_return_if_fail (G_IS_PARAM_SPEC (pspec));
g_return_if_fail (gimp_is_canonical_identifier (pspec->name)); g_return_if_fail (gimp_is_canonical_identifier (pspec->name));
for (i = 0; i < procedure->priv->n_values; i++) if (gimp_procedure_find_return_value (procedure, pspec->name))
if (! strcmp (pspec->name, procedure->priv->values[i]->name))
{ {
g_warning ("Return value with name '%s' already exists on procedure '%s'", g_warning ("Return value with name '%s' already exists on procedure '%s'",
pspec->name, pspec->name,
@ -1371,6 +1362,92 @@ gimp_procedure_add_return_value_from_property (GimpProcedure *procedure,
gimp_procedure_add_return_value (procedure, pspec); gimp_procedure_add_return_value (procedure, pspec);
} }
/**
* gimp_procedure_find_argument:
* @procedure: A #GimpProcedure
* @name: An argument name
*
* Searches the @procedure's arguments for a #GParamSpec called @name.
*
* Returns: (transfer none): The @procedure's argument with @name if it
* exists, or %NULL otherwise.
*
* Since: 3.0
**/
GParamSpec *
gimp_procedure_find_argument (GimpProcedure *procedure,
const gchar *name)
{
gint i;
g_return_val_if_fail (GIMP_IS_PROCEDURE (procedure), NULL);
g_return_val_if_fail (name != NULL, NULL);
for (i = 0; i < procedure->priv->n_args; i++)
if (! strcmp (name, procedure->priv->args[i]->name))
return procedure->priv->args[i];
return NULL;
}
/**
* gimp_procedure_find_aux_argument:
* @procedure: A #GimpProcedure
* @name: An auxiliary argument name
*
* Searches the @procedure's auxiliary arguments for a #GParamSpec
* called @name.
*
* Returns: (transfer none): The @procedure's auxiliary argument with
* @name if it exists, or %NULL otherwise.
*
* Since: 3.0
**/
GParamSpec *
gimp_procedure_find_aux_argument (GimpProcedure *procedure,
const gchar *name)
{
gint i;
g_return_val_if_fail (GIMP_IS_PROCEDURE (procedure), NULL);
g_return_val_if_fail (name != NULL, NULL);
for (i = 0; i < procedure->priv->n_aux_args; i++)
if (! strcmp (name, procedure->priv->aux_args[i]->name))
return procedure->priv->aux_args[i];
return NULL;
}
/**
* gimp_procedure_find_return_value:
* @procedure: A #GimpProcedure
* @name: A return value name
*
* Searches the @procedure's return values for a #GParamSpec called
* @name.
*
* Returns: (transfer none): The @procedure's return values with @name
* if it exists, or %NULL otherwise.
*
* Since: 3.0
**/
GParamSpec *
gimp_procedure_find_return_value (GimpProcedure *procedure,
const gchar *name)
{
gint i;
g_return_val_if_fail (GIMP_IS_PROCEDURE (procedure), NULL);
g_return_val_if_fail (name != NULL, NULL);
for (i = 0; i < procedure->priv->n_values; i++)
if (! strcmp (name, procedure->priv->values[i]->name))
return procedure->priv->values[i];
return NULL;
}
/** /**
* gimp_procedure_get_arguments: * gimp_procedure_get_arguments:
* @procedure: A #GimpProcedure. * @procedure: A #GimpProcedure.

View file

@ -180,6 +180,13 @@ void gimp_procedure_add_return_value_from_property
GObject *config, GObject *config,
const gchar *prop_name); const gchar *prop_name);
GParamSpec * gimp_procedure_find_argument (GimpProcedure *procedure,
const gchar *name);
GParamSpec * gimp_procedure_find_aux_argument (GimpProcedure *procedure,
const gchar *name);
GParamSpec * gimp_procedure_find_return_value (GimpProcedure *procedure,
const gchar *name);
GParamSpec ** gimp_procedure_get_arguments (GimpProcedure *procedure, GParamSpec ** gimp_procedure_get_arguments (GimpProcedure *procedure,
gint *n_arguments); gint *n_arguments);
GParamSpec ** gimp_procedure_get_aux_arguments (GimpProcedure *procedure, GParamSpec ** gimp_procedure_get_aux_arguments (GimpProcedure *procedure,