mirror of
https://github.com/godotengine/godot.git
synced 2025-12-07 22:00:10 +00:00
Merge pull request #113026 from YeldhamDev/export_dialog_tidyup
Fully hide preset settings when no preset is found in the export dialog
This commit is contained in:
commit
a5fc5bbff5
2 changed files with 29 additions and 21 deletions
|
|
@ -203,11 +203,15 @@ void ProjectExportDialog::_update_presets() {
|
|||
}
|
||||
|
||||
int current_idx = -1;
|
||||
int preset_count = EditorExport::get_singleton()->get_export_preset_count();
|
||||
presets->clear();
|
||||
for (int i = 0; i < EditorExport::get_singleton()->get_export_preset_count(); i++) {
|
||||
for (int i = 0; i < preset_count; i++) {
|
||||
Ref<EditorExportPreset> preset = EditorExport::get_singleton()->get_export_preset(i);
|
||||
if (preset == current) {
|
||||
current_idx = i;
|
||||
} else if (current.is_null()) {
|
||||
current_idx = i;
|
||||
_edit_preset(i);
|
||||
}
|
||||
|
||||
String preset_name = preset->get_name();
|
||||
|
|
@ -218,6 +222,9 @@ void ProjectExportDialog::_update_presets() {
|
|||
presets->add_item(preset_name, preset->get_platform()->get_logo());
|
||||
}
|
||||
|
||||
settings_vb->set_visible(current_idx != -1);
|
||||
empty_label->set_visible(current_idx == -1);
|
||||
|
||||
if (current_idx != -1) {
|
||||
presets->select(current_idx);
|
||||
}
|
||||
|
|
@ -249,19 +256,14 @@ void ProjectExportDialog::_update_export_all() {
|
|||
|
||||
void ProjectExportDialog::_edit_preset(int p_index) {
|
||||
if (p_index < 0 || p_index >= presets->get_item_count()) {
|
||||
name->set_text("");
|
||||
name->set_editable(false);
|
||||
export_path->hide();
|
||||
advanced_options->set_disabled(true);
|
||||
runnable->set_disabled(true);
|
||||
parameters->edit(nullptr);
|
||||
presets->deselect_all();
|
||||
duplicate_preset->set_disabled(true);
|
||||
delete_preset->set_disabled(true);
|
||||
sections->hide();
|
||||
patches->clear();
|
||||
export_error->hide();
|
||||
export_templates_error->hide();
|
||||
export_texture_format_error->hide();
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -271,10 +273,6 @@ void ProjectExportDialog::_edit_preset(int p_index) {
|
|||
updating = true;
|
||||
|
||||
presets->select(p_index);
|
||||
sections->show();
|
||||
|
||||
name->set_editable(true);
|
||||
export_path->show();
|
||||
duplicate_preset->set_disabled(false);
|
||||
delete_preset->set_disabled(false);
|
||||
get_ok_button()->set_disabled(false);
|
||||
|
|
@ -289,8 +287,6 @@ void ProjectExportDialog::_edit_preset(int p_index) {
|
|||
export_path->get_path_edit()->clear();
|
||||
export_path->setup(extension_vector, false, true, false);
|
||||
export_path->update_property();
|
||||
advanced_options->set_disabled(false);
|
||||
runnable->set_disabled(false);
|
||||
runnable->set_pressed(current->is_runnable());
|
||||
if (parameters->get_edited_object() != current.ptr()) {
|
||||
current->update_value_overrides();
|
||||
|
|
@ -795,7 +791,7 @@ void ProjectExportDialog::_delete_preset() {
|
|||
|
||||
void ProjectExportDialog::_delete_preset_confirm() {
|
||||
int idx = presets->get_current();
|
||||
_edit_preset(-1);
|
||||
_edit_preset(idx - 1);
|
||||
export_button->set_disabled(true);
|
||||
get_ok_button()->set_disabled(true);
|
||||
EditorExport::get_singleton()->remove_export_preset(idx);
|
||||
|
|
@ -1597,6 +1593,7 @@ ProjectExportDialog::ProjectExportDialog() {
|
|||
presets = memnew(ItemList);
|
||||
presets->set_theme_type_variation("ItemListSecondary");
|
||||
presets->set_auto_translate_mode(AUTO_TRANSLATE_MODE_DISABLED);
|
||||
presets->set_custom_minimum_size(Size2(0, 200 * EDSCALE));
|
||||
SET_DRAG_FORWARDING_GCD(presets, ProjectExportDialog);
|
||||
mc->add_child(presets);
|
||||
presets->connect(SceneStringName(item_selected), callable_mp(this, &ProjectExportDialog::_edit_preset));
|
||||
|
|
@ -1613,7 +1610,8 @@ ProjectExportDialog::ProjectExportDialog() {
|
|||
|
||||
// Preset settings.
|
||||
|
||||
VBoxContainer *settings_vb = memnew(VBoxContainer);
|
||||
settings_vb = memnew(VBoxContainer);
|
||||
settings_vb->hide();
|
||||
settings_vb->set_h_size_flags(Control::SIZE_EXPAND_FILL);
|
||||
hbox->add_child(settings_vb);
|
||||
|
||||
|
|
@ -1933,16 +1931,23 @@ ProjectExportDialog::ProjectExportDialog() {
|
|||
sections->connect("tab_changed", callable_mp(this, &ProjectExportDialog::_tab_changed));
|
||||
|
||||
// Disable by default.
|
||||
name->set_editable(false);
|
||||
export_path->hide();
|
||||
advanced_options->set_disabled(true);
|
||||
runnable->set_disabled(true);
|
||||
duplicate_preset->set_disabled(true);
|
||||
delete_preset->set_disabled(true);
|
||||
script_key_error->hide();
|
||||
sections->hide();
|
||||
parameters->edit(nullptr);
|
||||
|
||||
// Label shown when no presets are present.
|
||||
|
||||
empty_label = memnew(Label(TTRC("No presets found.\nCreate one so that its parameters can be edited here.")));
|
||||
empty_label->set_horizontal_alignment(HORIZONTAL_ALIGNMENT_CENTER);
|
||||
empty_label->set_vertical_alignment(VERTICAL_ALIGNMENT_CENTER);
|
||||
empty_label->set_autowrap_mode(TextServer::AUTOWRAP_WORD_SMART);
|
||||
empty_label->set_clip_text(true); // Necessary to avoid overexpanding the dialog vertically.
|
||||
empty_label->set_h_size_flags(Control::SIZE_EXPAND_FILL);
|
||||
empty_label->set_v_size_flags(Control::SIZE_EXPAND_FILL);
|
||||
empty_label->hide();
|
||||
hbox->add_child(empty_label);
|
||||
|
||||
// Deletion dialog.
|
||||
|
||||
delete_confirm = memnew(ConfirmationDialog);
|
||||
|
|
@ -1960,7 +1965,7 @@ ProjectExportDialog::ProjectExportDialog() {
|
|||
export_button = add_button(TTR("Export Project..."), !DisplayServer::get_singleton()->get_swap_cancel_ok(), "export");
|
||||
export_button->set_tooltip_text(TTR("Export the project as a playable build (Godot executable and project data) for the selected preset."));
|
||||
export_button->connect(SceneStringName(pressed), callable_mp(this, &ProjectExportDialog::_export_project));
|
||||
// Disable initially before we select a valid preset
|
||||
// Disable initially before we select a valid preset.
|
||||
export_button->set_disabled(true);
|
||||
|
||||
export_all_dialog = memnew(ConfirmationDialog);
|
||||
|
|
|
|||
|
|
@ -79,12 +79,15 @@ class ProjectExportDialog : public ConfirmationDialog {
|
|||
Button *delete_preset = nullptr;
|
||||
ItemList *presets = nullptr;
|
||||
|
||||
VBoxContainer *settings_vb = nullptr;
|
||||
LineEdit *name = nullptr;
|
||||
EditorPropertyPath *export_path = nullptr;
|
||||
EditorInspector *parameters = nullptr;
|
||||
CheckButton *runnable = nullptr;
|
||||
CheckButton *advanced_options = nullptr;
|
||||
|
||||
Label *empty_label = nullptr;
|
||||
|
||||
Button *button_export = nullptr;
|
||||
bool updating = false;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue