From f5b088551f461fad012e5d6f5eda4b7a260e8812 Mon Sep 17 00:00:00 2001 From: FeatherAntennae Date: Fri, 30 Aug 2019 16:03:24 -0400 Subject: [PATCH 01/15] Removed unused function declaration from header file --- editor/settings_config_dialog.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/editor/settings_config_dialog.h b/editor/settings_config_dialog.h index 0937766baec9..dc4ce4cf0c41 100644 --- a/editor/settings_config_dialog.h +++ b/editor/settings_config_dialog.h @@ -82,9 +82,6 @@ class EditorSettingsDialog : public AcceptDialog { void _tabs_tab_changed(int p_tab); void _focus_current_search_box(); - void _clear_shortcut_search_box(); - void _clear_search_box(); - void _filter_shortcuts(const String &p_filter); void _update_shortcuts(); From 5cb04b2869ebf8293d9a07e8df3fb4526df5f1a6 Mon Sep 17 00:00:00 2001 From: FeatherAntennae Date: Fri, 30 Aug 2019 16:44:38 -0400 Subject: [PATCH 02/15] Added icons for folded and unfolded lists --- editor/icons/icon_list_folded.svg | 60 +++++++++++++++++++++++++++ editor/icons/icon_list_unfolded.svg | 63 +++++++++++++++++++++++++++++ 2 files changed, 123 insertions(+) create mode 100644 editor/icons/icon_list_folded.svg create mode 100644 editor/icons/icon_list_unfolded.svg diff --git a/editor/icons/icon_list_folded.svg b/editor/icons/icon_list_folded.svg new file mode 100644 index 000000000000..ac6812376f3b --- /dev/null +++ b/editor/icons/icon_list_folded.svg @@ -0,0 +1,60 @@ + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/editor/icons/icon_list_unfolded.svg b/editor/icons/icon_list_unfolded.svg new file mode 100644 index 000000000000..cde86631924d --- /dev/null +++ b/editor/icons/icon_list_unfolded.svg @@ -0,0 +1,63 @@ + + + + + + image/svg+xml + + + + + + + + + + From 6930a2cfdd14437f7fe11c22114b5d2d0825e5f9 Mon Sep 17 00:00:00 2001 From: FeatherAntennae Date: Fri, 30 Aug 2019 16:48:21 -0400 Subject: [PATCH 03/15] Added menu button to editor settings' dialogue Created stub for general tab menu. Implemented Collapse/Expand all for shortcuts tab. Implemented Collapse unselected for shortcuts tab. --- editor/settings_config_dialog.cpp | 111 +++++++++++++++++++++++++++++- editor/settings_config_dialog.h | 16 +++++ 2 files changed, 126 insertions(+), 1 deletion(-) diff --git a/editor/settings_config_dialog.cpp b/editor/settings_config_dialog.cpp index b4643231d79b..f46d1c71bbf3 100644 --- a/editor/settings_config_dialog.cpp +++ b/editor/settings_config_dialog.cpp @@ -38,6 +38,73 @@ #include "scene/gui/margin_container.h" #include "script_editor_debugger.h" +void EditorSettingsDialog::_general_menu_option(int p_option) { + switch (p_option) { + case MENU_COLLAPSE_ALL: { + + } break; + case MENU_EXPAND_ALL: { + + } break; + case MENU_COLLAPSE_UNSELECTED: { + + } break; + case MENU_RESTORE_DEFAULTS: { + + } break; + } +} + +void EditorSettingsDialog::_shortcut_menu_option(int p_option) { + switch (p_option) { + case MENU_COLLAPSE_ALL: { + + if (shortcuts->get_root() && shortcuts->get_root()->get_children()) { + for (TreeItem *item = shortcuts->get_root()->get_children(); item; item = item->get_next()) { + item->set_collapsed(true); + } + } + } break; + case MENU_EXPAND_ALL: { + + if (shortcuts->get_root() && shortcuts->get_root()->get_children()) { + for (TreeItem *item = shortcuts->get_root()->get_children(); item; item = item->get_next()) { + item->set_collapsed(false); + } + } + } break; + case MENU_COLLAPSE_UNSELECTED: { + + if (shortcuts->get_root() && shortcuts->get_root()->get_children()) { + TreeItem *selected = shortcuts->get_selected(); + if (shortcuts->get_root() && shortcuts->get_root()->get_children()) { + TreeItem *shortcutsSections = shortcuts->get_root()->get_children(); + for (TreeItem *item = shortcutsSections; item; item = item->get_next()) { + + if (item->is_collapsed()) + continue; + + if (!selected || item != selected) { + bool hasSelectedChildren = false; + for (TreeItem *shortcut = item->get_children(); shortcut; shortcut = shortcut->get_next()) { + + if (shortcut->is_selected(0) || shortcut->is_selected(1)) + hasSelectedChildren = true; + } + + if (!hasSelectedChildren) + item->set_collapsed(true); + } + } + } + } + } break; + case MENU_RESTORE_DEFAULTS: { + + } break; + } +} + void EditorSettingsDialog::ok_pressed() { if (!EditorSettings::get_singleton()) @@ -124,6 +191,7 @@ void EditorSettingsDialog::_notification(int p_what) { } break; case NOTIFICATION_ENTER_TREE: { _update_icons(); + _update_menus(); } break; case NOTIFICATION_POPUP_HIDE: { EditorSettings::get_singleton()->set_project_metadata("dialog_bounds", "editor_settings", get_rect()); @@ -131,6 +199,7 @@ void EditorSettingsDialog::_notification(int p_what) { } break; case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: { _update_icons(); + _update_menus(); // Update theme colors. inspector->update_category_list(); _update_shortcuts(); @@ -170,8 +239,29 @@ void EditorSettingsDialog::_unhandled_input(const Ref &p_event) { } } +void EditorSettingsDialog::_update_menus() { + + PopupMenu *general_popup = general_menu->get_popup(); + general_popup->clear(); + general_popup->add_icon_item(get_icon("ListUnfolded", "EditorIcons"), TTR("Expand Sections"), MENU_EXPAND_ALL); + general_popup->add_icon_item(get_icon("ListFolded", "EditorIcons"), TTR("Collapse Sections"), MENU_COLLAPSE_ALL); + general_popup->add_item(TTR("Collapse Unselected"), MENU_COLLAPSE_UNSELECTED); + general_popup->add_separator(); + general_popup->add_icon_item(get_icon("Reload", "EditorIcons"), TTR("Restore Defaults"), MENU_RESTORE_DEFAULTS); + + PopupMenu *shortcut_popup = shortcut_menu->get_popup(); + shortcut_popup->clear(); + shortcut_popup->add_icon_item(get_icon("ListUnfolded", "EditorIcons"), TTR("Expand Sections"), MENU_EXPAND_ALL); + shortcut_popup->add_icon_item(get_icon("ListFolded", "EditorIcons"), TTR("Collapse Sections"), MENU_COLLAPSE_ALL); + shortcut_popup->add_item(TTR("Collapse Unselected"), MENU_COLLAPSE_UNSELECTED); + shortcut_popup->add_separator(); + shortcut_popup->add_icon_item(get_icon("Reload", "EditorIcons"), TTR("Restore Defaults"), MENU_RESTORE_DEFAULTS); +} + void EditorSettingsDialog::_update_icons() { + general_menu->set_icon(get_icon("Tools", "EditorIcons")); + shortcut_menu->set_icon(get_icon("Tools", "EditorIcons")); search_box->set_right_icon(get_icon("Search", "EditorIcons")); search_box->set_clear_button_enabled(true); shortcut_search_box->set_right_icon(get_icon("Search", "EditorIcons")); @@ -382,6 +472,8 @@ void EditorSettingsDialog::_editor_restart_close() { void EditorSettingsDialog::_bind_methods() { + ClassDB::bind_method(D_METHOD("_general_menu_option"), &EditorSettingsDialog::_general_menu_option); + ClassDB::bind_method(D_METHOD("_shortcut_menu_option"), &EditorSettingsDialog::_shortcut_menu_option); ClassDB::bind_method(D_METHOD("_unhandled_input"), &EditorSettingsDialog::_unhandled_input); ClassDB::bind_method(D_METHOD("_settings_save"), &EditorSettingsDialog::_settings_save); ClassDB::bind_method(D_METHOD("_settings_changed"), &EditorSettingsDialog::_settings_changed); @@ -389,10 +481,10 @@ void EditorSettingsDialog::_bind_methods() { ClassDB::bind_method(D_METHOD("_shortcut_button_pressed"), &EditorSettingsDialog::_shortcut_button_pressed); ClassDB::bind_method(D_METHOD("_filter_shortcuts"), &EditorSettingsDialog::_filter_shortcuts); ClassDB::bind_method(D_METHOD("_update_shortcuts"), &EditorSettingsDialog::_update_shortcuts); + ClassDB::bind_method(D_METHOD("_update_menus"), &EditorSettingsDialog::_update_menus); ClassDB::bind_method(D_METHOD("_press_a_key_confirm"), &EditorSettingsDialog::_press_a_key_confirm); ClassDB::bind_method(D_METHOD("_wait_for_key"), &EditorSettingsDialog::_wait_for_key); ClassDB::bind_method(D_METHOD("_tabs_tab_changed"), &EditorSettingsDialog::_tabs_tab_changed); - ClassDB::bind_method(D_METHOD("_editor_restart_request"), &EditorSettingsDialog::_editor_restart_request); ClassDB::bind_method(D_METHOD("_editor_restart"), &EditorSettingsDialog::_editor_restart); ClassDB::bind_method(D_METHOD("_editor_restart_close"), &EditorSettingsDialog::_editor_restart_close); @@ -420,9 +512,17 @@ EditorSettingsDialog::EditorSettingsDialog() { hbc->set_h_size_flags(Control::SIZE_EXPAND_FILL); tab_general->add_child(hbc); + /* menu */ + general_menu = memnew(MenuButton); + general_menu->set_icon(get_icon("Tools", "EditorIcons")); + PopupMenu *general_popup = general_menu->get_popup(); + general_popup->set_anchors_preset(PRESET_TOP_RIGHT); + general_popup->connect("id_pressed", this, "_general_menu_option"); + search_box = memnew(LineEdit); search_box->set_h_size_flags(Control::SIZE_EXPAND_FILL); hbc->add_child(search_box); + hbc->add_child(general_menu); inspector = memnew(SectionedInspector); //inspector->hide_top_label(); @@ -464,9 +564,17 @@ EditorSettingsDialog::EditorSettingsDialog() { hbc->set_h_size_flags(Control::SIZE_EXPAND_FILL); tab_shortcuts->add_child(hbc); + /* menu */ + shortcut_menu = memnew(MenuButton); + shortcut_menu->set_icon(get_icon("Tools", "EditorIcons")); + PopupMenu *shortcut_popup = shortcut_menu->get_popup(); + shortcut_popup->set_anchors_preset(PRESET_TOP_RIGHT); + shortcut_popup->connect("id_pressed", this, "_shortcut_menu_option"); + shortcut_search_box = memnew(LineEdit); shortcut_search_box->set_h_size_flags(Control::SIZE_EXPAND_FILL); hbc->add_child(shortcut_search_box); + hbc->add_child(shortcut_menu); shortcut_search_box->connect("text_changed", this, "_filter_shortcuts"); shortcuts = memnew(Tree); @@ -478,6 +586,7 @@ EditorSettingsDialog::EditorSettingsDialog() { shortcuts->set_column_titles_visible(true); shortcuts->set_column_title(0, TTR("Name")); shortcuts->set_column_title(1, TTR("Binding")); + shortcuts->connect("item_collapsed", this, "_shortcut_section_collapsed"); shortcuts->connect("button_pressed", this, "_shortcut_button_pressed"); press_a_key = memnew(ConfirmationDialog); diff --git a/editor/settings_config_dialog.h b/editor/settings_config_dialog.h index dc4ce4cf0c41..823d2dddfa45 100644 --- a/editor/settings_config_dialog.h +++ b/editor/settings_config_dialog.h @@ -44,6 +44,14 @@ class EditorSettingsDialog : public AcceptDialog { GDCLASS(EditorSettingsDialog, AcceptDialog); + enum MenuOptions { + MENU_COLLAPSE_ALL, + MENU_COLLAPSE_UNSELECTED, + MENU_EXPAND_ALL, + MENU_RESTORE_DEFAULTS + }; + + bool updating; TabContainer *tabs; @@ -54,6 +62,14 @@ class EditorSettingsDialog : public AcceptDialog { LineEdit *shortcut_search_box; SectionedInspector *inspector; + MenuButton *general_menu; + MenuButton *shortcut_menu; + + void _general_menu_option(int p_option); + void _shortcut_menu_option(int p_option); + void _update_menus(); + + Timer *timer; UndoRedo *undo_redo; From af34c6f39510ed0236733baac19a6bec8f3d7f2a Mon Sep 17 00:00:00 2001 From: FeatherAntennae Date: Fri, 30 Aug 2019 16:48:21 -0400 Subject: [PATCH 04/15] Added menu button to editor settings' dialogue Created stub for general tab menu. Implemented Collapse/Expand all for shortcuts tab. Implemented Collapse unselected for shortcuts tab. --- editor/settings_config_dialog.h | 1 - 1 file changed, 1 deletion(-) diff --git a/editor/settings_config_dialog.h b/editor/settings_config_dialog.h index 823d2dddfa45..dadb0fc49b0a 100644 --- a/editor/settings_config_dialog.h +++ b/editor/settings_config_dialog.h @@ -68,7 +68,6 @@ class EditorSettingsDialog : public AcceptDialog { void _general_menu_option(int p_option); void _shortcut_menu_option(int p_option); void _update_menus(); - Timer *timer; From 02eff60cbc9146f1b4d6535c9964cf9b90bd6480 Mon Sep 17 00:00:00 2001 From: FeatherAntennae Date: Fri, 30 Aug 2019 16:48:21 -0400 Subject: [PATCH 05/15] Added menu button to editor settings' dialogue Created stub for general tab menu. Implemented Collapse/Expand all for shortcuts tab. Implemented Collapse unselected for shortcuts tab. --- editor/settings_config_dialog.h | 1 - 1 file changed, 1 deletion(-) diff --git a/editor/settings_config_dialog.h b/editor/settings_config_dialog.h index dadb0fc49b0a..2e1bf467233a 100644 --- a/editor/settings_config_dialog.h +++ b/editor/settings_config_dialog.h @@ -51,7 +51,6 @@ class EditorSettingsDialog : public AcceptDialog { MENU_RESTORE_DEFAULTS }; - bool updating; TabContainer *tabs; From 20587443fad747639f2dba9748d6b9e77b83a8d3 Mon Sep 17 00:00:00 2001 From: FeatherAntennae Date: Sat, 12 Oct 2019 15:34:16 -0400 Subject: [PATCH 06/15] Removed duplicated icons to use existing ones in the setting config dialog instead. --- editor/icons/icon_list_folded.svg | 60 --------------------------- editor/icons/icon_list_unfolded.svg | 63 ----------------------------- editor/settings_config_dialog.cpp | 8 ++-- 3 files changed, 4 insertions(+), 127 deletions(-) delete mode 100644 editor/icons/icon_list_folded.svg delete mode 100644 editor/icons/icon_list_unfolded.svg diff --git a/editor/icons/icon_list_folded.svg b/editor/icons/icon_list_folded.svg deleted file mode 100644 index ac6812376f3b..000000000000 --- a/editor/icons/icon_list_folded.svg +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/editor/icons/icon_list_unfolded.svg b/editor/icons/icon_list_unfolded.svg deleted file mode 100644 index cde86631924d..000000000000 --- a/editor/icons/icon_list_unfolded.svg +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - diff --git a/editor/settings_config_dialog.cpp b/editor/settings_config_dialog.cpp index 7238cb1711c4..bd3d923dd80e 100644 --- a/editor/settings_config_dialog.cpp +++ b/editor/settings_config_dialog.cpp @@ -246,16 +246,16 @@ void EditorSettingsDialog::_update_menus() { PopupMenu *general_popup = general_menu->get_popup(); general_popup->clear(); - general_popup->add_icon_item(get_icon("ListUnfolded", "EditorIcons"), TTR("Expand Sections"), MENU_EXPAND_ALL); - general_popup->add_icon_item(get_icon("ListFolded", "EditorIcons"), TTR("Collapse Sections"), MENU_COLLAPSE_ALL); + general_popup->add_icon_item(get_icon("AnimationTrackGroup", "EditorIcons"), TTR("Expand Sections"), MENU_EXPAND_ALL); + general_popup->add_icon_item(get_icon("AnimationTrackList", "EditorIcons"), TTR("Collapse Sections"), MENU_COLLAPSE_ALL); general_popup->add_item(TTR("Collapse Unselected"), MENU_COLLAPSE_UNSELECTED); general_popup->add_separator(); general_popup->add_icon_item(get_icon("Reload", "EditorIcons"), TTR("Restore Defaults"), MENU_RESTORE_DEFAULTS); PopupMenu *shortcut_popup = shortcut_menu->get_popup(); shortcut_popup->clear(); - shortcut_popup->add_icon_item(get_icon("ListUnfolded", "EditorIcons"), TTR("Expand Sections"), MENU_EXPAND_ALL); - shortcut_popup->add_icon_item(get_icon("ListFolded", "EditorIcons"), TTR("Collapse Sections"), MENU_COLLAPSE_ALL); + shortcut_popup->add_icon_item(get_icon("AnimationTrackGroup", "EditorIcons"), TTR("Expand Sections"), MENU_EXPAND_ALL); + shortcut_popup->add_icon_item(get_icon("AnimationTrackList", "EditorIcons"), TTR("Collapse Sections"), MENU_COLLAPSE_ALL); shortcut_popup->add_item(TTR("Collapse Unselected"), MENU_COLLAPSE_UNSELECTED); shortcut_popup->add_separator(); shortcut_popup->add_icon_item(get_icon("Reload", "EditorIcons"), TTR("Restore Defaults"), MENU_RESTORE_DEFAULTS); From 800eda9818c1b022a96a40673b95d9a45482f1cb Mon Sep 17 00:00:00 2001 From: FeatherAntennae Date: Sat, 12 Oct 2019 16:41:21 -0400 Subject: [PATCH 07/15] Select manually collapsed TreeItem to improve "collapse unselected" behaviour. --- editor/settings_config_dialog.cpp | 15 +++++++++++++++ editor/settings_config_dialog.h | 2 ++ 2 files changed, 17 insertions(+) diff --git a/editor/settings_config_dialog.cpp b/editor/settings_config_dialog.cpp index bd3d923dd80e..eb2de092027f 100644 --- a/editor/settings_config_dialog.cpp +++ b/editor/settings_config_dialog.cpp @@ -60,22 +60,27 @@ void EditorSettingsDialog::_shortcut_menu_option(int p_option) { case MENU_COLLAPSE_ALL: { if (shortcuts->get_root() && shortcuts->get_root()->get_children()) { + autocollapsing = true; for (TreeItem *item = shortcuts->get_root()->get_children(); item; item = item->get_next()) { item->set_collapsed(true); } + autocollapsing = false; } } break; case MENU_EXPAND_ALL: { if (shortcuts->get_root() && shortcuts->get_root()->get_children()) { + autocollapsing = true; for (TreeItem *item = shortcuts->get_root()->get_children(); item; item = item->get_next()) { item->set_collapsed(false); } + autocollapsing = false; } } break; case MENU_COLLAPSE_UNSELECTED: { if (shortcuts->get_root() && shortcuts->get_root()->get_children()) { + autocollapsing = true; TreeItem *selected = shortcuts->get_selected(); if (shortcuts->get_root() && shortcuts->get_root()->get_children()) { TreeItem *shortcutsSections = shortcuts->get_root()->get_children(); @@ -97,6 +102,7 @@ void EditorSettingsDialog::_shortcut_menu_option(int p_option) { } } } + autocollapsing = false; } } break; case MENU_RESTORE_DEFAULTS: { @@ -105,6 +111,14 @@ void EditorSettingsDialog::_shortcut_menu_option(int p_option) { } } +void EditorSettingsDialog::_shortcut_section_collapsed(Object *p_item) { + + if (!autocollapsing) { + TreeItem *item = Object::cast_to(p_item); + item->select(0); + } +} + void EditorSettingsDialog::ok_pressed() { if (!EditorSettings::get_singleton()) @@ -477,6 +491,7 @@ void EditorSettingsDialog::_bind_methods() { ClassDB::bind_method(D_METHOD("_general_menu_option"), &EditorSettingsDialog::_general_menu_option); ClassDB::bind_method(D_METHOD("_shortcut_menu_option"), &EditorSettingsDialog::_shortcut_menu_option); + ClassDB::bind_method(D_METHOD("_shortcut_section_collapsed"), &EditorSettingsDialog::_shortcut_section_collapsed); ClassDB::bind_method(D_METHOD("_unhandled_input"), &EditorSettingsDialog::_unhandled_input); ClassDB::bind_method(D_METHOD("_settings_save"), &EditorSettingsDialog::_settings_save); ClassDB::bind_method(D_METHOD("_settings_changed"), &EditorSettingsDialog::_settings_changed); diff --git a/editor/settings_config_dialog.h b/editor/settings_config_dialog.h index 2e1bf467233a..674c7a8c88f5 100644 --- a/editor/settings_config_dialog.h +++ b/editor/settings_config_dialog.h @@ -64,8 +64,10 @@ class EditorSettingsDialog : public AcceptDialog { MenuButton *general_menu; MenuButton *shortcut_menu; + bool autocollapsing; void _general_menu_option(int p_option); void _shortcut_menu_option(int p_option); + void _shortcut_section_collapsed(Object *p_item); void _update_menus(); Timer *timer; From e7de1e5931c1c91ad1b7fc67ed5890e82aa5f4e1 Mon Sep 17 00:00:00 2001 From: FeatherAntennae Date: Sat, 12 Oct 2019 17:29:21 -0400 Subject: [PATCH 08/15] Added confirmation dialogs to "restore all" choices. --- editor/settings_config_dialog.cpp | 23 ++++++++++++++++++++++- editor/settings_config_dialog.h | 6 +++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/editor/settings_config_dialog.cpp b/editor/settings_config_dialog.cpp index eb2de092027f..dc0bf420e5d3 100644 --- a/editor/settings_config_dialog.cpp +++ b/editor/settings_config_dialog.cpp @@ -50,11 +50,17 @@ void EditorSettingsDialog::_general_menu_option(int p_option) { } break; case MENU_RESTORE_DEFAULTS: { - + restore_default_settings_ask->set_text(TTR("Restore all default settings? (No undo)")); + restore_default_settings_ask->popup_centered_minsize(); } break; } } +void EditorSettingsDialog::_restore_default_settings() { + + print_line("Restore default settings accepted"); +} + void EditorSettingsDialog::_shortcut_menu_option(int p_option) { switch (p_option) { case MENU_COLLAPSE_ALL: { @@ -107,10 +113,17 @@ void EditorSettingsDialog::_shortcut_menu_option(int p_option) { } break; case MENU_RESTORE_DEFAULTS: { + restore_default_shortcuts_ask->set_text(TTR("Restore all default shortcuts? (No undo)")); + restore_default_shortcuts_ask->popup_centered_minsize(); } break; } } +void EditorSettingsDialog::_restore_default_shortcuts() { + + print_line("Restore default shortcuts accepted"); +} + void EditorSettingsDialog::_shortcut_section_collapsed(Object *p_item) { if (!autocollapsing) { @@ -492,6 +505,8 @@ void EditorSettingsDialog::_bind_methods() { ClassDB::bind_method(D_METHOD("_general_menu_option"), &EditorSettingsDialog::_general_menu_option); ClassDB::bind_method(D_METHOD("_shortcut_menu_option"), &EditorSettingsDialog::_shortcut_menu_option); ClassDB::bind_method(D_METHOD("_shortcut_section_collapsed"), &EditorSettingsDialog::_shortcut_section_collapsed); + ClassDB::bind_method(D_METHOD("_restore_default_shortcuts"), &EditorSettingsDialog::_restore_default_shortcuts); + ClassDB::bind_method(D_METHOD("_restore_default_settings"), &EditorSettingsDialog::_restore_default_settings); ClassDB::bind_method(D_METHOD("_unhandled_input"), &EditorSettingsDialog::_unhandled_input); ClassDB::bind_method(D_METHOD("_settings_save"), &EditorSettingsDialog::_settings_save); ClassDB::bind_method(D_METHOD("_settings_changed"), &EditorSettingsDialog::_settings_changed); @@ -535,6 +550,9 @@ EditorSettingsDialog::EditorSettingsDialog() { PopupMenu *general_popup = general_menu->get_popup(); general_popup->set_anchors_preset(PRESET_TOP_RIGHT); general_popup->connect("id_pressed", this, "_general_menu_option"); + restore_default_settings_ask = memnew(ConfirmationDialog); + add_child(restore_default_settings_ask); + restore_default_settings_ask->connect("confirmed", this, "_restore_default_settings"); search_box = memnew(LineEdit); search_box->set_h_size_flags(Control::SIZE_EXPAND_FILL); @@ -586,6 +604,9 @@ EditorSettingsDialog::EditorSettingsDialog() { PopupMenu *shortcut_popup = shortcut_menu->get_popup(); shortcut_popup->set_anchors_preset(PRESET_TOP_RIGHT); shortcut_popup->connect("id_pressed", this, "_shortcut_menu_option"); + restore_default_shortcuts_ask = memnew(ConfirmationDialog); + add_child(restore_default_shortcuts_ask); + restore_default_shortcuts_ask->connect("confirmed", this, "_restore_default_shortcuts"); shortcut_search_box = memnew(LineEdit); shortcut_search_box->set_h_size_flags(Control::SIZE_EXPAND_FILL); diff --git a/editor/settings_config_dialog.h b/editor/settings_config_dialog.h index 674c7a8c88f5..c90e56de542e 100644 --- a/editor/settings_config_dialog.h +++ b/editor/settings_config_dialog.h @@ -62,12 +62,16 @@ class EditorSettingsDialog : public AcceptDialog { SectionedInspector *inspector; MenuButton *general_menu; + ConfirmationDialog *restore_default_settings_ask; MenuButton *shortcut_menu; + ConfirmationDialog *restore_default_shortcuts_ask; - bool autocollapsing; + bool autocollapsing = false; void _general_menu_option(int p_option); + void _restore_default_settings(); void _shortcut_menu_option(int p_option); void _shortcut_section_collapsed(Object *p_item); + void _restore_default_shortcuts(); void _update_menus(); Timer *timer; From 11ca92c94920163e918b853bbf7afee35cd91cf7 Mon Sep 17 00:00:00 2001 From: FeatherAntennae Date: Sat, 12 Oct 2019 19:02:58 -0400 Subject: [PATCH 09/15] Implemented restore all default shortcuts. --- editor/settings_config_dialog.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/editor/settings_config_dialog.cpp b/editor/settings_config_dialog.cpp index dc0bf420e5d3..e329bef644ca 100644 --- a/editor/settings_config_dialog.cpp +++ b/editor/settings_config_dialog.cpp @@ -121,7 +121,23 @@ void EditorSettingsDialog::_shortcut_menu_option(int p_option) { void EditorSettingsDialog::_restore_default_shortcuts() { - print_line("Restore default shortcuts accepted"); + List slist; + EditorSettings::get_singleton()->get_shortcut_list(&slist); + for (List::Element *E = slist.front(); E; E = E->next()) { + + Ref sc = EditorSettings::get_singleton()->get_shortcut(E->get()); + if (!sc->has_meta("original")) + continue; + + Ref original = sc->get_meta("original"); + if (sc->get_shortcut() == original) + continue; + + sc->set_shortcut(original); + print_line("restored one"); + } + + _update_shortcuts(); } void EditorSettingsDialog::_shortcut_section_collapsed(Object *p_item) { From 274de25ddae28ace33c687a99a67c1365c90db75 Mon Sep 17 00:00:00 2001 From: FeatherAntennae Date: Sun, 13 Oct 2019 00:54:25 -0400 Subject: [PATCH 10/15] Implemented restore all default settings --- editor/settings_config_dialog.cpp | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/editor/settings_config_dialog.cpp b/editor/settings_config_dialog.cpp index e329bef644ca..46388a831b38 100644 --- a/editor/settings_config_dialog.cpp +++ b/editor/settings_config_dialog.cpp @@ -58,7 +58,27 @@ void EditorSettingsDialog::_general_menu_option(int p_option) { void EditorSettingsDialog::_restore_default_settings() { - print_line("Restore default settings accepted"); + List plist; + EditorSettings *settings = EditorSettings::get_singleton(); + settings->get_property_list(&plist); + bool requireRestart = false; + + for (List::Element *E = plist.front(); E; E = E->next()) { + + PropertyInfo propInfo = E->get(); + if (settings->property_can_revert(propInfo.name)) { + Variant revert = settings->property_get_revert(propInfo.name); + settings->set_setting(propInfo.name, revert); + } + + if (propInfo.usage & PROPERTY_USAGE_RESTART_IF_CHANGED) { + requireRestart = true; + } + } + + if (requireRestart) { + _editor_restart_request(); + } } void EditorSettingsDialog::_shortcut_menu_option(int p_option) { @@ -134,7 +154,6 @@ void EditorSettingsDialog::_restore_default_shortcuts() { continue; sc->set_shortcut(original); - print_line("restored one"); } _update_shortcuts(); From 7efcf1cd003f0603ef4d0525d33640d3426c8f68 Mon Sep 17 00:00:00 2001 From: FeatherAntennae Date: Sun, 13 Oct 2019 18:03:42 -0400 Subject: [PATCH 11/15] Implemented collapse/expand all and collapse unselected for editor settings. --- editor/editor_sectioned_inspector.cpp | 34 +++++++++++++++++++++++++++ editor/editor_sectioned_inspector.h | 4 ++++ editor/settings_config_dialog.cpp | 6 ++--- 3 files changed, 41 insertions(+), 3 deletions(-) diff --git a/editor/editor_sectioned_inspector.cpp b/editor/editor_sectioned_inspector.cpp index abff8190af3e..7a4f9ea56716 100644 --- a/editor/editor_sectioned_inspector.cpp +++ b/editor/editor_sectioned_inspector.cpp @@ -136,6 +136,9 @@ void SectionedInspector::_bind_methods() { ClassDB::bind_method("_section_selected", &SectionedInspector::_section_selected); ClassDB::bind_method("_search_changed", &SectionedInspector::_search_changed); + ClassDB::bind_method("collapse_all_sections", &SectionedInspector::collapse_all_sections); + ClassDB::bind_method("expand_all_sections", &SectionedInspector::expand_all_sections); + ClassDB::bind_method("collapse_unselected", &SectionedInspector::collapse_unselected); ClassDB::bind_method("update_category_list", &SectionedInspector::update_category_list); } @@ -307,6 +310,37 @@ EditorInspector *SectionedInspector::get_inspector() { return inspector; } +void SectionedInspector::collapse_all_sections() { + + if (sections->get_root() && sections->get_root()->get_children()) { + for (TreeItem *section = sections->get_root()->get_children(); section; section = section->get_next()) { + section->set_collapsed(true); + } + } +} + +void SectionedInspector::expand_all_sections() { + + if (sections->get_root() && sections->get_root()->get_children()) { + for (TreeItem *section = sections->get_root()->get_children(); section; section = section->get_next()) { + section->set_collapsed(false); + } + } +} + +void SectionedInspector::collapse_unselected() { + + if (sections->get_root() && sections->get_root()->get_children()) { + for (TreeItem *section = sections->get_root()->get_children(); section; section = section->get_next()) { + + String sectionName = section->get_metadata(0); + if (!get_current_section().begins_with(sectionName)) { + section->set_collapsed(true); + } + } + } +} + SectionedInspector::SectionedInspector() : obj(-1), sections(memnew(Tree)), diff --git a/editor/editor_sectioned_inspector.h b/editor/editor_sectioned_inspector.h index 4395e9bb2733..46ce66874d13 100644 --- a/editor/editor_sectioned_inspector.h +++ b/editor/editor_sectioned_inspector.h @@ -68,6 +68,10 @@ class SectionedInspector : public HSplitContainer { void update_category_list(); + void collapse_all_sections(); + void expand_all_sections(); + void collapse_unselected(); + SectionedInspector(); ~SectionedInspector(); }; diff --git a/editor/settings_config_dialog.cpp b/editor/settings_config_dialog.cpp index 46388a831b38..e20726b01f56 100644 --- a/editor/settings_config_dialog.cpp +++ b/editor/settings_config_dialog.cpp @@ -41,13 +41,13 @@ void EditorSettingsDialog::_general_menu_option(int p_option) { switch (p_option) { case MENU_COLLAPSE_ALL: { - + inspector->collapse_all_sections(); } break; case MENU_EXPAND_ALL: { - + inspector->expand_all_sections(); } break; case MENU_COLLAPSE_UNSELECTED: { - + inspector->collapse_unselected(); } break; case MENU_RESTORE_DEFAULTS: { restore_default_settings_ask->set_text(TTR("Restore all default settings? (No undo)")); From 020c5fe41b040f6e3fa03f5023f2d3a5aeadd4d8 Mon Sep 17 00:00:00 2001 From: FeatherAntennae Date: Mon, 14 Oct 2019 15:11:43 -0400 Subject: [PATCH 12/15] Moved popup declaration to header file --- editor/settings_config_dialog.cpp | 4 ++-- editor/settings_config_dialog.h | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/editor/settings_config_dialog.cpp b/editor/settings_config_dialog.cpp index e20726b01f56..2bc957728377 100644 --- a/editor/settings_config_dialog.cpp +++ b/editor/settings_config_dialog.cpp @@ -306,7 +306,7 @@ void EditorSettingsDialog::_unhandled_input(const Ref &p_event) { void EditorSettingsDialog::_update_menus() { - PopupMenu *general_popup = general_menu->get_popup(); + general_popup = general_menu->get_popup(); general_popup->clear(); general_popup->add_icon_item(get_icon("AnimationTrackGroup", "EditorIcons"), TTR("Expand Sections"), MENU_EXPAND_ALL); general_popup->add_icon_item(get_icon("AnimationTrackList", "EditorIcons"), TTR("Collapse Sections"), MENU_COLLAPSE_ALL); @@ -314,7 +314,7 @@ void EditorSettingsDialog::_update_menus() { general_popup->add_separator(); general_popup->add_icon_item(get_icon("Reload", "EditorIcons"), TTR("Restore Defaults"), MENU_RESTORE_DEFAULTS); - PopupMenu *shortcut_popup = shortcut_menu->get_popup(); + shortcut_popup = shortcut_menu->get_popup(); shortcut_popup->clear(); shortcut_popup->add_icon_item(get_icon("AnimationTrackGroup", "EditorIcons"), TTR("Expand Sections"), MENU_EXPAND_ALL); shortcut_popup->add_icon_item(get_icon("AnimationTrackList", "EditorIcons"), TTR("Collapse Sections"), MENU_COLLAPSE_ALL); diff --git a/editor/settings_config_dialog.h b/editor/settings_config_dialog.h index c90e56de542e..52bd5b277fde 100644 --- a/editor/settings_config_dialog.h +++ b/editor/settings_config_dialog.h @@ -34,7 +34,9 @@ #include "editor/editor_sectioned_inspector.h" #include "editor_inspector.h" #include "scene/gui/dialogs.h" +#include "scene/gui/menu_button.h" #include "scene/gui/panel_container.h" +#include "scene/gui/popup_menu.h" #include "scene/gui/rich_text_label.h" #include "scene/gui/tab_container.h" #include "scene/gui/texture_rect.h" @@ -62,8 +64,10 @@ class EditorSettingsDialog : public AcceptDialog { SectionedInspector *inspector; MenuButton *general_menu; + PopupMenu *general_popup; ConfirmationDialog *restore_default_settings_ask; MenuButton *shortcut_menu; + PopupMenu *shortcut_popup; ConfirmationDialog *restore_default_shortcuts_ask; bool autocollapsing = false; From b0c19dd613868176718e86cf9f0904efe2fcd68c Mon Sep 17 00:00:00 2001 From: FeatherAntennae Date: Mon, 11 Nov 2019 10:58:21 -0500 Subject: [PATCH 13/15] Small refactor of the code and cleanup. Renamed popups and buttons to be clearer. Placed all menu logic together to make it easier to work with. --- editor/settings_config_dialog.cpp | 98 +++++++++++++++++++------------ editor/settings_config_dialog.h | 32 +++++----- 2 files changed, 79 insertions(+), 51 deletions(-) diff --git a/editor/settings_config_dialog.cpp b/editor/settings_config_dialog.cpp index 2bc957728377..5d53379ae4b6 100644 --- a/editor/settings_config_dialog.cpp +++ b/editor/settings_config_dialog.cpp @@ -38,6 +38,7 @@ #include "scene/gui/margin_container.h" #include "script_editor_debugger.h" +// Popup Menus void EditorSettingsDialog::_general_menu_option(int p_option) { switch (p_option) { case MENU_COLLAPSE_ALL: { @@ -167,6 +168,40 @@ void EditorSettingsDialog::_shortcut_section_collapsed(Object *p_item) { } } +void EditorSettingsDialog::_update_menus() { + + general_menu_button_popup = general_menu_button->get_popup(); + general_menu_button_popup->clear(); + general_menu_button_popup->add_icon_item(get_icon("AnimationTrackGroup", "EditorIcons"), TTR("Expand Sections"), MENU_EXPAND_ALL); + general_menu_button_popup->add_icon_item(get_icon("AnimationTrackList", "EditorIcons"), TTR("Collapse Sections"), MENU_COLLAPSE_ALL); + general_menu_button_popup->add_item(TTR("Collapse Unselected"), MENU_COLLAPSE_UNSELECTED); + general_menu_button_popup->add_separator(); + general_menu_button_popup->add_icon_item(get_icon("Reload", "EditorIcons"), TTR("Restore Defaults"), MENU_RESTORE_DEFAULTS); + + shortcut_menu_button_popup = shortcut_menu_button->get_popup(); + shortcut_menu_button_popup->clear(); + shortcut_menu_button_popup->add_icon_item(get_icon("AnimationTrackGroup", "EditorIcons"), TTR("Expand Sections"), MENU_EXPAND_ALL); + shortcut_menu_button_popup->add_icon_item(get_icon("AnimationTrackList", "EditorIcons"), TTR("Collapse Sections"), MENU_COLLAPSE_ALL); + shortcut_menu_button_popup->add_item(TTR("Collapse Unselected"), MENU_COLLAPSE_UNSELECTED); + shortcut_menu_button_popup->add_separator(); + shortcut_menu_button_popup->add_icon_item(get_icon("Reload", "EditorIcons"), TTR("Restore Defaults"), MENU_RESTORE_DEFAULTS); +} + +void EditorSettingsDialog::_shortcut_right_click(Vector2 p_position) { + /*shortcut_popup->set_position(get_global_transform().xform(get_local_mouse_position())); + shortcut_popup->set_size(Vector2(1, 1)); + shortcut_popup->set_scale(get_global_transform().get_scale()); + shortcut_popup->popup();*/ +} + +void EditorSettingsDialog::_general_section_right_click(Vector2 p_position) { + /*shortcut_popup->set_position(get_global_transform().xform(get_local_mouse_position())); + shortcut_popup->set_size(Vector2(1, 1)); + shortcut_popup->set_scale(get_global_transform().get_scale()); + shortcut_popup->popup();*/ +} + +// Tabs and content void EditorSettingsDialog::ok_pressed() { if (!EditorSettings::get_singleton()) @@ -304,29 +339,10 @@ void EditorSettingsDialog::_unhandled_input(const Ref &p_event) { } } -void EditorSettingsDialog::_update_menus() { - - general_popup = general_menu->get_popup(); - general_popup->clear(); - general_popup->add_icon_item(get_icon("AnimationTrackGroup", "EditorIcons"), TTR("Expand Sections"), MENU_EXPAND_ALL); - general_popup->add_icon_item(get_icon("AnimationTrackList", "EditorIcons"), TTR("Collapse Sections"), MENU_COLLAPSE_ALL); - general_popup->add_item(TTR("Collapse Unselected"), MENU_COLLAPSE_UNSELECTED); - general_popup->add_separator(); - general_popup->add_icon_item(get_icon("Reload", "EditorIcons"), TTR("Restore Defaults"), MENU_RESTORE_DEFAULTS); - - shortcut_popup = shortcut_menu->get_popup(); - shortcut_popup->clear(); - shortcut_popup->add_icon_item(get_icon("AnimationTrackGroup", "EditorIcons"), TTR("Expand Sections"), MENU_EXPAND_ALL); - shortcut_popup->add_icon_item(get_icon("AnimationTrackList", "EditorIcons"), TTR("Collapse Sections"), MENU_COLLAPSE_ALL); - shortcut_popup->add_item(TTR("Collapse Unselected"), MENU_COLLAPSE_UNSELECTED); - shortcut_popup->add_separator(); - shortcut_popup->add_icon_item(get_icon("Reload", "EditorIcons"), TTR("Restore Defaults"), MENU_RESTORE_DEFAULTS); -} - void EditorSettingsDialog::_update_icons() { - general_menu->set_icon(get_icon("Tools", "EditorIcons")); - shortcut_menu->set_icon(get_icon("Tools", "EditorIcons")); + general_menu_button->set_icon(get_icon("Tools", "EditorIcons")); + shortcut_menu_button->set_icon(get_icon("Tools", "EditorIcons")); search_box->set_right_icon(get_icon("Search", "EditorIcons")); search_box->set_clear_button_enabled(true); shortcut_search_box->set_right_icon(get_icon("Search", "EditorIcons")); @@ -547,6 +563,8 @@ void EditorSettingsDialog::_bind_methods() { ClassDB::bind_method(D_METHOD("_settings_changed"), &EditorSettingsDialog::_settings_changed); ClassDB::bind_method(D_METHOD("_settings_property_edited"), &EditorSettingsDialog::_settings_property_edited); ClassDB::bind_method(D_METHOD("_shortcut_button_pressed"), &EditorSettingsDialog::_shortcut_button_pressed); + ClassDB::bind_method(D_METHOD("_shortcut_right_click"), &EditorSettingsDialog::_shortcut_right_click); + ClassDB::bind_method(D_METHOD("_general_section_right_click"), &EditorSettingsDialog::_general_section_right_click); ClassDB::bind_method(D_METHOD("_filter_shortcuts"), &EditorSettingsDialog::_filter_shortcuts); ClassDB::bind_method(D_METHOD("_update_shortcuts"), &EditorSettingsDialog::_update_shortcuts); ClassDB::bind_method(D_METHOD("_update_menus"), &EditorSettingsDialog::_update_menus); @@ -569,7 +587,7 @@ EditorSettingsDialog::EditorSettingsDialog() { tabs->connect("tab_changed", this, "_tabs_tab_changed"); add_child(tabs); - // General Tab + // General Tab -------------------------------------------------------------------------------------- tab_general = memnew(VBoxContainer); tabs->add_child(tab_general); @@ -580,20 +598,22 @@ EditorSettingsDialog::EditorSettingsDialog() { tab_general->add_child(hbc); /* menu */ - general_menu = memnew(MenuButton); - general_menu->set_icon(get_icon("Tools", "EditorIcons")); - PopupMenu *general_popup = general_menu->get_popup(); - general_popup->set_anchors_preset(PRESET_TOP_RIGHT); - general_popup->connect("id_pressed", this, "_general_menu_option"); + general_menu_button = memnew(MenuButton); + general_menu_button->set_icon(get_icon("Tools", "EditorIcons")); + general_menu_button_popup = general_menu_button->get_popup(); + general_menu_button_popup->set_anchors_preset(PRESET_TOP_RIGHT); + general_menu_button_popup->connect("id_pressed", this, "_general_menu_option"); restore_default_settings_ask = memnew(ConfirmationDialog); add_child(restore_default_settings_ask); restore_default_settings_ask->connect("confirmed", this, "_restore_default_settings"); + /* search */ search_box = memnew(LineEdit); search_box->set_h_size_flags(Control::SIZE_EXPAND_FILL); hbc->add_child(search_box); - hbc->add_child(general_menu); + hbc->add_child(general_menu_button); + /* inspector */ inspector = memnew(SectionedInspector); inspector->get_inspector()->set_use_filter(true); inspector->register_search_box(search_box); @@ -603,6 +623,7 @@ EditorSettingsDialog::EditorSettingsDialog() { inspector->get_inspector()->connect("property_edited", this, "_settings_property_edited"); inspector->get_inspector()->connect("restart_requested", this, "_editor_restart_request"); + /* restart required container */ restart_container = memnew(PanelContainer); tab_general->add_child(restart_container); HBoxContainer *restart_hb = memnew(HBoxContainer); @@ -623,7 +644,7 @@ EditorSettingsDialog::EditorSettingsDialog() { restart_hb->add_child(restart_close_button); restart_container->hide(); - // Shortcuts Tab + // Shortcuts Tab ------------------------------------------------------------------------------------ tab_shortcuts = memnew(VBoxContainer); tabs->add_child(tab_shortcuts); @@ -634,21 +655,23 @@ EditorSettingsDialog::EditorSettingsDialog() { tab_shortcuts->add_child(hbc); /* menu */ - shortcut_menu = memnew(MenuButton); - shortcut_menu->set_icon(get_icon("Tools", "EditorIcons")); - PopupMenu *shortcut_popup = shortcut_menu->get_popup(); - shortcut_popup->set_anchors_preset(PRESET_TOP_RIGHT); - shortcut_popup->connect("id_pressed", this, "_shortcut_menu_option"); + shortcut_menu_button = memnew(MenuButton); + shortcut_menu_button->set_icon(get_icon("Tools", "EditorIcons")); + shortcut_menu_button_popup = shortcut_menu_button->get_popup(); + shortcut_menu_button_popup->set_anchors_preset(PRESET_TOP_RIGHT); + shortcut_menu_button_popup->connect("id_pressed", this, "_shortcut_menu_option"); restore_default_shortcuts_ask = memnew(ConfirmationDialog); add_child(restore_default_shortcuts_ask); restore_default_shortcuts_ask->connect("confirmed", this, "_restore_default_shortcuts"); + /* search */ shortcut_search_box = memnew(LineEdit); shortcut_search_box->set_h_size_flags(Control::SIZE_EXPAND_FILL); hbc->add_child(shortcut_search_box); - hbc->add_child(shortcut_menu); + hbc->add_child(shortcut_menu_button); shortcut_search_box->connect("text_changed", this, "_filter_shortcuts"); + /* shortcut tree */ shortcuts = memnew(Tree); tab_shortcuts->add_child(shortcuts, true); shortcuts->set_v_size_flags(SIZE_EXPAND_FILL); @@ -657,13 +680,14 @@ EditorSettingsDialog::EditorSettingsDialog() { shortcuts->set_column_titles_visible(true); shortcuts->set_column_title(0, TTR("Name")); shortcuts->set_column_title(1, TTR("Binding")); + shortcuts->set_select_mode(Tree::SELECT_ROW); shortcuts->connect("item_collapsed", this, "_shortcut_section_collapsed"); shortcuts->connect("button_pressed", this, "_shortcut_button_pressed"); + /* keybind dialogue */ press_a_key = memnew(ConfirmationDialog); press_a_key->set_focus_mode(FOCUS_ALL); add_child(press_a_key); - Label *l = memnew(Label); l->set_text(TTR("Press a Key...")); l->set_anchors_and_margins_preset(Control::PRESET_WIDE); @@ -674,9 +698,9 @@ EditorSettingsDialog::EditorSettingsDialog() { press_a_key->add_child(l); press_a_key->connect("gui_input", this, "_wait_for_key"); press_a_key->connect("confirmed", this, "_press_a_key_confirm"); - set_hide_on_ok(true); + /* timer */ timer = memnew(Timer); timer->set_wait_time(1.5); timer->connect("timeout", this, "_settings_save"); diff --git a/editor/settings_config_dialog.h b/editor/settings_config_dialog.h index 52bd5b277fde..cbe75c958126 100644 --- a/editor/settings_config_dialog.h +++ b/editor/settings_config_dialog.h @@ -46,6 +46,7 @@ class EditorSettingsDialog : public AcceptDialog { GDCLASS(EditorSettingsDialog, AcceptDialog); + // Popup Menus enum MenuOptions { MENU_COLLAPSE_ALL, MENU_COLLAPSE_UNSELECTED, @@ -53,31 +54,34 @@ class EditorSettingsDialog : public AcceptDialog { MENU_RESTORE_DEFAULTS }; - bool updating; - - TabContainer *tabs; - Control *tab_general; - Control *tab_shortcuts; - - LineEdit *search_box; - LineEdit *shortcut_search_box; - SectionedInspector *inspector; - - MenuButton *general_menu; - PopupMenu *general_popup; + MenuButton *general_menu_button; + MenuButton *shortcut_menu_button; + PopupMenu *general_menu_button_popup; + PopupMenu *shortcut_menu_button_popup; ConfirmationDialog *restore_default_settings_ask; - MenuButton *shortcut_menu; - PopupMenu *shortcut_popup; ConfirmationDialog *restore_default_shortcuts_ask; bool autocollapsing = false; void _general_menu_option(int p_option); + void _general_section_right_click(Vector2 p_position); void _restore_default_settings(); + void _shortcut_right_click(Vector2 p_position); void _shortcut_menu_option(int p_option); void _shortcut_section_collapsed(Object *p_item); void _restore_default_shortcuts(); void _update_menus(); + // Tabs and content + bool updating; + + TabContainer *tabs; + Control *tab_general; + Control *tab_shortcuts; + + LineEdit *search_box; + LineEdit *shortcut_search_box; + SectionedInspector *inspector; + Timer *timer; UndoRedo *undo_redo; From ad154ff0f868a31657ab39d76861963ac19159d1 Mon Sep 17 00:00:00 2001 From: FeatherAntennae Date: Mon, 11 Nov 2019 20:41:44 -0500 Subject: [PATCH 14/15] Allowed public access to the sections tree of EditorSectionedInspector --- editor/editor_sectioned_inspector.cpp | 6 ++++++ editor/editor_sectioned_inspector.h | 1 + 2 files changed, 7 insertions(+) diff --git a/editor/editor_sectioned_inspector.cpp b/editor/editor_sectioned_inspector.cpp index 7a4f9ea56716..08f3be4ee9be 100644 --- a/editor/editor_sectioned_inspector.cpp +++ b/editor/editor_sectioned_inspector.cpp @@ -136,6 +136,7 @@ void SectionedInspector::_bind_methods() { ClassDB::bind_method("_section_selected", &SectionedInspector::_section_selected); ClassDB::bind_method("_search_changed", &SectionedInspector::_search_changed); + ClassDB::bind_method("get_sections", &SectionedInspector::get_sections); ClassDB::bind_method("collapse_all_sections", &SectionedInspector::collapse_all_sections); ClassDB::bind_method("expand_all_sections", &SectionedInspector::expand_all_sections); ClassDB::bind_method("collapse_unselected", &SectionedInspector::collapse_unselected); @@ -167,6 +168,11 @@ String SectionedInspector::get_current_section() const { return ""; } +Tree *SectionedInspector::get_sections() const { + + return sections; +} + String SectionedInspector::get_full_item_path(const String &p_item) { String base = get_current_section(); diff --git a/editor/editor_sectioned_inspector.h b/editor/editor_sectioned_inspector.h index 46ce66874d13..3b8c616803af 100644 --- a/editor/editor_sectioned_inspector.h +++ b/editor/editor_sectioned_inspector.h @@ -68,6 +68,7 @@ class SectionedInspector : public HSplitContainer { void update_category_list(); + Tree *get_sections() const; void collapse_all_sections(); void expand_all_sections(); void collapse_unselected(); From 5e99abd36b5330cc77f7535970f15890b73e83ec Mon Sep 17 00:00:00 2001 From: FeatherAntennae Date: Mon, 11 Nov 2019 20:42:45 -0500 Subject: [PATCH 15/15] Added context menu to shortcuts and sections of the setting config dialog. --- editor/settings_config_dialog.cpp | 48 +++++++++++++++++++++++-------- editor/settings_config_dialog.h | 4 ++- 2 files changed, 39 insertions(+), 13 deletions(-) diff --git a/editor/settings_config_dialog.cpp b/editor/settings_config_dialog.cpp index 5d53379ae4b6..bb4c15b31f1c 100644 --- a/editor/settings_config_dialog.cpp +++ b/editor/settings_config_dialog.cpp @@ -178,6 +178,13 @@ void EditorSettingsDialog::_update_menus() { general_menu_button_popup->add_separator(); general_menu_button_popup->add_icon_item(get_icon("Reload", "EditorIcons"), TTR("Restore Defaults"), MENU_RESTORE_DEFAULTS); + general_context_menu->clear(); + general_context_menu->add_icon_item(get_icon("AnimationTrackGroup", "EditorIcons"), TTR("Expand Sections"), MENU_EXPAND_ALL); + general_context_menu->add_icon_item(get_icon("AnimationTrackList", "EditorIcons"), TTR("Collapse Sections"), MENU_COLLAPSE_ALL); + general_context_menu->add_item(TTR("Collapse Unselected"), MENU_COLLAPSE_UNSELECTED); + general_context_menu->add_separator(); + general_context_menu->add_icon_item(get_icon("Reload", "EditorIcons"), TTR("Restore Defaults"), MENU_RESTORE_DEFAULTS); + shortcut_menu_button_popup = shortcut_menu_button->get_popup(); shortcut_menu_button_popup->clear(); shortcut_menu_button_popup->add_icon_item(get_icon("AnimationTrackGroup", "EditorIcons"), TTR("Expand Sections"), MENU_EXPAND_ALL); @@ -185,20 +192,27 @@ void EditorSettingsDialog::_update_menus() { shortcut_menu_button_popup->add_item(TTR("Collapse Unselected"), MENU_COLLAPSE_UNSELECTED); shortcut_menu_button_popup->add_separator(); shortcut_menu_button_popup->add_icon_item(get_icon("Reload", "EditorIcons"), TTR("Restore Defaults"), MENU_RESTORE_DEFAULTS); + + shortcut_context_menu->clear(); + shortcut_context_menu->add_icon_item(get_icon("AnimationTrackGroup", "EditorIcons"), TTR("Expand Sections"), MENU_EXPAND_ALL); + shortcut_context_menu->add_icon_item(get_icon("AnimationTrackList", "EditorIcons"), TTR("Collapse Sections"), MENU_COLLAPSE_ALL); + shortcut_context_menu->add_item(TTR("Collapse Unselected"), MENU_COLLAPSE_UNSELECTED); + shortcut_context_menu->add_separator(); + shortcut_context_menu->add_icon_item(get_icon("Reload", "EditorIcons"), TTR("Restore Defaults"), MENU_RESTORE_DEFAULTS); } -void EditorSettingsDialog::_shortcut_right_click(Vector2 p_position) { - /*shortcut_popup->set_position(get_global_transform().xform(get_local_mouse_position())); - shortcut_popup->set_size(Vector2(1, 1)); - shortcut_popup->set_scale(get_global_transform().get_scale()); - shortcut_popup->popup();*/ +void EditorSettingsDialog::_shortcut_section_right_click(Vector2 p_position) { + shortcut_context_menu->set_position(get_global_transform().xform(get_local_mouse_position())); + shortcut_context_menu->set_size(Vector2(1, 1)); + shortcut_context_menu->set_scale(get_global_transform().get_scale()); + shortcut_context_menu->popup(); } void EditorSettingsDialog::_general_section_right_click(Vector2 p_position) { - /*shortcut_popup->set_position(get_global_transform().xform(get_local_mouse_position())); - shortcut_popup->set_size(Vector2(1, 1)); - shortcut_popup->set_scale(get_global_transform().get_scale()); - shortcut_popup->popup();*/ + general_context_menu->set_position(get_global_transform().xform(get_local_mouse_position())); + general_context_menu->set_size(Vector2(1, 1)); + general_context_menu->set_scale(get_global_transform().get_scale()); + general_context_menu->popup(); } // Tabs and content @@ -563,7 +577,7 @@ void EditorSettingsDialog::_bind_methods() { ClassDB::bind_method(D_METHOD("_settings_changed"), &EditorSettingsDialog::_settings_changed); ClassDB::bind_method(D_METHOD("_settings_property_edited"), &EditorSettingsDialog::_settings_property_edited); ClassDB::bind_method(D_METHOD("_shortcut_button_pressed"), &EditorSettingsDialog::_shortcut_button_pressed); - ClassDB::bind_method(D_METHOD("_shortcut_right_click"), &EditorSettingsDialog::_shortcut_right_click); + ClassDB::bind_method(D_METHOD("_shortcut_section_right_click"), &EditorSettingsDialog::_shortcut_section_right_click); ClassDB::bind_method(D_METHOD("_general_section_right_click"), &EditorSettingsDialog::_general_section_right_click); ClassDB::bind_method(D_METHOD("_filter_shortcuts"), &EditorSettingsDialog::_filter_shortcuts); ClassDB::bind_method(D_METHOD("_update_shortcuts"), &EditorSettingsDialog::_update_shortcuts); @@ -588,7 +602,6 @@ EditorSettingsDialog::EditorSettingsDialog() { add_child(tabs); // General Tab -------------------------------------------------------------------------------------- - tab_general = memnew(VBoxContainer); tabs->add_child(tab_general); tab_general->set_name(TTR("General")); @@ -603,6 +616,10 @@ EditorSettingsDialog::EditorSettingsDialog() { general_menu_button_popup = general_menu_button->get_popup(); general_menu_button_popup->set_anchors_preset(PRESET_TOP_RIGHT); general_menu_button_popup->connect("id_pressed", this, "_general_menu_option"); + general_context_menu = memnew(PopupMenu); + general_context_menu->hide(); + general_context_menu->connect("id_pressed", this, "_general_menu_option"); + add_child(general_context_menu); restore_default_settings_ask = memnew(ConfirmationDialog); add_child(restore_default_settings_ask); restore_default_settings_ask->connect("confirmed", this, "_restore_default_settings"); @@ -619,9 +636,11 @@ EditorSettingsDialog::EditorSettingsDialog() { inspector->register_search_box(search_box); inspector->set_v_size_flags(Control::SIZE_EXPAND_FILL); inspector->get_inspector()->set_undo_redo(undo_redo); + inspector->get_sections()->set_allow_rmb_select(true); tab_general->add_child(inspector); inspector->get_inspector()->connect("property_edited", this, "_settings_property_edited"); inspector->get_inspector()->connect("restart_requested", this, "_editor_restart_request"); + inspector->get_sections()->connect("item_rmb_selected", this, "_general_section_right_click"); /* restart required container */ restart_container = memnew(PanelContainer); @@ -645,7 +664,6 @@ EditorSettingsDialog::EditorSettingsDialog() { restart_container->hide(); // Shortcuts Tab ------------------------------------------------------------------------------------ - tab_shortcuts = memnew(VBoxContainer); tabs->add_child(tab_shortcuts); tab_shortcuts->set_name(TTR("Shortcuts")); @@ -660,6 +678,10 @@ EditorSettingsDialog::EditorSettingsDialog() { shortcut_menu_button_popup = shortcut_menu_button->get_popup(); shortcut_menu_button_popup->set_anchors_preset(PRESET_TOP_RIGHT); shortcut_menu_button_popup->connect("id_pressed", this, "_shortcut_menu_option"); + shortcut_context_menu = memnew(PopupMenu); + shortcut_context_menu->hide(); + shortcut_context_menu->connect("id_pressed", this, "_shortcut_menu_option"); + add_child(shortcut_context_menu); restore_default_shortcuts_ask = memnew(ConfirmationDialog); add_child(restore_default_shortcuts_ask); restore_default_shortcuts_ask->connect("confirmed", this, "_restore_default_shortcuts"); @@ -681,8 +703,10 @@ EditorSettingsDialog::EditorSettingsDialog() { shortcuts->set_column_title(0, TTR("Name")); shortcuts->set_column_title(1, TTR("Binding")); shortcuts->set_select_mode(Tree::SELECT_ROW); + shortcuts->set_allow_rmb_select(true); shortcuts->connect("item_collapsed", this, "_shortcut_section_collapsed"); shortcuts->connect("button_pressed", this, "_shortcut_button_pressed"); + shortcuts->connect("item_rmb_selected", this, "_shortcut_section_right_click"); /* keybind dialogue */ press_a_key = memnew(ConfirmationDialog); diff --git a/editor/settings_config_dialog.h b/editor/settings_config_dialog.h index cbe75c958126..26e536b95229 100644 --- a/editor/settings_config_dialog.h +++ b/editor/settings_config_dialog.h @@ -57,7 +57,9 @@ class EditorSettingsDialog : public AcceptDialog { MenuButton *general_menu_button; MenuButton *shortcut_menu_button; PopupMenu *general_menu_button_popup; + PopupMenu *general_context_menu; PopupMenu *shortcut_menu_button_popup; + PopupMenu *shortcut_context_menu; ConfirmationDialog *restore_default_settings_ask; ConfirmationDialog *restore_default_shortcuts_ask; @@ -65,7 +67,7 @@ class EditorSettingsDialog : public AcceptDialog { void _general_menu_option(int p_option); void _general_section_right_click(Vector2 p_position); void _restore_default_settings(); - void _shortcut_right_click(Vector2 p_position); + void _shortcut_section_right_click(Vector2 p_position); void _shortcut_menu_option(int p_option); void _shortcut_section_collapsed(Object *p_item); void _restore_default_shortcuts();