mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-06-10 14:48:46 +02:00
qt: Add Load PSBT functionaliy with nowallet
This commit is contained in:
@@ -47,18 +47,22 @@ void PSBTOperationsDialog::openWithPSBT(PartiallySignedTransaction psbtx)
|
||||
{
|
||||
m_transaction_data = psbtx;
|
||||
|
||||
bool complete;
|
||||
size_t n_could_sign;
|
||||
FinalizePSBT(psbtx); // Make sure all existing signatures are fully combined before checking for completeness.
|
||||
TransactionError err = m_wallet_model->wallet().fillPSBT(SIGHASH_ALL, false /* sign */, true /* bip32derivs */, &n_could_sign, m_transaction_data, complete);
|
||||
if (err != TransactionError::OK) {
|
||||
showStatus(tr("Failed to load transaction: %1")
|
||||
.arg(QString::fromStdString(TransactionErrorString(err).translated)), StatusLevel::ERR);
|
||||
return;
|
||||
bool complete = FinalizePSBT(psbtx); // Make sure all existing signatures are fully combined before checking for completeness.
|
||||
if (m_wallet_model) {
|
||||
size_t n_could_sign;
|
||||
TransactionError err = m_wallet_model->wallet().fillPSBT(SIGHASH_ALL, false /* sign */, true /* bip32derivs */, &n_could_sign, m_transaction_data, complete);
|
||||
if (err != TransactionError::OK) {
|
||||
showStatus(tr("Failed to load transaction: %1")
|
||||
.arg(QString::fromStdString(TransactionErrorString(err).translated)),
|
||||
StatusLevel::ERR);
|
||||
return;
|
||||
}
|
||||
m_ui->signTransactionButton->setEnabled(!complete && !m_wallet_model->wallet().privateKeysDisabled() && n_could_sign > 0);
|
||||
} else {
|
||||
m_ui->signTransactionButton->setEnabled(false);
|
||||
}
|
||||
|
||||
m_ui->broadcastTransactionButton->setEnabled(complete);
|
||||
m_ui->signTransactionButton->setEnabled(!complete && !m_wallet_model->wallet().privateKeysDisabled() && n_could_sign > 0);
|
||||
|
||||
updateTransactionDisplay();
|
||||
}
|
||||
@@ -133,7 +137,7 @@ void PSBTOperationsDialog::saveTransaction() {
|
||||
}
|
||||
CTxDestination address;
|
||||
ExtractDestination(out.scriptPubKey, address);
|
||||
QString amount = BitcoinUnits::format(m_wallet_model->getOptionsModel()->getDisplayUnit(), out.nValue);
|
||||
QString amount = BitcoinUnits::format(m_client_model->getOptionsModel()->getDisplayUnit(), out.nValue);
|
||||
QString address_str = QString::fromStdString(EncodeDestination(address));
|
||||
filename_suggestion.append(address_str + "-" + amount);
|
||||
first = false;
|
||||
@@ -224,6 +228,10 @@ void PSBTOperationsDialog::showStatus(const QString &msg, StatusLevel level) {
|
||||
}
|
||||
|
||||
size_t PSBTOperationsDialog::couldSignInputs(const PartiallySignedTransaction &psbtx) {
|
||||
if (!m_wallet_model) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
size_t n_signed;
|
||||
bool complete;
|
||||
TransactionError err = m_wallet_model->wallet().fillPSBT(SIGHASH_ALL, false /* sign */, false /* bip32derivs */, &n_signed, m_transaction_data, complete);
|
||||
@@ -246,7 +254,10 @@ void PSBTOperationsDialog::showTransactionStatus(const PartiallySignedTransactio
|
||||
case PSBTRole::SIGNER: {
|
||||
QString need_sig_text = tr("Transaction still needs signature(s).");
|
||||
StatusLevel level = StatusLevel::INFO;
|
||||
if (m_wallet_model->wallet().privateKeysDisabled()) {
|
||||
if (!m_wallet_model) {
|
||||
need_sig_text += " " + tr("(But no wallet is loaded.)");
|
||||
level = StatusLevel::WARN;
|
||||
} else if (m_wallet_model->wallet().privateKeysDisabled()) {
|
||||
need_sig_text += " " + tr("(But this wallet cannot sign transactions.)");
|
||||
level = StatusLevel::WARN;
|
||||
} else if (n_could_sign < 1) {
|
||||
|
||||
Reference in New Issue
Block a user