mirror of https://github.com/GNOME/gimp.git
Add actions and callbacks to toggle "lock-content" on drawables and vectors
This commit is contained in:
parent
28061c23f1
commit
35a7052b8d
|
@ -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);
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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 */
|
||||
|
||||
|
|
|
@ -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__ */
|
||||
|
|
Loading…
Reference in New Issue