Merge pull request #106146 from gtibo/show-encryption-key

Add "Show Encryption Key" toggle
This commit is contained in:
Thaddeus Crews 2025-09-19 09:16:59 -05:00
commit 988721cda3
No known key found for this signature in database
GPG key ID: 8C6E5FEB5FC03CCC
2 changed files with 27 additions and 1 deletions

View file

@ -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);

View file

@ -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);