2006-12-10 05:33:38 +08:00
|
|
|
/* GIMP - The GNU Image Manipulation Program
|
1997-11-25 06:05:25 +08:00
|
|
|
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
|
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it and/or modify
|
|
|
|
* it under the terms of the GNU General Public License as published by
|
|
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
|
|
* (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
|
|
* along with this program; if not, write to the Free Software
|
1998-04-13 13:44:11 +08:00
|
|
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
1997-11-25 06:05:25 +08:00
|
|
|
*/
|
2000-06-08 06:51:23 +08:00
|
|
|
|
1999-09-06 08:07:03 +08:00
|
|
|
#include "config.h"
|
|
|
|
|
2003-05-07 19:09:00 +08:00
|
|
|
#include <glib-object.h>
|
2000-12-17 05:37:03 +08:00
|
|
|
|
2001-05-21 21:58:46 +08:00
|
|
|
#include "libgimpbase/gimpbase.h"
|
|
|
|
|
2003-05-07 19:09:00 +08:00
|
|
|
#include "core-types.h"
|
2000-12-17 05:37:03 +08:00
|
|
|
|
2001-05-15 19:25:25 +08:00
|
|
|
#include "base/tile-manager.h"
|
|
|
|
|
2003-02-14 22:14:29 +08:00
|
|
|
#include "gimp.h"
|
2007-01-29 16:40:40 +08:00
|
|
|
#include "gimpchannelpropundo.h"
|
2007-01-31 20:33:03 +08:00
|
|
|
#include "gimpchannelundo.h"
|
2007-02-01 03:13:12 +08:00
|
|
|
#include "gimpdrawablemodundo.h"
|
2006-10-20 16:56:58 +08:00
|
|
|
#include "gimpdrawableundo.h"
|
2007-02-01 05:05:43 +08:00
|
|
|
#include "gimpfloatingselundo.h"
|
2003-06-24 03:34:48 +08:00
|
|
|
#include "gimpgrid.h"
|
2006-06-07 06:48:57 +08:00
|
|
|
#include "gimpguide.h"
|
2007-01-30 20:32:14 +08:00
|
|
|
#include "gimpguideundo.h"
|
2006-10-15 00:20:46 +08:00
|
|
|
#include "gimpimage.h"
|
2003-02-14 22:14:29 +08:00
|
|
|
#include "gimpimage-undo.h"
|
2006-10-30 18:13:06 +08:00
|
|
|
#include "gimpimage-undo-push.h"
|
2007-01-29 02:21:39 +08:00
|
|
|
#include "gimpimageundo.h"
|
2007-01-29 03:00:13 +08:00
|
|
|
#include "gimpitempropundo.h"
|
2003-02-14 22:14:29 +08:00
|
|
|
#include "gimplayer.h"
|
|
|
|
#include "gimplayermask.h"
|
2007-02-01 02:50:39 +08:00
|
|
|
#include "gimplayermaskpropundo.h"
|
2007-01-31 20:33:03 +08:00
|
|
|
#include "gimplayermaskundo.h"
|
2007-01-29 04:10:45 +08:00
|
|
|
#include "gimplayerpropundo.h"
|
2007-01-31 20:33:03 +08:00
|
|
|
#include "gimplayerundo.h"
|
2007-01-31 06:53:18 +08:00
|
|
|
#include "gimpmaskundo.h"
|
2007-01-30 18:34:59 +08:00
|
|
|
#include "gimpsamplepoint.h"
|
2007-01-30 20:32:14 +08:00
|
|
|
#include "gimpsamplepointundo.h"
|
2004-07-29 22:16:21 +08:00
|
|
|
#include "gimpselection.h"
|
2002-02-15 03:31:16 +08:00
|
|
|
|
2004-04-01 22:51:58 +08:00
|
|
|
#include "text/gimptextlayer.h"
|
2004-03-22 07:14:21 +08:00
|
|
|
#include "text/gimptextundo.h"
|
2004-01-05 08:28:12 +08:00
|
|
|
|
2003-02-01 02:08:32 +08:00
|
|
|
#include "vectors/gimpvectors.h"
|
2007-02-01 03:56:41 +08:00
|
|
|
#include "vectors/gimpvectorsmodundo.h"
|
2007-01-31 06:06:55 +08:00
|
|
|
#include "vectors/gimpvectorspropundo.h"
|
2007-01-31 20:33:03 +08:00
|
|
|
#include "vectors/gimpvectorsundo.h"
|
2003-02-01 02:08:32 +08:00
|
|
|
|
2003-03-26 00:38:19 +08:00
|
|
|
#include "gimp-intl.h"
|
1999-04-23 14:07:09 +08:00
|
|
|
|
comment typo fix, plus add %D* to default image-title-format string, so
Fri Oct 1 12:46:12 1999 Austin Donnelly <austin@gimp.org>
* gimprc.in: comment typo fix, plus add %D* to default
image-title-format string, so people get a '*' in the titlebar
if their image is dirty.
* app/fileops.c: initialise filename before using it.
* app/gdisplay.c: empty parameter list () is K&R - should be
stronger (void) in ANSI C.
* app/gimpdrawable.c: gimp_drawable_{dirty,clean} functions
removed - no one uses them anyway. Parasite undo type is
proper parasite undo type, not MISC_UNDO.
* app/gimpdrawableP.h: drawable dirty bit removed.
* app/gimpimage.c: don't change the resolution if there's no
difference from the old one. Call gdisplay_shrink_wrap() to
re-calculate scale factors and refresh the display on
resolution change. Layer undo doesn't have sub-types
anymore, uses main UndoType instead.
* app/layer.h: Remove LayerUndoType
* app/qmask.c: fix qmask undo so it actually works.
* app/undo.h: new types for undo_push_layer{,_mask} and
undo_push_qmask.
* app/undo.c: change way group boundaries are represented:
each Undo has a group_boundary boolean set to TRUE if this is
the start or the end of a group, and the type of the Undo is
the group's type. Within a group, each Undo keeps its own
type. This allows pop funcs and free funcs to do
type-specific things (eg needed by layer and channel stuff).
Don't maintain per-drawable dirty flags anymore. Floating
sel to layer and layer rename now uses meaningful undo types.
* app/undo_types.h: more specific undo types:
LAYER_{ADD,REMOVE}_UNDO, LAYER_MASK_{ADD,REMOVE}_UNDO,
LAYER_RENAME_UNDO, and PARASITE_{ATTACH,DETACH}_UNDO.
* app/undo_history.c: oops - undo stack was being placed into gtk
list in wrong order.
* app/edit_selection.c: push more descriptive LAYER_DISPLACE_UNDO
rather than MISC_UNDO.
* app/layers_dialog.c: better tagging of undo types
1999-10-02 02:43:24 +08:00
|
|
|
|
2007-01-30 20:32:14 +08:00
|
|
|
/**************************/
|
|
|
|
/* Image Property Undos */
|
|
|
|
/**************************/
|
2002-02-24 02:29:07 +08:00
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
GimpUndo *
|
2006-03-29 01:08:36 +08:00
|
|
|
gimp_image_undo_push_image_type (GimpImage *image,
|
2003-02-14 22:14:29 +08:00
|
|
|
const gchar *undo_desc)
|
2002-02-24 02:29:07 +08:00
|
|
|
{
|
2007-01-30 02:49:06 +08:00
|
|
|
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
2003-02-14 22:14:29 +08:00
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
return gimp_image_undo_push (image, GIMP_TYPE_IMAGE_UNDO,
|
|
|
|
0, 0,
|
|
|
|
GIMP_UNDO_IMAGE_TYPE, undo_desc,
|
|
|
|
GIMP_DIRTY_IMAGE,
|
|
|
|
NULL, NULL,
|
|
|
|
NULL);
|
2002-02-24 02:29:07 +08:00
|
|
|
}
|
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
GimpUndo *
|
2006-03-29 01:08:36 +08:00
|
|
|
gimp_image_undo_push_image_size (GimpImage *image,
|
2003-02-14 22:14:29 +08:00
|
|
|
const gchar *undo_desc)
|
1997-11-25 06:05:25 +08:00
|
|
|
{
|
2007-01-30 02:49:06 +08:00
|
|
|
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
2002-02-24 01:29:19 +08:00
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
return gimp_image_undo_push (image, GIMP_TYPE_IMAGE_UNDO,
|
|
|
|
0, 0,
|
|
|
|
GIMP_UNDO_IMAGE_SIZE, undo_desc,
|
|
|
|
GIMP_DIRTY_IMAGE | GIMP_DIRTY_IMAGE_SIZE,
|
|
|
|
NULL, NULL,
|
|
|
|
NULL);
|
2002-02-24 01:29:19 +08:00
|
|
|
}
|
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
GimpUndo *
|
2006-03-29 01:08:36 +08:00
|
|
|
gimp_image_undo_push_image_resolution (GimpImage *image,
|
2003-02-14 22:14:29 +08:00
|
|
|
const gchar *undo_desc)
|
2002-02-24 01:29:19 +08:00
|
|
|
{
|
2007-01-30 02:49:06 +08:00
|
|
|
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
2002-02-24 01:29:19 +08:00
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
return gimp_image_undo_push (image, GIMP_TYPE_IMAGE_UNDO,
|
|
|
|
0, 0,
|
|
|
|
GIMP_UNDO_IMAGE_RESOLUTION, undo_desc,
|
|
|
|
GIMP_DIRTY_IMAGE,
|
|
|
|
NULL, NULL,
|
|
|
|
NULL);
|
2002-02-24 01:29:19 +08:00
|
|
|
}
|
|
|
|
|
2007-01-30 06:37:18 +08:00
|
|
|
GimpUndo *
|
|
|
|
gimp_image_undo_push_image_grid (GimpImage *image,
|
|
|
|
const gchar *undo_desc,
|
|
|
|
GimpGrid *grid)
|
|
|
|
{
|
|
|
|
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
|
|
|
g_return_val_if_fail (GIMP_IS_GRID (grid), NULL);
|
|
|
|
|
|
|
|
return gimp_image_undo_push (image, GIMP_TYPE_IMAGE_UNDO,
|
|
|
|
0, 0,
|
|
|
|
GIMP_UNDO_IMAGE_GRID, undo_desc,
|
|
|
|
GIMP_DIRTY_IMAGE_META,
|
|
|
|
NULL, NULL,
|
|
|
|
"grid", grid,
|
|
|
|
NULL);
|
|
|
|
}
|
|
|
|
|
|
|
|
GimpUndo *
|
|
|
|
gimp_image_undo_push_image_colormap (GimpImage *image,
|
|
|
|
const gchar *undo_desc)
|
|
|
|
{
|
|
|
|
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
|
|
|
|
|
|
|
return gimp_image_undo_push (image, GIMP_TYPE_IMAGE_UNDO,
|
|
|
|
0, 0,
|
|
|
|
GIMP_UNDO_IMAGE_COLORMAP, undo_desc,
|
|
|
|
GIMP_DIRTY_IMAGE,
|
|
|
|
NULL, NULL,
|
|
|
|
NULL);
|
|
|
|
}
|
|
|
|
|
2007-02-02 18:55:38 +08:00
|
|
|
GimpUndo *
|
|
|
|
gimp_image_undo_push_image_parasite (GimpImage *image,
|
|
|
|
const gchar *undo_desc,
|
|
|
|
const GimpParasite *parasite)
|
|
|
|
{
|
|
|
|
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
|
|
|
g_return_val_if_fail (parasite != NULL, NULL);
|
|
|
|
|
|
|
|
return gimp_image_undo_push (image, GIMP_TYPE_IMAGE_UNDO,
|
|
|
|
0, 0,
|
|
|
|
GIMP_UNDO_PARASITE_ATTACH, undo_desc,
|
|
|
|
GIMP_DIRTY_IMAGE_META,
|
|
|
|
NULL, NULL,
|
|
|
|
"parasite-name", gimp_parasite_name (parasite),
|
|
|
|
NULL);
|
|
|
|
}
|
|
|
|
|
|
|
|
GimpUndo *
|
|
|
|
gimp_image_undo_push_image_parasite_remove (GimpImage *image,
|
|
|
|
const gchar *undo_desc,
|
|
|
|
const gchar *name)
|
|
|
|
{
|
|
|
|
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
|
|
|
g_return_val_if_fail (name != NULL, NULL);
|
|
|
|
|
|
|
|
return gimp_image_undo_push (image, GIMP_TYPE_IMAGE_UNDO,
|
|
|
|
0, 0,
|
|
|
|
GIMP_UNDO_PARASITE_REMOVE, undo_desc,
|
|
|
|
GIMP_DIRTY_IMAGE_META,
|
|
|
|
NULL, NULL,
|
|
|
|
"parasite-name", name,
|
|
|
|
NULL);
|
|
|
|
}
|
|
|
|
|
2007-01-30 06:37:18 +08:00
|
|
|
|
2007-01-30 20:32:14 +08:00
|
|
|
/********************************/
|
|
|
|
/* Guide & Sample Point Undos */
|
|
|
|
/********************************/
|
1997-11-25 06:05:25 +08:00
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
GimpUndo *
|
2007-01-30 07:21:41 +08:00
|
|
|
gimp_image_undo_push_guide (GimpImage *image,
|
|
|
|
const gchar *undo_desc,
|
|
|
|
GimpGuide *guide)
|
1997-11-25 06:05:25 +08:00
|
|
|
{
|
2007-01-30 02:49:06 +08:00
|
|
|
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
|
|
|
g_return_val_if_fail (GIMP_IS_GUIDE (guide), NULL);
|
2003-02-14 22:14:29 +08:00
|
|
|
|
2007-01-30 20:32:14 +08:00
|
|
|
return gimp_image_undo_push (image, GIMP_TYPE_GUIDE_UNDO,
|
|
|
|
0, 0,
|
|
|
|
GIMP_UNDO_GUIDE, undo_desc,
|
|
|
|
GIMP_DIRTY_IMAGE_META,
|
|
|
|
NULL, NULL,
|
|
|
|
"guide", guide,
|
|
|
|
NULL);
|
1997-11-25 06:05:25 +08:00
|
|
|
}
|
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
GimpUndo *
|
2007-01-30 07:21:41 +08:00
|
|
|
gimp_image_undo_push_sample_point (GimpImage *image,
|
|
|
|
const gchar *undo_desc,
|
|
|
|
GimpSamplePoint *sample_point)
|
2005-03-05 00:34:59 +08:00
|
|
|
{
|
2007-01-30 02:49:06 +08:00
|
|
|
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
|
|
|
g_return_val_if_fail (sample_point != NULL, NULL);
|
2005-03-05 00:34:59 +08:00
|
|
|
|
2007-01-30 20:32:14 +08:00
|
|
|
return gimp_image_undo_push (image, GIMP_TYPE_SAMPLE_POINT_UNDO,
|
|
|
|
0, 0,
|
|
|
|
GIMP_UNDO_SAMPLE_POINT, undo_desc,
|
|
|
|
GIMP_DIRTY_IMAGE_META,
|
|
|
|
NULL, NULL,
|
|
|
|
"sample-point", sample_point,
|
|
|
|
NULL);
|
2005-03-05 00:34:59 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-02-01 03:13:12 +08:00
|
|
|
/********************/
|
|
|
|
/* Drawable Undos */
|
|
|
|
/********************/
|
2004-03-15 22:10:30 +08:00
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
GimpUndo *
|
2006-03-29 01:08:36 +08:00
|
|
|
gimp_image_undo_push_drawable (GimpImage *image,
|
2004-03-15 22:10:30 +08:00
|
|
|
const gchar *undo_desc,
|
|
|
|
GimpDrawable *drawable,
|
|
|
|
TileManager *tiles,
|
|
|
|
gboolean sparse,
|
|
|
|
gint x,
|
|
|
|
gint y,
|
|
|
|
gint width,
|
|
|
|
gint height)
|
|
|
|
{
|
|
|
|
GimpItem *item;
|
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
|
|
|
g_return_val_if_fail (GIMP_IS_DRAWABLE (drawable), NULL);
|
|
|
|
g_return_val_if_fail (tiles != NULL, NULL);
|
2004-03-15 22:10:30 +08:00
|
|
|
g_return_val_if_fail (sparse == TRUE ||
|
2007-01-30 02:49:06 +08:00
|
|
|
tile_manager_width (tiles) == width, NULL);
|
2004-03-15 22:10:30 +08:00
|
|
|
g_return_val_if_fail (sparse == TRUE ||
|
2007-01-30 02:49:06 +08:00
|
|
|
tile_manager_height (tiles) == height, NULL);
|
2004-03-15 22:10:30 +08:00
|
|
|
|
|
|
|
item = GIMP_ITEM (drawable);
|
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
g_return_val_if_fail (gimp_item_is_attached (item), NULL);
|
2004-03-15 22:10:30 +08:00
|
|
|
g_return_val_if_fail (sparse == FALSE ||
|
|
|
|
tile_manager_width (tiles) == gimp_item_width (item),
|
2007-01-30 02:49:06 +08:00
|
|
|
NULL);
|
2004-03-15 22:10:30 +08:00
|
|
|
g_return_val_if_fail (sparse == FALSE ||
|
|
|
|
tile_manager_height (tiles) == gimp_item_height (item),
|
2007-01-30 02:49:06 +08:00
|
|
|
NULL);
|
2004-03-15 22:10:30 +08:00
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
return gimp_image_undo_push (image, GIMP_TYPE_DRAWABLE_UNDO,
|
|
|
|
0, 0,
|
|
|
|
GIMP_UNDO_DRAWABLE, undo_desc,
|
|
|
|
GIMP_DIRTY_ITEM | GIMP_DIRTY_DRAWABLE,
|
|
|
|
NULL, NULL,
|
|
|
|
"item", item,
|
|
|
|
"tiles", tiles,
|
|
|
|
"sparse", sparse,
|
|
|
|
"x", x,
|
|
|
|
"y", y,
|
|
|
|
"width", width,
|
|
|
|
"height", height,
|
|
|
|
NULL);
|
2004-03-15 22:10:30 +08:00
|
|
|
}
|
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
GimpUndo *
|
2006-03-29 01:08:36 +08:00
|
|
|
gimp_image_undo_push_drawable_mod (GimpImage *image,
|
2004-03-17 00:23:06 +08:00
|
|
|
const gchar *undo_desc,
|
|
|
|
GimpDrawable *drawable)
|
2004-03-16 04:58:07 +08:00
|
|
|
{
|
2007-01-30 02:49:06 +08:00
|
|
|
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
|
|
|
g_return_val_if_fail (GIMP_IS_DRAWABLE (drawable), NULL);
|
|
|
|
g_return_val_if_fail (gimp_item_is_attached (GIMP_ITEM (drawable)), NULL);
|
2004-03-16 04:58:07 +08:00
|
|
|
|
2007-02-01 03:13:12 +08:00
|
|
|
return gimp_image_undo_push (image, GIMP_TYPE_DRAWABLE_MOD_UNDO,
|
|
|
|
0, 0,
|
|
|
|
GIMP_UNDO_DRAWABLE_MOD, undo_desc,
|
|
|
|
GIMP_DIRTY_ITEM | GIMP_DIRTY_DRAWABLE,
|
|
|
|
NULL, NULL,
|
|
|
|
"item", drawable,
|
|
|
|
NULL);
|
2004-03-16 04:58:07 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2002-08-20 18:22:23 +08:00
|
|
|
/***************/
|
|
|
|
/* Mask Undo */
|
2003-02-13 01:11:34 +08:00
|
|
|
/***************/
|
2002-08-20 18:22:23 +08:00
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
GimpUndo *
|
2006-03-29 01:08:36 +08:00
|
|
|
gimp_image_undo_push_mask (GimpImage *image,
|
2003-02-14 22:14:29 +08:00
|
|
|
const gchar *undo_desc,
|
|
|
|
GimpChannel *mask)
|
2002-08-20 18:22:23 +08:00
|
|
|
{
|
2007-01-30 02:49:06 +08:00
|
|
|
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
|
|
|
g_return_val_if_fail (GIMP_IS_CHANNEL (mask), NULL);
|
|
|
|
g_return_val_if_fail (gimp_item_is_attached (GIMP_ITEM (mask)), NULL);
|
2002-08-20 18:22:23 +08:00
|
|
|
|
2007-01-31 06:53:18 +08:00
|
|
|
return gimp_image_undo_push (image, GIMP_TYPE_MASK_UNDO,
|
2007-01-30 02:49:06 +08:00
|
|
|
0, 0,
|
|
|
|
GIMP_UNDO_MASK, undo_desc,
|
|
|
|
GIMP_IS_SELECTION (mask) ?
|
|
|
|
GIMP_DIRTY_SELECTION :
|
|
|
|
GIMP_DIRTY_ITEM | GIMP_DIRTY_DRAWABLE,
|
|
|
|
NULL, NULL,
|
|
|
|
"item", mask,
|
|
|
|
NULL);
|
2002-08-20 18:22:23 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-01-30 20:32:14 +08:00
|
|
|
/*************************/
|
|
|
|
/* Item Property Undos */
|
|
|
|
/*************************/
|
2002-02-26 08:04:55 +08:00
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
GimpUndo *
|
2006-03-29 01:08:36 +08:00
|
|
|
gimp_image_undo_push_item_rename (GimpImage *image,
|
2003-02-14 22:14:29 +08:00
|
|
|
const gchar *undo_desc,
|
|
|
|
GimpItem *item)
|
2002-02-26 08:04:55 +08:00
|
|
|
{
|
2007-01-30 02:49:06 +08:00
|
|
|
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
|
|
|
g_return_val_if_fail (GIMP_IS_ITEM (item), NULL);
|
|
|
|
g_return_val_if_fail (gimp_item_is_attached (item), NULL);
|
2003-02-14 22:14:29 +08:00
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
return gimp_image_undo_push (image, GIMP_TYPE_ITEM_PROP_UNDO,
|
|
|
|
0, 0,
|
|
|
|
GIMP_UNDO_ITEM_RENAME, undo_desc,
|
|
|
|
GIMP_DIRTY_ITEM_META,
|
|
|
|
NULL, NULL,
|
|
|
|
"item", item,
|
|
|
|
NULL);
|
2002-02-26 08:04:55 +08:00
|
|
|
}
|
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
GimpUndo *
|
2006-03-29 01:08:36 +08:00
|
|
|
gimp_image_undo_push_item_displace (GimpImage *image,
|
2003-05-09 03:11:17 +08:00
|
|
|
const gchar *undo_desc,
|
|
|
|
GimpItem *item)
|
|
|
|
{
|
2007-01-30 02:49:06 +08:00
|
|
|
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
|
|
|
g_return_val_if_fail (GIMP_IS_ITEM (item), NULL);
|
|
|
|
g_return_val_if_fail (gimp_item_is_attached (item), NULL);
|
2003-05-09 03:11:17 +08:00
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
return gimp_image_undo_push (image, GIMP_TYPE_ITEM_PROP_UNDO,
|
|
|
|
0, 0,
|
|
|
|
GIMP_UNDO_ITEM_DISPLACE, undo_desc,
|
|
|
|
GIMP_IS_DRAWABLE (item) ?
|
|
|
|
GIMP_DIRTY_ITEM | GIMP_DIRTY_DRAWABLE :
|
|
|
|
GIMP_DIRTY_ITEM | GIMP_DIRTY_VECTORS,
|
|
|
|
NULL, NULL,
|
|
|
|
"item", item,
|
|
|
|
NULL);
|
2003-05-09 03:11:17 +08:00
|
|
|
}
|
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
GimpUndo *
|
2006-03-29 01:08:36 +08:00
|
|
|
gimp_image_undo_push_item_visibility (GimpImage *image,
|
2003-09-12 03:52:29 +08:00
|
|
|
const gchar *undo_desc,
|
|
|
|
GimpItem *item)
|
2003-05-09 04:26:01 +08:00
|
|
|
{
|
2007-01-30 02:49:06 +08:00
|
|
|
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
|
|
|
g_return_val_if_fail (GIMP_IS_ITEM (item), NULL);
|
|
|
|
g_return_val_if_fail (gimp_item_is_attached (item), NULL);
|
2003-05-09 04:26:01 +08:00
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
return gimp_image_undo_push (image, GIMP_TYPE_ITEM_PROP_UNDO,
|
|
|
|
0, 0,
|
|
|
|
GIMP_UNDO_ITEM_VISIBILITY, undo_desc,
|
|
|
|
GIMP_DIRTY_ITEM_META,
|
|
|
|
NULL, NULL,
|
|
|
|
"item", item,
|
|
|
|
NULL);
|
2003-05-09 04:26:01 +08:00
|
|
|
}
|
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
GimpUndo *
|
2006-03-29 01:08:36 +08:00
|
|
|
gimp_image_undo_push_item_linked (GimpImage *image,
|
2003-09-12 03:52:29 +08:00
|
|
|
const gchar *undo_desc,
|
|
|
|
GimpItem *item)
|
Made drawable/layer properties (visibility, opacity etc.) undoable (fixes
2003-03-17 Michael Natterer <mitch@gimp.org>
Made drawable/layer properties (visibility, opacity etc.)
undoable (fixes bug #73893).
* app/core/core-enums.[ch]: added undo types/groups for
visibility, mode, opacity, linked and preserve_trans.
* app/core/Makefile.am
* app/core/core-types.h
* app/core/gimpitemundo.[ch]: new GimpUndo subclass which holds a
ref'ed GimpItem pointer so (1) this doesn't need to be done by all
undo steps related to an item and (2) the item the undo step is
for can be determined from outside the undo system.
* app/core/gimpimage-undo.[ch]: added gimp_image_undo_push_item()
which returns a new GimpItemUndo.
* app/core/gimpimage-undo-push.[ch]: use it for all item related
undo steps. Removed lots of GimpItem, GimpLayer, GimpDrawable
and GimpVectors pointers from the private undo structs. Added
undo push functions for the new undo types added above.
* app/core/gimpdrawable.[ch] (gimp_drawable_set_visible): added
"gboolean push_undo" parameter.
* app/core/gimplayer.[ch] (gimp_layer_set_opacity, _mode,
_preserve_trans, _linked): added "gboolean push_undo" parameters.
* app/core/gimpimage-mask.c
* app/core/gimpimage-merge.c
* app/core/gimplayer-floating-sel.c
* app/tools/gimpmovetool.c
* app/xcf/xcf-load.c
* app/widgets/gimpdrawablelistitem.c
* app/widgets/gimplayerlistitem.c
* app/widgets/gimplayerlistview.c: changed accordingly.
* tools/pdbgen/pdb/channel.pdb
* tools/pdbgen/pdb/layer.pdb: ditto. Added '$undo' paramaters to
the foo_accessors() functions. Removed $func from foo_accesors()
because we don't manipulate items without using getters/setters
any longer.
* app/pdb/channel_cmds.c
* app/pdb/layer_cmds.c: regenerated.
* app/widgets/gimpcellrenderertoggle.[ch]: added "clicked" signal
which carries an additional "GdkModifierType state" parameter as
in GimpCellRendererViewable .
* app/widgets/gimpcontainertreeview.c: emit "clicked" from
the toggle renderer, not "toggled" so the callbacks get the
modifier state.
* app/widgets/gimpdrawabletreeview.c: resurrected the "exclusive
visible by <shift>+click" feature as in 1.2.
* app/widgets/gimplayertreeview.c: compress layer opacity undos by
looking at the top of the undo stack and not pushing an undo if
there already is a GIMP_UNDO_DRAWABLE_OPACITY for the active
layer.
2003-03-18 02:02:41 +08:00
|
|
|
{
|
2007-01-30 02:49:06 +08:00
|
|
|
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
|
|
|
g_return_val_if_fail (GIMP_IS_ITEM (item), NULL);
|
|
|
|
g_return_val_if_fail (gimp_item_is_attached (item), NULL);
|
Made drawable/layer properties (visibility, opacity etc.) undoable (fixes
2003-03-17 Michael Natterer <mitch@gimp.org>
Made drawable/layer properties (visibility, opacity etc.)
undoable (fixes bug #73893).
* app/core/core-enums.[ch]: added undo types/groups for
visibility, mode, opacity, linked and preserve_trans.
* app/core/Makefile.am
* app/core/core-types.h
* app/core/gimpitemundo.[ch]: new GimpUndo subclass which holds a
ref'ed GimpItem pointer so (1) this doesn't need to be done by all
undo steps related to an item and (2) the item the undo step is
for can be determined from outside the undo system.
* app/core/gimpimage-undo.[ch]: added gimp_image_undo_push_item()
which returns a new GimpItemUndo.
* app/core/gimpimage-undo-push.[ch]: use it for all item related
undo steps. Removed lots of GimpItem, GimpLayer, GimpDrawable
and GimpVectors pointers from the private undo structs. Added
undo push functions for the new undo types added above.
* app/core/gimpdrawable.[ch] (gimp_drawable_set_visible): added
"gboolean push_undo" parameter.
* app/core/gimplayer.[ch] (gimp_layer_set_opacity, _mode,
_preserve_trans, _linked): added "gboolean push_undo" parameters.
* app/core/gimpimage-mask.c
* app/core/gimpimage-merge.c
* app/core/gimplayer-floating-sel.c
* app/tools/gimpmovetool.c
* app/xcf/xcf-load.c
* app/widgets/gimpdrawablelistitem.c
* app/widgets/gimplayerlistitem.c
* app/widgets/gimplayerlistview.c: changed accordingly.
* tools/pdbgen/pdb/channel.pdb
* tools/pdbgen/pdb/layer.pdb: ditto. Added '$undo' paramaters to
the foo_accessors() functions. Removed $func from foo_accesors()
because we don't manipulate items without using getters/setters
any longer.
* app/pdb/channel_cmds.c
* app/pdb/layer_cmds.c: regenerated.
* app/widgets/gimpcellrenderertoggle.[ch]: added "clicked" signal
which carries an additional "GdkModifierType state" parameter as
in GimpCellRendererViewable .
* app/widgets/gimpcontainertreeview.c: emit "clicked" from
the toggle renderer, not "toggled" so the callbacks get the
modifier state.
* app/widgets/gimpdrawabletreeview.c: resurrected the "exclusive
visible by <shift>+click" feature as in 1.2.
* app/widgets/gimplayertreeview.c: compress layer opacity undos by
looking at the top of the undo stack and not pushing an undo if
there already is a GIMP_UNDO_DRAWABLE_OPACITY for the active
layer.
2003-03-18 02:02:41 +08:00
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
return gimp_image_undo_push (image, GIMP_TYPE_ITEM_PROP_UNDO,
|
|
|
|
0, 0,
|
|
|
|
GIMP_UNDO_ITEM_LINKED, undo_desc,
|
|
|
|
GIMP_DIRTY_ITEM_META,
|
|
|
|
NULL, NULL,
|
|
|
|
"item", item,
|
|
|
|
NULL);
|
Made drawable/layer properties (visibility, opacity etc.) undoable (fixes
2003-03-17 Michael Natterer <mitch@gimp.org>
Made drawable/layer properties (visibility, opacity etc.)
undoable (fixes bug #73893).
* app/core/core-enums.[ch]: added undo types/groups for
visibility, mode, opacity, linked and preserve_trans.
* app/core/Makefile.am
* app/core/core-types.h
* app/core/gimpitemundo.[ch]: new GimpUndo subclass which holds a
ref'ed GimpItem pointer so (1) this doesn't need to be done by all
undo steps related to an item and (2) the item the undo step is
for can be determined from outside the undo system.
* app/core/gimpimage-undo.[ch]: added gimp_image_undo_push_item()
which returns a new GimpItemUndo.
* app/core/gimpimage-undo-push.[ch]: use it for all item related
undo steps. Removed lots of GimpItem, GimpLayer, GimpDrawable
and GimpVectors pointers from the private undo structs. Added
undo push functions for the new undo types added above.
* app/core/gimpdrawable.[ch] (gimp_drawable_set_visible): added
"gboolean push_undo" parameter.
* app/core/gimplayer.[ch] (gimp_layer_set_opacity, _mode,
_preserve_trans, _linked): added "gboolean push_undo" parameters.
* app/core/gimpimage-mask.c
* app/core/gimpimage-merge.c
* app/core/gimplayer-floating-sel.c
* app/tools/gimpmovetool.c
* app/xcf/xcf-load.c
* app/widgets/gimpdrawablelistitem.c
* app/widgets/gimplayerlistitem.c
* app/widgets/gimplayerlistview.c: changed accordingly.
* tools/pdbgen/pdb/channel.pdb
* tools/pdbgen/pdb/layer.pdb: ditto. Added '$undo' paramaters to
the foo_accessors() functions. Removed $func from foo_accesors()
because we don't manipulate items without using getters/setters
any longer.
* app/pdb/channel_cmds.c
* app/pdb/layer_cmds.c: regenerated.
* app/widgets/gimpcellrenderertoggle.[ch]: added "clicked" signal
which carries an additional "GdkModifierType state" parameter as
in GimpCellRendererViewable .
* app/widgets/gimpcontainertreeview.c: emit "clicked" from
the toggle renderer, not "toggled" so the callbacks get the
modifier state.
* app/widgets/gimpdrawabletreeview.c: resurrected the "exclusive
visible by <shift>+click" feature as in 1.2.
* app/widgets/gimplayertreeview.c: compress layer opacity undos by
looking at the top of the undo stack and not pushing an undo if
there already is a GIMP_UNDO_DRAWABLE_OPACITY for the active
layer.
2003-03-18 02:02:41 +08:00
|
|
|
}
|
|
|
|
|
2007-02-02 18:55:38 +08:00
|
|
|
GimpUndo *
|
|
|
|
gimp_image_undo_push_item_parasite (GimpImage *image,
|
|
|
|
const gchar *undo_desc,
|
|
|
|
GimpItem *item,
|
|
|
|
const GimpParasite *parasite)
|
|
|
|
{
|
|
|
|
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
|
|
|
g_return_val_if_fail (GIMP_IS_ITEM (item), NULL);
|
|
|
|
g_return_val_if_fail (gimp_item_is_attached (item), NULL);
|
|
|
|
g_return_val_if_fail (parasite != NULL, NULL);
|
|
|
|
|
|
|
|
return gimp_image_undo_push (image, GIMP_TYPE_ITEM_PROP_UNDO,
|
|
|
|
0, 0,
|
|
|
|
GIMP_UNDO_PARASITE_ATTACH, undo_desc,
|
|
|
|
GIMP_DIRTY_ITEM_META,
|
|
|
|
NULL, NULL,
|
|
|
|
"item", item,
|
|
|
|
"parasite-name", gimp_parasite_name (parasite),
|
|
|
|
NULL);
|
|
|
|
}
|
|
|
|
|
|
|
|
GimpUndo *
|
|
|
|
gimp_image_undo_push_item_parasite_remove (GimpImage *image,
|
|
|
|
const gchar *undo_desc,
|
|
|
|
GimpItem *item,
|
|
|
|
const gchar *name)
|
|
|
|
{
|
|
|
|
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
|
|
|
g_return_val_if_fail (GIMP_IS_ITEM (item), NULL);
|
|
|
|
g_return_val_if_fail (gimp_item_is_attached (item), NULL);
|
|
|
|
g_return_val_if_fail (name != NULL, NULL);
|
|
|
|
|
|
|
|
return gimp_image_undo_push (image, GIMP_TYPE_ITEM_PROP_UNDO,
|
|
|
|
0, 0,
|
|
|
|
GIMP_UNDO_PARASITE_REMOVE, undo_desc,
|
|
|
|
GIMP_DIRTY_ITEM_META,
|
|
|
|
NULL, NULL,
|
|
|
|
"item", item,
|
|
|
|
"parasite-name", name,
|
|
|
|
NULL);
|
|
|
|
}
|
|
|
|
|
Made drawable/layer properties (visibility, opacity etc.) undoable (fixes
2003-03-17 Michael Natterer <mitch@gimp.org>
Made drawable/layer properties (visibility, opacity etc.)
undoable (fixes bug #73893).
* app/core/core-enums.[ch]: added undo types/groups for
visibility, mode, opacity, linked and preserve_trans.
* app/core/Makefile.am
* app/core/core-types.h
* app/core/gimpitemundo.[ch]: new GimpUndo subclass which holds a
ref'ed GimpItem pointer so (1) this doesn't need to be done by all
undo steps related to an item and (2) the item the undo step is
for can be determined from outside the undo system.
* app/core/gimpimage-undo.[ch]: added gimp_image_undo_push_item()
which returns a new GimpItemUndo.
* app/core/gimpimage-undo-push.[ch]: use it for all item related
undo steps. Removed lots of GimpItem, GimpLayer, GimpDrawable
and GimpVectors pointers from the private undo structs. Added
undo push functions for the new undo types added above.
* app/core/gimpdrawable.[ch] (gimp_drawable_set_visible): added
"gboolean push_undo" parameter.
* app/core/gimplayer.[ch] (gimp_layer_set_opacity, _mode,
_preserve_trans, _linked): added "gboolean push_undo" parameters.
* app/core/gimpimage-mask.c
* app/core/gimpimage-merge.c
* app/core/gimplayer-floating-sel.c
* app/tools/gimpmovetool.c
* app/xcf/xcf-load.c
* app/widgets/gimpdrawablelistitem.c
* app/widgets/gimplayerlistitem.c
* app/widgets/gimplayerlistview.c: changed accordingly.
* tools/pdbgen/pdb/channel.pdb
* tools/pdbgen/pdb/layer.pdb: ditto. Added '$undo' paramaters to
the foo_accessors() functions. Removed $func from foo_accesors()
because we don't manipulate items without using getters/setters
any longer.
* app/pdb/channel_cmds.c
* app/pdb/layer_cmds.c: regenerated.
* app/widgets/gimpcellrenderertoggle.[ch]: added "clicked" signal
which carries an additional "GdkModifierType state" parameter as
in GimpCellRendererViewable .
* app/widgets/gimpcontainertreeview.c: emit "clicked" from
the toggle renderer, not "toggled" so the callbacks get the
modifier state.
* app/widgets/gimpdrawabletreeview.c: resurrected the "exclusive
visible by <shift>+click" feature as in 1.2.
* app/widgets/gimplayertreeview.c: compress layer opacity undos by
looking at the top of the undo stack and not pushing an undo if
there already is a GIMP_UNDO_DRAWABLE_OPACITY for the active
layer.
2003-03-18 02:02:41 +08:00
|
|
|
|
2002-02-24 01:29:19 +08:00
|
|
|
/***************************/
|
|
|
|
/* Layer Add/Remove Undo */
|
2003-02-13 01:11:34 +08:00
|
|
|
/***************************/
|
2002-02-15 03:31:16 +08:00
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
GimpUndo *
|
2006-03-29 01:08:36 +08:00
|
|
|
gimp_image_undo_push_layer_add (GimpImage *image,
|
2003-02-14 22:14:29 +08:00
|
|
|
const gchar *undo_desc,
|
|
|
|
GimpLayer *layer,
|
|
|
|
GimpLayer *prev_layer)
|
2002-02-24 01:29:19 +08:00
|
|
|
{
|
2007-01-30 02:49:06 +08:00
|
|
|
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
|
|
|
g_return_val_if_fail (GIMP_IS_LAYER (layer), NULL);
|
|
|
|
g_return_val_if_fail (! gimp_item_is_attached (GIMP_ITEM (layer)), NULL);
|
2004-11-12 18:56:23 +08:00
|
|
|
g_return_val_if_fail (prev_layer == NULL || GIMP_IS_LAYER (prev_layer),
|
2007-01-30 02:49:06 +08:00
|
|
|
NULL);
|
2004-11-12 18:56:23 +08:00
|
|
|
|
2007-01-31 20:33:03 +08:00
|
|
|
return gimp_image_undo_push (image, GIMP_TYPE_LAYER_UNDO,
|
|
|
|
0, 0,
|
|
|
|
GIMP_UNDO_LAYER_ADD, undo_desc,
|
|
|
|
GIMP_DIRTY_IMAGE_STRUCTURE,
|
|
|
|
NULL, NULL,
|
|
|
|
"item", layer,
|
|
|
|
"prev-layer", prev_layer,
|
|
|
|
NULL);
|
2001-03-11 21:15:41 +08:00
|
|
|
}
|
1997-11-25 06:05:25 +08:00
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
GimpUndo *
|
2006-03-29 01:08:36 +08:00
|
|
|
gimp_image_undo_push_layer_remove (GimpImage *image,
|
2003-02-14 22:14:29 +08:00
|
|
|
const gchar *undo_desc,
|
|
|
|
GimpLayer *layer,
|
|
|
|
gint prev_position,
|
|
|
|
GimpLayer *prev_layer)
|
1997-11-25 06:05:25 +08:00
|
|
|
{
|
2007-01-30 02:49:06 +08:00
|
|
|
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
|
|
|
g_return_val_if_fail (GIMP_IS_LAYER (layer), NULL);
|
|
|
|
g_return_val_if_fail (gimp_item_is_attached (GIMP_ITEM (layer)), NULL);
|
2004-11-12 18:56:23 +08:00
|
|
|
g_return_val_if_fail (prev_layer == NULL || GIMP_IS_LAYER (prev_layer),
|
2007-01-30 02:49:06 +08:00
|
|
|
NULL);
|
2004-11-12 18:56:23 +08:00
|
|
|
|
2007-01-31 20:33:03 +08:00
|
|
|
return gimp_image_undo_push (image, GIMP_TYPE_LAYER_UNDO,
|
|
|
|
0, 0,
|
|
|
|
GIMP_UNDO_LAYER_REMOVE, undo_desc,
|
|
|
|
GIMP_DIRTY_IMAGE_STRUCTURE,
|
|
|
|
NULL, NULL,
|
|
|
|
"item", layer,
|
|
|
|
"prev-position", prev_position,
|
|
|
|
"prev-layer", prev_layer,
|
|
|
|
NULL);
|
1997-11-25 06:05:25 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-01-30 20:32:14 +08:00
|
|
|
/**************************/
|
|
|
|
/* Layer Property Undos */
|
|
|
|
/**************************/
|
2002-02-24 01:29:19 +08:00
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
GimpUndo *
|
2006-03-29 01:08:36 +08:00
|
|
|
gimp_image_undo_push_layer_reposition (GimpImage *image,
|
2003-02-14 22:14:29 +08:00
|
|
|
const gchar *undo_desc,
|
|
|
|
GimpLayer *layer)
|
2002-02-24 01:29:19 +08:00
|
|
|
{
|
2007-01-30 02:49:06 +08:00
|
|
|
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
|
|
|
g_return_val_if_fail (GIMP_IS_LAYER (layer), NULL);
|
|
|
|
g_return_val_if_fail (gimp_item_is_attached (GIMP_ITEM (layer)), NULL);
|
2002-02-24 01:29:19 +08:00
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
return gimp_image_undo_push (image, GIMP_TYPE_LAYER_PROP_UNDO,
|
|
|
|
0, 0,
|
|
|
|
GIMP_UNDO_LAYER_REPOSITION, undo_desc,
|
|
|
|
GIMP_DIRTY_IMAGE_STRUCTURE,
|
|
|
|
NULL, NULL,
|
|
|
|
"item", layer,
|
|
|
|
NULL);
|
2002-02-24 01:29:19 +08:00
|
|
|
}
|
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
GimpUndo *
|
2006-03-29 01:08:36 +08:00
|
|
|
gimp_image_undo_push_layer_mode (GimpImage *image,
|
Made drawable/layer properties (visibility, opacity etc.) undoable (fixes
2003-03-17 Michael Natterer <mitch@gimp.org>
Made drawable/layer properties (visibility, opacity etc.)
undoable (fixes bug #73893).
* app/core/core-enums.[ch]: added undo types/groups for
visibility, mode, opacity, linked and preserve_trans.
* app/core/Makefile.am
* app/core/core-types.h
* app/core/gimpitemundo.[ch]: new GimpUndo subclass which holds a
ref'ed GimpItem pointer so (1) this doesn't need to be done by all
undo steps related to an item and (2) the item the undo step is
for can be determined from outside the undo system.
* app/core/gimpimage-undo.[ch]: added gimp_image_undo_push_item()
which returns a new GimpItemUndo.
* app/core/gimpimage-undo-push.[ch]: use it for all item related
undo steps. Removed lots of GimpItem, GimpLayer, GimpDrawable
and GimpVectors pointers from the private undo structs. Added
undo push functions for the new undo types added above.
* app/core/gimpdrawable.[ch] (gimp_drawable_set_visible): added
"gboolean push_undo" parameter.
* app/core/gimplayer.[ch] (gimp_layer_set_opacity, _mode,
_preserve_trans, _linked): added "gboolean push_undo" parameters.
* app/core/gimpimage-mask.c
* app/core/gimpimage-merge.c
* app/core/gimplayer-floating-sel.c
* app/tools/gimpmovetool.c
* app/xcf/xcf-load.c
* app/widgets/gimpdrawablelistitem.c
* app/widgets/gimplayerlistitem.c
* app/widgets/gimplayerlistview.c: changed accordingly.
* tools/pdbgen/pdb/channel.pdb
* tools/pdbgen/pdb/layer.pdb: ditto. Added '$undo' paramaters to
the foo_accessors() functions. Removed $func from foo_accesors()
because we don't manipulate items without using getters/setters
any longer.
* app/pdb/channel_cmds.c
* app/pdb/layer_cmds.c: regenerated.
* app/widgets/gimpcellrenderertoggle.[ch]: added "clicked" signal
which carries an additional "GdkModifierType state" parameter as
in GimpCellRendererViewable .
* app/widgets/gimpcontainertreeview.c: emit "clicked" from
the toggle renderer, not "toggled" so the callbacks get the
modifier state.
* app/widgets/gimpdrawabletreeview.c: resurrected the "exclusive
visible by <shift>+click" feature as in 1.2.
* app/widgets/gimplayertreeview.c: compress layer opacity undos by
looking at the top of the undo stack and not pushing an undo if
there already is a GIMP_UNDO_DRAWABLE_OPACITY for the active
layer.
2003-03-18 02:02:41 +08:00
|
|
|
const gchar *undo_desc,
|
|
|
|
GimpLayer *layer)
|
|
|
|
{
|
2007-01-30 02:49:06 +08:00
|
|
|
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
|
|
|
g_return_val_if_fail (GIMP_IS_LAYER (layer), NULL);
|
|
|
|
g_return_val_if_fail (gimp_item_is_attached (GIMP_ITEM (layer)), NULL);
|
2007-01-29 04:10:45 +08:00
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
return gimp_image_undo_push (image, GIMP_TYPE_LAYER_PROP_UNDO,
|
|
|
|
0, 0,
|
|
|
|
GIMP_UNDO_LAYER_MODE, undo_desc,
|
|
|
|
GIMP_DIRTY_ITEM_META,
|
|
|
|
NULL, NULL,
|
|
|
|
"item", layer,
|
|
|
|
NULL);
|
Made drawable/layer properties (visibility, opacity etc.) undoable (fixes
2003-03-17 Michael Natterer <mitch@gimp.org>
Made drawable/layer properties (visibility, opacity etc.)
undoable (fixes bug #73893).
* app/core/core-enums.[ch]: added undo types/groups for
visibility, mode, opacity, linked and preserve_trans.
* app/core/Makefile.am
* app/core/core-types.h
* app/core/gimpitemundo.[ch]: new GimpUndo subclass which holds a
ref'ed GimpItem pointer so (1) this doesn't need to be done by all
undo steps related to an item and (2) the item the undo step is
for can be determined from outside the undo system.
* app/core/gimpimage-undo.[ch]: added gimp_image_undo_push_item()
which returns a new GimpItemUndo.
* app/core/gimpimage-undo-push.[ch]: use it for all item related
undo steps. Removed lots of GimpItem, GimpLayer, GimpDrawable
and GimpVectors pointers from the private undo structs. Added
undo push functions for the new undo types added above.
* app/core/gimpdrawable.[ch] (gimp_drawable_set_visible): added
"gboolean push_undo" parameter.
* app/core/gimplayer.[ch] (gimp_layer_set_opacity, _mode,
_preserve_trans, _linked): added "gboolean push_undo" parameters.
* app/core/gimpimage-mask.c
* app/core/gimpimage-merge.c
* app/core/gimplayer-floating-sel.c
* app/tools/gimpmovetool.c
* app/xcf/xcf-load.c
* app/widgets/gimpdrawablelistitem.c
* app/widgets/gimplayerlistitem.c
* app/widgets/gimplayerlistview.c: changed accordingly.
* tools/pdbgen/pdb/channel.pdb
* tools/pdbgen/pdb/layer.pdb: ditto. Added '$undo' paramaters to
the foo_accessors() functions. Removed $func from foo_accesors()
because we don't manipulate items without using getters/setters
any longer.
* app/pdb/channel_cmds.c
* app/pdb/layer_cmds.c: regenerated.
* app/widgets/gimpcellrenderertoggle.[ch]: added "clicked" signal
which carries an additional "GdkModifierType state" parameter as
in GimpCellRendererViewable .
* app/widgets/gimpcontainertreeview.c: emit "clicked" from
the toggle renderer, not "toggled" so the callbacks get the
modifier state.
* app/widgets/gimpdrawabletreeview.c: resurrected the "exclusive
visible by <shift>+click" feature as in 1.2.
* app/widgets/gimplayertreeview.c: compress layer opacity undos by
looking at the top of the undo stack and not pushing an undo if
there already is a GIMP_UNDO_DRAWABLE_OPACITY for the active
layer.
2003-03-18 02:02:41 +08:00
|
|
|
}
|
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
GimpUndo *
|
2006-03-29 01:08:36 +08:00
|
|
|
gimp_image_undo_push_layer_opacity (GimpImage *image,
|
Made drawable/layer properties (visibility, opacity etc.) undoable (fixes
2003-03-17 Michael Natterer <mitch@gimp.org>
Made drawable/layer properties (visibility, opacity etc.)
undoable (fixes bug #73893).
* app/core/core-enums.[ch]: added undo types/groups for
visibility, mode, opacity, linked and preserve_trans.
* app/core/Makefile.am
* app/core/core-types.h
* app/core/gimpitemundo.[ch]: new GimpUndo subclass which holds a
ref'ed GimpItem pointer so (1) this doesn't need to be done by all
undo steps related to an item and (2) the item the undo step is
for can be determined from outside the undo system.
* app/core/gimpimage-undo.[ch]: added gimp_image_undo_push_item()
which returns a new GimpItemUndo.
* app/core/gimpimage-undo-push.[ch]: use it for all item related
undo steps. Removed lots of GimpItem, GimpLayer, GimpDrawable
and GimpVectors pointers from the private undo structs. Added
undo push functions for the new undo types added above.
* app/core/gimpdrawable.[ch] (gimp_drawable_set_visible): added
"gboolean push_undo" parameter.
* app/core/gimplayer.[ch] (gimp_layer_set_opacity, _mode,
_preserve_trans, _linked): added "gboolean push_undo" parameters.
* app/core/gimpimage-mask.c
* app/core/gimpimage-merge.c
* app/core/gimplayer-floating-sel.c
* app/tools/gimpmovetool.c
* app/xcf/xcf-load.c
* app/widgets/gimpdrawablelistitem.c
* app/widgets/gimplayerlistitem.c
* app/widgets/gimplayerlistview.c: changed accordingly.
* tools/pdbgen/pdb/channel.pdb
* tools/pdbgen/pdb/layer.pdb: ditto. Added '$undo' paramaters to
the foo_accessors() functions. Removed $func from foo_accesors()
because we don't manipulate items without using getters/setters
any longer.
* app/pdb/channel_cmds.c
* app/pdb/layer_cmds.c: regenerated.
* app/widgets/gimpcellrenderertoggle.[ch]: added "clicked" signal
which carries an additional "GdkModifierType state" parameter as
in GimpCellRendererViewable .
* app/widgets/gimpcontainertreeview.c: emit "clicked" from
the toggle renderer, not "toggled" so the callbacks get the
modifier state.
* app/widgets/gimpdrawabletreeview.c: resurrected the "exclusive
visible by <shift>+click" feature as in 1.2.
* app/widgets/gimplayertreeview.c: compress layer opacity undos by
looking at the top of the undo stack and not pushing an undo if
there already is a GIMP_UNDO_DRAWABLE_OPACITY for the active
layer.
2003-03-18 02:02:41 +08:00
|
|
|
const gchar *undo_desc,
|
|
|
|
GimpLayer *layer)
|
|
|
|
{
|
2007-01-30 02:49:06 +08:00
|
|
|
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
|
|
|
g_return_val_if_fail (GIMP_IS_LAYER (layer), NULL);
|
|
|
|
g_return_val_if_fail (gimp_item_is_attached (GIMP_ITEM (layer)), NULL);
|
Made drawable/layer properties (visibility, opacity etc.) undoable (fixes
2003-03-17 Michael Natterer <mitch@gimp.org>
Made drawable/layer properties (visibility, opacity etc.)
undoable (fixes bug #73893).
* app/core/core-enums.[ch]: added undo types/groups for
visibility, mode, opacity, linked and preserve_trans.
* app/core/Makefile.am
* app/core/core-types.h
* app/core/gimpitemundo.[ch]: new GimpUndo subclass which holds a
ref'ed GimpItem pointer so (1) this doesn't need to be done by all
undo steps related to an item and (2) the item the undo step is
for can be determined from outside the undo system.
* app/core/gimpimage-undo.[ch]: added gimp_image_undo_push_item()
which returns a new GimpItemUndo.
* app/core/gimpimage-undo-push.[ch]: use it for all item related
undo steps. Removed lots of GimpItem, GimpLayer, GimpDrawable
and GimpVectors pointers from the private undo structs. Added
undo push functions for the new undo types added above.
* app/core/gimpdrawable.[ch] (gimp_drawable_set_visible): added
"gboolean push_undo" parameter.
* app/core/gimplayer.[ch] (gimp_layer_set_opacity, _mode,
_preserve_trans, _linked): added "gboolean push_undo" parameters.
* app/core/gimpimage-mask.c
* app/core/gimpimage-merge.c
* app/core/gimplayer-floating-sel.c
* app/tools/gimpmovetool.c
* app/xcf/xcf-load.c
* app/widgets/gimpdrawablelistitem.c
* app/widgets/gimplayerlistitem.c
* app/widgets/gimplayerlistview.c: changed accordingly.
* tools/pdbgen/pdb/channel.pdb
* tools/pdbgen/pdb/layer.pdb: ditto. Added '$undo' paramaters to
the foo_accessors() functions. Removed $func from foo_accesors()
because we don't manipulate items without using getters/setters
any longer.
* app/pdb/channel_cmds.c
* app/pdb/layer_cmds.c: regenerated.
* app/widgets/gimpcellrenderertoggle.[ch]: added "clicked" signal
which carries an additional "GdkModifierType state" parameter as
in GimpCellRendererViewable .
* app/widgets/gimpcontainertreeview.c: emit "clicked" from
the toggle renderer, not "toggled" so the callbacks get the
modifier state.
* app/widgets/gimpdrawabletreeview.c: resurrected the "exclusive
visible by <shift>+click" feature as in 1.2.
* app/widgets/gimplayertreeview.c: compress layer opacity undos by
looking at the top of the undo stack and not pushing an undo if
there already is a GIMP_UNDO_DRAWABLE_OPACITY for the active
layer.
2003-03-18 02:02:41 +08:00
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
return gimp_image_undo_push (image, GIMP_TYPE_LAYER_PROP_UNDO,
|
|
|
|
0, 0,
|
|
|
|
GIMP_UNDO_LAYER_OPACITY, undo_desc,
|
|
|
|
GIMP_DIRTY_ITEM_META,
|
|
|
|
NULL, NULL,
|
|
|
|
"item", layer,
|
|
|
|
NULL);
|
Made drawable/layer properties (visibility, opacity etc.) undoable (fixes
2003-03-17 Michael Natterer <mitch@gimp.org>
Made drawable/layer properties (visibility, opacity etc.)
undoable (fixes bug #73893).
* app/core/core-enums.[ch]: added undo types/groups for
visibility, mode, opacity, linked and preserve_trans.
* app/core/Makefile.am
* app/core/core-types.h
* app/core/gimpitemundo.[ch]: new GimpUndo subclass which holds a
ref'ed GimpItem pointer so (1) this doesn't need to be done by all
undo steps related to an item and (2) the item the undo step is
for can be determined from outside the undo system.
* app/core/gimpimage-undo.[ch]: added gimp_image_undo_push_item()
which returns a new GimpItemUndo.
* app/core/gimpimage-undo-push.[ch]: use it for all item related
undo steps. Removed lots of GimpItem, GimpLayer, GimpDrawable
and GimpVectors pointers from the private undo structs. Added
undo push functions for the new undo types added above.
* app/core/gimpdrawable.[ch] (gimp_drawable_set_visible): added
"gboolean push_undo" parameter.
* app/core/gimplayer.[ch] (gimp_layer_set_opacity, _mode,
_preserve_trans, _linked): added "gboolean push_undo" parameters.
* app/core/gimpimage-mask.c
* app/core/gimpimage-merge.c
* app/core/gimplayer-floating-sel.c
* app/tools/gimpmovetool.c
* app/xcf/xcf-load.c
* app/widgets/gimpdrawablelistitem.c
* app/widgets/gimplayerlistitem.c
* app/widgets/gimplayerlistview.c: changed accordingly.
* tools/pdbgen/pdb/channel.pdb
* tools/pdbgen/pdb/layer.pdb: ditto. Added '$undo' paramaters to
the foo_accessors() functions. Removed $func from foo_accesors()
because we don't manipulate items without using getters/setters
any longer.
* app/pdb/channel_cmds.c
* app/pdb/layer_cmds.c: regenerated.
* app/widgets/gimpcellrenderertoggle.[ch]: added "clicked" signal
which carries an additional "GdkModifierType state" parameter as
in GimpCellRendererViewable .
* app/widgets/gimpcontainertreeview.c: emit "clicked" from
the toggle renderer, not "toggled" so the callbacks get the
modifier state.
* app/widgets/gimpdrawabletreeview.c: resurrected the "exclusive
visible by <shift>+click" feature as in 1.2.
* app/widgets/gimplayertreeview.c: compress layer opacity undos by
looking at the top of the undo stack and not pushing an undo if
there already is a GIMP_UNDO_DRAWABLE_OPACITY for the active
layer.
2003-03-18 02:02:41 +08:00
|
|
|
}
|
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
GimpUndo *
|
2007-01-29 04:10:45 +08:00
|
|
|
gimp_image_undo_push_layer_lock_alpha (GimpImage *image,
|
|
|
|
const gchar *undo_desc,
|
|
|
|
GimpLayer *layer)
|
Made drawable/layer properties (visibility, opacity etc.) undoable (fixes
2003-03-17 Michael Natterer <mitch@gimp.org>
Made drawable/layer properties (visibility, opacity etc.)
undoable (fixes bug #73893).
* app/core/core-enums.[ch]: added undo types/groups for
visibility, mode, opacity, linked and preserve_trans.
* app/core/Makefile.am
* app/core/core-types.h
* app/core/gimpitemundo.[ch]: new GimpUndo subclass which holds a
ref'ed GimpItem pointer so (1) this doesn't need to be done by all
undo steps related to an item and (2) the item the undo step is
for can be determined from outside the undo system.
* app/core/gimpimage-undo.[ch]: added gimp_image_undo_push_item()
which returns a new GimpItemUndo.
* app/core/gimpimage-undo-push.[ch]: use it for all item related
undo steps. Removed lots of GimpItem, GimpLayer, GimpDrawable
and GimpVectors pointers from the private undo structs. Added
undo push functions for the new undo types added above.
* app/core/gimpdrawable.[ch] (gimp_drawable_set_visible): added
"gboolean push_undo" parameter.
* app/core/gimplayer.[ch] (gimp_layer_set_opacity, _mode,
_preserve_trans, _linked): added "gboolean push_undo" parameters.
* app/core/gimpimage-mask.c
* app/core/gimpimage-merge.c
* app/core/gimplayer-floating-sel.c
* app/tools/gimpmovetool.c
* app/xcf/xcf-load.c
* app/widgets/gimpdrawablelistitem.c
* app/widgets/gimplayerlistitem.c
* app/widgets/gimplayerlistview.c: changed accordingly.
* tools/pdbgen/pdb/channel.pdb
* tools/pdbgen/pdb/layer.pdb: ditto. Added '$undo' paramaters to
the foo_accessors() functions. Removed $func from foo_accesors()
because we don't manipulate items without using getters/setters
any longer.
* app/pdb/channel_cmds.c
* app/pdb/layer_cmds.c: regenerated.
* app/widgets/gimpcellrenderertoggle.[ch]: added "clicked" signal
which carries an additional "GdkModifierType state" parameter as
in GimpCellRendererViewable .
* app/widgets/gimpcontainertreeview.c: emit "clicked" from
the toggle renderer, not "toggled" so the callbacks get the
modifier state.
* app/widgets/gimpdrawabletreeview.c: resurrected the "exclusive
visible by <shift>+click" feature as in 1.2.
* app/widgets/gimplayertreeview.c: compress layer opacity undos by
looking at the top of the undo stack and not pushing an undo if
there already is a GIMP_UNDO_DRAWABLE_OPACITY for the active
layer.
2003-03-18 02:02:41 +08:00
|
|
|
{
|
2007-01-30 02:49:06 +08:00
|
|
|
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
|
|
|
g_return_val_if_fail (GIMP_IS_LAYER (layer), NULL);
|
|
|
|
g_return_val_if_fail (gimp_item_is_attached (GIMP_ITEM (layer)), NULL);
|
Made drawable/layer properties (visibility, opacity etc.) undoable (fixes
2003-03-17 Michael Natterer <mitch@gimp.org>
Made drawable/layer properties (visibility, opacity etc.)
undoable (fixes bug #73893).
* app/core/core-enums.[ch]: added undo types/groups for
visibility, mode, opacity, linked and preserve_trans.
* app/core/Makefile.am
* app/core/core-types.h
* app/core/gimpitemundo.[ch]: new GimpUndo subclass which holds a
ref'ed GimpItem pointer so (1) this doesn't need to be done by all
undo steps related to an item and (2) the item the undo step is
for can be determined from outside the undo system.
* app/core/gimpimage-undo.[ch]: added gimp_image_undo_push_item()
which returns a new GimpItemUndo.
* app/core/gimpimage-undo-push.[ch]: use it for all item related
undo steps. Removed lots of GimpItem, GimpLayer, GimpDrawable
and GimpVectors pointers from the private undo structs. Added
undo push functions for the new undo types added above.
* app/core/gimpdrawable.[ch] (gimp_drawable_set_visible): added
"gboolean push_undo" parameter.
* app/core/gimplayer.[ch] (gimp_layer_set_opacity, _mode,
_preserve_trans, _linked): added "gboolean push_undo" parameters.
* app/core/gimpimage-mask.c
* app/core/gimpimage-merge.c
* app/core/gimplayer-floating-sel.c
* app/tools/gimpmovetool.c
* app/xcf/xcf-load.c
* app/widgets/gimpdrawablelistitem.c
* app/widgets/gimplayerlistitem.c
* app/widgets/gimplayerlistview.c: changed accordingly.
* tools/pdbgen/pdb/channel.pdb
* tools/pdbgen/pdb/layer.pdb: ditto. Added '$undo' paramaters to
the foo_accessors() functions. Removed $func from foo_accesors()
because we don't manipulate items without using getters/setters
any longer.
* app/pdb/channel_cmds.c
* app/pdb/layer_cmds.c: regenerated.
* app/widgets/gimpcellrenderertoggle.[ch]: added "clicked" signal
which carries an additional "GdkModifierType state" parameter as
in GimpCellRendererViewable .
* app/widgets/gimpcontainertreeview.c: emit "clicked" from
the toggle renderer, not "toggled" so the callbacks get the
modifier state.
* app/widgets/gimpdrawabletreeview.c: resurrected the "exclusive
visible by <shift>+click" feature as in 1.2.
* app/widgets/gimplayertreeview.c: compress layer opacity undos by
looking at the top of the undo stack and not pushing an undo if
there already is a GIMP_UNDO_DRAWABLE_OPACITY for the active
layer.
2003-03-18 02:02:41 +08:00
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
return gimp_image_undo_push (image, GIMP_TYPE_LAYER_PROP_UNDO,
|
|
|
|
0, 0,
|
|
|
|
GIMP_UNDO_LAYER_LOCK_ALPHA, undo_desc,
|
|
|
|
GIMP_DIRTY_ITEM_META,
|
|
|
|
NULL, NULL,
|
|
|
|
"item", layer,
|
|
|
|
NULL);
|
Made drawable/layer properties (visibility, opacity etc.) undoable (fixes
2003-03-17 Michael Natterer <mitch@gimp.org>
Made drawable/layer properties (visibility, opacity etc.)
undoable (fixes bug #73893).
* app/core/core-enums.[ch]: added undo types/groups for
visibility, mode, opacity, linked and preserve_trans.
* app/core/Makefile.am
* app/core/core-types.h
* app/core/gimpitemundo.[ch]: new GimpUndo subclass which holds a
ref'ed GimpItem pointer so (1) this doesn't need to be done by all
undo steps related to an item and (2) the item the undo step is
for can be determined from outside the undo system.
* app/core/gimpimage-undo.[ch]: added gimp_image_undo_push_item()
which returns a new GimpItemUndo.
* app/core/gimpimage-undo-push.[ch]: use it for all item related
undo steps. Removed lots of GimpItem, GimpLayer, GimpDrawable
and GimpVectors pointers from the private undo structs. Added
undo push functions for the new undo types added above.
* app/core/gimpdrawable.[ch] (gimp_drawable_set_visible): added
"gboolean push_undo" parameter.
* app/core/gimplayer.[ch] (gimp_layer_set_opacity, _mode,
_preserve_trans, _linked): added "gboolean push_undo" parameters.
* app/core/gimpimage-mask.c
* app/core/gimpimage-merge.c
* app/core/gimplayer-floating-sel.c
* app/tools/gimpmovetool.c
* app/xcf/xcf-load.c
* app/widgets/gimpdrawablelistitem.c
* app/widgets/gimplayerlistitem.c
* app/widgets/gimplayerlistview.c: changed accordingly.
* tools/pdbgen/pdb/channel.pdb
* tools/pdbgen/pdb/layer.pdb: ditto. Added '$undo' paramaters to
the foo_accessors() functions. Removed $func from foo_accesors()
because we don't manipulate items without using getters/setters
any longer.
* app/pdb/channel_cmds.c
* app/pdb/layer_cmds.c: regenerated.
* app/widgets/gimpcellrenderertoggle.[ch]: added "clicked" signal
which carries an additional "GdkModifierType state" parameter as
in GimpCellRendererViewable .
* app/widgets/gimpcontainertreeview.c: emit "clicked" from
the toggle renderer, not "toggled" so the callbacks get the
modifier state.
* app/widgets/gimpdrawabletreeview.c: resurrected the "exclusive
visible by <shift>+click" feature as in 1.2.
* app/widgets/gimplayertreeview.c: compress layer opacity undos by
looking at the top of the undo stack and not pushing an undo if
there already is a GIMP_UNDO_DRAWABLE_OPACITY for the active
layer.
2003-03-18 02:02:41 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-01-30 23:08:59 +08:00
|
|
|
/**********************/
|
|
|
|
/* Text Layer Undos */
|
|
|
|
/**********************/
|
2004-01-05 08:28:12 +08:00
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
GimpUndo *
|
2006-03-29 01:08:36 +08:00
|
|
|
gimp_image_undo_push_text_layer (GimpImage *image,
|
2004-03-21 01:21:48 +08:00
|
|
|
const gchar *undo_desc,
|
|
|
|
GimpTextLayer *layer,
|
|
|
|
const GParamSpec *pspec)
|
2004-01-05 08:28:12 +08:00
|
|
|
{
|
2007-01-30 02:49:06 +08:00
|
|
|
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
|
|
|
g_return_val_if_fail (GIMP_IS_TEXT_LAYER (layer), NULL);
|
|
|
|
g_return_val_if_fail (gimp_item_is_attached (GIMP_ITEM (layer)), NULL);
|
2004-03-21 01:21:48 +08:00
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
return gimp_image_undo_push (image, GIMP_TYPE_TEXT_UNDO,
|
|
|
|
0, 0,
|
|
|
|
GIMP_UNDO_TEXT_LAYER, undo_desc,
|
|
|
|
GIMP_DIRTY_ITEM | GIMP_DIRTY_DRAWABLE,
|
|
|
|
NULL, NULL,
|
|
|
|
"item", layer,
|
|
|
|
"param", pspec,
|
|
|
|
NULL);
|
2004-01-05 08:28:12 +08:00
|
|
|
}
|
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
GimpUndo *
|
2006-03-29 01:08:36 +08:00
|
|
|
gimp_image_undo_push_text_layer_modified (GimpImage *image,
|
2004-04-01 22:51:58 +08:00
|
|
|
const gchar *undo_desc,
|
|
|
|
GimpTextLayer *layer)
|
|
|
|
{
|
2007-01-30 02:49:06 +08:00
|
|
|
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
|
|
|
g_return_val_if_fail (GIMP_IS_TEXT_LAYER (layer), NULL);
|
|
|
|
g_return_val_if_fail (gimp_item_is_attached (GIMP_ITEM (layer)), NULL);
|
2004-04-01 22:51:58 +08:00
|
|
|
|
2007-01-30 23:08:59 +08:00
|
|
|
return gimp_image_undo_push (image, GIMP_TYPE_TEXT_UNDO,
|
|
|
|
0, 0,
|
|
|
|
GIMP_UNDO_TEXT_LAYER_MODIFIED, undo_desc,
|
|
|
|
GIMP_DIRTY_ITEM_META,
|
|
|
|
NULL, NULL,
|
|
|
|
"item", layer,
|
|
|
|
NULL);
|
2004-04-01 22:51:58 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2005-03-25 06:15:10 +08:00
|
|
|
/********************************/
|
|
|
|
/* Layer Mask Add/Remove Undo */
|
|
|
|
/********************************/
|
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
GimpUndo *
|
2006-03-29 01:08:36 +08:00
|
|
|
gimp_image_undo_push_layer_mask_add (GimpImage *image,
|
2005-03-25 06:15:10 +08:00
|
|
|
const gchar *undo_desc,
|
|
|
|
GimpLayer *layer,
|
|
|
|
GimpLayerMask *mask)
|
|
|
|
{
|
2007-01-30 02:49:06 +08:00
|
|
|
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
|
|
|
g_return_val_if_fail (GIMP_IS_LAYER (layer), NULL);
|
|
|
|
g_return_val_if_fail (gimp_item_is_attached (GIMP_ITEM (layer)), NULL);
|
|
|
|
g_return_val_if_fail (GIMP_IS_LAYER_MASK (mask), NULL);
|
|
|
|
g_return_val_if_fail (! gimp_item_is_attached (GIMP_ITEM (mask)), NULL);
|
2005-03-25 06:15:10 +08:00
|
|
|
|
2007-01-31 20:33:03 +08:00
|
|
|
return gimp_image_undo_push (image, GIMP_TYPE_LAYER_MASK_UNDO,
|
|
|
|
0, 0,
|
|
|
|
GIMP_UNDO_LAYER_MASK_ADD, undo_desc,
|
|
|
|
GIMP_DIRTY_IMAGE_STRUCTURE,
|
|
|
|
NULL, NULL,
|
|
|
|
"item", layer,
|
|
|
|
"layer-mask", mask,
|
|
|
|
NULL);
|
2005-03-25 06:15:10 +08:00
|
|
|
}
|
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
GimpUndo *
|
2006-03-29 01:08:36 +08:00
|
|
|
gimp_image_undo_push_layer_mask_remove (GimpImage *image,
|
2005-03-25 06:15:10 +08:00
|
|
|
const gchar *undo_desc,
|
|
|
|
GimpLayer *layer,
|
|
|
|
GimpLayerMask *mask)
|
|
|
|
{
|
2007-01-30 02:49:06 +08:00
|
|
|
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
|
|
|
g_return_val_if_fail (GIMP_IS_LAYER (layer), NULL);
|
|
|
|
g_return_val_if_fail (gimp_item_is_attached (GIMP_ITEM (layer)), NULL);
|
|
|
|
g_return_val_if_fail (GIMP_IS_LAYER_MASK (mask), NULL);
|
|
|
|
g_return_val_if_fail (gimp_item_is_attached (GIMP_ITEM (mask)), NULL);
|
2007-01-31 20:33:03 +08:00
|
|
|
g_return_val_if_fail (gimp_layer_mask_get_layer (mask) == layer, NULL);
|
|
|
|
g_return_val_if_fail (gimp_layer_get_mask (layer) == mask, NULL);
|
2005-03-25 06:15:10 +08:00
|
|
|
|
2007-01-31 20:33:03 +08:00
|
|
|
return gimp_image_undo_push (image, GIMP_TYPE_LAYER_MASK_UNDO,
|
|
|
|
0, 0,
|
|
|
|
GIMP_UNDO_LAYER_MASK_REMOVE, undo_desc,
|
|
|
|
GIMP_DIRTY_IMAGE_STRUCTURE,
|
|
|
|
NULL, NULL,
|
|
|
|
"item", layer,
|
|
|
|
"layer-mask", mask,
|
|
|
|
NULL);
|
2005-03-25 06:15:10 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-02-01 02:50:39 +08:00
|
|
|
/*******************************/
|
|
|
|
/* Layer Mask Property Undos */
|
|
|
|
/*******************************/
|
2007-01-30 02:49:06 +08:00
|
|
|
|
|
|
|
GimpUndo *
|
2006-03-29 01:08:36 +08:00
|
|
|
gimp_image_undo_push_layer_mask_apply (GimpImage *image,
|
2005-03-25 06:15:10 +08:00
|
|
|
const gchar *undo_desc,
|
|
|
|
GimpLayerMask *mask)
|
|
|
|
{
|
2007-02-01 02:50:39 +08:00
|
|
|
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
|
|
|
g_return_val_if_fail (GIMP_IS_LAYER_MASK (mask), NULL);
|
|
|
|
g_return_val_if_fail (gimp_item_is_attached (GIMP_ITEM (mask)), NULL);
|
|
|
|
|
|
|
|
return gimp_image_undo_push (image, GIMP_TYPE_LAYER_MASK_PROP_UNDO,
|
|
|
|
0, 0,
|
|
|
|
GIMP_UNDO_LAYER_MASK_APPLY, undo_desc,
|
|
|
|
GIMP_DIRTY_ITEM_META,
|
|
|
|
NULL, NULL,
|
|
|
|
"item", mask,
|
|
|
|
NULL);
|
2005-03-25 06:15:10 +08:00
|
|
|
}
|
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
GimpUndo *
|
2006-03-29 01:08:36 +08:00
|
|
|
gimp_image_undo_push_layer_mask_show (GimpImage *image,
|
2005-03-25 06:15:10 +08:00
|
|
|
const gchar *undo_desc,
|
|
|
|
GimpLayerMask *mask)
|
|
|
|
{
|
2007-01-30 02:49:06 +08:00
|
|
|
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
|
|
|
g_return_val_if_fail (GIMP_IS_LAYER_MASK (mask), NULL);
|
|
|
|
g_return_val_if_fail (gimp_item_is_attached (GIMP_ITEM (mask)), NULL);
|
2005-03-25 06:15:10 +08:00
|
|
|
|
2007-02-01 02:50:39 +08:00
|
|
|
return gimp_image_undo_push (image, GIMP_TYPE_LAYER_MASK_PROP_UNDO,
|
|
|
|
0, 0,
|
|
|
|
GIMP_UNDO_LAYER_MASK_SHOW, undo_desc,
|
|
|
|
GIMP_DIRTY_ITEM_META,
|
|
|
|
NULL, NULL,
|
|
|
|
"item", mask,
|
|
|
|
NULL);
|
2005-03-25 06:15:10 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2002-02-24 01:29:19 +08:00
|
|
|
/*****************************/
|
|
|
|
/* Add/Remove Channel Undo */
|
2003-02-13 01:11:34 +08:00
|
|
|
/*****************************/
|
2002-02-24 01:29:19 +08:00
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
GimpUndo *
|
2006-03-29 01:08:36 +08:00
|
|
|
gimp_image_undo_push_channel_add (GimpImage *image,
|
2003-02-14 22:14:29 +08:00
|
|
|
const gchar *undo_desc,
|
|
|
|
GimpChannel *channel,
|
|
|
|
GimpChannel *prev_channel)
|
2002-02-24 01:29:19 +08:00
|
|
|
{
|
2007-01-30 02:49:06 +08:00
|
|
|
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
|
|
|
g_return_val_if_fail (GIMP_IS_CHANNEL (channel), NULL);
|
|
|
|
g_return_val_if_fail (! gimp_item_is_attached (GIMP_ITEM (channel)), NULL);
|
2004-11-12 18:56:23 +08:00
|
|
|
g_return_val_if_fail (prev_channel == NULL || GIMP_IS_CHANNEL (prev_channel),
|
2007-01-30 02:49:06 +08:00
|
|
|
NULL);
|
2004-11-12 18:56:23 +08:00
|
|
|
|
2007-01-31 20:33:03 +08:00
|
|
|
return gimp_image_undo_push (image, GIMP_TYPE_CHANNEL_UNDO,
|
|
|
|
0, 0,
|
|
|
|
GIMP_UNDO_CHANNEL_ADD, undo_desc,
|
|
|
|
GIMP_DIRTY_IMAGE_STRUCTURE,
|
|
|
|
NULL, NULL,
|
|
|
|
"item", channel,
|
|
|
|
"prev-channel", prev_channel,
|
|
|
|
NULL);
|
2002-02-24 01:29:19 +08:00
|
|
|
}
|
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
GimpUndo *
|
2006-03-29 01:08:36 +08:00
|
|
|
gimp_image_undo_push_channel_remove (GimpImage *image,
|
2003-02-14 22:14:29 +08:00
|
|
|
const gchar *undo_desc,
|
|
|
|
GimpChannel *channel,
|
|
|
|
gint prev_position,
|
|
|
|
GimpChannel *prev_channel)
|
2002-02-24 01:29:19 +08:00
|
|
|
{
|
2007-01-30 02:49:06 +08:00
|
|
|
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
|
|
|
g_return_val_if_fail (GIMP_IS_CHANNEL (channel), NULL);
|
|
|
|
g_return_val_if_fail (gimp_item_is_attached (GIMP_ITEM (channel)), NULL);
|
2004-11-12 18:56:23 +08:00
|
|
|
g_return_val_if_fail (prev_channel == NULL || GIMP_IS_CHANNEL (prev_channel),
|
2007-01-30 02:49:06 +08:00
|
|
|
NULL);
|
2004-11-12 18:56:23 +08:00
|
|
|
|
2007-01-31 20:33:03 +08:00
|
|
|
return gimp_image_undo_push (image, GIMP_TYPE_CHANNEL_UNDO,
|
|
|
|
0, 0,
|
|
|
|
GIMP_UNDO_CHANNEL_REMOVE, undo_desc,
|
|
|
|
GIMP_DIRTY_IMAGE_STRUCTURE,
|
|
|
|
NULL, NULL,
|
|
|
|
"item", channel,
|
|
|
|
"prev-position", prev_position,
|
|
|
|
"prev-channel", prev_channel,
|
|
|
|
NULL);
|
1997-11-25 06:05:25 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-01-30 20:32:14 +08:00
|
|
|
/****************************/
|
|
|
|
/* Channel Property Undos */
|
|
|
|
/****************************/
|
2002-02-24 01:29:19 +08:00
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
GimpUndo *
|
2006-03-29 01:08:36 +08:00
|
|
|
gimp_image_undo_push_channel_reposition (GimpImage *image,
|
2003-02-14 22:14:29 +08:00
|
|
|
const gchar *undo_desc,
|
|
|
|
GimpChannel *channel)
|
2002-02-24 01:29:19 +08:00
|
|
|
{
|
2007-01-30 02:49:06 +08:00
|
|
|
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
|
|
|
g_return_val_if_fail (GIMP_IS_CHANNEL (channel), NULL);
|
|
|
|
g_return_val_if_fail (gimp_item_is_attached (GIMP_ITEM (channel)), NULL);
|
2002-02-24 01:29:19 +08:00
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
return gimp_image_undo_push (image, GIMP_TYPE_CHANNEL_PROP_UNDO,
|
|
|
|
0, 0,
|
|
|
|
GIMP_UNDO_CHANNEL_REPOSITION, undo_desc,
|
|
|
|
GIMP_DIRTY_IMAGE_STRUCTURE,
|
|
|
|
NULL, NULL,
|
|
|
|
"item", channel,
|
|
|
|
NULL);
|
2002-02-24 01:29:19 +08:00
|
|
|
}
|
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
GimpUndo *
|
2006-03-29 01:08:36 +08:00
|
|
|
gimp_image_undo_push_channel_color (GimpImage *image,
|
2003-03-17 10:25:39 +08:00
|
|
|
const gchar *undo_desc,
|
|
|
|
GimpChannel *channel)
|
|
|
|
{
|
2007-01-30 02:49:06 +08:00
|
|
|
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
|
|
|
g_return_val_if_fail (GIMP_IS_CHANNEL (channel), NULL);
|
|
|
|
g_return_val_if_fail (gimp_item_is_attached (GIMP_ITEM (channel)), NULL);
|
2003-03-17 10:25:39 +08:00
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
return gimp_image_undo_push (image, GIMP_TYPE_CHANNEL_PROP_UNDO,
|
|
|
|
0, 0,
|
|
|
|
GIMP_UNDO_CHANNEL_COLOR, undo_desc,
|
|
|
|
GIMP_DIRTY_ITEM | GIMP_DIRTY_DRAWABLE,
|
|
|
|
NULL, NULL,
|
|
|
|
"item", channel,
|
|
|
|
NULL);
|
2003-03-17 10:25:39 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2002-02-25 05:00:58 +08:00
|
|
|
/*****************************/
|
|
|
|
/* Add/Remove Vectors Undo */
|
2003-02-13 01:11:34 +08:00
|
|
|
/*****************************/
|
2002-02-25 05:00:58 +08:00
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
GimpUndo *
|
2006-03-29 01:08:36 +08:00
|
|
|
gimp_image_undo_push_vectors_add (GimpImage *image,
|
2003-02-14 22:14:29 +08:00
|
|
|
const gchar *undo_desc,
|
|
|
|
GimpVectors *vectors,
|
|
|
|
GimpVectors *prev_vectors)
|
2002-02-25 05:00:58 +08:00
|
|
|
{
|
2007-01-30 02:49:06 +08:00
|
|
|
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
|
|
|
g_return_val_if_fail (GIMP_IS_VECTORS (vectors), NULL);
|
|
|
|
g_return_val_if_fail (! gimp_item_is_attached (GIMP_ITEM (vectors)), NULL);
|
2004-11-12 18:56:23 +08:00
|
|
|
g_return_val_if_fail (prev_vectors == NULL || GIMP_IS_VECTORS (prev_vectors),
|
2007-01-30 02:49:06 +08:00
|
|
|
NULL);
|
2004-11-12 18:56:23 +08:00
|
|
|
|
2007-01-31 20:33:03 +08:00
|
|
|
return gimp_image_undo_push (image, GIMP_TYPE_VECTORS_UNDO,
|
|
|
|
0, 0,
|
|
|
|
GIMP_UNDO_VECTORS_ADD, undo_desc,
|
|
|
|
GIMP_DIRTY_IMAGE_STRUCTURE,
|
|
|
|
NULL, NULL,
|
|
|
|
"item", vectors,
|
|
|
|
"prev-vectors", prev_vectors,
|
|
|
|
NULL);
|
2002-02-25 05:00:58 +08:00
|
|
|
}
|
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
GimpUndo *
|
2006-03-29 01:08:36 +08:00
|
|
|
gimp_image_undo_push_vectors_remove (GimpImage *image,
|
2003-02-14 22:14:29 +08:00
|
|
|
const gchar *undo_desc,
|
|
|
|
GimpVectors *vectors,
|
|
|
|
gint prev_position,
|
|
|
|
GimpVectors *prev_vectors)
|
2002-02-25 05:00:58 +08:00
|
|
|
{
|
2007-01-30 02:49:06 +08:00
|
|
|
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
|
|
|
g_return_val_if_fail (GIMP_IS_VECTORS (vectors), NULL);
|
|
|
|
g_return_val_if_fail (gimp_item_is_attached (GIMP_ITEM (vectors)), NULL);
|
2004-11-12 18:56:23 +08:00
|
|
|
g_return_val_if_fail (prev_vectors == NULL || GIMP_IS_VECTORS (prev_vectors),
|
2007-01-30 02:49:06 +08:00
|
|
|
NULL);
|
2004-11-12 18:56:23 +08:00
|
|
|
|
2007-01-31 20:33:03 +08:00
|
|
|
return gimp_image_undo_push (image, GIMP_TYPE_VECTORS_UNDO,
|
|
|
|
0, 0,
|
|
|
|
GIMP_UNDO_VECTORS_REMOVE, undo_desc,
|
|
|
|
GIMP_DIRTY_IMAGE_STRUCTURE,
|
|
|
|
NULL, NULL,
|
|
|
|
"item", vectors,
|
|
|
|
"prev-position", prev_position,
|
|
|
|
"prev-vectors", prev_vectors,
|
|
|
|
NULL);
|
2002-02-25 05:00:58 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**********************/
|
|
|
|
/* Vectors Mod Undo */
|
2003-02-13 01:11:34 +08:00
|
|
|
/**********************/
|
2002-02-25 05:00:58 +08:00
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
GimpUndo *
|
2006-03-29 01:08:36 +08:00
|
|
|
gimp_image_undo_push_vectors_mod (GimpImage *image,
|
2003-02-14 22:14:29 +08:00
|
|
|
const gchar *undo_desc,
|
|
|
|
GimpVectors *vectors)
|
2002-02-25 05:00:58 +08:00
|
|
|
{
|
2007-01-30 02:49:06 +08:00
|
|
|
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
|
|
|
g_return_val_if_fail (GIMP_IS_VECTORS (vectors), NULL);
|
|
|
|
g_return_val_if_fail (gimp_item_is_attached (GIMP_ITEM (vectors)), NULL);
|
2003-02-14 22:14:29 +08:00
|
|
|
|
2007-02-01 03:56:41 +08:00
|
|
|
return gimp_image_undo_push (image, GIMP_TYPE_VECTORS_MOD_UNDO,
|
|
|
|
0, 0,
|
|
|
|
GIMP_UNDO_VECTORS_MOD, undo_desc,
|
|
|
|
GIMP_DIRTY_ITEM | GIMP_DIRTY_VECTORS,
|
|
|
|
NULL, NULL,
|
|
|
|
"item", vectors,
|
|
|
|
NULL);
|
2002-02-25 05:00:58 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/******************************/
|
2007-01-31 06:06:55 +08:00
|
|
|
/* Vectors Properties Undos */
|
2003-02-13 01:11:34 +08:00
|
|
|
/******************************/
|
2002-02-25 05:00:58 +08:00
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
GimpUndo *
|
2006-03-29 01:08:36 +08:00
|
|
|
gimp_image_undo_push_vectors_reposition (GimpImage *image,
|
2003-02-14 22:14:29 +08:00
|
|
|
const gchar *undo_desc,
|
|
|
|
GimpVectors *vectors)
|
2002-02-25 05:00:58 +08:00
|
|
|
{
|
2007-01-30 02:49:06 +08:00
|
|
|
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
|
|
|
g_return_val_if_fail (GIMP_IS_VECTORS (vectors), NULL);
|
|
|
|
g_return_val_if_fail (gimp_item_is_attached (GIMP_ITEM (vectors)), NULL);
|
2003-02-14 22:14:29 +08:00
|
|
|
|
2007-01-31 06:06:55 +08:00
|
|
|
return gimp_image_undo_push (image, GIMP_TYPE_VECTORS_PROP_UNDO,
|
|
|
|
0, 0,
|
|
|
|
GIMP_UNDO_VECTORS_REPOSITION, undo_desc,
|
|
|
|
GIMP_DIRTY_IMAGE_STRUCTURE,
|
|
|
|
NULL, NULL,
|
|
|
|
"item", vectors,
|
|
|
|
NULL);
|
2002-02-24 01:29:19 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
1997-11-25 06:05:25 +08:00
|
|
|
/**************************************/
|
|
|
|
/* Floating Selection to Layer Undo */
|
2003-02-13 01:11:34 +08:00
|
|
|
/**************************************/
|
1997-11-25 06:05:25 +08:00
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
GimpUndo *
|
2006-03-29 01:08:36 +08:00
|
|
|
gimp_image_undo_push_fs_to_layer (GimpImage *image,
|
2003-02-14 22:14:29 +08:00
|
|
|
const gchar *undo_desc,
|
2007-02-01 05:54:17 +08:00
|
|
|
GimpLayer *floating_layer)
|
2002-02-24 01:29:19 +08:00
|
|
|
{
|
2007-02-04 05:58:12 +08:00
|
|
|
GimpUndo *undo;
|
2002-02-24 01:29:19 +08:00
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
|
|
|
g_return_val_if_fail (GIMP_IS_LAYER (floating_layer), NULL);
|
2003-02-14 22:14:29 +08:00
|
|
|
|
2007-02-04 05:58:12 +08:00
|
|
|
undo = gimp_image_undo_push (image, GIMP_TYPE_FLOATING_SEL_UNDO,
|
|
|
|
0, 0,
|
|
|
|
GIMP_UNDO_FS_TO_LAYER, undo_desc,
|
|
|
|
GIMP_DIRTY_IMAGE_STRUCTURE,
|
|
|
|
NULL, NULL,
|
|
|
|
"item", floating_layer,
|
|
|
|
NULL);
|
1997-11-25 06:05:25 +08:00
|
|
|
|
2007-02-04 05:58:12 +08:00
|
|
|
if (! undo)
|
2001-11-10 00:54:56 +08:00
|
|
|
{
|
2007-02-04 05:58:12 +08:00
|
|
|
tile_manager_unref (floating_layer->fs.backing_store);
|
|
|
|
floating_layer->fs.backing_store = NULL;
|
2001-11-10 00:54:56 +08:00
|
|
|
}
|
|
|
|
|
2007-02-04 05:58:12 +08:00
|
|
|
return undo;
|
1997-11-25 06:05:25 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-02-01 05:05:43 +08:00
|
|
|
/******************************************/
|
|
|
|
/* Floating Selection Rigor/Relax Undos */
|
|
|
|
/******************************************/
|
2002-02-24 01:29:19 +08:00
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
GimpUndo *
|
2006-03-29 01:08:36 +08:00
|
|
|
gimp_image_undo_push_fs_rigor (GimpImage *image,
|
2003-02-14 22:14:29 +08:00
|
|
|
const gchar *undo_desc,
|
|
|
|
GimpLayer *floating_layer)
|
1997-11-25 06:05:25 +08:00
|
|
|
{
|
2007-01-30 02:49:06 +08:00
|
|
|
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
|
|
|
g_return_val_if_fail (GIMP_IS_LAYER (floating_layer), NULL);
|
2003-02-14 22:14:29 +08:00
|
|
|
|
2007-02-01 05:05:43 +08:00
|
|
|
return gimp_image_undo_push (image, GIMP_TYPE_FLOATING_SEL_UNDO,
|
|
|
|
0, 0,
|
|
|
|
GIMP_UNDO_FS_RIGOR, undo_desc,
|
|
|
|
GIMP_DIRTY_NONE,
|
|
|
|
NULL, NULL,
|
|
|
|
"item", floating_layer,
|
|
|
|
NULL);
|
1997-11-25 06:05:25 +08:00
|
|
|
}
|
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
GimpUndo *
|
2006-03-29 01:08:36 +08:00
|
|
|
gimp_image_undo_push_fs_relax (GimpImage *image,
|
2003-02-14 22:14:29 +08:00
|
|
|
const gchar *undo_desc,
|
|
|
|
GimpLayer *floating_layer)
|
1997-11-25 06:05:25 +08:00
|
|
|
{
|
2007-01-30 02:49:06 +08:00
|
|
|
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
|
|
|
g_return_val_if_fail (GIMP_IS_LAYER (floating_layer), NULL);
|
2003-02-14 22:14:29 +08:00
|
|
|
|
2007-02-01 05:05:43 +08:00
|
|
|
return gimp_image_undo_push (image, GIMP_TYPE_FLOATING_SEL_UNDO,
|
|
|
|
0, 0,
|
|
|
|
GIMP_UNDO_FS_RELAX, undo_desc,
|
|
|
|
GIMP_DIRTY_NONE,
|
|
|
|
NULL, NULL,
|
|
|
|
"item", floating_layer,
|
|
|
|
NULL);
|
1997-11-25 06:05:25 +08:00
|
|
|
}
|
|
|
|
|
1999-04-23 14:07:09 +08:00
|
|
|
|
2002-02-24 01:29:19 +08:00
|
|
|
/******************************************************************************/
|
|
|
|
/* Something for which programmer is too lazy to write an undo function for */
|
2003-02-13 01:11:34 +08:00
|
|
|
/******************************************************************************/
|
1999-08-23 22:34:58 +08:00
|
|
|
|
2007-02-04 05:58:12 +08:00
|
|
|
static void
|
|
|
|
undo_pop_cantundo (GimpUndo *undo,
|
|
|
|
GimpUndoMode undo_mode,
|
|
|
|
GimpUndoAccumulator *accum)
|
|
|
|
{
|
|
|
|
switch (undo_mode)
|
|
|
|
{
|
|
|
|
case GIMP_UNDO_MODE_UNDO:
|
|
|
|
gimp_message (undo->image->gimp, NULL, GIMP_MESSAGE_WARNING,
|
|
|
|
_("Can't undo %s"), GIMP_OBJECT (undo)->name);
|
|
|
|
break;
|
|
|
|
|
|
|
|
case GIMP_UNDO_MODE_REDO:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
1999-08-23 22:34:58 +08:00
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
GimpUndo *
|
2006-03-29 01:08:36 +08:00
|
|
|
gimp_image_undo_push_cantundo (GimpImage *image,
|
2003-02-14 22:14:29 +08:00
|
|
|
const gchar *undo_desc)
|
1999-08-23 22:34:58 +08:00
|
|
|
{
|
2007-02-04 05:58:12 +08:00
|
|
|
GimpUndo *undo;
|
|
|
|
|
2007-01-30 02:49:06 +08:00
|
|
|
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
2003-02-14 22:14:29 +08:00
|
|
|
|
2000-01-26 07:06:12 +08:00
|
|
|
/* This is the sole purpose of this type of undo: the ability to
|
|
|
|
* mark an image as having been mutated, without really providing
|
2002-02-24 01:29:19 +08:00
|
|
|
* any adequate undo facility.
|
|
|
|
*/
|
1999-08-23 22:34:58 +08:00
|
|
|
|
2007-02-04 05:58:12 +08:00
|
|
|
undo = gimp_image_undo_push (image, GIMP_TYPE_UNDO,
|
2007-01-30 02:49:06 +08:00
|
|
|
0, 0,
|
|
|
|
GIMP_UNDO_CANT, undo_desc,
|
|
|
|
GIMP_DIRTY_ALL,
|
2007-02-04 05:58:12 +08:00
|
|
|
NULL, NULL,
|
2007-01-30 02:49:06 +08:00
|
|
|
NULL);
|
1999-08-23 22:34:58 +08:00
|
|
|
|
2007-02-04 05:58:12 +08:00
|
|
|
if (undo)
|
|
|
|
g_signal_connect (undo, "pop",
|
|
|
|
G_CALLBACK (undo_pop_cantundo),
|
|
|
|
NULL);
|
1999-08-23 22:34:58 +08:00
|
|
|
|
2007-02-04 05:58:12 +08:00
|
|
|
return undo;
|
1999-08-23 22:34:58 +08:00
|
|
|
}
|