diff --git a/app/pdb/gimppdb-utils.c b/app/pdb/gimppdb-utils.c index 4fd5ff0b2b..a5bfe896d6 100644 --- a/app/pdb/gimppdb-utils.c +++ b/app/pdb/gimppdb-utils.c @@ -351,6 +351,26 @@ gimp_pdb_item_is_floating (GimpItem *item, return TRUE; } +gboolean +gimp_pdb_item_is_writable (GimpItem *item, + GError **error) +{ + g_return_val_if_fail (GIMP_IS_ITEM (item), FALSE); + g_return_val_if_fail (error == NULL || *error == NULL, FALSE); + + if (gimp_item_get_lock_content (item)) + { + g_set_error (error, GIMP_PDB_ERROR, GIMP_PDB_INVALID_ARGUMENT, + _("Item '%s' (%d) cannot be modified because its " + "contents are locked"), + gimp_object_get_name (GIMP_OBJECT (item)), + gimp_item_get_ID (item)); + return FALSE; + } + + return TRUE; +} + gboolean gimp_pdb_layer_is_text_layer (GimpLayer *layer, GError **error) diff --git a/app/pdb/gimppdb-utils.h b/app/pdb/gimppdb-utils.h index 8aad813f97..f7d401f6ba 100644 --- a/app/pdb/gimppdb-utils.h +++ b/app/pdb/gimppdb-utils.h @@ -53,8 +53,12 @@ gboolean gimp_pdb_item_is_attached (GimpItem *item, gboolean gimp_pdb_item_is_floating (GimpItem *item, GimpImage *dest_image, GError **error); +gboolean gimp_pdb_item_is_writable (GimpItem *item, + GError **error); + gboolean gimp_pdb_layer_is_text_layer (GimpLayer *layer, GError **error); + gboolean gimp_pdb_image_is_base_type (GimpImage *image, GimpImageBaseType type, GError **error);