diff options
author | RĂ©mi Verschelde <rverschelde@gmail.com> | 2019-08-06 16:43:49 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-08-06 16:43:49 +0200 |
commit | 52cfb5f5799af38e4aa543417a76999b732c3a54 (patch) | |
tree | a7c68fc11abe089bce8d0e3c3ce642c76aefdc36 | |
parent | 85b07813b0045457a8f16801e1438e23ee2e4d79 (diff) | |
parent | 2e3264259bc97410632314b95897c796e5a0ac85 (diff) |
Merge pull request #31121 from willnationsdev/plugin-select-editor
Let EditorPlugins set editor/distraction-free mode
-rw-r--r-- | editor/editor_node.cpp | 14 | ||||
-rw-r--r-- | editor/editor_node.h | 2 | ||||
-rw-r--r-- | editor/editor_plugin.cpp | 11 | ||||
-rw-r--r-- | editor/editor_plugin.h | 3 |
4 files changed, 30 insertions, 0 deletions
diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index 16652cc76d..4326174a1a 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -2782,6 +2782,20 @@ void EditorNode::_editor_select(int p_which) { } } +void EditorNode::select_editor_by_name(const String &p_name) { + ERR_FAIL_COND(p_name == ""); + + for (int i = 0; i < main_editor_buttons.size(); i++) { + if (main_editor_buttons[i]->get_text() == p_name) { + _editor_select(i); + return; + } + } + + ERR_EXPLAIN("The editor name '" + p_name + "' was not found."); + ERR_FAIL(); +} + void EditorNode::add_editor_plugin(EditorPlugin *p_editor, bool p_config_changed) { if (p_editor->has_main_screen()) { diff --git a/editor/editor_node.h b/editor/editor_node.h index 75827cc65f..8d536a1b86 100644 --- a/editor/editor_node.h +++ b/editor/editor_node.h @@ -732,6 +732,8 @@ public: bool item_has_editor(Object *p_object); void hide_top_editors(); + void select_editor_by_name(const String &p_name); + void open_request(const String &p_path); bool is_changing_scene() const; diff --git a/editor/editor_plugin.cpp b/editor/editor_plugin.cpp index c2a845653e..90cb01a31d 100644 --- a/editor/editor_plugin.cpp +++ b/editor/editor_plugin.cpp @@ -149,6 +149,10 @@ Vector<Ref<Texture> > EditorInterface::make_mesh_previews(const Vector<Ref<Mesh> return textures; } +void EditorInterface::set_main_screen_editor(const String &p_name) { + EditorNode::get_singleton()->select_editor_by_name(p_name); +} + Control *EditorInterface::get_editor_viewport() { return EditorNode::get_singleton()->get_viewport(); @@ -260,6 +264,10 @@ void EditorInterface::save_scene_as(const String &p_scene, bool p_with_preview) EditorNode::get_singleton()->save_scene_to_path(p_scene, p_with_preview); } +void EditorInterface::set_distraction_free_mode(bool p_enter) { + EditorNode::get_singleton()->set_distraction_free_mode(p_enter); +} + EditorInterface *EditorInterface::singleton = NULL; void EditorInterface::_bind_methods() { @@ -288,6 +296,9 @@ void EditorInterface::_bind_methods() { ClassDB::bind_method(D_METHOD("save_scene"), &EditorInterface::save_scene); ClassDB::bind_method(D_METHOD("save_scene_as", "path", "with_preview"), &EditorInterface::save_scene_as, DEFVAL(true)); + + ClassDB::bind_method(D_METHOD("set_main_screen_editor", "name"), &EditorInterface::set_main_screen_editor); + ClassDB::bind_method(D_METHOD("set_distraction_free_mode", "enter"), &EditorInterface::set_distraction_free_mode); } EditorInterface::EditorInterface() { diff --git a/editor/editor_plugin.h b/editor/editor_plugin.h index 75c230adb7..52ab444522 100644 --- a/editor/editor_plugin.h +++ b/editor/editor_plugin.h @@ -103,6 +103,9 @@ public: Vector<Ref<Texture> > make_mesh_previews(const Vector<Ref<Mesh> > &p_meshes, Vector<Transform> *p_transforms, int p_preview_size); + void set_main_screen_editor(const String &p_name); + void set_distraction_free_mode(bool p_enter); + EditorInterface(); }; |