app: factorize auto-rename code into GimpRasterizable.
Rasterizable objects are all created from some side data and can be renamed automatically based on this data (from the link file for link layers; from the path for vector layers; from the text for text layers). So let's share code.
This commit is contained in:
parent
5356e86a06
commit
1235bf00bd
9 changed files with 144 additions and 155 deletions
|
|
@ -2572,12 +2572,9 @@ layers_edit_attributes_callback (GtkWidget *dialog,
|
|||
gimp_image_flush (image);
|
||||
}
|
||||
|
||||
if (gimp_item_is_text_layer (GIMP_ITEM (layer)))
|
||||
{
|
||||
g_object_set (layer,
|
||||
"auto-rename", rename_text_layer,
|
||||
NULL);
|
||||
}
|
||||
if (GIMP_IS_RASTERIZABLE (layer))
|
||||
gimp_rasterizable_set_auto_rename (GIMP_RASTERIZABLE (layer),
|
||||
rename_text_layer);
|
||||
|
||||
gtk_widget_destroy (dialog);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,7 +42,6 @@
|
|||
#include "gimpimage-color-profile.h"
|
||||
#include "gimpimage-undo.h"
|
||||
#include "gimpimage-undo-push.h"
|
||||
#include "gimpitemtree.h"
|
||||
#include "gimplink.h"
|
||||
#include "gimplinklayer.h"
|
||||
#include "gimpobjectqueue.h"
|
||||
|
|
@ -65,7 +64,6 @@ enum
|
|||
{
|
||||
PROP_0,
|
||||
PROP_LINK,
|
||||
PROP_AUTO_RENAME,
|
||||
PROP_SCALED_ONLY,
|
||||
N_PROPS
|
||||
};
|
||||
|
|
@ -74,7 +72,6 @@ struct _GimpLinkLayerPrivate
|
|||
{
|
||||
GimpLink *link;
|
||||
gboolean scaled_only;
|
||||
gboolean auto_rename;
|
||||
|
||||
GimpMatrix3 matrix;
|
||||
gint offset_x;
|
||||
|
|
@ -105,10 +102,6 @@ static gint64 gimp_link_layer_get_memsize (GimpObject *object,
|
|||
|
||||
static GimpItem * gimp_link_layer_duplicate (GimpItem *item,
|
||||
GType new_type);
|
||||
static gboolean gimp_link_layer_rename (GimpItem *item,
|
||||
const gchar *new_name,
|
||||
const gchar *undo_desc,
|
||||
GError **error);
|
||||
|
||||
static void gimp_link_layer_translate (GimpItem *item,
|
||||
gdouble offset_x,
|
||||
|
|
@ -199,7 +192,7 @@ gimp_link_layer_class_init (GimpLinkLayerClass *klass)
|
|||
viewable_class->default_name = _("Link Layer");
|
||||
|
||||
item_class->duplicate = gimp_link_layer_duplicate;
|
||||
item_class->rename = gimp_link_layer_rename;
|
||||
item_class->rename = gimp_rasterizable_rename;
|
||||
item_class->translate = gimp_link_layer_translate;
|
||||
item_class->scale = gimp_link_layer_scale;
|
||||
item_class->transform = gimp_link_layer_transform;
|
||||
|
|
@ -223,12 +216,6 @@ gimp_link_layer_class_init (GimpLinkLayerClass *klass)
|
|||
GIMP_PARAM_READWRITE |
|
||||
GIMP_PARAM_STATIC_STRINGS);
|
||||
|
||||
link_layer_props[PROP_AUTO_RENAME] = g_param_spec_boolean ("auto-rename",
|
||||
NULL, NULL,
|
||||
TRUE,
|
||||
GIMP_PARAM_READWRITE |
|
||||
GIMP_PARAM_STATIC_STRINGS);
|
||||
|
||||
link_layer_props[PROP_SCALED_ONLY] = g_param_spec_boolean ("scaled-only",
|
||||
NULL, NULL,
|
||||
FALSE,
|
||||
|
|
@ -246,7 +233,6 @@ gimp_link_layer_init (GimpLinkLayer *layer)
|
|||
gimp_matrix3_identity (&layer->p->matrix);
|
||||
|
||||
layer->p->scaled_only = FALSE;
|
||||
layer->p->auto_rename = FALSE;
|
||||
layer->p->offset_x = 0;
|
||||
layer->p->offset_y = 0;
|
||||
layer->p->interpolation = GIMP_INTERPOLATION_NONE;
|
||||
|
|
@ -283,9 +269,6 @@ gimp_link_layer_get_property (GObject *object,
|
|||
case PROP_LINK:
|
||||
g_value_set_object (value, layer->p->link);
|
||||
break;
|
||||
case PROP_AUTO_RENAME:
|
||||
g_value_set_boolean (value, layer->p->auto_rename);
|
||||
break;
|
||||
case PROP_SCALED_ONLY:
|
||||
g_value_set_boolean (value, layer->p->scaled_only);
|
||||
break;
|
||||
|
|
@ -309,9 +292,6 @@ gimp_link_layer_set_property (GObject *object,
|
|||
case PROP_LINK:
|
||||
gimp_link_layer_set_link (layer, g_value_get_object (value), FALSE);
|
||||
break;
|
||||
case PROP_AUTO_RENAME:
|
||||
layer->p->auto_rename = g_value_get_boolean (value);
|
||||
break;
|
||||
case PROP_SCALED_ONLY:
|
||||
layer->p->scaled_only = g_value_get_boolean (value);
|
||||
break;
|
||||
|
|
@ -389,7 +369,8 @@ gimp_link_layer_duplicate (GimpItem *item,
|
|||
gimp_drawable_get_buffer (GIMP_DRAWABLE (new_layer)), NULL);
|
||||
|
||||
new_layer->p->scaled_only = layer->p->scaled_only;
|
||||
new_layer->p->auto_rename = layer->p->auto_rename;
|
||||
gimp_rasterizable_set_auto_rename (GIMP_RASTERIZABLE (new_layer),
|
||||
gimp_rasterizable_get_auto_rename (GIMP_RASTERIZABLE (layer)));
|
||||
new_layer->p->matrix = layer->p->matrix;
|
||||
new_layer->p->offset_x = layer->p->offset_x;
|
||||
new_layer->p->offset_y = layer->p->offset_y;
|
||||
|
|
@ -406,22 +387,6 @@ gimp_link_layer_duplicate (GimpItem *item,
|
|||
return new_item;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gimp_link_layer_rename (GimpItem *item,
|
||||
const gchar *new_name,
|
||||
const gchar *undo_desc,
|
||||
GError **error)
|
||||
{
|
||||
if (GIMP_ITEM_CLASS (parent_class)->rename (item, new_name, undo_desc, error))
|
||||
{
|
||||
g_object_set (item, "auto-rename", FALSE, NULL);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_link_layer_translate (GimpItem *item,
|
||||
gdouble offset_x,
|
||||
|
|
@ -945,9 +910,8 @@ gimp_link_layer_set_xcf_flags (GimpLinkLayer *layer,
|
|||
{
|
||||
g_return_if_fail (GIMP_IS_LINK_LAYER (layer));
|
||||
|
||||
g_object_set (layer,
|
||||
"auto-rename", (flags & LINK_LAYER_XCF_DONT_AUTO_RENAME) == 0,
|
||||
NULL);
|
||||
gimp_rasterizable_set_auto_rename (GIMP_RASTERIZABLE (layer),
|
||||
(flags & LINK_LAYER_XCF_DONT_AUTO_RENAME) == 0);
|
||||
|
||||
if ((flags & LINK_LAYER_XCF_MODIFIED) != 0)
|
||||
gimp_link_freeze (layer->p->link);
|
||||
|
|
@ -960,7 +924,7 @@ gimp_link_layer_get_xcf_flags (GimpLinkLayer *link_layer)
|
|||
|
||||
g_return_val_if_fail (GIMP_IS_LINK_LAYER (link_layer), 0);
|
||||
|
||||
if (! link_layer->p->auto_rename)
|
||||
if (! gimp_rasterizable_get_auto_rename (GIMP_RASTERIZABLE (link_layer)))
|
||||
flags |= LINK_LAYER_XCF_DONT_AUTO_RENAME;
|
||||
|
||||
if (! gimp_link_is_monitored (link_layer->p->link))
|
||||
|
|
@ -1060,33 +1024,9 @@ gimp_link_layer_render_link (GimpLinkLayer *layer)
|
|||
}
|
||||
}
|
||||
|
||||
if (layer->p->auto_rename)
|
||||
{
|
||||
GimpItem *item = GIMP_ITEM (layer);
|
||||
gchar *name = NULL;
|
||||
|
||||
if (layer->p->link)
|
||||
{
|
||||
name = g_strdup (gimp_object_get_name (layer->p->link));
|
||||
}
|
||||
|
||||
if (! name || ! name[0])
|
||||
{
|
||||
g_free (name);
|
||||
name = g_strdup (_("Link Layer"));
|
||||
}
|
||||
|
||||
if (gimp_item_is_attached (item))
|
||||
{
|
||||
gimp_item_tree_rename_item (gimp_item_get_tree (item), item,
|
||||
name, FALSE, NULL);
|
||||
g_free (name);
|
||||
}
|
||||
else
|
||||
{
|
||||
gimp_object_take_name (GIMP_OBJECT (layer), name);
|
||||
}
|
||||
}
|
||||
gimp_rasterizable_auto_rename (GIMP_RASTERIZABLE (layer),
|
||||
GIMP_OBJECT (layer->p->link),
|
||||
NULL);
|
||||
|
||||
gimp_gegl_buffer_copy (buffer, NULL, GEGL_ABYSS_NONE,
|
||||
gimp_drawable_get_buffer (drawable), NULL);
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@
|
|||
#include "gimpimage.h"
|
||||
#include "gimpimage-undo.h"
|
||||
#include "gimpimage-undo-push.h"
|
||||
#include "gimpitemtree.h"
|
||||
#include "gimprasterizable.h"
|
||||
|
||||
#include "gimp-intl.h"
|
||||
|
|
@ -44,6 +45,7 @@ typedef struct _GimpRasterizablePrivate GimpRasterizablePrivate;
|
|||
struct _GimpRasterizablePrivate
|
||||
{
|
||||
gboolean rasterized;
|
||||
gboolean auto_rename;
|
||||
};
|
||||
|
||||
#define GIMP_RASTERIZABLE_GET_PRIVATE(obj) (gimp_rasterizable_get_private ((GimpRasterizable *) (obj)))
|
||||
|
|
@ -165,6 +167,85 @@ gimp_rasterizable_is_rasterized (GimpRasterizable *rasterizable)
|
|||
return private->rasterized;
|
||||
}
|
||||
|
||||
void
|
||||
gimp_rasterizable_set_auto_rename (GimpRasterizable *rasterizable,
|
||||
gboolean auto_rename)
|
||||
{
|
||||
GimpRasterizablePrivate *private;
|
||||
|
||||
g_return_if_fail (GIMP_IS_RASTERIZABLE (rasterizable));
|
||||
|
||||
private = GIMP_RASTERIZABLE_GET_PRIVATE (rasterizable);
|
||||
private->auto_rename = auto_rename;
|
||||
}
|
||||
|
||||
gboolean
|
||||
gimp_rasterizable_get_auto_rename (GimpRasterizable *rasterizable)
|
||||
{
|
||||
GimpRasterizablePrivate *private;
|
||||
|
||||
g_return_val_if_fail (GIMP_IS_RASTERIZABLE (rasterizable), TRUE);
|
||||
|
||||
private = GIMP_RASTERIZABLE_GET_PRIVATE (rasterizable);
|
||||
|
||||
return private->auto_rename;
|
||||
}
|
||||
|
||||
gboolean
|
||||
gimp_rasterizable_rename (GimpItem *item,
|
||||
const gchar *new_name,
|
||||
const gchar *undo_desc,
|
||||
GError **error)
|
||||
{
|
||||
GTypeClass *klass;
|
||||
GTypeClass *parent_class;
|
||||
|
||||
klass = g_type_class_peek (G_TYPE_FROM_INSTANCE (item));
|
||||
parent_class = g_type_class_peek_parent (klass);
|
||||
if (GIMP_ITEM_CLASS (parent_class)->rename (item, new_name, undo_desc, error))
|
||||
{
|
||||
gimp_rasterizable_set_auto_rename (GIMP_RASTERIZABLE (item), FALSE);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void
|
||||
gimp_rasterizable_auto_rename (GimpRasterizable *rasterizable,
|
||||
GimpObject *rename_data,
|
||||
const gchar *rename_string)
|
||||
{
|
||||
if (gimp_rasterizable_get_auto_rename (rasterizable))
|
||||
{
|
||||
GimpItem *item = GIMP_ITEM (rasterizable);
|
||||
gchar *name = NULL;
|
||||
|
||||
if (rename_data)
|
||||
name = g_strdup (gimp_object_get_name (rename_data));
|
||||
else if (rename_string)
|
||||
name = g_strdup (rename_string);
|
||||
|
||||
if (! name || ! name[0])
|
||||
{
|
||||
g_free (name);
|
||||
name = g_strdup (GIMP_VIEWABLE_GET_CLASS (rasterizable)->default_name);
|
||||
}
|
||||
|
||||
if (gimp_item_is_attached (item))
|
||||
{
|
||||
gimp_item_tree_rename_item (gimp_item_get_tree (item), item,
|
||||
name, FALSE, NULL);
|
||||
g_free (name);
|
||||
}
|
||||
else
|
||||
{
|
||||
gimp_object_take_name (GIMP_OBJECT (rasterizable), name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
gimp_rasterizable_set_undo_rasterized (GimpRasterizable *rasterizable,
|
||||
gboolean rasterized)
|
||||
|
|
@ -198,6 +279,9 @@ gimp_rasterizable_get_private (GimpRasterizable *rasterizable)
|
|||
{
|
||||
private = g_slice_new0 (GimpRasterizablePrivate);
|
||||
|
||||
private->rasterized = FALSE;
|
||||
private->auto_rename = TRUE;
|
||||
|
||||
g_object_set_qdata_full ((GObject *) rasterizable, private_key, private,
|
||||
(GDestroyNotify) gimp_rasterizable_private_finalize);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,17 +31,31 @@ struct _GimpRasterizableInterface
|
|||
GTypeInterface base_iface;
|
||||
|
||||
/* signals */
|
||||
void (* set_rasterized) (GimpRasterizable *rasterizable,
|
||||
gboolean rasterized);
|
||||
void (* set_rasterized) (GimpRasterizable *rasterizable,
|
||||
gboolean rasterized);
|
||||
};
|
||||
|
||||
|
||||
void gimp_rasterizable_rasterize (GimpRasterizable *rasterizable);
|
||||
void gimp_rasterizable_restore (GimpRasterizable *rasterizable);
|
||||
void gimp_rasterizable_rasterize (GimpRasterizable *rasterizable);
|
||||
void gimp_rasterizable_restore (GimpRasterizable *rasterizable);
|
||||
|
||||
gboolean gimp_rasterizable_is_rasterized (GimpRasterizable *rasterizable);
|
||||
gboolean gimp_rasterizable_is_rasterized (GimpRasterizable *rasterizable);
|
||||
|
||||
void gimp_rasterizable_set_auto_rename (GimpRasterizable *rasterizable,
|
||||
gboolean auto_rename);
|
||||
gboolean gimp_rasterizable_get_auto_rename (GimpRasterizable *rasterizable);
|
||||
|
||||
|
||||
/* Overwrite rename() of GimpItemClass of all children. */
|
||||
gboolean gimp_rasterizable_rename (GimpItem *item,
|
||||
const gchar *new_name,
|
||||
const gchar *undo_desc,
|
||||
GError **error);
|
||||
/* Shared code to rename the rasterizable. */
|
||||
void gimp_rasterizable_auto_rename (GimpRasterizable *rasterizable,
|
||||
GimpObject *rename_data,
|
||||
const gchar *rename_string);
|
||||
|
||||
/* To be used for undo steps only */
|
||||
|
||||
void gimp_rasterizable_set_undo_rasterized (GimpRasterizable *rasterizable,
|
||||
gboolean rasterize);
|
||||
void gimp_rasterizable_set_undo_rasterized (GimpRasterizable *rasterizable,
|
||||
gboolean rasterize);
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@
|
|||
#include "core/gimplayer.h"
|
||||
#include "core/gimplink.h"
|
||||
#include "core/gimplinklayer.h"
|
||||
#include "core/gimprasterizable.h"
|
||||
|
||||
#include "path/gimppath.h"
|
||||
#include "path/gimpvectorlayer.h"
|
||||
|
|
@ -179,7 +180,7 @@ layer_options_dialog_new (GimpImage *image,
|
|||
private->initial_path = NULL;
|
||||
|
||||
if (layer && gimp_item_is_text_layer (GIMP_ITEM (layer)))
|
||||
private->rename_text_layers = GIMP_TEXT_LAYER (layer)->auto_rename;
|
||||
private->rename_text_layers = gimp_rasterizable_get_auto_rename (GIMP_RASTERIZABLE (layer));
|
||||
|
||||
dialog = item_options_dialog_new (image, GIMP_ITEM (layer), context,
|
||||
parent, title, role,
|
||||
|
|
|
|||
|
|
@ -174,6 +174,7 @@ gimp_vector_layer_class_init (GimpVectorLayerClass *klass)
|
|||
|
||||
item_class->removed = gimp_vector_layer_removed;
|
||||
item_class->duplicate = gimp_vector_layer_duplicate;
|
||||
item_class->rename = gimp_rasterizable_rename;
|
||||
item_class->scale = gimp_vector_layer_scale;
|
||||
item_class->flip = gimp_vector_layer_flip;
|
||||
item_class->rotate = gimp_vector_layer_rotate;
|
||||
|
|
@ -795,6 +796,10 @@ gimp_vector_layer_render_path (GimpVectorLayer *layer)
|
|||
|
||||
g_list_free (drawables);
|
||||
|
||||
gimp_rasterizable_auto_rename (GIMP_RASTERIZABLE (layer),
|
||||
GIMP_OBJECT (layer->options->path),
|
||||
NULL);
|
||||
|
||||
gimp_selection_resume (GIMP_SELECTION (selection));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -151,7 +151,7 @@ gimp_text_layer_get_xcf_flags (GimpTextLayer *text_layer)
|
|||
|
||||
g_return_val_if_fail (GIMP_IS_TEXT_LAYER (text_layer), 0);
|
||||
|
||||
if (! text_layer->auto_rename)
|
||||
if (! gimp_rasterizable_get_auto_rename (GIMP_RASTERIZABLE (text_layer)))
|
||||
flags |= TEXT_LAYER_XCF_DONT_AUTO_RENAME;
|
||||
|
||||
if (gimp_rasterizable_is_rasterized (GIMP_RASTERIZABLE (text_layer)))
|
||||
|
|
@ -166,9 +166,8 @@ gimp_text_layer_set_xcf_flags (GimpTextLayer *text_layer,
|
|||
{
|
||||
g_return_if_fail (GIMP_IS_TEXT_LAYER (text_layer));
|
||||
|
||||
g_object_set (text_layer,
|
||||
"auto-rename", (flags & TEXT_LAYER_XCF_DONT_AUTO_RENAME) == 0,
|
||||
NULL);
|
||||
gimp_rasterizable_set_auto_rename (GIMP_RASTERIZABLE (text_layer),
|
||||
(flags & TEXT_LAYER_XCF_DONT_AUTO_RENAME) == 0);
|
||||
|
||||
if ((flags & TEXT_LAYER_XCF_MODIFIED) != 0)
|
||||
gimp_rasterizable_rasterize (GIMP_RASTERIZABLE (text_layer));
|
||||
|
|
|
|||
|
|
@ -46,7 +46,6 @@
|
|||
#include "core/gimpimage-color-profile.h"
|
||||
#include "core/gimpimage-undo.h"
|
||||
#include "core/gimpimage-undo-push.h"
|
||||
#include "core/gimpitemtree.h"
|
||||
#include "core/gimpparasitelist.h"
|
||||
#include "core/gimppattern.h"
|
||||
#include "core/gimprasterizable.h"
|
||||
|
|
@ -64,7 +63,6 @@ enum
|
|||
{
|
||||
PROP_0,
|
||||
PROP_TEXT,
|
||||
PROP_AUTO_RENAME,
|
||||
};
|
||||
|
||||
struct _GimpTextLayerPrivate
|
||||
|
|
@ -95,10 +93,6 @@ static void gimp_text_layer_size_changed (GimpViewable *viewable);
|
|||
|
||||
static GimpItem * gimp_text_layer_duplicate (GimpItem *item,
|
||||
GType new_type);
|
||||
static gboolean gimp_text_layer_rename (GimpItem *item,
|
||||
const gchar *new_name,
|
||||
const gchar *undo_desc,
|
||||
GError **error);
|
||||
|
||||
static void gimp_text_layer_set_buffer (GimpDrawable *drawable,
|
||||
gboolean push_undo,
|
||||
|
|
@ -158,7 +152,7 @@ gimp_text_layer_class_init (GimpTextLayerClass *klass)
|
|||
viewable_class->size_changed = gimp_text_layer_size_changed;
|
||||
|
||||
item_class->duplicate = gimp_text_layer_duplicate;
|
||||
item_class->rename = gimp_text_layer_rename;
|
||||
item_class->rename = gimp_rasterizable_rename;
|
||||
|
||||
#if 0
|
||||
item_class->scale = gimp_text_layer_scale;
|
||||
|
|
@ -185,12 +179,6 @@ gimp_text_layer_class_init (GimpTextLayerClass *klass)
|
|||
NULL, NULL,
|
||||
GIMP_TYPE_TEXT,
|
||||
GIMP_PARAM_STATIC_STRINGS);
|
||||
|
||||
GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_AUTO_RENAME,
|
||||
"auto-rename",
|
||||
NULL, NULL,
|
||||
TRUE,
|
||||
GIMP_PARAM_STATIC_STRINGS);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
@ -231,9 +219,6 @@ gimp_text_layer_get_property (GObject *object,
|
|||
case PROP_TEXT:
|
||||
g_value_set_object (value, text_layer->text);
|
||||
break;
|
||||
case PROP_AUTO_RENAME:
|
||||
g_value_set_boolean (value, text_layer->auto_rename);
|
||||
break;
|
||||
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
||||
|
|
@ -254,9 +239,6 @@ gimp_text_layer_set_property (GObject *object,
|
|||
case PROP_TEXT:
|
||||
gimp_text_layer_set_text (text_layer, g_value_get_object (value));
|
||||
break;
|
||||
case PROP_AUTO_RENAME:
|
||||
text_layer->auto_rename = g_value_get_boolean (value);
|
||||
break;
|
||||
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
||||
|
|
@ -333,6 +315,8 @@ gimp_text_layer_duplicate (GimpItem *item,
|
|||
}
|
||||
|
||||
new_layer->private->base_dir = layer->private->base_dir;
|
||||
gimp_rasterizable_set_auto_rename (GIMP_RASTERIZABLE (new_layer),
|
||||
gimp_rasterizable_get_auto_rename (GIMP_RASTERIZABLE (layer)));
|
||||
|
||||
if (gimp_rasterizable_is_rasterized (GIMP_RASTERIZABLE (layer)))
|
||||
gimp_rasterizable_set_undo_rasterized (GIMP_RASTERIZABLE (new_layer), TRUE);
|
||||
|
|
@ -341,22 +325,6 @@ gimp_text_layer_duplicate (GimpItem *item,
|
|||
return new_item;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gimp_text_layer_rename (GimpItem *item,
|
||||
const gchar *new_name,
|
||||
const gchar *undo_desc,
|
||||
GError **error)
|
||||
{
|
||||
if (GIMP_ITEM_CLASS (parent_class)->rename (item, new_name, undo_desc, error))
|
||||
{
|
||||
g_object_set (item, "auto-rename", FALSE, NULL);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_text_layer_set_buffer (GimpDrawable *drawable,
|
||||
gboolean push_undo,
|
||||
|
|
@ -700,6 +668,7 @@ gimp_text_layer_render (GimpTextLayer *layer)
|
|||
GimpImage *image;
|
||||
GimpContainer *container;
|
||||
GimpTextLayout *layout;
|
||||
gchar *name = NULL;
|
||||
gdouble xres;
|
||||
gdouble yres;
|
||||
gint width;
|
||||
|
|
@ -763,39 +732,19 @@ gimp_text_layer_render (GimpTextLayer *layer)
|
|||
}
|
||||
}
|
||||
|
||||
if (layer->auto_rename)
|
||||
if (layer->text->text)
|
||||
{
|
||||
GimpItem *item = GIMP_ITEM (layer);
|
||||
gchar *name = NULL;
|
||||
|
||||
if (layer->text->text)
|
||||
{
|
||||
name = gimp_utf8_strtrim (layer->text->text, 30);
|
||||
}
|
||||
else if (layer->text->markup)
|
||||
{
|
||||
gchar *tmp = gimp_markup_extract_text (layer->text->markup);
|
||||
name = gimp_utf8_strtrim (tmp, 30);
|
||||
g_free (tmp);
|
||||
}
|
||||
|
||||
if (! name || ! name[0])
|
||||
{
|
||||
g_free (name);
|
||||
name = g_strdup (_("Empty Text Layer"));
|
||||
}
|
||||
|
||||
if (gimp_item_is_attached (item))
|
||||
{
|
||||
gimp_item_tree_rename_item (gimp_item_get_tree (item), item,
|
||||
name, FALSE, NULL);
|
||||
g_free (name);
|
||||
}
|
||||
else
|
||||
{
|
||||
gimp_object_take_name (GIMP_OBJECT (layer), name);
|
||||
}
|
||||
name = gimp_utf8_strtrim (layer->text->text, 30);
|
||||
}
|
||||
else if (layer->text->markup)
|
||||
{
|
||||
gchar *tmp = gimp_markup_extract_text (layer->text->markup);
|
||||
name = gimp_utf8_strtrim (tmp, 30);
|
||||
g_free (tmp);
|
||||
}
|
||||
|
||||
gimp_rasterizable_auto_rename (GIMP_RASTERIZABLE (layer), NULL, name);
|
||||
g_free (name);
|
||||
|
||||
if (width > 0 && height > 0)
|
||||
gimp_text_layer_render_layout (layer, layout);
|
||||
|
|
|
|||
|
|
@ -330,7 +330,7 @@ gimp_text_tool_remove_empty_text_layer (GimpTextTool *text_tool)
|
|||
{
|
||||
GimpTextLayer *text_layer = text_tool->layer;
|
||||
|
||||
if (text_layer && text_layer->auto_rename)
|
||||
if (text_layer && gimp_rasterizable_get_auto_rename (GIMP_RASTERIZABLE (text_layer)))
|
||||
{
|
||||
GimpText *text = gimp_text_layer_get_text (text_layer);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue