[gimp] Add actions and callbacks to toggle "lock-content" on drawables and vectors
- From: Michael Natterer <mitch src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gimp] Add actions and callbacks to toggle "lock-content" on drawables and vectors
- Date: Thu, 20 Aug 2009 19:22:39 +0000 (UTC)
commit 35a7052b8d2f888a6b54ca36500de80e707763fe
Author: Michael Natterer <mitch gimp org>
Date: Thu Aug 20 21:19:43 2009 +0200
Add actions and callbacks to toggle "lock-content" on drawables and vectors
app/actions/drawable-actions.c | 32 ++++++++++++++++++++++----------
app/actions/drawable-commands.c | 35 +++++++++++++++++++++++++++++++++++
app/actions/drawable-commands.h | 2 ++
app/actions/vectors-actions.c | 22 ++++++++++++++++------
app/actions/vectors-commands.c | 31 +++++++++++++++++++++++++++++++
app/actions/vectors-commands.h | 2 ++
6 files changed, 108 insertions(+), 16 deletions(-)
---
diff --git a/app/actions/drawable-actions.c b/app/actions/drawable-actions.c
index 88a636b..9da91d4 100644
--- a/app/actions/drawable-actions.c
+++ b/app/actions/drawable-actions.c
@@ -69,6 +69,13 @@ static const GimpActionEntry drawable_actions[] =
static const GimpToggleActionEntry drawable_toggle_actions[] =
{
+ { "drawable-visible", GIMP_STOCK_VISIBLE,
+ NC_("drawable-action", "_Visible"), NULL,
+ NC_("drawable-action", "Toggle visibility"),
+ G_CALLBACK (drawable_visible_cmd_callback),
+ FALSE,
+ GIMP_HELP_LAYER_VISIBLE },
+
{ "drawable-linked", GIMP_STOCK_LINKED,
NC_("drawable-action", "_Linked"), NULL,
NC_("drawable-action", "Toggle the linked state"),
@@ -76,12 +83,13 @@ static const GimpToggleActionEntry drawable_toggle_actions[] =
FALSE,
GIMP_HELP_LAYER_LINKED },
- { "drawable-visible", GIMP_STOCK_VISIBLE,
- NC_("drawable-action", "_Visible"), NULL,
- NC_("drawable-action", "Toggle visibility"),
- G_CALLBACK (drawable_visible_cmd_callback),
+ { "drawable-lock-content", NULL /* GIMP_STOCK_LOCK */,
+ NC_("drawable-action", "L_ock pixels"), NULL,
+ NC_("drawable-action",
+ "Keep the pixels on this drawable from being modified"),
+ G_CALLBACK (drawable_lock_content_cmd_callback),
FALSE,
- GIMP_HELP_LAYER_VISIBLE }
+ NULL, /* GIMP_HELP_LAYER_LOCK_PIXELS */ }
};
static const GimpEnumActionEntry drawable_flip_actions[] =
@@ -154,6 +162,7 @@ drawable_actions_update (GimpActionGroup *group,
gboolean is_indexed = FALSE;
gboolean visible = FALSE;
gboolean linked = FALSE;
+ gboolean locked = FALSE;
gboolean writable = FALSE;
image = action_data_get_image (data);
@@ -178,7 +187,8 @@ drawable_actions_update (GimpActionGroup *group,
visible = gimp_item_get_visible (item);
linked = gimp_item_get_linked (item);
- writable = ! gimp_item_get_lock_content (item);
+ locked = gimp_item_get_lock_content (item);
+ writable = ! locked;
}
}
@@ -192,11 +202,13 @@ drawable_actions_update (GimpActionGroup *group,
SET_SENSITIVE ("drawable-levels-stretch", writable && is_rgb);
SET_SENSITIVE ("drawable-offset", writable);
- SET_SENSITIVE ("drawable-visible", drawable);
- SET_SENSITIVE ("drawable-linked", drawable);
+ SET_SENSITIVE ("drawable-visible", drawable);
+ SET_SENSITIVE ("drawable-linked", drawable);
+ SET_SENSITIVE ("drawable-lock-content", drawable);
- SET_ACTIVE ("drawable-visible", visible);
- SET_ACTIVE ("drawable-linked", linked);
+ SET_ACTIVE ("drawable-visible", visible);
+ SET_ACTIVE ("drawable-linked", linked);
+ SET_ACTIVE ("drawable-lock-content", locked);
SET_SENSITIVE ("drawable-flip-horizontal", writable);
SET_SENSITIVE ("drawable-flip-vertical", writable);
diff --git a/app/actions/drawable-commands.c b/app/actions/drawable-commands.c
index 44960a5..4847cc4 100644
--- a/app/actions/drawable-commands.c
+++ b/app/actions/drawable-commands.c
@@ -195,6 +195,41 @@ drawable_visible_cmd_callback (GtkAction *action,
}
}
+void
+drawable_lock_content_cmd_callback (GtkAction *action,
+ gpointer data)
+{
+ GimpImage *image;
+ GimpDrawable *drawable;
+ gboolean locked;
+ return_if_no_drawable (image, drawable, data);
+
+ locked = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action));
+
+ if (GIMP_IS_LAYER_MASK (drawable))
+ drawable =
+ GIMP_DRAWABLE (gimp_layer_mask_get_layer (GIMP_LAYER_MASK (drawable)));
+
+ if (locked != gimp_item_get_lock_content (GIMP_ITEM (drawable)))
+ {
+#if 0
+ GimpUndo *undo;
+#endif
+ gboolean push_undo = TRUE;
+
+#if 0
+ undo = gimp_image_undo_can_compress (image, GIMP_TYPE_ITEM_UNDO,
+ GIMP_UNDO_ITEM_VISIBILITY);
+
+ if (undo && GIMP_ITEM_UNDO (undo)->item == GIMP_ITEM (drawable))
+ push_undo = FALSE;
+#endif
+
+ gimp_item_set_lock_content (GIMP_ITEM (drawable), locked, push_undo);
+ gimp_image_flush (image);
+ }
+}
+
void
drawable_flip_cmd_callback (GtkAction *action,
diff --git a/app/actions/drawable-commands.h b/app/actions/drawable-commands.h
index f369200..a184384 100644
--- a/app/actions/drawable-commands.h
+++ b/app/actions/drawable-commands.h
@@ -32,6 +32,8 @@ void drawable_linked_cmd_callback (GtkAction *action,
gpointer data);
void drawable_visible_cmd_callback (GtkAction *action,
gpointer data);
+void drawable_lock_content_cmd_callback (GtkAction *action,
+ gpointer data);
void drawable_flip_cmd_callback (GtkAction *action,
gint value,
diff --git a/app/actions/vectors-actions.c b/app/actions/vectors-actions.c
index d67e2ed..1be0a0f 100644
--- a/app/actions/vectors-actions.c
+++ b/app/actions/vectors-actions.c
@@ -153,7 +153,13 @@ static const GimpToggleActionEntry vectors_toggle_actions[] =
NC_("vectors-action", "_Linked"), NULL, NULL,
G_CALLBACK (vectors_linked_cmd_callback),
FALSE,
- GIMP_HELP_PATH_LINKED }
+ GIMP_HELP_PATH_LINKED },
+
+ { "vectors-lock-content", NULL /* GIMP_STOCK_LOCK */,
+ NC_("vectors-action", "L_ock strokes"), NULL, NULL,
+ G_CALLBACK (vectors_lock_content_cmd_callback),
+ FALSE,
+ NULL /* GIMP_HELP_PATH_LOCK_STROKES */ }
};
static const GimpEnumActionEntry vectors_to_selection_actions[] =
@@ -244,6 +250,7 @@ vectors_actions_update (GimpActionGroup *group,
gboolean global_buf = FALSE;
gboolean visible = FALSE;
gboolean linked = FALSE;
+ gboolean locked = FALSE;
gboolean writable = FALSE;
GList *next = NULL;
GList *prev = NULL;
@@ -264,7 +271,8 @@ vectors_actions_update (GimpActionGroup *group,
visible = gimp_item_get_visible (item);
linked = gimp_item_get_linked (item);
- writable = ! gimp_item_get_lock_content (item);
+ locked = gimp_item_get_lock_content (item);
+ writable = ! locked;
vectors_list = gimp_item_get_container_iter (item);
@@ -302,11 +310,13 @@ vectors_actions_update (GimpActionGroup *group,
SET_SENSITIVE ("vectors-export", vectors);
SET_SENSITIVE ("vectors-import", image);
- SET_SENSITIVE ("vectors-visible", vectors);
- SET_SENSITIVE ("vectors-linked", vectors);
+ SET_SENSITIVE ("vectors-visible", vectors);
+ SET_SENSITIVE ("vectors-linked", vectors);
+ SET_SENSITIVE ("vectors-lock-content", vectors);
- SET_ACTIVE ("vectors-visible", visible);
- SET_ACTIVE ("vectors-linked", linked);
+ SET_ACTIVE ("vectors-visible", visible);
+ SET_ACTIVE ("vectors-linked", linked);
+ SET_ACTIVE ("vectors-lock-content", locked);
SET_SENSITIVE ("vectors-selection-to-vectors", image && !mask_empty);
SET_SENSITIVE ("vectors-selection-to-vectors-short", image && !mask_empty);
diff --git a/app/actions/vectors-commands.c b/app/actions/vectors-commands.c
index 14a2db9..917a8a7 100644
--- a/app/actions/vectors-commands.c
+++ b/app/actions/vectors-commands.c
@@ -614,6 +614,37 @@ vectors_linked_cmd_callback (GtkAction *action,
}
}
+void
+vectors_lock_content_cmd_callback (GtkAction *action,
+ gpointer data)
+{
+ GimpImage *image;
+ GimpVectors *vectors;
+ gboolean locked;
+ return_if_no_vectors (image, vectors, data);
+
+ locked = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action));
+
+ if (locked != gimp_item_get_lock_content (GIMP_ITEM (vectors)))
+ {
+#if 0
+ GimpUndo *undo;
+#endif
+ gboolean push_undo = TRUE;
+
+#if 0
+ undo = gimp_image_undo_can_compress (image, GIMP_TYPE_ITEM_UNDO,
+ GIMP_UNDO_ITEM_LINKED);
+
+ if (undo && GIMP_ITEM_UNDO (undo)->item == GIMP_ITEM (vectors))
+ push_undo = FALSE;
+#endif
+
+ gimp_item_set_lock_content (GIMP_ITEM (vectors), locked, push_undo);
+ gimp_image_flush (image);
+ }
+}
+
/* private functions */
diff --git a/app/actions/vectors-commands.h b/app/actions/vectors-commands.h
index 25e7b29..40118c0 100644
--- a/app/actions/vectors-commands.h
+++ b/app/actions/vectors-commands.h
@@ -67,6 +67,8 @@ void vectors_visible_cmd_callback (GtkAction *action,
gpointer data);
void vectors_linked_cmd_callback (GtkAction *action,
gpointer data);
+void vectors_lock_content_cmd_callback (GtkAction *action,
+ gpointer data);
#endif /* __VECTORS_COMMANDS_H__ */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]