From e09cb44a947d9f36c6fd967fad46bf03f34798a7 Mon Sep 17 00:00:00 2001 From: Tibo Date: Fri, 1 Aug 2025 09:01:59 +0200 Subject: [PATCH] Add Show Encryption Key toggle --- editor/export/project_export.cpp | 26 +++++++++++++++++++++++++- editor/export/project_export.h | 2 ++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/editor/export/project_export.cpp b/editor/export/project_export.cpp index 21ad0691ee9..3aaae95783a 100644 --- a/editor/export/project_export.cpp +++ b/editor/export/project_export.cpp @@ -99,10 +99,12 @@ void ProjectExportDialog::_notification(int p_what) { case NOTIFICATION_VISIBILITY_CHANGED: { if (!is_visible()) { EditorSettings::get_singleton()->set_project_metadata("dialog_bounds", "export", Rect2(get_position(), get_size())); + show_script_key->set_pressed(false); } } break; case NOTIFICATION_THEME_CHANGED: { + _script_encryption_key_visibility_changed(show_script_key->is_pressed()); duplicate_preset->set_button_icon(presets->get_editor_theme_icon(SNAME("Duplicate"))); delete_preset->set_button_icon(presets->get_editor_theme_icon(SNAME("Remove"))); patch_add_btn->set_button_icon(get_editor_theme_icon(SNAME("Add"))); @@ -395,6 +397,7 @@ void ProjectExportDialog::_edit_preset(int p_index) { enc_in_filters->set_editable(enc_pck_mode); enc_ex_filters->set_editable(enc_pck_mode); script_key->set_editable(enc_pck_mode); + show_script_key->set_disabled(!enc_pck_mode); seed_input->set_editable(enc_pck_mode); bool enc_directory_mode = current->get_enc_directory(); @@ -597,6 +600,10 @@ void ProjectExportDialog::_enc_pck_changed(bool p_pressed) { enc_in_filters->set_editable(p_pressed); enc_ex_filters->set_editable(p_pressed); script_key->set_editable(p_pressed); + show_script_key->set_disabled(!p_pressed); + if (!p_pressed) { + show_script_key->set_pressed(false); + } _update_current_preset(); } @@ -644,6 +651,12 @@ void ProjectExportDialog::_script_encryption_key_changed(const String &p_key) { updating_script_key = false; } +void ProjectExportDialog::_script_encryption_key_visibility_changed(bool p_visible) { + show_script_key->set_button_icon(get_editor_theme_icon(p_visible ? SNAME("GuiVisibilityVisible") : SNAME("GuiVisibilityHidden"))); + show_script_key->set_tooltip_text(p_visible ? TTRC("Hide encryption key") : TTRC("Show encryption key")); + script_key->set_secret(!p_visible); +} + bool ProjectExportDialog::_validate_script_encryption_key(const String &p_key) { bool is_valid = false; @@ -1699,13 +1712,24 @@ ProjectExportDialog::ProjectExportDialog() { enc_ex_filters); script_key = memnew(LineEdit); + script_key->set_h_size_flags(Control::SIZE_EXPAND_FILL); script_key->set_accessibility_name(TTRC("Encryption Key (256-bits as hexadecimal):")); script_key->connect(SceneStringName(text_changed), callable_mp(this, &ProjectExportDialog::_script_encryption_key_changed)); + script_key->set_secret(true); + + show_script_key = memnew(Button); + show_script_key->set_toggle_mode(true); + show_script_key->connect(SceneStringName(toggled), callable_mp(this, &ProjectExportDialog::_script_encryption_key_visibility_changed)); + + HBoxContainer *encryption_hb = memnew(HBoxContainer); + encryption_hb->add_child(script_key); + encryption_hb->add_child(show_script_key); + script_key_error = memnew(Label); script_key_error->set_focus_mode(Control::FOCUS_ACCESSIBILITY); script_key_error->set_text(String::utf8("• ") + TTR("Invalid Encryption Key (must be 64 hexadecimal characters long)")); script_key_error->add_theme_color_override(SceneStringName(font_color), EditorNode::get_singleton()->get_editor_theme()->get_color(SNAME("error_color"), EditorStringName(Editor))); - sec_vb->add_margin_child(TTR("Encryption Key (256-bits as hexadecimal):"), script_key); + sec_vb->add_margin_child(TTRC("Encryption Key (256-bits as hexadecimal):"), encryption_hb); sec_vb->add_child(script_key_error); sections->add_child(sec_scroll_container); diff --git a/editor/export/project_export.h b/editor/export/project_export.h index 4934645db00..5f6ae719d98 100644 --- a/editor/export/project_export.h +++ b/editor/export/project_export.h @@ -117,6 +117,7 @@ class ProjectExportDialog : public ConfirmationDialog { RichTextLabel *custom_feature_display = nullptr; LineEdit *script_key = nullptr; + Button *show_script_key = nullptr; Label *script_key_error = nullptr; ProjectExportTextureFormatError *export_texture_format_error = nullptr; @@ -200,6 +201,7 @@ class ProjectExportDialog : public ConfirmationDialog { void _enc_filters_changed(const String &p_text); void _seed_input_changed(const String &p_text); void _script_encryption_key_changed(const String &p_key); + void _script_encryption_key_visibility_changed(bool p_visible); bool _validate_script_encryption_key(const String &p_key); void _script_export_mode_changed(int p_mode);