mirror of
https://gitlab.gnome.org/GNOME/gimp.git
synced 2025-07-04 01:43:24 +00:00
pdb: add proper error messages for gimp_image_reorder_item()
This commit is contained in:
parent
b24de26791
commit
ab852d7409
4 changed files with 94 additions and 20 deletions
|
@ -315,7 +315,7 @@ gimp_pdb_item_is_attached (GimpItem *item,
|
||||||
if (! gimp_item_is_attached (item))
|
if (! gimp_item_is_attached (item))
|
||||||
{
|
{
|
||||||
g_set_error (error, GIMP_PDB_ERROR, GIMP_PDB_INVALID_ARGUMENT,
|
g_set_error (error, GIMP_PDB_ERROR, GIMP_PDB_INVALID_ARGUMENT,
|
||||||
_("Item '%s' (%d) can not be used because it has not "
|
_("Item '%s' (%d) cannot be used because it has not "
|
||||||
"been added to an image"),
|
"been added to an image"),
|
||||||
gimp_object_get_name (item),
|
gimp_object_get_name (item),
|
||||||
gimp_item_get_ID (item));
|
gimp_item_get_ID (item));
|
||||||
|
@ -325,7 +325,7 @@ gimp_pdb_item_is_attached (GimpItem *item,
|
||||||
if (image && image != gimp_item_get_image (item))
|
if (image && image != gimp_item_get_image (item))
|
||||||
{
|
{
|
||||||
g_set_error (error, GIMP_PDB_ERROR, GIMP_PDB_INVALID_ARGUMENT,
|
g_set_error (error, GIMP_PDB_ERROR, GIMP_PDB_INVALID_ARGUMENT,
|
||||||
_("Item '%s' (%d) can not be used because it is "
|
_("Item '%s' (%d) cannot be used because it is "
|
||||||
"attached to another image"),
|
"attached to another image"),
|
||||||
gimp_object_get_name (item),
|
gimp_object_get_name (item),
|
||||||
gimp_item_get_ID (item));
|
gimp_item_get_ID (item));
|
||||||
|
@ -354,7 +354,7 @@ gimp_pdb_item_is_in_tree (GimpItem *item,
|
||||||
if (! gimp_item_get_tree (item))
|
if (! gimp_item_get_tree (item))
|
||||||
{
|
{
|
||||||
g_set_error (error, GIMP_PDB_ERROR, GIMP_PDB_INVALID_ARGUMENT,
|
g_set_error (error, GIMP_PDB_ERROR, GIMP_PDB_INVALID_ARGUMENT,
|
||||||
_("Item '%s' (%d) can not be used because it is not "
|
_("Item '%s' (%d) cannot be used because it is not "
|
||||||
"a direct child of an item tree"),
|
"a direct child of an item tree"),
|
||||||
gimp_object_get_name (item),
|
gimp_object_get_name (item),
|
||||||
gimp_item_get_ID (item));
|
gimp_item_get_ID (item));
|
||||||
|
@ -364,6 +364,61 @@ gimp_pdb_item_is_in_tree (GimpItem *item,
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
gimp_pdb_item_is_in_same_tree (GimpItem *item,
|
||||||
|
GimpItem *item2,
|
||||||
|
GimpImage *image,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
g_return_val_if_fail (GIMP_IS_ITEM (item), FALSE);
|
||||||
|
g_return_val_if_fail (GIMP_IS_ITEM (item2), FALSE);
|
||||||
|
g_return_val_if_fail (image == NULL || GIMP_IS_IMAGE (image), FALSE);
|
||||||
|
g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
|
||||||
|
|
||||||
|
if (! gimp_pdb_item_is_in_tree (item, image, FALSE, error) ||
|
||||||
|
! gimp_pdb_item_is_in_tree (item2, image, FALSE, error))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (gimp_item_get_tree (item) != gimp_item_get_tree (item2))
|
||||||
|
{
|
||||||
|
g_set_error (error, GIMP_PDB_ERROR, GIMP_PDB_INVALID_ARGUMENT,
|
||||||
|
_("Items '%s' (%d) and '%s' (%d) cannot be used "
|
||||||
|
"because they are not part of the same item tree"),
|
||||||
|
gimp_object_get_name (item),
|
||||||
|
gimp_item_get_ID (item),
|
||||||
|
gimp_object_get_name (item2),
|
||||||
|
gimp_item_get_ID (item2));
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
gimp_pdb_item_is_not_ancestor (GimpItem *item,
|
||||||
|
GimpItem *not_descendant,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
g_return_val_if_fail (GIMP_IS_ITEM (item), FALSE);
|
||||||
|
g_return_val_if_fail (GIMP_IS_ITEM (not_descendant), FALSE);
|
||||||
|
g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
|
||||||
|
|
||||||
|
if (gimp_viewable_is_ancestor (GIMP_VIEWABLE (item),
|
||||||
|
GIMP_VIEWABLE (not_descendant)))
|
||||||
|
{
|
||||||
|
g_set_error (error, GIMP_PDB_ERROR, GIMP_PDB_INVALID_ARGUMENT,
|
||||||
|
_("Item '%s' (%d) must not be an ancestor of "
|
||||||
|
"'%s' (%d)"),
|
||||||
|
gimp_object_get_name (item),
|
||||||
|
gimp_item_get_ID (item),
|
||||||
|
gimp_object_get_name (not_descendant),
|
||||||
|
gimp_item_get_ID (not_descendant));
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
gimp_pdb_item_is_floating (GimpItem *item,
|
gimp_pdb_item_is_floating (GimpItem *item,
|
||||||
GimpImage *dest_image,
|
GimpImage *dest_image,
|
||||||
|
@ -413,6 +468,26 @@ gimp_pdb_item_is_writable (GimpItem *item,
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
gimp_pdb_item_is_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 used because it is "
|
||||||
|
"not a group item"),
|
||||||
|
gimp_object_get_name (item),
|
||||||
|
gimp_item_get_ID (item));
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
gimp_pdb_item_is_not_group (GimpItem *item,
|
gimp_pdb_item_is_not_group (GimpItem *item,
|
||||||
GError **error)
|
GError **error)
|
||||||
|
@ -444,7 +519,7 @@ gimp_pdb_layer_is_text_layer (GimpLayer *layer,
|
||||||
if (! gimp_drawable_is_text_layer (GIMP_DRAWABLE (layer)))
|
if (! gimp_drawable_is_text_layer (GIMP_DRAWABLE (layer)))
|
||||||
{
|
{
|
||||||
g_set_error (error, GIMP_PDB_ERROR, GIMP_PDB_INVALID_ARGUMENT,
|
g_set_error (error, GIMP_PDB_ERROR, GIMP_PDB_INVALID_ARGUMENT,
|
||||||
_("Layer '%s' (%d) can not be used because it is not "
|
_("Layer '%s' (%d) cannot be used because it is not "
|
||||||
"a text layer"),
|
"a text layer"),
|
||||||
gimp_object_get_name (layer),
|
gimp_object_get_name (layer),
|
||||||
gimp_item_get_ID (GIMP_ITEM (layer)));
|
gimp_item_get_ID (GIMP_ITEM (layer)));
|
||||||
|
|
|
@ -56,11 +56,20 @@ gboolean gimp_pdb_item_is_in_tree (GimpItem *item,
|
||||||
GimpImage *image,
|
GimpImage *image,
|
||||||
gboolean writable,
|
gboolean writable,
|
||||||
GError **error);
|
GError **error);
|
||||||
|
gboolean gimp_pdb_item_is_in_same_tree (GimpItem *item,
|
||||||
|
GimpItem *item2,
|
||||||
|
GimpImage *image,
|
||||||
|
GError **error);
|
||||||
|
gboolean gimp_pdb_item_is_not_ancestor (GimpItem *item,
|
||||||
|
GimpItem *not_descendant,
|
||||||
|
GError **error);
|
||||||
gboolean gimp_pdb_item_is_floating (GimpItem *item,
|
gboolean gimp_pdb_item_is_floating (GimpItem *item,
|
||||||
GimpImage *dest_image,
|
GimpImage *dest_image,
|
||||||
GError **error);
|
GError **error);
|
||||||
gboolean gimp_pdb_item_is_writable (GimpItem *item,
|
gboolean gimp_pdb_item_is_writable (GimpItem *item,
|
||||||
GError **error);
|
GError **error);
|
||||||
|
gboolean gimp_pdb_item_is_group (GimpItem *item,
|
||||||
|
GError **error);
|
||||||
gboolean gimp_pdb_item_is_not_group (GimpItem *item,
|
gboolean gimp_pdb_item_is_not_group (GimpItem *item,
|
||||||
GError **error);
|
GError **error);
|
||||||
|
|
||||||
|
|
|
@ -1246,14 +1246,9 @@ image_reorder_item_invoker (GimpProcedure *procedure,
|
||||||
{
|
{
|
||||||
if (gimp_pdb_item_is_in_tree (item, image, FALSE, error) &&
|
if (gimp_pdb_item_is_in_tree (item, image, FALSE, error) &&
|
||||||
(parent == NULL ||
|
(parent == NULL ||
|
||||||
gimp_pdb_item_is_in_tree (parent, image, FALSE, error)) &&
|
(gimp_pdb_item_is_in_same_tree (item, parent, image, error) &&
|
||||||
(parent == NULL ||
|
gimp_pdb_item_is_group (parent, error) &&
|
||||||
gimp_item_get_tree (item) == gimp_item_get_tree (parent)) &&
|
gimp_pdb_item_is_not_ancestor (item, parent, error))))
|
||||||
(parent == NULL ||
|
|
||||||
gimp_viewable_get_children (GIMP_VIEWABLE (parent))) &&
|
|
||||||
(parent == NULL ||
|
|
||||||
! gimp_viewable_is_ancestor (GIMP_VIEWABLE (item),
|
|
||||||
GIMP_VIEWABLE (parent))))
|
|
||||||
{
|
{
|
||||||
success = gimp_image_reorder_item (image, item, parent, position,
|
success = gimp_image_reorder_item (image, item, parent, position,
|
||||||
TRUE, NULL);
|
TRUE, NULL);
|
||||||
|
|
|
@ -903,14 +903,9 @@ HELP
|
||||||
{
|
{
|
||||||
if (gimp_pdb_item_is_in_tree (item, image, FALSE, error) &&
|
if (gimp_pdb_item_is_in_tree (item, image, FALSE, error) &&
|
||||||
(parent == NULL ||
|
(parent == NULL ||
|
||||||
gimp_pdb_item_is_in_tree (parent, image, FALSE, error)) &&
|
(gimp_pdb_item_is_in_same_tree (item, parent, image, error) &&
|
||||||
(parent == NULL ||
|
gimp_pdb_item_is_group (parent, error) &&
|
||||||
gimp_item_get_tree (item) == gimp_item_get_tree (parent)) &&
|
gimp_pdb_item_is_not_ancestor (item, parent, error))))
|
||||||
(parent == NULL ||
|
|
||||||
gimp_viewable_get_children (GIMP_VIEWABLE (parent))) &&
|
|
||||||
(parent == NULL ||
|
|
||||||
! gimp_viewable_is_ancestor (GIMP_VIEWABLE (item),
|
|
||||||
GIMP_VIEWABLE (parent))))
|
|
||||||
{
|
{
|
||||||
success = gimp_image_reorder_item (image, item, parent, position,
|
success = gimp_image_reorder_item (image, item, parent, position,
|
||||||
TRUE, NULL);
|
TRUE, NULL);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue