mirror of
https://github.com/Relintai/pandemonium_engine.git
synced 2025-04-07 20:41:50 +02:00
Added an editor plugin for HTMLTemplateData. Double clicking one in the editor will open the underlying file on the text editor tab (if enabled).
This commit is contained in:
parent
83facbff3b
commit
5c9996fd58
@ -3244,6 +3244,22 @@ void EditorNode::editor_set_visible_by_name(const String &p_name, const bool p_v
|
|||||||
ERR_FAIL_MSG("The editor name '" + p_name + "' was not found.");
|
ERR_FAIL_MSG("The editor name '" + p_name + "' was not found.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EditorPlugin *EditorNode::get_editor_by_name(const String &p_name) {
|
||||||
|
ERR_FAIL_COND_V(p_name == "", NULL);
|
||||||
|
|
||||||
|
String meta_name = "text";
|
||||||
|
|
||||||
|
for (int i = 0; i < main_editor_buttons.size(); i++) {
|
||||||
|
if (main_editor_buttons[i]->get_meta(meta_name) == p_name) {
|
||||||
|
EditorPlugin *editor = editor_table[i];
|
||||||
|
ERR_FAIL_COND_V(!editor, NULL);
|
||||||
|
return editor;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ERR_FAIL_V_MSG(NULL, "The editor name '" + p_name + "' was not found.");
|
||||||
|
}
|
||||||
|
|
||||||
void EditorNode::add_editor_plugin(EditorPlugin *p_editor, bool p_config_changed) {
|
void EditorNode::add_editor_plugin(EditorPlugin *p_editor, bool p_config_changed) {
|
||||||
if (p_editor->has_main_screen()) {
|
if (p_editor->has_main_screen()) {
|
||||||
ToolButton *tb = memnew(ToolButton);
|
ToolButton *tb = memnew(ToolButton);
|
||||||
|
@ -235,6 +235,8 @@ public:
|
|||||||
void select_editor_by_name(const String &p_name);
|
void select_editor_by_name(const String &p_name);
|
||||||
void editor_set_visible_by_name(const String &p_name, const bool p_visible);
|
void editor_set_visible_by_name(const String &p_name, const bool p_visible);
|
||||||
|
|
||||||
|
EditorPlugin *get_editor_by_name(const String &p_name);
|
||||||
|
|
||||||
void open_request(const String &p_path);
|
void open_request(const String &p_path);
|
||||||
|
|
||||||
bool is_changing_scene() const;
|
bool is_changing_scene() const;
|
||||||
|
@ -65,6 +65,11 @@ bool TextEditorEditorPlugin::handles(Object *p_object) const {
|
|||||||
return p_object->is_class("TextEditorFile");
|
return p_object->is_class("TextEditorFile");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TextEditorEditorPlugin::open_file(const String &p_path) {
|
||||||
|
window->open_file(p_path);
|
||||||
|
editor->select_editor_by_name(get_name());
|
||||||
|
}
|
||||||
|
|
||||||
TextEditorEditorPlugin::TextEditorEditorPlugin(EditorNode *p_node) {
|
TextEditorEditorPlugin::TextEditorEditorPlugin(EditorNode *p_node) {
|
||||||
editor = p_node;
|
editor = p_node;
|
||||||
|
|
||||||
@ -90,5 +95,7 @@ void TextEditorEditorPlugin::_on_filesystem_dock_entry_pressed(int id) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void TextEditorEditorPlugin::_bind_methods() {
|
void TextEditorEditorPlugin::_bind_methods() {
|
||||||
|
ClassDB::bind_method(D_METHOD("open_file", "file"), &TextEditorEditorPlugin::open_file);
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("_on_filesystem_dock_entry_pressed"), &TextEditorEditorPlugin::_on_filesystem_dock_entry_pressed);
|
ClassDB::bind_method(D_METHOD("_on_filesystem_dock_entry_pressed"), &TextEditorEditorPlugin::_on_filesystem_dock_entry_pressed);
|
||||||
}
|
}
|
||||||
|
@ -50,6 +50,8 @@ public:
|
|||||||
void edit(Object *p_object);
|
void edit(Object *p_object);
|
||||||
bool handles(Object *p_object) const;
|
bool handles(Object *p_object) const;
|
||||||
|
|
||||||
|
void open_file(const String &p_path);
|
||||||
|
|
||||||
TextEditorEditorPlugin(EditorNode *p_node);
|
TextEditorEditorPlugin(EditorNode *p_node);
|
||||||
~TextEditorEditorPlugin();
|
~TextEditorEditorPlugin();
|
||||||
|
|
||||||
|
@ -35,6 +35,10 @@
|
|||||||
|
|
||||||
#include "../html_template_data.h"
|
#include "../html_template_data.h"
|
||||||
|
|
||||||
|
#ifdef MODULE_TEXT_EDITOR_ENABLED
|
||||||
|
#include "editor/editor_node.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
String ResourceImporterHTMLTemplateData::get_importer_name() const {
|
String ResourceImporterHTMLTemplateData::get_importer_name() const {
|
||||||
return "html_template_data";
|
return "html_template_data";
|
||||||
}
|
}
|
||||||
@ -85,3 +89,26 @@ ResourceImporterHTMLTemplateData::ResourceImporterHTMLTemplateData() {
|
|||||||
|
|
||||||
ResourceImporterHTMLTemplateData::~ResourceImporterHTMLTemplateData() {
|
ResourceImporterHTMLTemplateData::~ResourceImporterHTMLTemplateData() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef MODULE_TEXT_EDITOR_ENABLED
|
||||||
|
|
||||||
|
void HTMLTemplateDataEditorPlugin::edit(Object *p_object) {
|
||||||
|
Ref<HTMLTemplateData> f = Ref<HTMLTemplateData>(Object::cast_to<HTMLTemplateData>(p_object));
|
||||||
|
|
||||||
|
if (f.is_valid()) {
|
||||||
|
EditorPlugin *ep = EditorNode::get_singleton()->get_editor_by_name("Text");
|
||||||
|
|
||||||
|
if (ep) {
|
||||||
|
ep->call("open_file", f->get_path());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool HTMLTemplateDataEditorPlugin::handles(Object *p_object) const {
|
||||||
|
return p_object->is_class("HTMLTemplateData");
|
||||||
|
}
|
||||||
|
|
||||||
|
HTMLTemplateDataEditorPlugin::HTMLTemplateDataEditorPlugin(EditorNode *p_node) {
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
@ -34,6 +34,11 @@
|
|||||||
|
|
||||||
#include "core/io/resource_importer.h"
|
#include "core/io/resource_importer.h"
|
||||||
|
|
||||||
|
#include "editor/editor_plugin.h"
|
||||||
|
#include "modules/modules_enabled.gen.h"
|
||||||
|
|
||||||
|
class EditorNode;
|
||||||
|
|
||||||
class ResourceImporterHTMLTemplateData : public ResourceImporter {
|
class ResourceImporterHTMLTemplateData : public ResourceImporter {
|
||||||
GDCLASS(ResourceImporterHTMLTemplateData, ResourceImporter);
|
GDCLASS(ResourceImporterHTMLTemplateData, ResourceImporter);
|
||||||
|
|
||||||
@ -54,4 +59,21 @@ public:
|
|||||||
ResourceImporterHTMLTemplateData();
|
ResourceImporterHTMLTemplateData();
|
||||||
~ResourceImporterHTMLTemplateData();
|
~ResourceImporterHTMLTemplateData();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifdef MODULE_TEXT_EDITOR_ENABLED
|
||||||
|
|
||||||
|
class HTMLTemplateDataEditorPlugin : public EditorPlugin {
|
||||||
|
GDCLASS(HTMLTemplateDataEditorPlugin, EditorPlugin);
|
||||||
|
|
||||||
|
public:
|
||||||
|
virtual void edit(Object *p_object);
|
||||||
|
virtual bool handles(Object *p_object) const;
|
||||||
|
|
||||||
|
HTMLTemplateDataEditorPlugin(EditorNode *p_node);
|
||||||
|
|
||||||
|
virtual String get_name() const { return "HTMLTemplateData"; }
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif // RESOURCE_IMPORTER_HTML_TEMPLATE_DATA_H
|
#endif // RESOURCE_IMPORTER_HTML_TEMPLATE_DATA_H
|
||||||
|
@ -165,6 +165,10 @@ void register_web_types(ModuleRegistrationLevel p_level) {
|
|||||||
if (p_level == MODULE_REGISTRATION_LEVEL_EDITOR) {
|
if (p_level == MODULE_REGISTRATION_LEVEL_EDITOR) {
|
||||||
EditorPlugins::add_by_type<WebNodeEditorPlugin>();
|
EditorPlugins::add_by_type<WebNodeEditorPlugin>();
|
||||||
|
|
||||||
|
#ifdef MODULE_TEXT_EDITOR_ENABLED
|
||||||
|
EditorPlugins::add_by_type<HTMLTemplateDataEditorPlugin>();
|
||||||
|
#endif
|
||||||
|
|
||||||
Ref<ResourceImporterHTMLTemplateData> html_template_data_importer;
|
Ref<ResourceImporterHTMLTemplateData> html_template_data_importer;
|
||||||
html_template_data_importer.instance();
|
html_template_data_importer.instance();
|
||||||
ResourceFormatImporter::get_singleton()->add_importer(html_template_data_importer);
|
ResourceFormatImporter::get_singleton()->add_importer(html_template_data_importer);
|
||||||
|
Loading…
Reference in New Issue
Block a user