diff --git a/doc/classes/EditorInterface.xml b/doc/classes/EditorInterface.xml
index 0304499a61d..624e8285208 100644
--- a/doc/classes/EditorInterface.xml
+++ b/doc/classes/EditorInterface.xml
@@ -117,6 +117,12 @@
[b]Note:[/b] When creating custom editor UI, prefer accessing theme items directly from your GUI nodes using the [code]get_theme_*[/code] methods.
+
+
+
+ Returns the editor's [EditorToaster].
+
+
diff --git a/doc/classes/EditorToaster.xml b/doc/classes/EditorToaster.xml
new file mode 100644
index 00000000000..c30b94c9897
--- /dev/null
+++ b/doc/classes/EditorToaster.xml
@@ -0,0 +1,34 @@
+
+
+
+ Manages toast notifications within the editor.
+
+
+ This object manages the functionality and display of toast notifications within the editor, ensuring timely and informative alerts are presented to users.
+ [b]Note:[/b] This class shouldn't be instantiated directly. Instead, access the singleton using [method EditorInterface.get_editor_toaster].
+
+
+
+
+
+
+
+
+
+
+ Pushes a toast notification to the editor for display.
+
+
+
+
+
+ Toast will display with an INFO severity.
+
+
+ Toast will display with a WARNING severity and have a corresponding color.
+
+
+ Toast will display with an ERROR severity and have a corresponding color.
+
+
+
diff --git a/editor/editor_interface.cpp b/editor/editor_interface.cpp
index ff55c9ffbff..e85258df50b 100644
--- a/editor/editor_interface.cpp
+++ b/editor/editor_interface.cpp
@@ -43,6 +43,7 @@
#include "editor/gui/editor_quick_open_dialog.h"
#include "editor/gui/editor_run_bar.h"
#include "editor/gui/editor_scene_tabs.h"
+#include "editor/gui/editor_toaster.h"
#include "editor/gui/scene_tree_editor.h"
#include "editor/inspector_dock.h"
#include "editor/plugins/node_3d_editor_plugin.h"
@@ -89,6 +90,10 @@ Ref EditorInterface::get_editor_settings() const {
return EditorSettings::get_singleton();
}
+EditorToaster *EditorInterface::get_editor_toaster() const {
+ return EditorToaster::get_singleton();
+}
+
EditorUndoRedoManager *EditorInterface::get_editor_undo_redo() const {
return EditorUndoRedoManager::get_singleton();
}
@@ -571,6 +576,7 @@ void EditorInterface::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_resource_previewer"), &EditorInterface::get_resource_previewer);
ClassDB::bind_method(D_METHOD("get_selection"), &EditorInterface::get_selection);
ClassDB::bind_method(D_METHOD("get_editor_settings"), &EditorInterface::get_editor_settings);
+ ClassDB::bind_method(D_METHOD("get_editor_toaster"), &EditorInterface::get_editor_toaster);
ClassDB::bind_method(D_METHOD("get_editor_undo_redo"), &EditorInterface::get_editor_undo_redo);
ClassDB::bind_method(D_METHOD("make_mesh_previews", "meshes", "preview_size"), &EditorInterface::_make_mesh_previews);
diff --git a/editor/editor_interface.h b/editor/editor_interface.h
index 298bf676c87..2ae77331b19 100644
--- a/editor/editor_interface.h
+++ b/editor/editor_interface.h
@@ -45,6 +45,7 @@ class EditorPlugin;
class EditorResourcePreview;
class EditorSelection;
class EditorSettings;
+class EditorToaster;
class EditorUndoRedoManager;
class FileSystemDock;
class Mesh;
@@ -102,6 +103,7 @@ public:
EditorResourcePreview *get_resource_previewer() const;
EditorSelection *get_selection() const;
Ref get_editor_settings() const;
+ EditorToaster *get_editor_toaster() const;
EditorUndoRedoManager *get_editor_undo_redo() const;
Vector[> make_mesh_previews(const Vector][> &p_meshes, Vector *p_transforms, int p_preview_size);
diff --git a/editor/gui/editor_toaster.cpp b/editor/gui/editor_toaster.cpp
index ffea1736a3e..ff425ba65e1 100644
--- a/editor/gui/editor_toaster.cpp
+++ b/editor/gui/editor_toaster.cpp
@@ -506,6 +506,14 @@ void EditorToaster::instant_close(Control *p_control) {
p_control->set_modulate(Color(1, 1, 1, 0));
}
+void EditorToaster::_bind_methods() {
+ ClassDB::bind_method(D_METHOD("push_toast", "message", "severity", "tooltip"), &EditorToaster::_popup_str, DEFVAL(EditorToaster::SEVERITY_INFO), DEFVAL(String()));
+
+ BIND_ENUM_CONSTANT(SEVERITY_INFO);
+ BIND_ENUM_CONSTANT(SEVERITY_WARNING);
+ BIND_ENUM_CONSTANT(SEVERITY_ERROR);
+}
+
EditorToaster *EditorToaster::get_singleton() {
return singleton;
}
diff --git a/editor/gui/editor_toaster.h b/editor/gui/editor_toaster.h
index 6fcc2ce3e9e..0d0080945ea 100644
--- a/editor/gui/editor_toaster.h
+++ b/editor/gui/editor_toaster.h
@@ -105,6 +105,7 @@ private:
void _toast_theme_changed(Control *p_control);
protected:
+ static void _bind_methods();
static EditorToaster *singleton;
void _notification(int p_what);
diff --git a/editor/register_editor_types.cpp b/editor/register_editor_types.cpp
index c4ebca7308b..2d3cbfb1e3c 100644
--- a/editor/register_editor_types.cpp
+++ b/editor/register_editor_types.cpp
@@ -52,6 +52,7 @@
#include "editor/filesystem_dock.h"
#include "editor/gui/editor_file_dialog.h"
#include "editor/gui/editor_spin_slider.h"
+#include "editor/gui/editor_toaster.h"
#include "editor/import/3d/resource_importer_obj.h"
#include "editor/import/3d/resource_importer_scene.h"
#include "editor/import/editor_import_plugin.h"
@@ -146,6 +147,7 @@ void register_editor_types() {
GDREGISTER_CLASS(EditorSelection);
GDREGISTER_CLASS(EditorFileDialog);
GDREGISTER_CLASS(EditorSettings);
+ GDREGISTER_ABSTRACT_CLASS(EditorToaster);
GDREGISTER_CLASS(EditorNode3DGizmo);
GDREGISTER_CLASS(EditorNode3DGizmoPlugin);
GDREGISTER_ABSTRACT_CLASS(EditorResourcePreview);
]