Issue #6767: sensitivity API NO_IMAGE not working in Python.
When GIMP_PROCEDURE_SENSITIVE_NO_IMAGE is set on a GimpImageProcedure, add GIMP_PARAM_NO_VALIDATE to the param spec flags, allowing to pass a NULL image.
This commit is contained in:
parent
8d8c77730c
commit
3ce0e66321
3 changed files with 49 additions and 15 deletions
|
|
@ -43,6 +43,9 @@ static GimpProcedureConfig *
|
|||
gimp_image_procedure_create_config (GimpProcedure *procedure,
|
||||
GParamSpec **args,
|
||||
gint n_args);
|
||||
static gboolean
|
||||
gimp_image_procedure_set_sensitivity (GimpProcedure *procedure,
|
||||
gint sensitivity_mask);
|
||||
|
||||
|
||||
G_DEFINE_TYPE_WITH_PRIVATE (GimpImageProcedure, gimp_image_procedure,
|
||||
|
|
@ -57,11 +60,12 @@ gimp_image_procedure_class_init (GimpImageProcedureClass *klass)
|
|||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
GimpProcedureClass *procedure_class = GIMP_PROCEDURE_CLASS (klass);
|
||||
|
||||
object_class->constructed = gimp_image_procedure_constructed;
|
||||
object_class->finalize = gimp_image_procedure_finalize;
|
||||
object_class->constructed = gimp_image_procedure_constructed;
|
||||
object_class->finalize = gimp_image_procedure_finalize;
|
||||
|
||||
procedure_class->run = gimp_image_procedure_run;
|
||||
procedure_class->create_config = gimp_image_procedure_create_config;
|
||||
procedure_class->run = gimp_image_procedure_run;
|
||||
procedure_class->create_config = gimp_image_procedure_create_config;
|
||||
procedure_class->set_sensitivity = gimp_image_procedure_set_sensitivity;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
@ -175,6 +179,24 @@ gimp_image_procedure_create_config (GimpProcedure *procedure,
|
|||
n_args);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gimp_image_procedure_set_sensitivity (GimpProcedure *procedure,
|
||||
gint sensitivity_mask)
|
||||
{
|
||||
GParamSpec *pspec;
|
||||
|
||||
g_return_val_if_fail (GIMP_IS_IMAGE_PROCEDURE (procedure), FALSE);
|
||||
|
||||
pspec = gimp_procedure_find_argument (procedure, "image");
|
||||
g_return_val_if_fail (pspec, FALSE);
|
||||
|
||||
if (sensitivity_mask & GIMP_PROCEDURE_SENSITIVE_NO_IMAGE)
|
||||
pspec->flags |= GIMP_PARAM_NO_VALIDATE;
|
||||
else
|
||||
pspec->flags &= ~GIMP_PARAM_NO_VALIDATE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* public functions */
|
||||
|
||||
|
|
|
|||
|
|
@ -733,13 +733,22 @@ void
|
|||
gimp_procedure_set_sensitivity_mask (GimpProcedure *procedure,
|
||||
gint sensitivity_mask)
|
||||
{
|
||||
gboolean success = TRUE;
|
||||
|
||||
g_return_if_fail (GIMP_IS_PROCEDURE (procedure));
|
||||
|
||||
procedure->priv->sensitivity_mask = sensitivity_mask;
|
||||
if (GIMP_PROCEDURE_GET_CLASS (procedure)->set_sensitivity)
|
||||
success = GIMP_PROCEDURE_GET_CLASS (procedure)->set_sensitivity (procedure,
|
||||
sensitivity_mask);
|
||||
|
||||
if (procedure->priv->installed)
|
||||
_gimp_pdb_set_proc_sensitivity_mask (gimp_procedure_get_name (procedure),
|
||||
procedure->priv->sensitivity_mask);
|
||||
if (success)
|
||||
{
|
||||
procedure->priv->sensitivity_mask = sensitivity_mask;
|
||||
|
||||
if (procedure->priv->installed)
|
||||
_gimp_pdb_set_proc_sensitivity_mask (gimp_procedure_get_name (procedure),
|
||||
procedure->priv->sensitivity_mask);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -104,15 +104,18 @@ struct _GimpProcedureClass
|
|||
{
|
||||
GObjectClass parent_class;
|
||||
|
||||
void (* install) (GimpProcedure *procedure);
|
||||
void (* uninstall) (GimpProcedure *procedure);
|
||||
void (* install) (GimpProcedure *procedure);
|
||||
void (* uninstall) (GimpProcedure *procedure);
|
||||
|
||||
GimpValueArray * (* run) (GimpProcedure *procedure,
|
||||
const GimpValueArray *args);
|
||||
GimpValueArray * (* run) (GimpProcedure *procedure,
|
||||
const GimpValueArray *args);
|
||||
|
||||
GimpProcedureConfig * (* create_config) (GimpProcedure *procedure,
|
||||
GParamSpec **args,
|
||||
gint n_args);
|
||||
GimpProcedureConfig * (* create_config) (GimpProcedure *procedure,
|
||||
GParamSpec **args,
|
||||
gint n_args);
|
||||
|
||||
gboolean (* set_sensitivity) (GimpProcedure *procedure,
|
||||
gint sensitivity_mask);
|
||||
|
||||
/* Padding for future expansion */
|
||||
/*< private >*/
|
||||
|
|
|
|||
Loading…
Reference in a new issue