strUsage+=" -paytxfee=<amt> "+strprintf(_("Fee (in BTC/kB) to add to transactions you send (default: %s)"),FormatMoney(payTxFee.GetFeePerK()))+"\n";
strUsage+=" -paytxfee=<amt> "+strprintf(_("Fee (in BTC/kB) to add to transactions you send (default: %s)"),FormatMoney(payTxFee.GetFeePerK()))+"\n";
strUsage+=" -rescan "+_("Rescan the block chain for missing wallet transactions")+""+_("on startup")+"\n";
strUsage+=" -rescan "+_("Rescan the block chain for missing wallet transactions")+""+_("on startup")+"\n";
strUsage+=" -salvagewallet "+_("Attempt to recover private keys from a corrupt wallet.dat")+""+_("on startup")+"\n";
strUsage+=" -salvagewallet "+_("Attempt to recover private keys from a corrupt wallet.dat")+""+_("on startup")+"\n";
strUsage+=" -sendfreetransactions "+strprintf(_("Send transactions as zero-fee transactions if possible (default: %u)"),0)+"\n";
strUsage+=" -spendzeroconfchange "+strprintf(_("Spend unconfirmed change when sending transactions (default: %u)"),1)+"\n";
strUsage+=" -spendzeroconfchange "+strprintf(_("Spend unconfirmed change when sending transactions (default: %u)"),1)+"\n";
strUsage+=" -txconfirmtarget=<n> "+strprintf(_("If paytxfee is not set, include enough fee so transactions are confirmed on average within n blocks (default: %u)"),1)+"\n";
strUsage+=" -txconfirmtarget=<n> "+strprintf(_("If paytxfee is not set, include enough fee so transactions are confirmed on average within n blocks (default: %u)"),1)+"\n";
strUsage+=" -upgradewallet "+_("Upgrade wallet to latest format")+""+_("on startup")+"\n";
strUsage+=" -upgradewallet "+_("Upgrade wallet to latest format")+""+_("on startup")+"\n";
nBytes=nBytesInputs+((CoinControlDialog::payAmounts.size()>0?CoinControlDialog::payAmounts.size()+1:2)*34)+10;// always assume +1 output for change here
nBytes=nBytesInputs+((CoinControlDialog::payAmounts.size()>0?CoinControlDialog::payAmounts.size()+1:2)*34)+10;// always assume +1 output for change here
dPriority=dPriorityInputs/(nBytes-nBytesInputs+(nQuantityUncompressed*29));// 29 = 180 - 151 (uncompressed public keys are over the limit. max 151 bytes of the input are ignored for priority)
dPriority=dPriorityInputs/(nBytes-nBytesInputs+(nQuantityUncompressed*29));// 29 = 180 - 151 (uncompressed public keys are over the limit. max 151 bytes of the input are ignored for priority)
QStringtoolTip3=tr("This label turns red, if any recipient receives an amount smaller than %1.").arg(BitcoinUnits::formatWithUnit(nDisplayUnit,::minRelayTxFee.GetFee(546)));
QStringtoolTip3=tr("This label turns red, if any recipient receives an amount smaller than %1.").arg(BitcoinUnits::formatWithUnit(nDisplayUnit,::minRelayTxFee.GetFee(546)));
// how many satoshis the estimated fee can vary per byte we guess wrong
// how many satoshis the estimated fee can vary per byte we guess wrong
<string>If the custom fee is set to 1000 satoshis and the transaction is only 250 bytes, then "per kilobyte" only pays 250 satoshis in fee, while "at least" pays 1000 satoshis. For transactions bigger than a kilobyte both pay by kilobyte.</string>
<string>If the custom fee is set to 1000 satoshis and the transaction is only 250 bytes, then "per kilobyte" only pays 250 satoshis in fee, while "total at least" pays 1000 satoshis. For transactions bigger than a kilobyte both pay by kilobyte.</string>
<string>Paying only the minimum fee is just fine as long as there is less transaction volume than space in the blocks. But be aware that this can end up in a never confirming transaction once there is more demand for bitcoin transactions than the network can process.</string>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="labelMinFeeWarning">
<property name="enabled">
<bool>true</bool>
</property>
<property name="toolTip">
<string>Paying only the minimum fee is just fine as long as there is less transaction volume than space in the blocks. But be aware that this can end up in a never confirming transaction once there is more demand for bitcoin transactions than the network can process.</string>
msgParams.first=tr("The transaction was rejected! This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here.");
msgParams.first=tr("The transaction was rejected! This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here.");
msgParams.second=CClientUIInterface::MSG_ERROR;
msgParams.second=CClientUIInterface::MSG_ERROR;
break;
break;
caseWalletModel::InsaneFee:
msgParams.first=tr("A fee higher than %1 is considered an insanely high fee.").arg(BitcoinUnits::formatWithUnit(model->getOptionsModel()->getDisplayUnit(),10000000));
/** Set up the tab chain manually, as Qt messes up the tab chain by default in some cases (issue https://bugreports.qt-project.org/browse/QTBUG-10907).
/** Set up the tab chain manually, as Qt messes up the tab chain by default in some cases (issue https://bugreports.qt-project.org/browse/QTBUG-10907).
@ -52,16 +54,22 @@ public slots:
private:
private:
Ui::SendCoinsDialog*ui;
Ui::SendCoinsDialog*ui;
ClientModel*clientModel;
WalletModel*model;
WalletModel*model;
boolfNewRecipientAllowed;
boolfNewRecipientAllowed;
boolfFeeMinimized;
// Process WalletModel::SendCoinsReturn and generate a pair consisting
// Process WalletModel::SendCoinsReturn and generate a pair consisting
// of a message and message flags for use in emit message().
// of a message and message flags for use in emit message().
// Additional parameter msgArg can be used via .arg(msgArg).
// Additional parameter msgArg can be used via .arg(msgArg).