mirror of https://github.com/GNOME/gimp.git
Make all vectors PDB manipulation undoable
This commit is contained in:
parent
345f88ab04
commit
45aa584b3e
|
@ -26,6 +26,7 @@
|
|||
#include "pdb-types.h"
|
||||
|
||||
#include "core/gimpchannel-select.h"
|
||||
#include "core/gimpimage-undo-push.h"
|
||||
#include "core/gimpimage.h"
|
||||
#include "core/gimplayer.h"
|
||||
#include "core/gimplist.h"
|
||||
|
@ -634,7 +635,14 @@ vectors_remove_stroke_invoker (GimpProcedure *procedure,
|
|||
GimpStroke *stroke = gimp_pdb_get_vectors_stroke (vectors, stroke_id, error);
|
||||
|
||||
if (stroke)
|
||||
gimp_vectors_stroke_remove (vectors, stroke);
|
||||
{
|
||||
if (gimp_item_is_attached (GIMP_ITEM (vectors)))
|
||||
gimp_image_undo_push_vectors_mod (gimp_item_get_image (GIMP_ITEM (vectors)),
|
||||
_("Remove path stroke"),
|
||||
vectors);
|
||||
|
||||
gimp_vectors_stroke_remove (vectors, stroke);
|
||||
}
|
||||
else
|
||||
success = FALSE;
|
||||
}
|
||||
|
@ -663,7 +671,14 @@ vectors_stroke_close_invoker (GimpProcedure *procedure,
|
|||
GimpStroke *stroke = gimp_pdb_get_vectors_stroke (vectors, stroke_id, error);
|
||||
|
||||
if (stroke)
|
||||
gimp_stroke_close (stroke);
|
||||
{
|
||||
if (gimp_item_is_attached (GIMP_ITEM (vectors)))
|
||||
gimp_image_undo_push_vectors_mod (gimp_item_get_image (GIMP_ITEM (vectors)),
|
||||
_("Close path stroke"),
|
||||
vectors);
|
||||
|
||||
gimp_stroke_close (stroke);
|
||||
}
|
||||
else
|
||||
success = FALSE;
|
||||
}
|
||||
|
@ -696,7 +711,14 @@ vectors_stroke_translate_invoker (GimpProcedure *procedure,
|
|||
GimpStroke *stroke = gimp_pdb_get_vectors_stroke (vectors, stroke_id, error);
|
||||
|
||||
if (stroke)
|
||||
gimp_stroke_translate (stroke, off_x, off_y);
|
||||
{
|
||||
if (gimp_item_is_attached (GIMP_ITEM (vectors)))
|
||||
gimp_image_undo_push_vectors_mod (gimp_item_get_image (GIMP_ITEM (vectors)),
|
||||
_("Translate path stroke"),
|
||||
vectors);
|
||||
|
||||
gimp_stroke_translate (stroke, off_x, off_y);
|
||||
}
|
||||
else
|
||||
success = FALSE;
|
||||
}
|
||||
|
@ -729,7 +751,14 @@ vectors_stroke_scale_invoker (GimpProcedure *procedure,
|
|||
GimpStroke *stroke = gimp_pdb_get_vectors_stroke (vectors, stroke_id, error);
|
||||
|
||||
if (stroke)
|
||||
gimp_stroke_scale (stroke, scale_x, scale_y);
|
||||
{
|
||||
if (gimp_item_is_attached (GIMP_ITEM (vectors)))
|
||||
gimp_image_undo_push_vectors_mod (gimp_item_get_image (GIMP_ITEM (vectors)),
|
||||
_("Scale path stroke"),
|
||||
vectors);
|
||||
|
||||
gimp_stroke_scale (stroke, scale_x, scale_y);
|
||||
}
|
||||
else
|
||||
success = FALSE;
|
||||
}
|
||||
|
@ -764,7 +793,14 @@ vectors_stroke_rotate_invoker (GimpProcedure *procedure,
|
|||
GimpStroke *stroke = gimp_pdb_get_vectors_stroke (vectors, stroke_id, error);
|
||||
|
||||
if (stroke)
|
||||
gimp_stroke_rotate (stroke, center_x, center_y, angle);
|
||||
{
|
||||
if (gimp_item_is_attached (GIMP_ITEM (vectors)))
|
||||
gimp_image_undo_push_vectors_mod (gimp_item_get_image (GIMP_ITEM (vectors)),
|
||||
_("Rotate path stroke"),
|
||||
vectors);
|
||||
|
||||
gimp_stroke_rotate (stroke, center_x, center_y, angle);
|
||||
}
|
||||
else
|
||||
success = FALSE;
|
||||
}
|
||||
|
@ -797,7 +833,14 @@ vectors_stroke_flip_invoker (GimpProcedure *procedure,
|
|||
GimpStroke *stroke = gimp_pdb_get_vectors_stroke (vectors, stroke_id, error);
|
||||
|
||||
if (stroke)
|
||||
gimp_stroke_flip (stroke, flip_type, axis);
|
||||
{
|
||||
if (gimp_item_is_attached (GIMP_ITEM (vectors)))
|
||||
gimp_image_undo_push_vectors_mod (gimp_item_get_image (GIMP_ITEM (vectors)),
|
||||
_("Flip path stroke"),
|
||||
vectors);
|
||||
|
||||
gimp_stroke_flip (stroke, flip_type, axis);
|
||||
}
|
||||
else
|
||||
success = FALSE;
|
||||
}
|
||||
|
@ -834,7 +877,14 @@ vectors_stroke_flip_free_invoker (GimpProcedure *procedure,
|
|||
GimpStroke *stroke = gimp_pdb_get_vectors_stroke (vectors, stroke_id, error);
|
||||
|
||||
if (stroke)
|
||||
gimp_stroke_flip_free (stroke, x1, y1, x2, y2);
|
||||
{
|
||||
if (gimp_item_is_attached (GIMP_ITEM (vectors)))
|
||||
gimp_image_undo_push_vectors_mod (gimp_item_get_image (GIMP_ITEM (vectors)),
|
||||
_("Flip path stroke"),
|
||||
vectors);
|
||||
|
||||
gimp_stroke_flip_free (stroke, x1, y1, x2, y2);
|
||||
}
|
||||
else
|
||||
success = FALSE;
|
||||
}
|
||||
|
@ -957,7 +1007,13 @@ vectors_stroke_new_from_points_invoker (GimpProcedure *procedure,
|
|||
stroke = gimp_stroke_new_from_coords (type, coords, num_points/2, closed);
|
||||
if (stroke)
|
||||
{
|
||||
if (gimp_item_is_attached (GIMP_ITEM (vectors)))
|
||||
gimp_image_undo_push_vectors_mod (gimp_item_get_image (GIMP_ITEM (vectors)),
|
||||
_("Add path stroke"),
|
||||
vectors);
|
||||
|
||||
gimp_vectors_stroke_add (vectors, stroke);
|
||||
|
||||
stroke_id = gimp_stroke_get_ID (stroke);
|
||||
|
||||
success = TRUE;
|
||||
|
@ -1069,7 +1125,14 @@ vectors_bezier_stroke_new_moveto_invoker (GimpProcedure *procedure,
|
|||
coord0.y = y0;
|
||||
|
||||
stroke = gimp_bezier_stroke_new_moveto (&coord0);
|
||||
|
||||
if (gimp_item_is_attached (GIMP_ITEM (vectors)))
|
||||
gimp_image_undo_push_vectors_mod (gimp_item_get_image (GIMP_ITEM (vectors)),
|
||||
_("Add path stroke"),
|
||||
vectors);
|
||||
|
||||
gimp_vectors_stroke_add (vectors, stroke);
|
||||
|
||||
stroke_id = gimp_stroke_get_ID (stroke);
|
||||
}
|
||||
|
||||
|
@ -1112,6 +1175,11 @@ vectors_bezier_stroke_lineto_invoker (GimpProcedure *procedure,
|
|||
coord0.x = x0;
|
||||
coord0.y = y0;
|
||||
|
||||
if (gimp_item_is_attached (GIMP_ITEM (vectors)))
|
||||
gimp_image_undo_push_vectors_mod (gimp_item_get_image (GIMP_ITEM (vectors)),
|
||||
_("Extend path stroke"),
|
||||
vectors);
|
||||
|
||||
gimp_bezier_stroke_lineto (stroke, &coord0);
|
||||
}
|
||||
else
|
||||
|
@ -1160,6 +1228,11 @@ vectors_bezier_stroke_conicto_invoker (GimpProcedure *procedure,
|
|||
coord1.x = x1;
|
||||
coord1.y = y1;
|
||||
|
||||
if (gimp_item_is_attached (GIMP_ITEM (vectors)))
|
||||
gimp_image_undo_push_vectors_mod (gimp_item_get_image (GIMP_ITEM (vectors)),
|
||||
_("Extend path stroke"),
|
||||
vectors);
|
||||
|
||||
gimp_bezier_stroke_conicto (stroke, &coord0, &coord1);
|
||||
}
|
||||
else
|
||||
|
@ -1216,6 +1289,11 @@ vectors_bezier_stroke_cubicto_invoker (GimpProcedure *procedure,
|
|||
coord2.x = x2;
|
||||
coord2.y = y2;
|
||||
|
||||
if (gimp_item_is_attached (GIMP_ITEM (vectors)))
|
||||
gimp_image_undo_push_vectors_mod (gimp_item_get_image (GIMP_ITEM (vectors)),
|
||||
_("Extend path stroke"),
|
||||
vectors);
|
||||
|
||||
gimp_bezier_stroke_cubicto (stroke, &coord0, &coord1, &coord2);
|
||||
}
|
||||
else
|
||||
|
@ -1260,7 +1338,14 @@ vectors_bezier_stroke_new_ellipse_invoker (GimpProcedure *procedure,
|
|||
coord0.y = y0;
|
||||
|
||||
stroke = gimp_bezier_stroke_new_ellipse (&coord0, radius_x, radius_y, angle);
|
||||
|
||||
if (gimp_item_is_attached (GIMP_ITEM (vectors)))
|
||||
gimp_image_undo_push_vectors_mod (gimp_item_get_image (GIMP_ITEM (vectors)),
|
||||
_("Add path stroke"),
|
||||
vectors);
|
||||
|
||||
gimp_vectors_stroke_add (vectors, stroke);
|
||||
|
||||
stroke_id = gimp_stroke_get_ID (stroke);
|
||||
}
|
||||
|
||||
|
|
|
@ -574,7 +574,14 @@ HELP
|
|||
GimpStroke *stroke = gimp_pdb_get_vectors_stroke (vectors, stroke_id, error);
|
||||
|
||||
if (stroke)
|
||||
gimp_vectors_stroke_remove (vectors, stroke);
|
||||
{
|
||||
if (gimp_item_is_attached (GIMP_ITEM (vectors)))
|
||||
gimp_image_undo_push_vectors_mod (gimp_item_get_image (GIMP_ITEM (vectors)),
|
||||
_("Remove path stroke"),
|
||||
vectors);
|
||||
|
||||
gimp_vectors_stroke_remove (vectors, stroke);
|
||||
}
|
||||
else
|
||||
success = FALSE;
|
||||
}
|
||||
|
@ -604,7 +611,14 @@ HELP
|
|||
GimpStroke *stroke = gimp_pdb_get_vectors_stroke (vectors, stroke_id, error);
|
||||
|
||||
if (stroke)
|
||||
gimp_stroke_close (stroke);
|
||||
{
|
||||
if (gimp_item_is_attached (GIMP_ITEM (vectors)))
|
||||
gimp_image_undo_push_vectors_mod (gimp_item_get_image (GIMP_ITEM (vectors)),
|
||||
_("Close path stroke"),
|
||||
vectors);
|
||||
|
||||
gimp_stroke_close (stroke);
|
||||
}
|
||||
else
|
||||
success = FALSE;
|
||||
}
|
||||
|
@ -639,7 +653,14 @@ HELP
|
|||
GimpStroke *stroke = gimp_pdb_get_vectors_stroke (vectors, stroke_id, error);
|
||||
|
||||
if (stroke)
|
||||
gimp_stroke_translate (stroke, off_x, off_y);
|
||||
{
|
||||
if (gimp_item_is_attached (GIMP_ITEM (vectors)))
|
||||
gimp_image_undo_push_vectors_mod (gimp_item_get_image (GIMP_ITEM (vectors)),
|
||||
_("Translate path stroke"),
|
||||
vectors);
|
||||
|
||||
gimp_stroke_translate (stroke, off_x, off_y);
|
||||
}
|
||||
else
|
||||
success = FALSE;
|
||||
}
|
||||
|
@ -673,7 +694,14 @@ HELP
|
|||
GimpStroke *stroke = gimp_pdb_get_vectors_stroke (vectors, stroke_id, error);
|
||||
|
||||
if (stroke)
|
||||
gimp_stroke_scale (stroke, scale_x, scale_y);
|
||||
{
|
||||
if (gimp_item_is_attached (GIMP_ITEM (vectors)))
|
||||
gimp_image_undo_push_vectors_mod (gimp_item_get_image (GIMP_ITEM (vectors)),
|
||||
_("Scale path stroke"),
|
||||
vectors);
|
||||
|
||||
gimp_stroke_scale (stroke, scale_x, scale_y);
|
||||
}
|
||||
else
|
||||
success = FALSE;
|
||||
}
|
||||
|
@ -708,7 +736,14 @@ HELP
|
|||
GimpStroke *stroke = gimp_pdb_get_vectors_stroke (vectors, stroke_id, error);
|
||||
|
||||
if (stroke)
|
||||
gimp_stroke_rotate (stroke, center_x, center_y, angle);
|
||||
{
|
||||
if (gimp_item_is_attached (GIMP_ITEM (vectors)))
|
||||
gimp_image_undo_push_vectors_mod (gimp_item_get_image (GIMP_ITEM (vectors)),
|
||||
_("Rotate path stroke"),
|
||||
vectors);
|
||||
|
||||
gimp_stroke_rotate (stroke, center_x, center_y, angle);
|
||||
}
|
||||
else
|
||||
success = FALSE;
|
||||
}
|
||||
|
@ -742,7 +777,14 @@ HELP
|
|||
GimpStroke *stroke = gimp_pdb_get_vectors_stroke (vectors, stroke_id, error);
|
||||
|
||||
if (stroke)
|
||||
gimp_stroke_flip (stroke, flip_type, axis);
|
||||
{
|
||||
if (gimp_item_is_attached (GIMP_ITEM (vectors)))
|
||||
gimp_image_undo_push_vectors_mod (gimp_item_get_image (GIMP_ITEM (vectors)),
|
||||
_("Flip path stroke"),
|
||||
vectors);
|
||||
|
||||
gimp_stroke_flip (stroke, flip_type, axis);
|
||||
}
|
||||
else
|
||||
success = FALSE;
|
||||
}
|
||||
|
@ -781,7 +823,14 @@ HELP
|
|||
GimpStroke *stroke = gimp_pdb_get_vectors_stroke (vectors, stroke_id, error);
|
||||
|
||||
if (stroke)
|
||||
gimp_stroke_flip_free (stroke, x1, y1, x2, y2);
|
||||
{
|
||||
if (gimp_item_is_attached (GIMP_ITEM (vectors)))
|
||||
gimp_image_undo_push_vectors_mod (gimp_item_get_image (GIMP_ITEM (vectors)),
|
||||
_("Flip path stroke"),
|
||||
vectors);
|
||||
|
||||
gimp_stroke_flip_free (stroke, x1, y1, x2, y2);
|
||||
}
|
||||
else
|
||||
success = FALSE;
|
||||
}
|
||||
|
@ -980,7 +1029,13 @@ HELP
|
|||
stroke = gimp_stroke_new_from_coords (type, coords, num_points/2, closed);
|
||||
if (stroke)
|
||||
{
|
||||
if (gimp_item_is_attached (GIMP_ITEM (vectors)))
|
||||
gimp_image_undo_push_vectors_mod (gimp_item_get_image (GIMP_ITEM (vectors)),
|
||||
_("Add path stroke"),
|
||||
vectors);
|
||||
|
||||
gimp_vectors_stroke_add (vectors, stroke);
|
||||
|
||||
stroke_id = gimp_stroke_get_ID (stroke);
|
||||
|
||||
success = TRUE;
|
||||
|
@ -1026,7 +1081,14 @@ HELP
|
|||
coord0.y = y0;
|
||||
|
||||
stroke = gimp_bezier_stroke_new_moveto (&coord0);
|
||||
|
||||
if (gimp_item_is_attached (GIMP_ITEM (vectors)))
|
||||
gimp_image_undo_push_vectors_mod (gimp_item_get_image (GIMP_ITEM (vectors)),
|
||||
_("Add path stroke"),
|
||||
vectors);
|
||||
|
||||
gimp_vectors_stroke_add (vectors, stroke);
|
||||
|
||||
stroke_id = gimp_stroke_get_ID (stroke);
|
||||
}
|
||||
CODE
|
||||
|
@ -1065,6 +1127,11 @@ HELP
|
|||
coord0.x = x0;
|
||||
coord0.y = y0;
|
||||
|
||||
if (gimp_item_is_attached (GIMP_ITEM (vectors)))
|
||||
gimp_image_undo_push_vectors_mod (gimp_item_get_image (GIMP_ITEM (vectors)),
|
||||
_("Extend path stroke"),
|
||||
vectors);
|
||||
|
||||
gimp_bezier_stroke_lineto (stroke, &coord0);
|
||||
}
|
||||
else
|
||||
|
@ -1116,6 +1183,11 @@ HELP
|
|||
coord1.x = x1;
|
||||
coord1.y = y1;
|
||||
|
||||
if (gimp_item_is_attached (GIMP_ITEM (vectors)))
|
||||
gimp_image_undo_push_vectors_mod (gimp_item_get_image (GIMP_ITEM (vectors)),
|
||||
_("Extend path stroke"),
|
||||
vectors);
|
||||
|
||||
gimp_bezier_stroke_conicto (stroke, &coord0, &coord1);
|
||||
}
|
||||
else
|
||||
|
@ -1173,6 +1245,11 @@ HELP
|
|||
coord2.x = x2;
|
||||
coord2.y = y2;
|
||||
|
||||
if (gimp_item_is_attached (GIMP_ITEM (vectors)))
|
||||
gimp_image_undo_push_vectors_mod (gimp_item_get_image (GIMP_ITEM (vectors)),
|
||||
_("Extend path stroke"),
|
||||
vectors);
|
||||
|
||||
gimp_bezier_stroke_cubicto (stroke, &coord0, &coord1, &coord2);
|
||||
}
|
||||
else
|
||||
|
@ -1222,7 +1299,14 @@ HELP
|
|||
coord0.y = y0;
|
||||
|
||||
stroke = gimp_bezier_stroke_new_ellipse (&coord0, radius_x, radius_y, angle);
|
||||
|
||||
if (gimp_item_is_attached (GIMP_ITEM (vectors)))
|
||||
gimp_image_undo_push_vectors_mod (gimp_item_get_image (GIMP_ITEM (vectors)),
|
||||
_("Add path stroke"),
|
||||
vectors);
|
||||
|
||||
gimp_vectors_stroke_add (vectors, stroke);
|
||||
|
||||
stroke_id = gimp_stroke_get_ID (stroke);
|
||||
}
|
||||
CODE
|
||||
|
@ -1476,6 +1560,7 @@ CODE
|
|||
@headers = qw(<string.h>
|
||||
"core/gimplist.h"
|
||||
"core/gimpimage.h"
|
||||
"core/gimpimage-undo-push.h"
|
||||
"core/gimpchannel-select.h"
|
||||
"text/gimptext-vectors.h"
|
||||
"text/gimptextlayer.h"
|
||||
|
|
Loading…
Reference in New Issue