Proper support for code editor autosaving (disabled by default)
This commit is contained in:
parent
a6e6c5b878
commit
68700ee3a9
@ -408,7 +408,7 @@ void EditorSettings::_load_defaults() {
|
|||||||
|
|
||||||
set("text_editor/idle_parse_delay",2);
|
set("text_editor/idle_parse_delay",2);
|
||||||
set("text_editor/create_signal_callbacks",true);
|
set("text_editor/create_signal_callbacks",true);
|
||||||
set("text_editor/autosave_interval_seconds",60);
|
set("text_editor/autosave_interval_secs",0);
|
||||||
set("text_editor/font","");
|
set("text_editor/font","");
|
||||||
hints["text_editor/font"]=PropertyInfo(Variant::STRING,"text_editor/font",PROPERTY_HINT_GLOBAL_FILE,"*.fnt");
|
hints["text_editor/font"]=PropertyInfo(Variant::STRING,"text_editor/font",PROPERTY_HINT_GLOBAL_FILE,"*.fnt");
|
||||||
set("text_editor/auto_brace_complete", false);
|
set("text_editor/auto_brace_complete", false);
|
||||||
|
@ -130,6 +130,7 @@ void ScriptEditorQuickOpen::_bind_methods() {
|
|||||||
ObjectTypeDB::bind_method(_MD("_confirmed"),&ScriptEditorQuickOpen::_confirmed);
|
ObjectTypeDB::bind_method(_MD("_confirmed"),&ScriptEditorQuickOpen::_confirmed);
|
||||||
ObjectTypeDB::bind_method(_MD("_sbox_input"),&ScriptEditorQuickOpen::_sbox_input);
|
ObjectTypeDB::bind_method(_MD("_sbox_input"),&ScriptEditorQuickOpen::_sbox_input);
|
||||||
|
|
||||||
|
|
||||||
ADD_SIGNAL(MethodInfo("goto_line",PropertyInfo(Variant::INT,"line")));
|
ADD_SIGNAL(MethodInfo("goto_line",PropertyInfo(Variant::INT,"line")));
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -1089,6 +1090,18 @@ void ScriptEditor::_notification(int p_what) {
|
|||||||
editor->connect("stop_pressed",this,"_editor_stop");
|
editor->connect("stop_pressed",this,"_editor_stop");
|
||||||
editor->connect("script_add_function_request",this,"_add_callback");
|
editor->connect("script_add_function_request",this,"_add_callback");
|
||||||
editor->connect("resource_saved",this,"_res_saved_callback");
|
editor->connect("resource_saved",this,"_res_saved_callback");
|
||||||
|
autosave_timer->connect("timeout",this,"_autosave_scripts");
|
||||||
|
{
|
||||||
|
float autosave_time = EditorSettings::get_singleton()->get("text_editor/autosave_interval_secs");
|
||||||
|
if (autosave_time>0) {
|
||||||
|
autosave_timer->set_wait_time(autosave_time);
|
||||||
|
autosave_timer->start();
|
||||||
|
} else {
|
||||||
|
autosave_timer->stop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
EditorSettings::get_singleton()->connect("settings_changed",this,"_editor_settings_changed");
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -1339,7 +1352,8 @@ void ScriptEditor::_bind_methods() {
|
|||||||
ObjectTypeDB::bind_method("_breaked",&ScriptEditor::_breaked);
|
ObjectTypeDB::bind_method("_breaked",&ScriptEditor::_breaked);
|
||||||
ObjectTypeDB::bind_method("_show_debugger",&ScriptEditor::_show_debugger);
|
ObjectTypeDB::bind_method("_show_debugger",&ScriptEditor::_show_debugger);
|
||||||
ObjectTypeDB::bind_method("_get_debug_tooltip",&ScriptEditor::_get_debug_tooltip);
|
ObjectTypeDB::bind_method("_get_debug_tooltip",&ScriptEditor::_get_debug_tooltip);
|
||||||
|
ObjectTypeDB::bind_method("_autosave_scripts",&ScriptEditor::_autosave_scripts);
|
||||||
|
ObjectTypeDB::bind_method("_editor_settings_changed",&ScriptEditor::_editor_settings_changed);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1568,6 +1582,25 @@ void ScriptEditor::_add_callback(Object *p_obj, const String& p_function, const
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ScriptEditor::_editor_settings_changed() {
|
||||||
|
|
||||||
|
print_line("settings changed");
|
||||||
|
float autosave_time = EditorSettings::get_singleton()->get("text_editor/autosave_interval_secs");
|
||||||
|
if (autosave_time>0) {
|
||||||
|
autosave_timer->set_wait_time(autosave_time);
|
||||||
|
autosave_timer->start();
|
||||||
|
} else {
|
||||||
|
autosave_timer->stop();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScriptEditor::_autosave_scripts() {
|
||||||
|
|
||||||
|
print_line("autosaving");
|
||||||
|
save_external_data();
|
||||||
|
}
|
||||||
|
|
||||||
ScriptEditor::ScriptEditor(EditorNode *p_editor) {
|
ScriptEditor::ScriptEditor(EditorNode *p_editor) {
|
||||||
|
|
||||||
editor=p_editor;
|
editor=p_editor;
|
||||||
@ -1718,6 +1751,11 @@ ScriptEditor::ScriptEditor(EditorNode *p_editor) {
|
|||||||
|
|
||||||
v_split->add_child(debugger);
|
v_split->add_child(debugger);
|
||||||
debugger->connect("breaked",this,"_breaked");
|
debugger->connect("breaked",this,"_breaked");
|
||||||
|
|
||||||
|
autosave_timer = memnew( Timer );
|
||||||
|
autosave_timer->set_one_shot(false);
|
||||||
|
add_child(autosave_timer);
|
||||||
|
|
||||||
// debugger_gui->hide();
|
// debugger_gui->hide();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -154,6 +154,7 @@ class ScriptEditor : public VBoxContainer {
|
|||||||
MenuButton *window_menu;
|
MenuButton *window_menu;
|
||||||
MenuButton *debug_menu;
|
MenuButton *debug_menu;
|
||||||
MenuButton *help_menu;
|
MenuButton *help_menu;
|
||||||
|
Timer *autosave_timer;
|
||||||
uint64_t idle;
|
uint64_t idle;
|
||||||
|
|
||||||
TabContainer *tab_container;
|
TabContainer *tab_container;
|
||||||
@ -195,6 +196,9 @@ class ScriptEditor : public VBoxContainer {
|
|||||||
void _show_debugger(bool p_show);
|
void _show_debugger(bool p_show);
|
||||||
void _update_window_menu();
|
void _update_window_menu();
|
||||||
|
|
||||||
|
void _editor_settings_changed();
|
||||||
|
void _autosave_scripts();
|
||||||
|
|
||||||
static ScriptEditor *script_editor;
|
static ScriptEditor *script_editor;
|
||||||
protected:
|
protected:
|
||||||
void _notification(int p_what);
|
void _notification(int p_what);
|
||||||
|
Loading…
Reference in New Issue
Block a user