libgimp: return the added GParamSpec from all GimpProcedure...

...functions which add arguments or return values.

So code can do stuff with them without an additional lookup call.
This commit is contained in:
Michael Natterer
2020-06-12 12:15:22 +02:00
parent bcebc9f6e2
commit b814ea95a1
2 changed files with 61 additions and 41 deletions

View File

@ -1141,22 +1141,24 @@ gimp_procedure_get_date (GimpProcedure *procedure)
* gimp_procedure_add_argument() and * gimp_procedure_add_argument() and
* gimp_procedure_add_argument_from_property(). * gimp_procedure_add_argument_from_property().
* *
* Returns: (transfer none): the same @pspec.
*
* Since: 3.0 * Since: 3.0
**/ **/
void GParamSpec *
gimp_procedure_add_argument (GimpProcedure *procedure, gimp_procedure_add_argument (GimpProcedure *procedure,
GParamSpec *pspec) GParamSpec *pspec)
{ {
g_return_if_fail (GIMP_IS_PROCEDURE (procedure)); g_return_val_if_fail (GIMP_IS_PROCEDURE (procedure), NULL);
g_return_if_fail (G_IS_PARAM_SPEC (pspec)); g_return_val_if_fail (G_IS_PARAM_SPEC (pspec), NULL);
g_return_if_fail (gimp_is_canonical_identifier (pspec->name)); g_return_val_if_fail (gimp_is_canonical_identifier (pspec->name), NULL);
if (gimp_procedure_find_argument (procedure, pspec->name)) if (gimp_procedure_find_argument (procedure, pspec->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,
gimp_procedure_get_name (procedure)); gimp_procedure_get_name (procedure));
return; return pspec;
} }
if (gimp_procedure_find_aux_argument (procedure, pspec->name)) if (gimp_procedure_find_aux_argument (procedure, pspec->name))
@ -1165,7 +1167,7 @@ gimp_procedure_add_argument (GimpProcedure *procedure,
"on procedure '%s'", "on procedure '%s'",
pspec->name, pspec->name,
gimp_procedure_get_name (procedure)); gimp_procedure_get_name (procedure));
return; return pspec;
} }
procedure->priv->args = g_renew (GParamSpec *, procedure->priv->args, procedure->priv->args = g_renew (GParamSpec *, procedure->priv->args,
@ -1176,6 +1178,8 @@ gimp_procedure_add_argument (GimpProcedure *procedure,
g_param_spec_ref_sink (pspec); g_param_spec_ref_sink (pspec);
procedure->priv->n_args++; procedure->priv->n_args++;
return pspec;
} }
/** /**
@ -1189,24 +1193,26 @@ gimp_procedure_add_argument (GimpProcedure *procedure,
* *
* See gimp_procedure_add_argument() for details. * See gimp_procedure_add_argument() for details.
* *
* Returns: (transfer none): the added #GParamSpec.
*
* Since: 3.0 * Since: 3.0
*/ */
void GParamSpec *
gimp_procedure_add_argument_from_property (GimpProcedure *procedure, gimp_procedure_add_argument_from_property (GimpProcedure *procedure,
GObject *config, GObject *config,
const gchar *prop_name) const gchar *prop_name)
{ {
GParamSpec *pspec; GParamSpec *pspec;
g_return_if_fail (GIMP_IS_PROCEDURE (procedure)); g_return_val_if_fail (GIMP_IS_PROCEDURE (procedure), NULL);
g_return_if_fail (G_IS_OBJECT (config)); g_return_val_if_fail (G_IS_OBJECT (config), NULL);
g_return_if_fail (prop_name != NULL); g_return_val_if_fail (prop_name != NULL, NULL);
pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (config), prop_name); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (config), prop_name);
g_return_if_fail (pspec != NULL); g_return_val_if_fail (pspec != NULL, NULL);
gimp_procedure_add_argument (procedure, pspec); return gimp_procedure_add_argument (procedure, pspec);
} }
/** /**
@ -1223,22 +1229,24 @@ gimp_procedure_add_argument_from_property (GimpProcedure *procedure,
* can be used to persistently store whatever last used values the * can be used to persistently store whatever last used values the
* @procedure wants to remember across invocations * @procedure wants to remember across invocations
* *
* Returns: (transfer none): the same @pspec.
*
* Since: 3.0 * Since: 3.0
**/ **/
void GParamSpec *
gimp_procedure_add_aux_argument (GimpProcedure *procedure, gimp_procedure_add_aux_argument (GimpProcedure *procedure,
GParamSpec *pspec) GParamSpec *pspec)
{ {
g_return_if_fail (GIMP_IS_PROCEDURE (procedure)); g_return_val_if_fail (GIMP_IS_PROCEDURE (procedure), pspec);
g_return_if_fail (G_IS_PARAM_SPEC (pspec)); g_return_val_if_fail (G_IS_PARAM_SPEC (pspec), pspec);
g_return_if_fail (gimp_is_canonical_identifier (pspec->name)); g_return_val_if_fail (gimp_is_canonical_identifier (pspec->name), pspec);
if (gimp_procedure_find_argument (procedure, pspec->name)) if (gimp_procedure_find_argument (procedure, pspec->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,
gimp_procedure_get_name (procedure)); gimp_procedure_get_name (procedure));
return; return pspec;
} }
if (gimp_procedure_find_aux_argument (procedure, pspec->name)) if (gimp_procedure_find_aux_argument (procedure, pspec->name))
@ -1247,7 +1255,7 @@ gimp_procedure_add_aux_argument (GimpProcedure *procedure,
"on procedure '%s'", "on procedure '%s'",
pspec->name, pspec->name,
gimp_procedure_get_name (procedure)); gimp_procedure_get_name (procedure));
return; return pspec;
} }
procedure->priv->aux_args = g_renew (GParamSpec *, procedure->priv->aux_args, procedure->priv->aux_args = g_renew (GParamSpec *, procedure->priv->aux_args,
@ -1258,6 +1266,8 @@ gimp_procedure_add_aux_argument (GimpProcedure *procedure,
g_param_spec_ref_sink (pspec); g_param_spec_ref_sink (pspec);
procedure->priv->n_aux_args++; procedure->priv->n_aux_args++;
return pspec;
} }
/** /**
@ -1271,24 +1281,26 @@ gimp_procedure_add_aux_argument (GimpProcedure *procedure,
* *
* See gimp_procedure_add_aux_argument() for details. * See gimp_procedure_add_aux_argument() for details.
* *
* Returns: (transfer none): the added #GParamSpec.
*
* Since: 3.0 * Since: 3.0
*/ */
void GParamSpec *
gimp_procedure_add_aux_argument_from_property (GimpProcedure *procedure, gimp_procedure_add_aux_argument_from_property (GimpProcedure *procedure,
GObject *config, GObject *config,
const gchar *prop_name) const gchar *prop_name)
{ {
GParamSpec *pspec; GParamSpec *pspec;
g_return_if_fail (GIMP_IS_PROCEDURE (procedure)); g_return_val_if_fail (GIMP_IS_PROCEDURE (procedure), NULL);
g_return_if_fail (G_IS_OBJECT (config)); g_return_val_if_fail (G_IS_OBJECT (config), NULL);
g_return_if_fail (prop_name != NULL); g_return_val_if_fail (prop_name != NULL, NULL);
pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (config), prop_name); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (config), prop_name);
g_return_if_fail (pspec != NULL); g_return_val_if_fail (pspec != NULL, NULL);
gimp_procedure_add_aux_argument (procedure, pspec); return gimp_procedure_add_aux_argument (procedure, pspec);
} }
/** /**
@ -1303,22 +1315,24 @@ gimp_procedure_add_aux_argument_from_property (GimpProcedure *procedure,
* gimp_procedure_add_return_value() and * gimp_procedure_add_return_value() and
* gimp_procedure_add_return_value_from_property(). * gimp_procedure_add_return_value_from_property().
* *
* Returns: (transfer none): the same @pspec.
*
* Since: 3.0 * Since: 3.0
**/ **/
void GParamSpec *
gimp_procedure_add_return_value (GimpProcedure *procedure, gimp_procedure_add_return_value (GimpProcedure *procedure,
GParamSpec *pspec) GParamSpec *pspec)
{ {
g_return_if_fail (GIMP_IS_PROCEDURE (procedure)); g_return_val_if_fail (GIMP_IS_PROCEDURE (procedure), pspec);
g_return_if_fail (G_IS_PARAM_SPEC (pspec)); g_return_val_if_fail (G_IS_PARAM_SPEC (pspec), pspec);
g_return_if_fail (gimp_is_canonical_identifier (pspec->name)); g_return_val_if_fail (gimp_is_canonical_identifier (pspec->name), pspec);
if (gimp_procedure_find_return_value (procedure, pspec->name)) if (gimp_procedure_find_return_value (procedure, pspec->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,
gimp_procedure_get_name (procedure)); gimp_procedure_get_name (procedure));
return; return pspec;
} }
procedure->priv->values = g_renew (GParamSpec *, procedure->priv->values, procedure->priv->values = g_renew (GParamSpec *, procedure->priv->values,
@ -1329,6 +1343,8 @@ gimp_procedure_add_return_value (GimpProcedure *procedure,
g_param_spec_ref_sink (pspec); g_param_spec_ref_sink (pspec);
procedure->priv->n_values++; procedure->priv->n_values++;
return pspec;
} }
/** /**
@ -1343,23 +1359,27 @@ gimp_procedure_add_return_value (GimpProcedure *procedure,
* The returned values will be ordered according to the call order to * The returned values will be ordered according to the call order to
* gimp_procedure_add_return_value() and * gimp_procedure_add_return_value() and
* gimp_procedure_add_return_value_from_property(). * gimp_procedure_add_return_value_from_property().
*
* Returns: (transfer none): the added #GParamSpec.
*
* Since: 3.0
*/ */
void GParamSpec *
gimp_procedure_add_return_value_from_property (GimpProcedure *procedure, gimp_procedure_add_return_value_from_property (GimpProcedure *procedure,
GObject *config, GObject *config,
const gchar *prop_name) const gchar *prop_name)
{ {
GParamSpec *pspec; GParamSpec *pspec;
g_return_if_fail (GIMP_IS_PROCEDURE (procedure)); g_return_val_if_fail (GIMP_IS_PROCEDURE (procedure), NULL);
g_return_if_fail (G_IS_OBJECT (config)); g_return_val_if_fail (G_IS_OBJECT (config), NULL);
g_return_if_fail (prop_name != NULL); g_return_val_if_fail (prop_name != NULL, NULL);
pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (config), prop_name); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (config), prop_name);
g_return_if_fail (pspec != NULL); g_return_val_if_fail (pspec != NULL, NULL);
gimp_procedure_add_return_value (procedure, pspec); return gimp_procedure_add_return_value (procedure, pspec);
} }
/** /**

View File

@ -164,21 +164,21 @@ const gchar * gimp_procedure_get_authors (GimpProcedure *proced
const gchar * gimp_procedure_get_copyright (GimpProcedure *procedure); const gchar * gimp_procedure_get_copyright (GimpProcedure *procedure);
const gchar * gimp_procedure_get_date (GimpProcedure *procedure); const gchar * gimp_procedure_get_date (GimpProcedure *procedure);
void gimp_procedure_add_argument (GimpProcedure *procedure, GParamSpec * gimp_procedure_add_argument (GimpProcedure *procedure,
GParamSpec *pspec); GParamSpec *pspec);
void gimp_procedure_add_argument_from_property GParamSpec * gimp_procedure_add_argument_from_property
(GimpProcedure *procedure, (GimpProcedure *procedure,
GObject *config, GObject *config,
const gchar *prop_name); const gchar *prop_name);
void gimp_procedure_add_aux_argument (GimpProcedure *procedure, GParamSpec * gimp_procedure_add_aux_argument (GimpProcedure *procedure,
GParamSpec *pspec); GParamSpec *pspec);
void gimp_procedure_add_aux_argument_from_property GParamSpec * gimp_procedure_add_aux_argument_from_property
(GimpProcedure *procedure, (GimpProcedure *procedure,
GObject *config, GObject *config,
const gchar *prop_name); const gchar *prop_name);
void gimp_procedure_add_return_value (GimpProcedure *procedure, GParamSpec * gimp_procedure_add_return_value (GimpProcedure *procedure,
GParamSpec *pspec); GParamSpec *pspec);
void gimp_procedure_add_return_value_from_property GParamSpec * gimp_procedure_add_return_value_from_property
(GimpProcedure *procedure, (GimpProcedure *procedure,
GObject *config, GObject *config,
const gchar *prop_name); const gchar *prop_name);