@@ -27,14 +27,39 @@ CreateWalletDialog::CreateWalletDialog(QWidget* parent) :
2727 });
2828
2929 connect (ui->encrypt_wallet_checkbox , &QCheckBox::toggled, [this ](bool checked) {
30- // Disable the disable_privkeys_checkbox when isEncryptWalletChecked is
30+ // Disable the disable_privkeys_checkbox and external_signer_checkbox when isEncryptWalletChecked is
3131 // set to true, enable it when isEncryptWalletChecked is false.
3232 ui->disable_privkeys_checkbox ->setEnabled (!checked);
33+ ui->external_signer_checkbox ->setEnabled (!checked);
3334
3435 // When the disable_privkeys_checkbox is disabled, uncheck it.
3536 if (!ui->disable_privkeys_checkbox ->isEnabled ()) {
3637 ui->disable_privkeys_checkbox ->setChecked (false );
3738 }
39+
40+ // When the external_signer_checkbox box is disabled, uncheck it.
41+ if (!ui->external_signer_checkbox ->isEnabled ()) {
42+ ui->external_signer_checkbox ->setChecked (false );
43+ }
44+
45+ });
46+
47+ connect (ui->external_signer_checkbox , &QCheckBox::toggled, [this ](bool checked) {
48+ ui->encrypt_wallet_checkbox ->setEnabled (!checked);
49+ ui->blank_wallet_checkbox ->setEnabled (!checked);
50+ ui->disable_privkeys_checkbox ->setEnabled (!checked);
51+ ui->descriptor_checkbox ->setEnabled (!checked);
52+
53+ // The external signer checkbox is only enabled when a device is detected.
54+ // In that case it is checked by default. Toggling it restores the other
55+ // options to their default.
56+ ui->descriptor_checkbox ->setChecked (checked);
57+ ui->encrypt_wallet_checkbox ->setChecked (false );
58+ ui->disable_privkeys_checkbox ->setChecked (checked);
59+ // The blank check box is ambiguous. This flag is always true for a
60+ // watch-only wallet, even though we immedidately fetch keys from the
61+ // external signer.
62+ ui->blank_wallet_checkbox ->setChecked (checked);
3863 });
3964
4065 connect (ui->disable_privkeys_checkbox , &QCheckBox::toggled, [this ](bool checked) {
@@ -63,11 +88,22 @@ CreateWalletDialog::CreateWalletDialog(QWidget* parent) :
6388 ui->descriptor_checkbox ->setToolTip (tr (" Compiled without sqlite support (required for descriptor wallets)" ));
6489 ui->descriptor_checkbox ->setEnabled (false );
6590 ui->descriptor_checkbox ->setChecked (false );
91+ ui->external_signer_checkbox ->setEnabled (false );
92+ ui->external_signer_checkbox ->setChecked (false );
6693#endif
94+
6795#ifndef USE_BDB
6896 ui->descriptor_checkbox ->setEnabled (false );
6997 ui->descriptor_checkbox ->setChecked (true );
7098#endif
99+
100+ #ifndef ENABLE_EXTERNAL_SIGNER
101+ // : "External signing" means using devices such as hardware wallets.
102+ ui->external_signer_checkbox ->setToolTip (tr (" Compiled without external signing support (required for external signing)" ));
103+ ui->external_signer_checkbox ->setEnabled (false );
104+ ui->external_signer_checkbox ->setChecked (false );
105+ #endif
106+
71107}
72108
73109CreateWalletDialog::~CreateWalletDialog ()
@@ -99,3 +135,8 @@ bool CreateWalletDialog::isDescriptorWalletChecked() const
99135{
100136 return ui->descriptor_checkbox ->isChecked ();
101137}
138+
139+ bool CreateWalletDialog::isExternalSignerChecked () const
140+ {
141+ return ui->external_signer_checkbox ->isChecked ();
142+ }
0 commit comments