/** * gimp_object_set_name_safe: * @object: a #GimpObject * @name: the @object's new name * * A safe version of gimp_object_set_name() that takes care of * handling newlines and overly long names. The actual name set * may be different to the @name you pass. **/ void gimp_object_set_name_safe (GimpObject *object, const gchar *name) { g_return_if_fail (GIMP_IS_OBJECT (object)); if (! g_strcmp0 (object->p->name, name)) return; gimp_object_name_free (object); object->p->name = gimp_utf8_strtrim (name, 30); object->p->static_name = FALSE; gimp_object_name_changed (object); g_object_notify (G_OBJECT (object), "name"); }
static void layer_options_dialog_toggle_rename (GtkWidget *widget, LayerOptionsDialog *options) { if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)) && gimp_item_is_text_layer (GIMP_ITEM (options->layer))) { GimpTextLayer *text_layer = GIMP_TEXT_LAYER (options->layer); GimpText *text = gimp_text_layer_get_text (text_layer); if (text && text->text) { gchar *name = gimp_utf8_strtrim (text->text, 30); gtk_entry_set_text (GTK_ENTRY (options->name_entry), name); g_free (name); } } }
static gboolean gimp_text_layer_render (GimpTextLayer *layer) { GimpDrawable *drawable; GimpItem *item; GimpImage *image; GimpTextLayout *layout; gdouble xres; gdouble yres; gint width; gint height; if (! layer->text) return FALSE; drawable = GIMP_DRAWABLE (layer); item = GIMP_ITEM (layer); image = gimp_item_get_image (item); if (gimp_container_is_empty (image->gimp->fonts)) { gimp_message_literal (image->gimp, NULL, GIMP_MESSAGE_ERROR, _("Due to lack of any fonts, " "text functionality is not available.")); return FALSE; } gimp_image_get_resolution (image, &xres, &yres); layout = gimp_text_layout_new (layer->text, xres, yres); g_object_freeze_notify (G_OBJECT (drawable)); if (gimp_text_layout_get_size (layout, &width, &height) && (width != gimp_item_get_width (item) || height != gimp_item_get_height (item))) { GeglBuffer *new_buffer; new_buffer = gegl_buffer_new (GEGL_RECTANGLE (0, 0, width, height), gimp_drawable_get_format (drawable)); gimp_drawable_set_buffer (drawable, FALSE, NULL, new_buffer); g_object_unref (new_buffer); if (gimp_layer_get_mask (GIMP_LAYER (layer))) { GimpLayerMask *mask = gimp_layer_get_mask (GIMP_LAYER (layer)); static GimpContext *unused_eek = NULL; if (! unused_eek) unused_eek = gimp_context_new (image->gimp, "eek", NULL); gimp_item_resize (GIMP_ITEM (mask), unused_eek, width, height, 0, 0); } } if (layer->auto_rename) { 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 = 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); } } gimp_text_layer_render_layout (layer, layout); g_object_unref (layout); g_object_thaw_notify (G_OBJECT (drawable)); return (width > 0 && height > 0); }