From 4eb59e8492711453ff000f5708397e9097fb9409 Mon Sep 17 00:00:00 2001 From: kleonc <9283098+kleonc@users.noreply.github.com> Date: Fri, 24 Sep 2021 18:55:58 +0200 Subject: [PATCH] TexturePreview Update text when texture is being changed --- editor/plugins/texture_editor_plugin.cpp | 31 ++++++++++++++++-------- editor/plugins/texture_editor_plugin.h | 3 +++ 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/editor/plugins/texture_editor_plugin.cpp b/editor/plugins/texture_editor_plugin.cpp index 016bc298636..caeadeb3acd 100644 --- a/editor/plugins/texture_editor_plugin.cpp +++ b/editor/plugins/texture_editor_plugin.cpp @@ -62,6 +62,25 @@ void TexturePreview::_notification(int p_what) { } } +void TexturePreview::_update_metadata_label_text() { + Ref texture = texture_display->get_texture(); + + String format; + if (Object::cast_to(*texture)) { + format = Image::get_format_name(Object::cast_to(*texture)->get_format()); + } else if (Object::cast_to(*texture)) { + format = Image::get_format_name(Object::cast_to(*texture)->get_format()); + } else { + format = texture->get_class(); + } + + metadata_label->set_text(itos(texture->get_width()) + "x" + itos(texture->get_height()) + " " + format); +} + +void TexturePreview::_bind_methods() { + ClassDB::bind_method(D_METHOD("_update_metadata_label_text"), &TexturePreview::_update_metadata_label_text); +} + TexturePreview::TexturePreview(Ref p_texture, bool p_show_metadata) { checkerboard = memnew(TextureRect); checkerboard->set_stretch_mode(TextureRect::STRETCH_TILE); @@ -78,16 +97,8 @@ TexturePreview::TexturePreview(Ref p_texture, bool p_show_metadata) { if (p_show_metadata) { metadata_label = memnew(Label); - String format; - if (Object::cast_to(*p_texture)) { - format = Image::get_format_name(Object::cast_to(*p_texture)->get_format()); - } else if (Object::cast_to(*p_texture)) { - format = Image::get_format_name(Object::cast_to(*p_texture)->get_format()); - } else { - format = p_texture->get_class(); - } - - metadata_label->set_text(itos(p_texture->get_width()) + "x" + itos(p_texture->get_height()) + " " + format); + _update_metadata_label_text(); + p_texture->connect("changed", this, "_update_metadata_label_text"); // It's okay that these colors are static since the grid color is static too. metadata_label->add_color_override("font_color", Color::named("white")); diff --git a/editor/plugins/texture_editor_plugin.h b/editor/plugins/texture_editor_plugin.h index 8c57901d43c..ca71a25ead2 100644 --- a/editor/plugins/texture_editor_plugin.h +++ b/editor/plugins/texture_editor_plugin.h @@ -44,8 +44,11 @@ private: TextureRect *checkerboard = nullptr; Label *metadata_label = nullptr; + void _update_metadata_label_text(); + protected: void _notification(int p_what); + static void _bind_methods(); public: TextureRect *get_texture_display();