Inside Bitcoin
Opening the selected file…
Inside Bitcoin
Opening the selected file…
The code behind the network, with room to understand it.
Release published 2026-10-28 · Snapshot fetched 2026-11-01. Latest stable release at fetch time; development branches and Git history are excluded. Only the selected code window and visible folders load here.
1// Copyright (c) 2019-present The Bitcoin Core developers2// Distributed under the MIT software license, see the accompanying3// file COPYING or http://www.opensource.org/licenses/mit-license.php.5#include <bitcoin-build-config.h> // IWYU pragma: keep7#include <interfaces/node.h>8#include <qt/createwalletdialog.h>9#include <qt/forms/ui_createwalletdialog.h>11#include <qt/guiutil.h>13#include <QPushButton>15CreateWalletDialog::CreateWalletDialog(QWidget* parent) :16QDialog(parent, GUIUtil::dialog_flags),17ui(new Ui::CreateWalletDialog)18{19ui->setupUi(this);20ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("Create"));21ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);22ui->wallet_name_line_edit->setFocus(Qt::ActiveWindowFocusReason);24connect(ui->wallet_name_line_edit, &QLineEdit::textEdited, [this](const QString& text) {25ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(!text.isEmpty());26});28connect(ui->encrypt_wallet_checkbox, &QCheckBox::toggled, [this](bool checked) {29// Disable the disable_privkeys_checkbox and external_signer_checkbox when isEncryptWalletChecked is30// set to true, enable it when isEncryptWalletChecked is false.31ui->disable_privkeys_checkbox->setEnabled(!checked);32#ifdef ENABLE_EXTERNAL_SIGNER33ui->external_signer_checkbox->setEnabled(m_has_signers && !checked);34#endif35// When the disable_privkeys_checkbox is disabled, uncheck it.36if (!ui->disable_privkeys_checkbox->isEnabled()) {37ui->disable_privkeys_checkbox->setChecked(false);38}40// When the external_signer_checkbox box is disabled, uncheck it.41if (!ui->external_signer_checkbox->isEnabled()) {42ui->external_signer_checkbox->setChecked(false);43}45});47connect(ui->external_signer_checkbox, &QCheckBox::toggled, [this](bool checked) {48ui->encrypt_wallet_checkbox->setEnabled(!checked);49ui->blank_wallet_checkbox->setEnabled(!checked);50ui->disable_privkeys_checkbox->setEnabled(!checked);52// The external signer checkbox is only enabled when a device is detected.53// In that case it is checked by default. Toggling it restores the other54// options to their default.55ui->encrypt_wallet_checkbox->setChecked(false);56ui->disable_privkeys_checkbox->setChecked(checked);57ui->blank_wallet_checkbox->setChecked(false);58});60connect(ui->disable_privkeys_checkbox, &QCheckBox::toggled, [this](bool checked) {61// Disable the encrypt_wallet_checkbox when isDisablePrivateKeysChecked is62// set to true, enable it when isDisablePrivateKeysChecked is false.63ui->encrypt_wallet_checkbox->setEnabled(!checked);65// Wallets without private keys cannot set blank66ui->blank_wallet_checkbox->setEnabled(!checked);67if (checked) {68ui->blank_wallet_checkbox->setChecked(false);69}71// When the encrypt_wallet_checkbox is disabled, uncheck it.72if (!ui->encrypt_wallet_checkbox->isEnabled()) {73ui->encrypt_wallet_checkbox->setChecked(false);74}75});77connect(ui->blank_wallet_checkbox, &QCheckBox::toggled, [this](bool checked) {78// Disable the disable_privkeys_checkbox when blank_wallet_checkbox is checked79// as blank-ness only pertains to wallets with private keys.80ui->disable_privkeys_checkbox->setEnabled(!checked);81if (checked) {82ui->disable_privkeys_checkbox->setChecked(false);83}84});86#ifndef ENABLE_EXTERNAL_SIGNER87//: "External signing" means using devices such as hardware wallets.88ui->external_signer_checkbox->setToolTip(tr("Compiled without external signing support (required for external signing)"));89ui->external_signer_checkbox->setEnabled(false);90ui->external_signer_checkbox->setChecked(false);91#endif93}95CreateWalletDialog::~CreateWalletDialog()96{97delete ui;98}100void CreateWalletDialog::setSigners(const std::vector<std::unique_ptr<interfaces::ExternalSigner>>& signers)101{102m_has_signers = !signers.empty();103if (m_has_signers) {104ui->external_signer_checkbox->setEnabled(true);105ui->external_signer_checkbox->setChecked(true);106ui->encrypt_wallet_checkbox->setEnabled(false);107ui->encrypt_wallet_checkbox->setChecked(false);108// The order matters, because connect() is called when toggling a checkbox:109ui->blank_wallet_checkbox->setEnabled(false);110ui->blank_wallet_checkbox->setChecked(false);111ui->disable_privkeys_checkbox->setEnabled(false);112ui->disable_privkeys_checkbox->setChecked(true);113const std::string label = signers[0]->getName();114ui->wallet_name_line_edit->setText(QString::fromStdString(label));115ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(true);116} else {117ui->external_signer_checkbox->setEnabled(false);118}119}121QString CreateWalletDialog::walletName() const122{123return ui->wallet_name_line_edit->text();124}126bool CreateWalletDialog::isEncryptWalletChecked() const127{128return ui->encrypt_wallet_checkbox->isChecked();129}131bool CreateWalletDialog::isDisablePrivateKeysChecked() const132{133return ui->disable_privkeys_checkbox->isChecked();134}136bool CreateWalletDialog::isMakeBlankWalletChecked() const137{138return ui->blank_wallet_checkbox->isChecked();139}141bool CreateWalletDialog::isExternalSignerChecked() const142{143return ui->external_signer_checkbox->isChecked();144}
Independent explanations by MyBitcoinExplorer. Not affiliated with or endorsed by Bitcoin Core. Guides are educational and do not replace the source or its tests.
Bitcoin Core source © its contributors, distributed under the MIT license. Original notices and bundled third-party licenses are retained in the source tree.