[gimp] Add gimp_pdb_item_is_not_group()



commit 074257bd37bc776c18b5a0b6ba90539324e785c1
Author: Michael Natterer <mitch gimp org>
Date:   Fri Aug 28 20:15:13 2009 +0200

    Add gimp_pdb_item_is_not_group()
    
    New function returns FALSE and sets an appropriate error if invoked on
    a group item. Use it from gimp_pdb_get_vectors_stroke() because if we
    ever get vectors groups, they will have no strokes.

 app/pdb/gimppdb-utils.c |   23 +++++++++++++++++++++++
 app/pdb/gimppdb-utils.h |    2 ++
 2 files changed, 25 insertions(+), 0 deletions(-)
---
diff --git a/app/pdb/gimppdb-utils.c b/app/pdb/gimppdb-utils.c
index d3f9fb1..4b4a495 100644
--- a/app/pdb/gimppdb-utils.c
+++ b/app/pdb/gimppdb-utils.c
@@ -376,6 +376,26 @@ gimp_pdb_item_is_writable (GimpItem  *item,
 }
 
 gboolean
+gimp_pdb_item_is_not_group (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_viewable_get_children (GIMP_VIEWABLE (item)))
+    {
+      g_set_error (error, GIMP_PDB_ERROR, GIMP_PDB_INVALID_ARGUMENT,
+                   _("Item '%s' (%d) cannot be modified because it "
+                     "is a group item"),
+                   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,
                               gboolean    writable,
                               GError    **error)
@@ -469,6 +489,9 @@ gimp_pdb_get_vectors_stroke (GimpVectors  *vectors,
   g_return_val_if_fail (GIMP_IS_VECTORS (vectors), NULL);
   g_return_val_if_fail (error == NULL || *error == NULL, NULL);
 
+  if (! gimp_pdb_item_is_not_group (GIMP_ITEM (vectors), error))
+    return NULL;
+
   if (! writable || gimp_pdb_item_is_writable (GIMP_ITEM (vectors), error))
     {
       stroke = gimp_vectors_stroke_get_by_ID (vectors, stroke_ID);
diff --git a/app/pdb/gimppdb-utils.h b/app/pdb/gimppdb-utils.h
index cf97b22..6e9a6ca 100644
--- a/app/pdb/gimppdb-utils.h
+++ b/app/pdb/gimppdb-utils.h
@@ -56,6 +56,8 @@ gboolean        gimp_pdb_item_is_floating       (GimpItem           *item,
                                                  GError            **error);
 gboolean        gimp_pdb_item_is_writable       (GimpItem           *item,
                                                  GError            **error);
+gboolean        gimp_pdb_item_is_not_group      (GimpItem           *item,
+                                                 GError            **error);
 
 gboolean        gimp_pdb_layer_is_text_layer    (GimpLayer          *layer,
                                                  gboolean            writable,



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