diff options
Diffstat (limited to 'editor/plugins/script_editor_plugin.cpp')
| -rw-r--r-- | editor/plugins/script_editor_plugin.cpp | 345 |
1 files changed, 115 insertions, 230 deletions
diff --git a/editor/plugins/script_editor_plugin.cpp b/editor/plugins/script_editor_plugin.cpp index 6db732ba5..6f35ca1b0 100644 --- a/editor/plugins/script_editor_plugin.cpp +++ b/editor/plugins/script_editor_plugin.cpp @@ -3,7 +3,7 @@ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */ @@ -29,18 +29,19 @@ /*************************************************************************/ #include "script_editor_plugin.h" +#include "core/io/resource_loader.h" +#include "core/io/resource_saver.h" +#include "core/os/file_access.h" +#include "core/os/input.h" +#include "core/os/keyboard.h" +#include "core/os/os.h" +#include "core/project_settings.h" #include "editor/editor_node.h" #include "editor/editor_settings.h" +#include "editor/node_dock.h" #include "editor/script_editor_debugger.h" -#include "io/resource_loader.h" -#include "io/resource_saver.h" -#include "node_dock.h" -#include "os/file_access.h" -#include "os/input.h" -#include "os/keyboard.h" -#include "os/os.h" -#include "project_settings.h" #include "scene/main/viewport.h" + /*** SCRIPT EDITOR ****/ void ScriptEditorBase::_bind_methods() { @@ -256,7 +257,7 @@ ScriptEditor *ScriptEditor::script_editor = NULL; String ScriptEditor::_get_debug_tooltip(const String &p_text, Node *_se) { - //ScriptEditorBase *se=_se->cast_to<ScriptEditorBase>(); + //ScriptEditorBase *se=Object::cast_to<ScriptEditorBase>(_se); String val = debugger->get_var_value(p_text); if (val != String()) { @@ -280,7 +281,7 @@ void ScriptEditor::_breaked(bool p_breaked, bool p_can_debug) { for (int i = 0; i < tab_container->get_child_count(); i++) { - ScriptEditorBase *se = tab_container->get_child(i)->cast_to<ScriptEditorBase>(); + ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_child(i)); if (!se) { continue; @@ -305,7 +306,7 @@ void ScriptEditor::_goto_script_line2(int p_line) { if (selected < 0 || selected >= tab_container->get_child_count()) return; - ScriptEditorBase *current = tab_container->get_child(selected)->cast_to<ScriptEditorBase>(); + ScriptEditorBase *current = Object::cast_to<ScriptEditorBase>(tab_container->get_child(selected)); if (!current) return; @@ -318,7 +319,7 @@ void ScriptEditor::_goto_script_line(REF p_script, int p_line) { if (bool(EditorSettings::get_singleton()->get("text_editor/external/use_external_editor"))) { - Ref<Script> script = p_script->cast_to<Script>(); + Ref<Script> script = Object::cast_to<Script>(*p_script); if (!script.is_null() && script->get_path().is_resource_file()) edit(p_script, p_line, 0); } @@ -327,7 +328,7 @@ void ScriptEditor::_goto_script_line(REF p_script, int p_line) { if (selected < 0 || selected >= tab_container->get_child_count()) return; - ScriptEditorBase *current = tab_container->get_child(selected)->cast_to<ScriptEditorBase>(); + ScriptEditorBase *current = Object::cast_to<ScriptEditorBase>(tab_container->get_child(selected)); if (!current) return; @@ -346,13 +347,13 @@ void ScriptEditor::_save_history() { Node *n = tab_container->get_current_tab_control(); - if (n->cast_to<ScriptEditorBase>()) { + if (Object::cast_to<ScriptEditorBase>(n)) { - history[history_pos].state = n->cast_to<ScriptEditorBase>()->get_edit_state(); + history[history_pos].state = Object::cast_to<ScriptEditorBase>(n)->get_edit_state(); } - if (n->cast_to<EditorHelp>()) { + if (Object::cast_to<EditorHelp>(n)) { - history[history_pos].state = n->cast_to<EditorHelp>()->get_scroll(); + history[history_pos].state = Object::cast_to<EditorHelp>(n)->get_scroll(); } } @@ -369,10 +370,7 @@ void ScriptEditor::_save_history() { void ScriptEditor::_go_to_tab(int p_idx) { - Node *cn = tab_container->get_child(p_idx); - if (!cn) - return; - Control *c = cn->cast_to<Control>(); + Control *c = Object::cast_to<Control>(tab_container->get_child(p_idx)); if (!c) return; @@ -380,13 +378,13 @@ void ScriptEditor::_go_to_tab(int p_idx) { Node *n = tab_container->get_current_tab_control(); - if (n->cast_to<ScriptEditorBase>()) { + if (Object::cast_to<ScriptEditorBase>(n)) { - history[history_pos].state = n->cast_to<ScriptEditorBase>()->get_edit_state(); + history[history_pos].state = Object::cast_to<ScriptEditorBase>(n)->get_edit_state(); } - if (n->cast_to<EditorHelp>()) { + if (Object::cast_to<EditorHelp>(n)) { - history[history_pos].state = n->cast_to<EditorHelp>()->get_scroll(); + history[history_pos].state = Object::cast_to<EditorHelp>(n)->get_scroll(); } } @@ -402,21 +400,21 @@ void ScriptEditor::_go_to_tab(int p_idx) { c = tab_container->get_current_tab_control(); - if (c->cast_to<ScriptEditorBase>()) { + if (Object::cast_to<ScriptEditorBase>(c)) { - script_name_label->set_text(c->cast_to<ScriptEditorBase>()->get_name()); - script_icon->set_texture(c->cast_to<ScriptEditorBase>()->get_icon()); + script_name_label->set_text(Object::cast_to<ScriptEditorBase>(c)->get_name()); + script_icon->set_texture(Object::cast_to<ScriptEditorBase>(c)->get_icon()); if (is_visible_in_tree()) - c->cast_to<ScriptEditorBase>()->ensure_focus(); + Object::cast_to<ScriptEditorBase>(c)->ensure_focus(); - notify_script_changed(c->cast_to<ScriptEditorBase>()->get_edited_script()); + notify_script_changed(Object::cast_to<ScriptEditorBase>(c)->get_edited_script()); } - if (c->cast_to<EditorHelp>()) { + if (Object::cast_to<EditorHelp>(c)) { - script_name_label->set_text(c->cast_to<EditorHelp>()->get_class()); + script_name_label->set_text(Object::cast_to<EditorHelp>(c)->get_class()); script_icon->set_texture(get_icon("Help", "EditorIcons")); if (is_visible_in_tree()) - c->cast_to<EditorHelp>()->set_focused(); + Object::cast_to<EditorHelp>(c)->set_focused(); } c->set_meta("__editor_pass", ++edit_pass); @@ -508,7 +506,7 @@ void ScriptEditor::_close_tab(int p_idx, bool p_save) { return; Node *tselected = tab_container->get_child(selected); - ScriptEditorBase *current = tab_container->get_child(selected)->cast_to<ScriptEditorBase>(); + ScriptEditorBase *current = Object::cast_to<ScriptEditorBase>(tab_container->get_child(selected)); if (current) { _add_recent_script(current->get_edited_script()->get_path()); if (p_save) { @@ -517,7 +515,7 @@ void ScriptEditor::_close_tab(int p_idx, bool p_save) { current->clear_edit_menu(); notify_script_close(current->get_edited_script()); } else { - EditorHelp *help = tab_container->get_child(selected)->cast_to<EditorHelp>(); + EditorHelp *help = Object::cast_to<EditorHelp>(tab_container->get_child(selected)); _add_recent_script(help->get_class()); } @@ -575,7 +573,7 @@ void ScriptEditor::_close_docs_tab() { int child_count = tab_container->get_child_count(); for (int i = child_count - 1; i >= 0; i--) { - EditorHelp *se = tab_container->get_child(i)->cast_to<EditorHelp>(); + EditorHelp *se = Object::cast_to<EditorHelp>(tab_container->get_child(i)); if (se) { _close_tab(i); @@ -589,7 +587,7 @@ void ScriptEditor::_close_all_tabs() { for (int i = child_count - 1; i >= 0; i--) { tab_container->set_current_tab(i); - ScriptEditorBase *se = tab_container->get_child(i)->cast_to<ScriptEditorBase>(); + ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_child(i)); if (se) { @@ -605,7 +603,7 @@ void ScriptEditor::_close_all_tabs() { } void ScriptEditor::_ask_close_current_unsaved_tab(ScriptEditorBase *current) { - erase_tab_confirm->set_text("Close and save changes?\n\"" + current->get_name() + "\""); + erase_tab_confirm->set_text(TTR("Close and save changes?\n\"") + current->get_name() + "\""); erase_tab_confirm->popup_centered_minsize(); } @@ -615,7 +613,7 @@ void ScriptEditor::_resave_scripts(const String &p_str) { for (int i = 0; i < tab_container->get_child_count(); i++) { - ScriptEditorBase *se = tab_container->get_child(i)->cast_to<ScriptEditorBase>(); + ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_child(i)); if (!se) continue; @@ -647,7 +645,7 @@ void ScriptEditor::_reload_scripts() { for (int i = 0; i < tab_container->get_child_count(); i++) { - ScriptEditorBase *se = tab_container->get_child(i)->cast_to<ScriptEditorBase>(); + ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_child(i)); if (!se) { continue; @@ -684,7 +682,7 @@ void ScriptEditor::_res_saved_callback(const Ref<Resource> &p_res) { for (int i = 0; i < tab_container->get_child_count(); i++) { - ScriptEditorBase *se = tab_container->get_child(i)->cast_to<ScriptEditorBase>(); + ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_child(i)); if (!se) { continue; @@ -727,7 +725,7 @@ bool ScriptEditor::_test_script_times_on_disk(Ref<Script> p_for_script) { for (int i = 0; i < tab_container->get_child_count(); i++) { - ScriptEditorBase *se = tab_container->get_child(i)->cast_to<ScriptEditorBase>(); + ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_child(i)); if (se) { Ref<Script> script = se->get_edited_script(); @@ -791,7 +789,7 @@ Ref<Script> ScriptEditor::_get_current_script() { if (selected < 0 || selected >= tab_container->get_child_count()) return NULL; - ScriptEditorBase *current = tab_container->get_child(selected)->cast_to<ScriptEditorBase>(); + ScriptEditorBase *current = Object::cast_to<ScriptEditorBase>(tab_container->get_child(selected)); if (current) { return current->get_edited_script(); } else { @@ -865,7 +863,7 @@ void ScriptEditor::_menu_option(int p_option) { String current; if (tab_container->get_tab_count() > 0) { - EditorHelp *eh = tab_container->get_child(tab_container->get_current_tab())->cast_to<EditorHelp>(); + EditorHelp *eh = Object::cast_to<EditorHelp>(tab_container->get_child(tab_container->get_current_tab())); if (eh) { current = eh->get_class(); } @@ -919,7 +917,7 @@ void ScriptEditor::_menu_option(int p_option) { if (selected < 0 || selected >= tab_container->get_child_count()) return; - ScriptEditorBase *current = tab_container->get_child(selected)->cast_to<ScriptEditorBase>(); + ScriptEditorBase *current = Object::cast_to<ScriptEditorBase>(tab_container->get_child(selected)); if (current) { switch (p_option) { @@ -956,7 +954,7 @@ void ScriptEditor::_menu_option(int p_option) { current->convert_indent_to_tabs(); } } - editor->push_item(current->get_edited_script()->cast_to<Object>()); + editor->push_item(Object::cast_to<Object>(current->get_edited_script().ptr())); editor->save_resource_as(current->get_edited_script()); } break; @@ -967,7 +965,33 @@ void ScriptEditor::_menu_option(int p_option) { current->reload(p_option == FILE_TOOL_RELOAD_SOFT); } break; + case FILE_RUN: { + + Ref<Script> scr = current->get_edited_script(); + if (scr.is_null()) { + EditorNode::get_singleton()->show_warning("Can't obtain the script for running"); + break; + } + if (!scr->is_tool()) { + + EditorNode::get_singleton()->show_warning("Script is not in tool mode, will not be able to run"); + return; + } + + if (!ClassDB::is_parent_class(scr->get_instance_base_type(), "EditorScript")) { + + EditorNode::get_singleton()->show_warning("To run this script, it must inherit EditorScript and be set to tool mode"); + return; + } + Ref<EditorScript> es = memnew(EditorScript); + es->set_script(scr.get_ref_ptr()); + es->set_editor(EditorNode::get_singleton()); + + es->_run(); + + EditorNode::get_undo_redo()->clear_history(); + } break; case FILE_CLOSE: { if (current->is_unsaved()) { _ask_close_current_unsaved_tab(current); @@ -1035,7 +1059,7 @@ void ScriptEditor::_menu_option(int p_option) { } } else { - EditorHelp *help = tab_container->get_current_tab_control()->cast_to<EditorHelp>(); + EditorHelp *help = Object::cast_to<EditorHelp>(tab_container->get_current_tab_control()); if (help) { switch (p_option) { @@ -1139,7 +1163,7 @@ bool ScriptEditor::can_take_away_focus() const { if (selected < 0 || selected >= tab_container->get_child_count()) return true; - ScriptEditorBase *current = tab_container->get_child(selected)->cast_to<ScriptEditorBase>(); + ScriptEditorBase *current = Object::cast_to<ScriptEditorBase>(tab_container->get_child(selected)); if (!current) return true; @@ -1150,7 +1174,7 @@ void ScriptEditor::close_builtin_scripts_from_scene(const String &p_scene) { for (int i = 0; i < tab_container->get_child_count(); i++) { - ScriptEditorBase *se = tab_container->get_child(i)->cast_to<ScriptEditorBase>(); + ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_child(i)); if (se) { @@ -1194,122 +1218,11 @@ static const Node *_find_node_with_script(const Node *p_node, const RefPtr &p_sc return NULL; } -Dictionary ScriptEditor::get_state() const { - - //apply_scripts(); - - Dictionary state; -#if 0 - Array paths; - int open=-1; - - for(int i=0;i<tab_container->get_child_count();i++) { - - ScriptTextEditor *se = tab_container->get_child(i)->cast_to<ScriptTextEditor>(); - if (!se) - continue; - - - Ref<Script> script = se->get_edited_script(); - if (script->get_path()!="" && script->get_path().find("local://")==-1 && script->get_path().find("::")==-1) { - - paths.push_back(script->get_path()); - } else { - - - const Node *owner = _find_node_with_script(get_tree()->get_root(),script.get_ref_ptr()); - if (owner) - paths.push_back(owner->get_path()); - - } - - if (i==tab_container->get_current_tab()) - open=i; - } - - if (paths.size()) - state["sources"]=paths; - if (open!=-1) - state["current"]=open; - -#endif - return state; -} -void ScriptEditor::set_state(const Dictionary &p_state) { - -#if 0 - print_line("attempt set state: "+String(Variant(p_state))); - - if (!p_state.has("sources")) - return; //bleh - - Array sources = p_state["sources"]; - for(int i=0;i<sources.size();i++) { - - Variant source=sources[i]; - - Ref<Script> script; - - if (source.get_type()==Variant::NODE_PATH) { - - - Node *owner=get_tree()->get_root()->get_node(source); - if (!owner) - continue; - - script = owner->get_script(); - } else if (source.get_type()==Variant::STRING) { - - - script = ResourceLoader::load(source,"Script"); - } - - - if (script.is_null()) //ah well.. - continue; - - editor->call("_resource_selected",script); - } - - if (p_state.has("current")) { - tab_container->set_current_tab(p_state["current"]); - } -#endif -} -void ScriptEditor::clear() { -#if 0 - List<ScriptTextEditor*> stes; - for(int i=0;i<tab_container->get_child_count();i++) { - - ScriptTextEditor *se = tab_container->get_child(i)->cast_to<ScriptTextEditor>(); - if (!se) - continue; - stes.push_back(se); - - } - - while(stes.size()) { - - memdelete(stes.front()->get()); - stes.pop_front(); - } - - int idx = tab_container->get_current_tab(); - if (idx>=tab_container->get_child_count()) - idx=tab_container->get_child_count()-1; - if (idx>=0) { - tab_container->set_current_tab(idx); - script_list->select( script_list->find_metadata(idx) ); - } - -#endif -} - void ScriptEditor::get_breakpoints(List<String> *p_breakpoints) { for (int i = 0; i < tab_container->get_child_count(); i++) { - ScriptEditorBase *se = tab_container->get_child(i)->cast_to<ScriptEditorBase>(); + ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_child(i)); if (!se) continue; @@ -1335,10 +1248,8 @@ void ScriptEditor::ensure_focus_current() { if (cidx < 0 || cidx >= tab_container->get_tab_count()) return; - Control *c = tab_container->get_child(cidx)->cast_to<Control>(); - if (!c) - return; - ScriptEditorBase *se = c->cast_to<ScriptEditorBase>(); + Control *c = Object::cast_to<Control>(tab_container->get_child(cidx)); + ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(c); if (!se) return; se->ensure_focus(); @@ -1346,7 +1257,7 @@ void ScriptEditor::ensure_focus_current() { void ScriptEditor::_members_overview_selected(int p_idx) { Node *current = tab_container->get_child(tab_container->get_current_tab()); - ScriptEditorBase *se = current->cast_to<ScriptEditorBase>(); + ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(current); if (!se) { return; } @@ -1368,7 +1279,7 @@ void ScriptEditor::ensure_select_current() { Node *current = tab_container->get_child(tab_container->get_current_tab()); - ScriptEditorBase *se = current->cast_to<ScriptEditorBase>(); + ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(current); if (se) { Ref<Script> script = se->get_edited_script(); @@ -1380,7 +1291,7 @@ void ScriptEditor::ensure_select_current() { //search_menu->show(); } - EditorHelp *eh = current->cast_to<EditorHelp>(); + EditorHelp *eh = Object::cast_to<EditorHelp>(current); if (eh) { //edit_menu->hide(); @@ -1430,7 +1341,7 @@ void ScriptEditor::_update_members_overview_visibility() { return; Node *current = tab_container->get_child(tab_container->get_current_tab()); - ScriptEditorBase *se = current->cast_to<ScriptEditorBase>(); + ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(current); if (!se) { members_overview->set_visible(false); return; @@ -1451,7 +1362,7 @@ void ScriptEditor::_update_members_overview() { return; Node *current = tab_container->get_child(tab_container->get_current_tab()); - ScriptEditorBase *se = current->cast_to<ScriptEditorBase>(); + ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(current); if (!se) { return; } @@ -1525,7 +1436,7 @@ void ScriptEditor::_update_script_names() { for (int i = 0; i < tab_container->get_child_count(); i++) { - ScriptEditorBase *se = tab_container->get_child(i)->cast_to<ScriptEditorBase>(); + ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_child(i)); if (se) { String name = se->get_name(); @@ -1568,12 +1479,12 @@ void ScriptEditor::_update_script_names() { sedata.push_back(sd); } - EditorHelp *eh = tab_container->get_child(i)->cast_to<EditorHelp>(); + EditorHelp *eh = Object::cast_to<EditorHelp>(tab_container->get_child(i)); if (eh) { String name = eh->get_class(); Ref<Texture> icon = get_icon("Help", "EditorIcons"); - String tooltip = name + " Class Reference"; + String tooltip = name + TTR(" Class Reference"); _ScriptEditorItemData sd; sd.icon = icon; @@ -1663,7 +1574,7 @@ bool ScriptEditor::edit(const Ref<Script> &p_script, int p_line, int p_col, bool for (int i = 0; i < tab_container->get_child_count(); i++) { - ScriptEditorBase *se = tab_container->get_child(i)->cast_to<ScriptEditorBase>(); + ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_child(i)); if (!se) continue; @@ -1733,7 +1644,7 @@ void ScriptEditor::save_all_scripts() { for (int i = 0; i < tab_container->get_child_count(); i++) { - ScriptEditorBase *se = tab_container->get_child(i)->cast_to<ScriptEditorBase>(); + ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_child(i)); if (!se) continue; @@ -1771,7 +1682,7 @@ void ScriptEditor::apply_scripts() const { for (int i = 0; i < tab_container->get_child_count(); i++) { - ScriptEditorBase *se = tab_container->get_child(i)->cast_to<ScriptEditorBase>(); + ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_child(i)); if (!se) continue; se->apply_code(); @@ -1802,7 +1713,7 @@ void ScriptEditor::_editor_stop() { for (int i = 0; i < tab_container->get_child_count(); i++) { - ScriptEditorBase *se = tab_container->get_child(i)->cast_to<ScriptEditorBase>(); + ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_child(i)); if (!se) { continue; @@ -1823,7 +1734,7 @@ void ScriptEditor::_add_callback(Object *p_obj, const String &p_function, const for (int i = 0; i < tab_container->get_child_count(); i++) { - ScriptEditorBase *se = tab_container->get_child(i)->cast_to<ScriptEditorBase>(); + ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_child(i)); if (!se) continue; if (se->get_edited_script() != script) @@ -1874,7 +1785,7 @@ void ScriptEditor::_editor_settings_changed() { for (int i = 0; i < tab_container->get_child_count(); i++) { - ScriptEditorBase *se = tab_container->get_child(i)->cast_to<ScriptEditorBase>(); + ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_child(i)); if (!se) continue; @@ -1977,7 +1888,7 @@ void ScriptEditor::get_window_layout(Ref<ConfigFile> p_layout) { for (int i = 0; i < tab_container->get_child_count(); i++) { - ScriptEditorBase *se = tab_container->get_child(i)->cast_to<ScriptEditorBase>(); + ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_child(i)); if (se) { String path = se->get_edited_script()->get_path(); @@ -1987,7 +1898,7 @@ void ScriptEditor::get_window_layout(Ref<ConfigFile> p_layout) { scripts.push_back(path); } - EditorHelp *eh = tab_container->get_child(i)->cast_to<EditorHelp>(); + EditorHelp *eh = Object::cast_to<EditorHelp>(tab_container->get_child(i)); if (eh) { @@ -2007,7 +1918,7 @@ void ScriptEditor::_help_class_open(const String &p_class) { for (int i = 0; i < tab_container->get_child_count(); i++) { - EditorHelp *eh = tab_container->get_child(i)->cast_to<EditorHelp>(); + EditorHelp *eh = Object::cast_to<EditorHelp>(tab_container->get_child(i)); if (eh && eh->get_class() == p_class) { @@ -2034,7 +1945,7 @@ void ScriptEditor::_help_class_goto(const String &p_desc) { for (int i = 0; i < tab_container->get_child_count(); i++) { - EditorHelp *eh = tab_container->get_child(i)->cast_to<EditorHelp>(); + EditorHelp *eh = Object::cast_to<EditorHelp>(tab_container->get_child(i)); if (eh && eh->get_class() == cname) { @@ -2062,7 +1973,7 @@ void ScriptEditor::_update_selected_editor_menu() { bool current = tab_container->get_current_tab() == i; - ScriptEditorBase *se = tab_container->get_child(i)->cast_to<ScriptEditorBase>(); + ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_child(i)); if (se && se->get_edit_menu()) { if (current) @@ -2072,7 +1983,7 @@ void ScriptEditor::_update_selected_editor_menu() { } } - EditorHelp *eh = tab_container->get_current_tab_control()->cast_to<EditorHelp>(); + EditorHelp *eh = Object::cast_to<EditorHelp>(tab_container->get_current_tab_control()); if (eh) { script_search_menu->show(); } else { @@ -2084,13 +1995,13 @@ void ScriptEditor::_update_history_pos(int p_new_pos) { Node *n = tab_container->get_current_tab_control(); - if (n->cast_to<ScriptEditorBase>()) { + if (Object::cast_to<ScriptEditorBase>(n)) { - history[history_pos].state = n->cast_to<ScriptEditorBase>()->get_edit_state(); + history[history_pos].state = Object::cast_to<ScriptEditorBase>(n)->get_edit_state(); } - if (n->cast_to<EditorHelp>()) { + if (Object::cast_to<EditorHelp>(n)) { - history[history_pos].state = n->cast_to<EditorHelp>()->get_scroll(); + history[history_pos].state = Object::cast_to<EditorHelp>(n)->get_scroll(); } history_pos = p_new_pos; @@ -2098,18 +2009,18 @@ void ScriptEditor::_update_history_pos(int p_new_pos) { n = history[history_pos].control; - if (n->cast_to<ScriptEditorBase>()) { + if (Object::cast_to<ScriptEditorBase>(n)) { - n->cast_to<ScriptEditorBase>()->set_edit_state(history[history_pos].state); - n->cast_to<ScriptEditorBase>()->ensure_focus(); + Object::cast_to<ScriptEditorBase>(n)->set_edit_state(history[history_pos].state); + Object::cast_to<ScriptEditorBase>(n)->ensure_focus(); - notify_script_changed(n->cast_to<ScriptEditorBase>()->get_edited_script()); + notify_script_changed(Object::cast_to<ScriptEditorBase>(n)->get_edited_script()); } - if (n->cast_to<EditorHelp>()) { + if (Object::cast_to<EditorHelp>(n)) { - n->cast_to<EditorHelp>()->set_scroll(history[history_pos].state); - n->cast_to<EditorHelp>()->set_focused(); + Object::cast_to<EditorHelp>(n)->set_scroll(history[history_pos].state); + Object::cast_to<EditorHelp>(n)->set_focused(); } n->set_meta("__editor_pass", ++edit_pass); @@ -2137,7 +2048,7 @@ Vector<Ref<Script> > ScriptEditor::get_open_scripts() const { Vector<Ref<Script> > out_scripts = Vector<Ref<Script> >(); for (int i = 0; i < tab_container->get_child_count(); i++) { - ScriptEditorBase *se = tab_container->get_child(i)->cast_to<ScriptEditorBase>(); + ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_child(i)); if (!se) continue; out_scripts.push_back(se->get_edited_script()); @@ -2335,6 +2246,8 @@ ScriptEditor::ScriptEditor(EditorNode *p_editor) { file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/close_file", TTR("Close"), KEY_MASK_CMD | KEY_W), FILE_CLOSE); file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/close_all", TTR("Close All")), CLOSE_ALL); file_menu->get_popup()->add_separator(); + file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/run_file", TTR("Run"), KEY_MASK_CMD | KEY_MASK_SHIFT | KEY_X), FILE_RUN); + file_menu->get_popup()->add_separator(); file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/toggle_scripts_panel", TTR("Toggle Scripts Panel"), KEY_MASK_CMD | KEY_BACKSLASH), TOGGLE_SCRIPTS_PANEL); file_menu->get_popup()->connect("id_pressed", this, "_menu_option"); @@ -2349,7 +2262,6 @@ ScriptEditor::ScriptEditor(EditorNode *p_editor) { debug_menu = memnew(MenuButton); menu_hb->add_child(debug_menu); debug_menu->set_text(TTR("Debug")); - debug_menu->get_popup()->add_separator(); debug_menu->get_popup()->add_shortcut(ED_SHORTCUT("debugger/step_over", TTR("Step Over"), KEY_F10), DEBUG_NEXT); debug_menu->get_popup()->add_shortcut(ED_SHORTCUT("debugger/step_into", TTR("Step Into"), KEY_F11), DEBUG_STEP); debug_menu->get_popup()->add_separator(); @@ -2366,19 +2278,6 @@ ScriptEditor::ScriptEditor(EditorNode *p_editor) { debug_menu->get_popup()->set_item_disabled(debug_menu->get_popup()->get_item_index(DEBUG_BREAK), true); debug_menu->get_popup()->set_item_disabled(debug_menu->get_popup()->get_item_index(DEBUG_CONTINUE), true); -#if 0 - window_menu = memnew( MenuButton ); - menu_hb->add_child(window_menu); - window_menu->set_text(TTR("Window")); - window_menu->get_popup()->add_item(TTR("Close"),WINDOW_CLOSE,KEY_MASK_CMD|KEY_W); - window_menu->get_popup()->add_separator(); - window_menu->get_popup()->add_item(TTR("Move Left"),WINDOW_MOVE_LEFT,KEY_MASK_CMD|KEY_LEFT); - window_menu->get_popup()->add_item(TTR("Move Right"),WINDOW_MOVE_RIGHT,KEY_MASK_CMD|KEY_RIGHT); - window_menu->get_popup()->add_separator(); - window_menu->get_popup()->connect("id_pressed", this,"_menu_option"); - -#endif - menu_hb->add_spacer(); script_icon = memnew(TextureRect); @@ -2508,17 +2407,17 @@ ScriptEditor::~ScriptEditor() { void ScriptEditorPlugin::edit(Object *p_object) { - if (!p_object->cast_to<Script>()) + if (!Object::cast_to<Script>(p_object)) return; - script_editor->edit(p_object->cast_to<Script>()); + script_editor->edit(Object::cast_to<Script>(p_object)); } bool ScriptEditorPlugin::handles(Object *p_object) const { - if (p_object->cast_to<Script>()) { + if (Object::cast_to<Script>(p_object)) { - bool valid = _can_open_in_editor(p_object->cast_to<Script>()); + bool valid = _can_open_in_editor(Object::cast_to<Script>(p_object)); if (!valid) { //user tried to open it by clicking EditorNode::get_singleton()->show_warning(TTR("Built-in scripts can only be edited when the scene they belong to is loaded")); @@ -2547,20 +2446,6 @@ void ScriptEditorPlugin::selected_notify() { script_editor->ensure_select_current(); } -Dictionary ScriptEditorPlugin::get_state() const { - - return script_editor->get_state(); -} - -void ScriptEditorPlugin::set_state(const Dictionary &p_state) { - - script_editor->set_state(p_state); -} -void ScriptEditorPlugin::clear() { - - script_editor->clear(); -} - void ScriptEditorPlugin::save_external_data() { script_editor->save_all_scripts(); |
