gui: wallet creation detects external signer

This commit is contained in:
Sjors Provoost
2019-11-07 19:06:40 +01:00
parent 3f845ea299
commit 24815c6309
3 changed files with 42 additions and 0 deletions

View File

@@ -6,6 +6,7 @@
#include <config/bitcoin-config.h> #include <config/bitcoin-config.h>
#endif #endif
#include <external_signer.h>
#include <qt/createwalletdialog.h> #include <qt/createwalletdialog.h>
#include <qt/forms/ui_createwalletdialog.h> #include <qt/forms/ui_createwalletdialog.h>
@@ -111,6 +112,28 @@ CreateWalletDialog::~CreateWalletDialog()
delete ui; delete ui;
} }
#ifdef ENABLE_EXTERNAL_SIGNER
void CreateWalletDialog::setSigners(std::vector<ExternalSigner>& signers)
{
if (!signers.empty()) {
ui->external_signer_checkbox->setEnabled(true);
ui->external_signer_checkbox->setChecked(true);
ui->encrypt_wallet_checkbox->setEnabled(false);
ui->encrypt_wallet_checkbox->setChecked(false);
// The order matters, because connect() is called when toggling a checkbox:
ui->blank_wallet_checkbox->setEnabled(false);
ui->blank_wallet_checkbox->setChecked(false);
ui->disable_privkeys_checkbox->setEnabled(false);
ui->disable_privkeys_checkbox->setChecked(true);
const std::string label = signers[0].m_name;
ui->wallet_name_line_edit->setText(QString::fromStdString(label));
ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(true);
} else {
ui->external_signer_checkbox->setEnabled(false);
}
}
#endif
QString CreateWalletDialog::walletName() const QString CreateWalletDialog::walletName() const
{ {
return ui->wallet_name_line_edit->text(); return ui->wallet_name_line_edit->text();

View File

@@ -9,6 +9,10 @@
class WalletModel; class WalletModel;
#ifdef ENABLE_EXTERNAL_SIGNER
class ExternalSigner;
#endif
namespace Ui { namespace Ui {
class CreateWalletDialog; class CreateWalletDialog;
} }
@@ -23,6 +27,10 @@ public:
explicit CreateWalletDialog(QWidget* parent); explicit CreateWalletDialog(QWidget* parent);
virtual ~CreateWalletDialog(); virtual ~CreateWalletDialog();
#ifdef ENABLE_EXTERNAL_SIGNER
void setSigners(std::vector<ExternalSigner>& signers);
#endif
QString walletName() const; QString walletName() const;
bool isEncryptWalletChecked() const; bool isEncryptWalletChecked() const;
bool isDisablePrivateKeysChecked() const; bool isDisablePrivateKeysChecked() const;

View File

@@ -291,6 +291,17 @@ void CreateWalletActivity::finish()
void CreateWalletActivity::create() void CreateWalletActivity::create()
{ {
m_create_wallet_dialog = new CreateWalletDialog(m_parent_widget); m_create_wallet_dialog = new CreateWalletDialog(m_parent_widget);
#ifdef ENABLE_EXTERNAL_SIGNER
std::vector<ExternalSigner> signers;
try {
signers = node().externalSigners();
} catch (const std::runtime_error& e) {
QMessageBox::critical(nullptr, tr("Can't list signers"), e.what());
}
m_create_wallet_dialog->setSigners(signers);
#endif
m_create_wallet_dialog->setWindowModality(Qt::ApplicationModal); m_create_wallet_dialog->setWindowModality(Qt::ApplicationModal);
m_create_wallet_dialog->show(); m_create_wallet_dialog->show();