summaryrefslogtreecommitdiff
path: root/tools/editor/editor_node.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/editor/editor_node.cpp')
-rw-r--r--tools/editor/editor_node.cpp38
1 files changed, 38 insertions, 0 deletions
diff --git a/tools/editor/editor_node.cpp b/tools/editor/editor_node.cpp
index 35809e653e..ed932396db 100644
--- a/tools/editor/editor_node.cpp
+++ b/tools/editor/editor_node.cpp
@@ -938,7 +938,27 @@ void EditorNode::_dialog_action(String p_file) {
} break;
+ case FILE_RUN_SCRIPT: {
+ print_line("RUN: "+p_file);
+ Ref<Script> scr = ResourceLoader::load(p_file,"Script",true);
+ if (scr.is_null()) {
+ add_io_error("Script Failed to Load:\n"+p_file);
+ return;
+ }
+ if (!scr->is_tool()) {
+
+ add_io_error("Script is not tool, will not be able to run:\n"+p_file);
+ return;
+ }
+
+ Ref<EditorScript> es = memnew( EditorScript );
+ es->set_script(scr.get_ref_ptr());
+ es->set_editor(this);
+ es->_run();
+
+ get_undo_redo()->clear_history();
+ } break;
case FILE_DUMP_STRINGS: {
save_translatable_strings(p_file);
@@ -1633,7 +1653,10 @@ void EditorNode::_menu_option_confirm(int p_option,bool p_confirmed) {
quick_open->set_title("Quick Open Script..");
} break;
+ case FILE_RUN_SCRIPT: {
+ file_script->popup_centered_ratio();
+ } break;
case FILE_OPEN_PREV: {
if (previous_scenes.empty())
@@ -3028,6 +3051,7 @@ void EditorNode::register_editor_types() {
ObjectTypeDB::register_type<EditorPlugin>();
ObjectTypeDB::register_type<EditorImportPlugin>();
ObjectTypeDB::register_type<EditorScenePostImport>();
+ ObjectTypeDB::register_type<EditorScript>();
//ObjectTypeDB::register_type<EditorImporter>();
@@ -3424,6 +3448,8 @@ EditorNode::EditorNode() {
p->add_item("Undo",EDIT_UNDO,KEY_MASK_CMD+KEY_Z);
p->add_item("Redo",EDIT_REDO,KEY_MASK_CMD+KEY_MASK_SHIFT+KEY_Z);
p->add_separator();
+ p->add_item("Run Script",FILE_RUN_SCRIPT,KEY_MASK_CMD+KEY_R);
+ p->add_separator();
p->add_item("Project Settings",RUN_SETTINGS);
p->add_item("Project Manager",RUN_PROJECT_MANAGER);
p->add_separator();
@@ -3929,6 +3955,18 @@ EditorNode::EditorNode() {
file_export->get_vbox()->add_margin_child("Password:",file_export_password);
+ file_script = memnew( FileDialog );
+ file_script->set_title("Open & Run a Script");
+ file_script->set_access(FileDialog::ACCESS_FILESYSTEM);
+ file_script->set_mode(FileDialog::MODE_OPEN_FILE);
+ List<String> sexts;
+ ResourceLoader::get_recognized_extensions_for_type("Script",&sexts);
+ for (List<String>::Element*E=sexts.front();E;E=E->next()) {
+ file_script->add_filter("*."+E->get());
+ }
+ gui_base->add_child(file_script);
+ file_script->connect("file_selected",this,"_dialog_action");
+
reimport_dialog = memnew( EditorReImportDialog );
gui_base->add_child(reimport_dialog);