Keep advanced toggle on when searching for settings

This commit is contained in:
Haoyu Qiu 2024-09-21 21:11:58 +08:00
parent e4e024ab88
commit 267bb98231
6 changed files with 42 additions and 20 deletions

View file

@ -30,10 +30,12 @@
#include "editor_sectioned_inspector.h"
#include "editor/editor_inspector.h"
#include "editor/editor_property_name_processor.h"
#include "editor/editor_settings.h"
#include "editor/editor_string_names.h"
#include "editor/themes/editor_scale.h"
#include "scene/gui/check_button.h"
#include "scene/gui/tree.h"
static bool _property_path_matches(const String &p_property_path, const String &p_filter, EditorPropertyNameProcessor::Style p_style) {
if (p_property_path.containsn(p_filter)) {
@ -307,20 +309,37 @@ void SectionedInspector::register_search_box(LineEdit *p_box) {
search_box->connect(SceneStringName(text_changed), callable_mp(this, &SectionedInspector::_search_changed));
}
void SectionedInspector::register_advanced_toggle(CheckButton *p_toggle) {
advanced_toggle = p_toggle;
advanced_toggle->connect(SceneStringName(toggled), callable_mp(this, &SectionedInspector::_advanced_toggled));
_advanced_toggled(advanced_toggle->is_pressed());
}
void SectionedInspector::_search_changed(const String &p_what) {
if (advanced_toggle) {
if (p_what.is_empty()) {
advanced_toggle->set_pressed_no_signal(!restrict_to_basic);
advanced_toggle->set_disabled(false);
advanced_toggle->set_tooltip_text(String());
} else {
advanced_toggle->set_pressed_no_signal(true);
advanced_toggle->set_disabled(true);
advanced_toggle->set_tooltip_text(TTR("Advanced settings are always shown when searching."));
}
}
update_category_list();
}
void SectionedInspector::_advanced_toggled(bool p_toggled_on) {
restrict_to_basic = !p_toggled_on;
update_category_list();
inspector->set_restrict_to_basic_settings(restrict_to_basic);
}
EditorInspector *SectionedInspector::get_inspector() {
return inspector;
}
void SectionedInspector::set_restrict_to_basic_settings(bool p_restrict) {
restrict_to_basic = p_restrict;
update_category_list();
inspector->set_restrict_to_basic_settings(p_restrict);
}
SectionedInspector::SectionedInspector() :
sections(memnew(Tree)),
filter(memnew(SectionedInspectorFilter)),

View file

@ -31,11 +31,14 @@
#ifndef EDITOR_SECTIONED_INSPECTOR_H
#define EDITOR_SECTIONED_INSPECTOR_H
#include "editor/editor_inspector.h"
#include "scene/gui/split_container.h"
#include "scene/gui/tree.h"
class CheckButton;
class EditorInspector;
class LineEdit;
class SectionedInspectorFilter;
class Tree;
class TreeItem;
class SectionedInspector : public HSplitContainer {
GDCLASS(SectionedInspector, HSplitContainer);
@ -48,6 +51,7 @@ class SectionedInspector : public HSplitContainer {
HashMap<String, TreeItem *> section_map;
EditorInspector *inspector = nullptr;
LineEdit *search_box = nullptr;
CheckButton *advanced_toggle = nullptr;
String selected_category;
@ -57,9 +61,12 @@ class SectionedInspector : public HSplitContainer {
void _section_selected();
void _search_changed(const String &p_what);
void _advanced_toggled(bool p_toggled_on);
public:
void register_search_box(LineEdit *p_box);
void register_advanced_toggle(CheckButton *p_toggle);
EditorInspector *get_inspector();
void edit(Object *p_object);
String get_full_item_path(const String &p_item);
@ -67,7 +74,6 @@ public:
void set_current_section(const String &p_section);
String get_current_section() const;
void set_restrict_to_basic_settings(bool p_restrict);
void update_category_list();
SectionedInspector();

View file

@ -33,6 +33,7 @@
#include "core/input/input_map.h"
#include "core/os/keyboard.h"
#include "editor/debugger/editor_debugger_node.h"
#include "editor/editor_inspector.h"
#include "editor/editor_log.h"
#include "editor/editor_node.h"
#include "editor/editor_property_name_processor.h"
@ -806,7 +807,6 @@ void EditorSettingsDialog::_focus_current_search_box() {
void EditorSettingsDialog::_advanced_toggled(bool p_button_pressed) {
EditorSettings::get_singleton()->set("_editor_settings_advanced_mode", p_button_pressed);
inspector->set_restrict_to_basic_settings(!p_button_pressed);
}
void EditorSettingsDialog::_editor_restart() {
@ -860,8 +860,8 @@ EditorSettingsDialog::EditorSettingsDialog() {
inspector = memnew(SectionedInspector);
inspector->get_inspector()->set_use_filter(true);
inspector->set_restrict_to_basic_settings(!use_advanced);
inspector->register_search_box(search_box);
inspector->register_advanced_toggle(advanced_switch);
inspector->set_v_size_flags(Control::SIZE_EXPAND_FILL);
tab_general->add_child(inspector);
inspector->get_inspector()->connect("property_edited", callable_mp(this, &EditorSettingsDialog::_settings_property_edited));

View file

@ -33,11 +33,8 @@
#include "core/config/project_settings.h"
#include "core/io/resource_importer.h"
#include "editor/action_map_editor.h"
#include "editor/editor_autoload_settings.h"
#include "editor/editor_inspector.h"
#include "editor/editor_sectioned_inspector.h"
#include "editor/localization_editor.h"
#include "editor/plugins/editor_plugin_settings.h"
#include "editor/shader_globals_editor.h"
#include "scene/gui/center_container.h"
class ImportDefaultsEditorSettings : public Object {

View file

@ -31,7 +31,7 @@
#include "project_settings_editor.h"
#include "core/config/project_settings.h"
#include "editor/editor_log.h"
#include "editor/editor_inspector.h"
#include "editor/editor_node.h"
#include "editor/editor_settings.h"
#include "editor/editor_string_names.h"
@ -106,7 +106,6 @@ void ProjectSettingsEditor::_update_advanced(bool p_is_advanced) {
void ProjectSettingsEditor::_advanced_toggled(bool p_button_pressed) {
EditorSettings::get_singleton()->set_project_metadata("project_settings", "advanced_mode", p_button_pressed);
_update_advanced(p_button_pressed);
general_settings_inspector->set_restrict_to_basic_settings(!p_button_pressed);
}
void ProjectSettingsEditor::_setting_selected(const String &p_path) {
@ -688,6 +687,7 @@ ProjectSettingsEditor::ProjectSettingsEditor(EditorData *p_data) {
general_settings_inspector = memnew(SectionedInspector);
general_settings_inspector->set_v_size_flags(Control::SIZE_EXPAND_FILL);
general_settings_inspector->register_search_box(search_box);
general_settings_inspector->register_advanced_toggle(advanced);
general_settings_inspector->get_inspector()->set_use_filter(true);
general_settings_inspector->get_inspector()->connect("property_selected", callable_mp(this, &ProjectSettingsEditor::_setting_selected));
general_settings_inspector->get_inspector()->connect("property_edited", callable_mp(this, &ProjectSettingsEditor::_setting_edited));
@ -771,11 +771,10 @@ ProjectSettingsEditor::ProjectSettingsEditor(EditorData *p_data) {
bool use_advanced = EditorSettings::get_singleton()->get_project_metadata("project_settings", "advanced_mode", false);
if (use_advanced) {
advanced->set_pressed_no_signal(true);
advanced->set_pressed(true);
}
_update_advanced(use_advanced);
general_settings_inspector->set_restrict_to_basic_settings(!use_advanced);
import_defaults_editor = memnew(ImportDefaultsEditor);
import_defaults_editor->set_name(TTR("Import Defaults"));

View file

@ -31,6 +31,7 @@
#include "shader_globals_editor.h"
#include "core/config/project_settings.h"
#include "editor/editor_inspector.h"
#include "editor/editor_node.h"
#include "editor/editor_undo_redo_manager.h"
#include "servers/rendering/shader_language.h"