mirror of
https://github.com/godotengine/godot.git
synced 2024-11-21 19:42:43 +00:00
Add tooltip plugin for AudioStream
This commit is contained in:
parent
4728ff30c0
commit
1fce8d8a91
@ -4128,6 +4128,7 @@ FileSystemDock::FileSystemDock() {
|
|||||||
|
|
||||||
ProjectSettings::get_singleton()->connect("settings_changed", callable_mp(this, &FileSystemDock::_project_settings_changed));
|
ProjectSettings::get_singleton()->connect("settings_changed", callable_mp(this, &FileSystemDock::_project_settings_changed));
|
||||||
add_resource_tooltip_plugin(memnew(EditorTextureTooltipPlugin));
|
add_resource_tooltip_plugin(memnew(EditorTextureTooltipPlugin));
|
||||||
|
add_resource_tooltip_plugin(memnew(EditorAudioStreamTooltipPlugin));
|
||||||
}
|
}
|
||||||
|
|
||||||
FileSystemDock::~FileSystemDock() {
|
FileSystemDock::~FileSystemDock() {
|
||||||
|
@ -678,6 +678,8 @@ Ref<Texture2D> EditorAudioStreamPreviewPlugin::generate(const Ref<Resource> &p_f
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
p_metadata["length"] = stream->get_length();
|
||||||
|
|
||||||
//post_process_preview(img);
|
//post_process_preview(img);
|
||||||
|
|
||||||
Ref<Image> image = Image::create_from_data(w, h, false, Image::FORMAT_RGB8, img);
|
Ref<Image> image = Image::create_from_data(w, h, false, Image::FORMAT_RGB8, img);
|
||||||
|
@ -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 {
|
Control *EditorTextureTooltipPlugin::make_tooltip_for_path(const String &p_resource_path, const Dictionary &p_metadata, Control *p_base) const {
|
||||||
HBoxContainer *hb = memnew(HBoxContainer);
|
HBoxContainer *hb = memnew(HBoxContainer);
|
||||||
VBoxContainer *vb = Object::cast_to<VBoxContainer>(p_base);
|
VBoxContainer *vb = Object::cast_to<VBoxContainer>(p_base);
|
||||||
|
DEV_ASSERT(vb);
|
||||||
vb->set_alignment(BoxContainer::ALIGNMENT_CENTER);
|
vb->set_alignment(BoxContainer::ALIGNMENT_CENTER);
|
||||||
|
|
||||||
Vector2 dimensions = p_metadata.get("dimensions", Vector2());
|
Vector2 dimensions = p_metadata.get("dimensions", Vector2());
|
||||||
@ -117,3 +118,29 @@ Control *EditorTextureTooltipPlugin::make_tooltip_for_path(const String &p_resou
|
|||||||
hb->add_child(vb);
|
hb->add_child(vb);
|
||||||
return hb;
|
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;
|
||||||
|
}
|
||||||
|
@ -33,9 +33,8 @@
|
|||||||
|
|
||||||
#include "core/object/gdvirtual.gen.inc"
|
#include "core/object/gdvirtual.gen.inc"
|
||||||
#include "core/object/ref_counted.h"
|
#include "core/object/ref_counted.h"
|
||||||
#include <scene/gui/control.h>
|
#include "scene/gui/control.h"
|
||||||
|
|
||||||
class Control;
|
|
||||||
class Texture2D;
|
class Texture2D;
|
||||||
class TextureRect;
|
class TextureRect;
|
||||||
class VBoxContainer;
|
class VBoxContainer;
|
||||||
@ -67,4 +66,12 @@ public:
|
|||||||
virtual Control *make_tooltip_for_path(const String &p_resource_path, const Dictionary &p_metadata, Control *p_base) const override;
|
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
|
#endif // EDITOR_RESOURCE_TOOLTIP_PLUGINS_H
|
||||||
|
Loading…
Reference in New Issue
Block a user