Merge pull request #37235 from Calinou/improve-editor-feature-profiles

Improve the editor feature profiles UX
This commit is contained in:
Rémi Verschelde 2020-05-25 12:56:33 +02:00 committed by GitHub
commit aea1a0e983
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 33 additions and 5 deletions

View file

@ -353,7 +353,7 @@ void EditorFeatureProfileManager::_update_profile_list(const String &p_select_pr
} }
if (name == current_profile) { if (name == current_profile) {
name += " (current)"; name += " " + TTR("(current)");
} }
profile_list->add_item(name); profile_list->add_item(name);
int index = profile_list->get_item_count() - 1; int index = profile_list->get_item_count() - 1;
@ -363,12 +363,15 @@ void EditorFeatureProfileManager::_update_profile_list(const String &p_select_pr
} }
} }
class_list_vbc->set_visible(selected_profile != String());
property_list_vbc->set_visible(selected_profile != String());
no_profile_selected_help->set_visible(selected_profile == String());
profile_actions[PROFILE_CLEAR]->set_disabled(current_profile == String()); profile_actions[PROFILE_CLEAR]->set_disabled(current_profile == String());
profile_actions[PROFILE_ERASE]->set_disabled(selected_profile == String()); profile_actions[PROFILE_ERASE]->set_disabled(selected_profile == String());
profile_actions[PROFILE_EXPORT]->set_disabled(selected_profile == String()); profile_actions[PROFILE_EXPORT]->set_disabled(selected_profile == String());
profile_actions[PROFILE_SET]->set_disabled(selected_profile == String()); profile_actions[PROFILE_SET]->set_disabled(selected_profile == String());
current_profile_name->set_text(current_profile); current_profile_name->set_text(current_profile != String() ? current_profile : TTR("(none)"));
_update_selected_profile(); _update_selected_profile();
} }
@ -451,6 +454,10 @@ void EditorFeatureProfileManager::_create_new_profile() {
new_profile->save_to_file(file); new_profile->save_to_file(file);
_update_profile_list(name); _update_profile_list(name);
// The newly created profile is the first one, make it the current profile automatically.
if (profile_list->get_item_count() == 1) {
_profile_action(PROFILE_SET);
}
} }
void EditorFeatureProfileManager::_profile_selected(int p_what) { void EditorFeatureProfileManager::_profile_selected(int p_what) {
@ -730,6 +737,10 @@ void EditorFeatureProfileManager::_import_profiles(const Vector<String> &p_paths
} }
_update_profile_list(); _update_profile_list();
// The newly imported profile is the first one, make it the current profile automatically.
if (profile_list->get_item_count() == 1) {
_profile_action(PROFILE_SET);
}
} }
void EditorFeatureProfileManager::_export_profile(const String &p_path) { void EditorFeatureProfileManager::_export_profile(const String &p_path) {
@ -779,6 +790,7 @@ EditorFeatureProfileManager::EditorFeatureProfileManager() {
HBoxContainer *name_hbc = memnew(HBoxContainer); HBoxContainer *name_hbc = memnew(HBoxContainer);
current_profile_name = memnew(LineEdit); current_profile_name = memnew(LineEdit);
name_hbc->add_child(current_profile_name); name_hbc->add_child(current_profile_name);
current_profile_name->set_text(TTR("(none)"));
current_profile_name->set_editable(false); current_profile_name->set_editable(false);
current_profile_name->set_h_size_flags(Control::SIZE_EXPAND_FILL); current_profile_name->set_h_size_flags(Control::SIZE_EXPAND_FILL);
profile_actions[PROFILE_CLEAR] = memnew(Button(TTR("Unset"))); profile_actions[PROFILE_CLEAR] = memnew(Button(TTR("Unset")));
@ -827,7 +839,7 @@ EditorFeatureProfileManager::EditorFeatureProfileManager() {
h_split->set_v_size_flags(Control::SIZE_EXPAND_FILL); h_split->set_v_size_flags(Control::SIZE_EXPAND_FILL);
main_vbc->add_child(h_split); main_vbc->add_child(h_split);
VBoxContainer *class_list_vbc = memnew(VBoxContainer); class_list_vbc = memnew(VBoxContainer);
h_split->add_child(class_list_vbc); h_split->add_child(class_list_vbc);
class_list_vbc->set_h_size_flags(Control::SIZE_EXPAND_FILL); class_list_vbc->set_h_size_flags(Control::SIZE_EXPAND_FILL);
@ -837,17 +849,30 @@ EditorFeatureProfileManager::EditorFeatureProfileManager() {
class_list->set_edit_checkbox_cell_only_when_checkbox_is_pressed(true); class_list->set_edit_checkbox_cell_only_when_checkbox_is_pressed(true);
class_list->connect("cell_selected", callable_mp(this, &EditorFeatureProfileManager::_class_list_item_selected)); class_list->connect("cell_selected", callable_mp(this, &EditorFeatureProfileManager::_class_list_item_selected));
class_list->connect("item_edited", callable_mp(this, &EditorFeatureProfileManager::_class_list_item_edited), varray(), CONNECT_DEFERRED); class_list->connect("item_edited", callable_mp(this, &EditorFeatureProfileManager::_class_list_item_edited), varray(), CONNECT_DEFERRED);
// It will be displayed once the user creates or chooses a profile.
class_list_vbc->hide();
VBoxContainer *property_list_vbc = memnew(VBoxContainer); property_list_vbc = memnew(VBoxContainer);
h_split->add_child(property_list_vbc); h_split->add_child(property_list_vbc);
property_list_vbc->set_h_size_flags(Control::SIZE_EXPAND_FILL); property_list_vbc->set_h_size_flags(Control::SIZE_EXPAND_FILL);
property_list = memnew(Tree); property_list = memnew(Tree);
property_list_vbc->add_margin_child(TTR("Class Options"), property_list, true); property_list_vbc->add_margin_child(TTR("Class Options:"), property_list, true);
property_list->set_hide_root(true); property_list->set_hide_root(true);
property_list->set_hide_folding(true); property_list->set_hide_folding(true);
property_list->set_edit_checkbox_cell_only_when_checkbox_is_pressed(true); property_list->set_edit_checkbox_cell_only_when_checkbox_is_pressed(true);
property_list->connect("item_edited", callable_mp(this, &EditorFeatureProfileManager::_property_item_edited), varray(), CONNECT_DEFERRED); property_list->connect("item_edited", callable_mp(this, &EditorFeatureProfileManager::_property_item_edited), varray(), CONNECT_DEFERRED);
// It will be displayed once the user creates or chooses a profile.
property_list_vbc->hide();
no_profile_selected_help = memnew(Label(TTR("Create or import a profile to edit available classes and properties.")));
// Add some spacing above the help label.
Ref<StyleBoxEmpty> sb = memnew(StyleBoxEmpty);
sb->set_default_margin(MARGIN_TOP, 20 * EDSCALE);
no_profile_selected_help->add_style_override("normal", sb);
no_profile_selected_help->set_align(Label::ALIGN_CENTER);
no_profile_selected_help->set_v_size_flags(SIZE_EXPAND_FILL);
h_split->add_child(no_profile_selected_help);
new_profile_dialog = memnew(ConfirmationDialog); new_profile_dialog = memnew(ConfirmationDialog);
new_profile_dialog->set_title(TTR("New profile name:")); new_profile_dialog->set_title(TTR("New profile name:"));

View file

@ -120,8 +120,11 @@ class EditorFeatureProfileManager : public AcceptDialog {
HSplitContainer *h_split; HSplitContainer *h_split;
VBoxContainer *class_list_vbc;
Tree *class_list; Tree *class_list;
VBoxContainer *property_list_vbc;
Tree *property_list; Tree *property_list;
Label *no_profile_selected_help;
EditorFileDialog *import_profiles; EditorFileDialog *import_profiles;
EditorFileDialog *export_profile; EditorFileDialog *export_profile;