add script editor list context menu
This commit is contained in:
parent
47e5b43160
commit
798a14eb33
@ -926,10 +926,6 @@ void ScriptEditor::_menu_option(int p_option) {
|
||||
if (current) {
|
||||
|
||||
switch (p_option) {
|
||||
case FILE_NEW: {
|
||||
script_create_dialog->config("Node", ".gd");
|
||||
script_create_dialog->popup_centered(Size2(300, 300) * EDSCALE);
|
||||
} break;
|
||||
case FILE_SAVE: {
|
||||
|
||||
if (_test_script_times_on_disk())
|
||||
@ -1919,6 +1915,54 @@ void ScriptEditor::_unhandled_input(const Ref<InputEvent> &p_event) {
|
||||
}
|
||||
}
|
||||
|
||||
void ScriptEditor::_script_list_gui_input(const Ref<InputEvent> &ev) {
|
||||
Ref<InputEventMouseButton> mb = ev;
|
||||
|
||||
if (mb.is_valid() && mb->get_button_index() == BUTTON_RIGHT && !mb->is_pressed()) {
|
||||
|
||||
_make_script_list_context_menu();
|
||||
}
|
||||
}
|
||||
|
||||
void ScriptEditor::_make_script_list_context_menu() {
|
||||
|
||||
context_menu->clear();
|
||||
|
||||
int selected = tab_container->get_current_tab();
|
||||
if (selected < 0 || selected >= tab_container->get_child_count())
|
||||
return;
|
||||
|
||||
// SAVE, SAVE AS, SOFT RELOAD, CLOSE, RUN, TOGGLE
|
||||
|
||||
ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_child(selected));
|
||||
if (se) {
|
||||
context_menu->add_shortcut(ED_GET_SHORTCUT("script_editor/save"), FILE_SAVE);
|
||||
context_menu->add_shortcut(ED_GET_SHORTCUT("script_editor/save_as"), FILE_SAVE_AS);
|
||||
context_menu->add_shortcut(ED_GET_SHORTCUT("script_editor/close_file"), FILE_CLOSE);
|
||||
context_menu->add_separator();
|
||||
context_menu->add_shortcut(ED_GET_SHORTCUT("script_editor/reload_script_soft"), FILE_TOOL_RELOAD_SOFT);
|
||||
|
||||
Ref<Script> scr = se->get_edited_script();
|
||||
if (!scr.is_null() && scr->is_tool()) {
|
||||
context_menu->add_separator();
|
||||
context_menu->add_shortcut(ED_GET_SHORTCUT("script_editor/run_file"), FILE_RUN);
|
||||
}
|
||||
} else {
|
||||
context_menu->add_shortcut(ED_GET_SHORTCUT("script_editor/close_file"), FILE_CLOSE);
|
||||
}
|
||||
|
||||
EditorHelp *eh = Object::cast_to<EditorHelp>(tab_container->get_child(selected));
|
||||
if (eh) {
|
||||
// nothing
|
||||
}
|
||||
context_menu->add_separator();
|
||||
context_menu->add_shortcut(ED_GET_SHORTCUT("script_editor/toggle_scripts_panel"), TOGGLE_SCRIPTS_PANEL);
|
||||
|
||||
context_menu->set_position(get_global_transform().xform(get_local_mouse_position()));
|
||||
context_menu->set_size(Vector2(1, 1));
|
||||
context_menu->popup();
|
||||
}
|
||||
|
||||
void ScriptEditor::set_window_layout(Ref<ConfigFile> p_layout) {
|
||||
|
||||
if (!bool(EDITOR_DEF("text_editor/files/restore_scripts_on_load", true))) {
|
||||
@ -2243,6 +2287,7 @@ void ScriptEditor::_bind_methods() {
|
||||
ClassDB::bind_method("_history_back", &ScriptEditor::_history_back);
|
||||
ClassDB::bind_method("_live_auto_reload_running_scripts", &ScriptEditor::_live_auto_reload_running_scripts);
|
||||
ClassDB::bind_method("_unhandled_input", &ScriptEditor::_unhandled_input);
|
||||
ClassDB::bind_method("_script_list_gui_input", &ScriptEditor::_script_list_gui_input);
|
||||
ClassDB::bind_method("_script_changed", &ScriptEditor::_script_changed);
|
||||
ClassDB::bind_method("_update_recent_scripts", &ScriptEditor::_update_recent_scripts);
|
||||
|
||||
@ -2287,6 +2332,12 @@ ScriptEditor::ScriptEditor(EditorNode *p_editor) {
|
||||
script_split->set_split_offset(140);
|
||||
//list_split->set_split_offset(500);
|
||||
|
||||
script_list->connect("gui_input", this, "_script_list_gui_input");
|
||||
script_list->set_allow_rmb_select(true);
|
||||
context_menu = memnew(PopupMenu);
|
||||
add_child(context_menu);
|
||||
context_menu->connect("id_pressed", this, "_menu_option");
|
||||
|
||||
members_overview = memnew(ItemList);
|
||||
list_split->add_child(members_overview);
|
||||
members_overview->set_custom_minimum_size(Size2(0, 100)); //need to give a bit of limit to avoid it from disappearing
|
||||
|
@ -173,6 +173,7 @@ class ScriptEditor : public PanelContainer {
|
||||
MenuButton *edit_menu;
|
||||
MenuButton *script_search_menu;
|
||||
MenuButton *debug_menu;
|
||||
PopupMenu *context_menu;
|
||||
Timer *autosave_timer;
|
||||
uint64_t idle;
|
||||
|
||||
@ -308,6 +309,9 @@ class ScriptEditor : public PanelContainer {
|
||||
|
||||
void _unhandled_input(const Ref<InputEvent> &p_event);
|
||||
|
||||
void _script_list_gui_input(const Ref<InputEvent> &ev);
|
||||
void _make_script_list_context_menu();
|
||||
|
||||
void _help_search(String p_text);
|
||||
void _help_index(String p_text);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user