[gimp] Add gimp_pdb_item_is_writable() which sets an error if the item is locked



commit 774850c46f833b357c99b645d69afdeb01ed1f8d
Author: Michael Natterer <mitch gimp org>
Date:   Thu Aug 20 18:50:55 2009 +0200

    Add gimp_pdb_item_is_writable() which sets an error if the item is locked

 app/pdb/gimppdb-utils.c |   20 ++++++++++++++++++++
 app/pdb/gimppdb-utils.h |    4 ++++
 2 files changed, 24 insertions(+), 0 deletions(-)
---
diff --git a/app/pdb/gimppdb-utils.c b/app/pdb/gimppdb-utils.c
index 4fd5ff0..a5bfe89 100644
--- a/app/pdb/gimppdb-utils.c
+++ b/app/pdb/gimppdb-utils.c
@@ -352,6 +352,26 @@ gimp_pdb_item_is_floating (GimpItem  *item,
 }
 
 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 8aad813..f7d401f 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);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]