Skip to content

Commit

Permalink
Add tooltip plugin for AudioStream
Browse files Browse the repository at this point in the history
  • Loading branch information
KoBeWi committed Apr 15, 2024
1 parent 4728ff3 commit 1fce8d8
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 2 deletions.
1 change: 1 addition & 0 deletions editor/filesystem_dock.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4128,6 +4128,7 @@ FileSystemDock::FileSystemDock() {

ProjectSettings::get_singleton()->connect("settings_changed", callable_mp(this, &FileSystemDock::_project_settings_changed));
add_resource_tooltip_plugin(memnew(EditorTextureTooltipPlugin));
add_resource_tooltip_plugin(memnew(EditorAudioStreamTooltipPlugin));
}

FileSystemDock::~FileSystemDock() {
Expand Down
2 changes: 2 additions & 0 deletions editor/plugins/editor_preview_plugins.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -678,6 +678,8 @@ Ref<Texture2D> EditorAudioStreamPreviewPlugin::generate(const Ref<Resource> &p_f
}
}

p_metadata["length"] = stream->get_length();

//post_process_preview(img);

Ref<Image> image = Image::create_from_data(w, h, false, Image::FORMAT_RGB8, img);
Expand Down
27 changes: 27 additions & 0 deletions editor/plugins/editor_resource_tooltip_plugins.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ bool EditorTextureTooltipPlugin::handles(const String &p_resource_type) const {
Control *EditorTextureTooltipPlugin::make_tooltip_for_path(const String &p_resource_path, const Dictionary &p_metadata, Control *p_base) const {
HBoxContainer *hb = memnew(HBoxContainer);
VBoxContainer *vb = Object::cast_to<VBoxContainer>(p_base);
DEV_ASSERT(vb);
vb->set_alignment(BoxContainer::ALIGNMENT_CENTER);

Vector2 dimensions = p_metadata.get("dimensions", Vector2());
Expand All @@ -117,3 +118,29 @@ Control *EditorTextureTooltipPlugin::make_tooltip_for_path(const String &p_resou
hb->add_child(vb);
return hb;
}

// EditorAudioStreamTooltipPlugin

bool EditorAudioStreamTooltipPlugin::handles(const String &p_resource_type) const {
return ClassDB::is_parent_class(p_resource_type, "AudioStream");
}

Control *EditorAudioStreamTooltipPlugin::make_tooltip_for_path(const String &p_resource_path, const Dictionary &p_metadata, Control *p_base) const {
VBoxContainer *vb = Object::cast_to<VBoxContainer>(p_base);
DEV_ASSERT(vb);

double length = p_metadata.get("length", 0.0);
if (length >= 60.0) {
vb->add_child(memnew(Label(vformat(TTR("Length: %0dm %0ds"), int(length / 60.0), int(fmod(length, 60))))));
} else if (length >= 1.0) {
vb->add_child(memnew(Label(vformat(TTR("Length: %0.1fs"), length))));
} else {
vb->add_child(memnew(Label(vformat(TTR("Length: %0.3fs"), length))));
}

TextureRect *tr = memnew(TextureRect);
vb->add_child(tr);
request_thumbnail(p_resource_path, tr);

return vb;
}
11 changes: 9 additions & 2 deletions editor/plugins/editor_resource_tooltip_plugins.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,8 @@

#include "core/object/gdvirtual.gen.inc"
#include "core/object/ref_counted.h"
#include <scene/gui/control.h>
#include "scene/gui/control.h"

class Control;
class Texture2D;
class TextureRect;
class VBoxContainer;
Expand Down Expand Up @@ -67,4 +66,12 @@ class EditorTextureTooltipPlugin : public EditorResourceTooltipPlugin {
virtual Control *make_tooltip_for_path(const String &p_resource_path, const Dictionary &p_metadata, Control *p_base) const override;
};

class EditorAudioStreamTooltipPlugin : public EditorResourceTooltipPlugin {
GDCLASS(EditorAudioStreamTooltipPlugin, EditorResourceTooltipPlugin);

public:
virtual bool handles(const String &p_resource_type) const override;
virtual Control *make_tooltip_for_path(const String &p_resource_path, const Dictionary &p_metadata, Control *p_base) const override;
};

#endif // EDITOR_RESOURCE_TOOLTIP_PLUGINS_H

0 comments on commit 1fce8d8

Please sign in to comment.