Merge #5998: backport: (scripted-diff) Merge bitcoin#21836, 21710, 21753

e0d9dc18a8 scripted-diff: Merge #21836: Replace three dots with ellipsis in the UI string (Vijay)
7bd0262aa2 Merge bitcoin/bitcoin#21753: doc: add -addrinfo to tor docs (W. J. van der Laan)
6350b0cd86 Merge bitcoin/bitcoin#21710: doc: update helps for addnode rpc and -addnode/-maxconnections config options (W. J. van der Laan)

Pull request description:

  bitcoin backports

Top commit has no ACKs.

Tree-SHA512: 0aafc4ac01f13418921d3cc4f13f42e7a4c4688918de3a801d9f7f7e6290d33b6e9408689866aef7db558b233375d2f8d01a0fe670e96dd09346ece634e45211
This commit is contained in:
pasta 2024-05-19 11:16:49 -05:00
commit df6d666918
No known key found for this signature in database
GPG Key ID: 52527BEDABE87984
27 changed files with 82 additions and 76 deletions

View File

@ -18,6 +18,10 @@ There are several ways to see your local onion address in Dash Core:
You may set the `-debug=tor` config logging option to have additional
information in the debug log about your Tor configuration.
CLI `-addrinfo` returns the number of addresses known to your node per network
type, including Tor v2 and v3. This is useful to see how many onion addresses
are known to your node for `-onlynet=onion` and how many Tor v3 addresses it
knows when upgrading to current and future Tor releases that support Tor v3 only.
## 1. Run Dash Core behind a Tor proxy

View File

@ -16,7 +16,7 @@
BanMan::BanMan(fs::path ban_file, CClientUIInterface* client_interface, int64_t default_ban_time)
: m_client_interface(client_interface), m_ban_db(std::move(ban_file)), m_default_ban_time(default_ban_time)
{
if (m_client_interface) m_client_interface->InitMessage(_("Loading banlist...").translated);
if (m_client_interface) m_client_interface->InitMessage(_("Loading banlist").translated);
int64_t n_start = GetTimeMillis();
if (m_ban_db.Read(m_banned)) {

View File

@ -561,7 +561,7 @@ void SetupServerArgs(NodeContext& node)
ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS);
argsman.AddArg("-asmap=<file>", strprintf("Specify asn mapping used for bucketing of the peers (default: %s). Relative paths will be prefixed by the net-specific datadir location.", DEFAULT_ASMAP_FILENAME), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
argsman.AddArg("-addnode=<ip>", "Add a node to connect to and attempt to keep the connection open (see the `addnode` RPC command help for more info). This option can be specified multiple times to add multiple nodes.", ArgsManager::ALLOW_ANY | ArgsManager::NETWORK_ONLY, OptionsCategory::CONNECTION);
argsman.AddArg("-addnode=<ip>", strprintf("Add a node to connect to and attempt to keep the connection open (see the addnode RPC help for more info). This option can be specified multiple times to add multiple nodes; connections are limited to %u at a time and are counted separately from the -maxconnections limit.", MAX_ADDNODE_CONNECTIONS), ArgsManager::ALLOW_ANY | ArgsManager::NETWORK_ONLY, OptionsCategory::CONNECTION);
argsman.AddArg("-allowprivatenet", strprintf("Allow RFC1918 addresses to be relayed and connected to (default: %u)", DEFAULT_ALLOWPRIVATENET), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
argsman.AddArg("-bantime=<n>", strprintf("Default duration (in seconds) of manually configured bans (default: %u)", DEFAULT_MISBEHAVING_BANTIME), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
argsman.AddArg("-bind=<addr>[:<port>][=onion]", strprintf("Bind to given address and always listen on it (default: 0.0.0.0). Use [host]:port notation for IPv6. Append =onion to tag any incoming connections to that address and port as incoming Tor connections (default: 127.0.0.1:%u=onion, testnet: 127.0.0.1:%u=onion, regtest: 127.0.0.1:%u=onion)", defaultBaseParams->OnionServiceTargetPort(), testnetBaseParams->OnionServiceTargetPort(), regtestBaseParams->OnionServiceTargetPort()), ArgsManager::ALLOW_ANY | ArgsManager::NETWORK_ONLY, OptionsCategory::CONNECTION);
@ -574,7 +574,7 @@ void SetupServerArgs(NodeContext& node)
argsman.AddArg("-forcednsseed", strprintf("Always query for peer addresses via DNS lookup (default: %u)", DEFAULT_FORCEDNSSEED), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
argsman.AddArg("-listen", "Accept connections from outside (default: 1 if no -proxy or -connect)", ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
argsman.AddArg("-listenonion", strprintf("Automatically create Tor onion service (default: %d)", DEFAULT_LISTEN_ONION), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
argsman.AddArg("-maxconnections=<n>", strprintf("Maintain at most <n> connections to peers (temporary service connections excluded) (default: %u)", DEFAULT_MAX_PEER_CONNECTIONS), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
argsman.AddArg("-maxconnections=<n>", strprintf("Maintain at most <n> connections to peers (temporary service connections excluded) (default: %u). This limit does not apply to connections manually added via -addnode or the addnode RPC, which have a separate limit of %u.", DEFAULT_MAX_PEER_CONNECTIONS, MAX_ADDNODE_CONNECTIONS), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
argsman.AddArg("-maxreceivebuffer=<n>", strprintf("Maximum per-connection receive buffer, <n>*1000 bytes (default: %u)", DEFAULT_MAXRECEIVEBUFFER), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
argsman.AddArg("-maxsendbuffer=<n>", strprintf("Maximum per-connection send buffer, <n>*1000 bytes (default: %u)", DEFAULT_MAXSENDBUFFER), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
argsman.AddArg("-maxtimeadjustment", strprintf("Maximum allowed median peer time offset adjustment. Local perspective of time may be influenced by peers forward or backward by this amount. (default: %u seconds)", DEFAULT_MAX_TIME_ADJUSTMENT), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
@ -1929,7 +1929,7 @@ bool AppInitMain(const CoreContext& context, NodeContext& node, interfaces::Bloc
};
bilingual_str strLoadError;
uiInterface.InitMessage(_("Loading block index...").translated);
uiInterface.InitMessage(_("Loading block index").translated);
do {
bool failed_verification = false;
@ -2120,7 +2120,7 @@ bool AppInitMain(const CoreContext& context, NodeContext& node, interfaces::Bloc
for (CChainState* chainstate : chainman.GetAll()) {
if (!is_coinsview_empty(chainstate)) {
uiInterface.InitMessage(_("Verifying blocks...").translated);
uiInterface.InitMessage(_("Verifying blocks").translated);
if (fHavePruned && args.GetArg("-checkblocks", DEFAULT_CHECKBLOCKS) > MIN_BLOCKS_TO_KEEP) {
LogPrintf("Prune: pruned datadir may not have more than %d blocks; only checking available blocks\n",
MIN_BLOCKS_TO_KEEP);
@ -2302,7 +2302,7 @@ bool AppInitMain(const CoreContext& context, NodeContext& node, interfaces::Bloc
if (!fReindex) {
LOCK(cs_main);
for (CChainState* chainstate : chainman.GetAll()) {
uiInterface.InitMessage(_("Pruning blockstore...").translated);
uiInterface.InitMessage(_("Pruning blockstore").translated);
chainstate->PruneAndFlush();
}
}

View File

@ -93,8 +93,8 @@ void CMasternodeSync::SwitchToNextAsset()
std::string CMasternodeSync::GetSyncStatus() const
{
switch (nCurrentAsset) {
case MASTERNODE_SYNC_BLOCKCHAIN: return _("Synchronizing blockchain...").translated;
case MASTERNODE_SYNC_GOVERNANCE: return _("Synchronizing governance objects...").translated;
case MASTERNODE_SYNC_BLOCKCHAIN: return _("Synchronizing blockchain").translated;
case MASTERNODE_SYNC_GOVERNANCE: return _("Synchronizing governance objects").translated;
case MASTERNODE_SYNC_FINISHED: return _("Synchronization finished").translated;
default: return "";
}

View File

@ -3299,7 +3299,7 @@ bool CConnman::Start(CDeterministicMNManager& dmnman, CMasternodeMetaMan& mn_met
}
if (clientInterface) {
clientInterface->InitMessage(_("Loading P2P addresses...").translated);
clientInterface->InitMessage(_("Loading P2P addresses").translated);
}
// Load addresses from peers.dat
int64_t nStart = GetTimeMillis();
@ -3323,7 +3323,7 @@ bool CConnman::Start(CDeterministicMNManager& dmnman, CMasternodeMetaMan& mn_met
LogPrintf("%i block-relay-only anchors will be tried for connections.\n", m_anchors.size());
}
uiInterface.InitMessage(_("Starting network threads...").translated);
uiInterface.InitMessage(_("Starting network threads").translated);
fAddressesInitialized = true;

View File

@ -815,7 +815,7 @@ int GuiMain(int argc, char* argv[])
if (app.baseInitialize()) {
app.requestInitialize();
#if defined(Q_OS_WIN)
WinShutdownMonitor::registerShutdownBlockReason(QObject::tr("%1 didn't yet exit safely...").arg(PACKAGE_NAME), (HWND)app.getMainWinId());
WinShutdownMonitor::registerShutdownBlockReason(QObject::tr("%1 didn't yet exit safely").arg(PACKAGE_NAME), (HWND)app.getMainWinId());
#endif
app.exec();
app.requestShutdown();

View File

@ -383,29 +383,29 @@ void BitcoinGUI::createActions()
aboutQtAction = new QAction(tr("About &Qt"), this);
aboutQtAction->setStatusTip(tr("Show information about Qt"));
aboutQtAction->setMenuRole(QAction::AboutQtRole);
optionsAction = new QAction(tr("&Options..."), this);
optionsAction = new QAction(tr("&Options"), this);
optionsAction->setStatusTip(tr("Modify configuration options for %1").arg(PACKAGE_NAME));
optionsAction->setMenuRole(QAction::PreferencesRole);
optionsAction->setEnabled(false);
toggleHideAction = new QAction(tr("&Show / Hide"), this);
toggleHideAction->setStatusTip(tr("Show or hide the main Window"));
encryptWalletAction = new QAction(tr("&Encrypt Wallet..."), this);
encryptWalletAction = new QAction(tr("&Encrypt Wallet"), this);
encryptWalletAction->setStatusTip(tr("Encrypt the private keys that belong to your wallet"));
backupWalletAction = new QAction(tr("&Backup Wallet..."), this);
backupWalletAction = new QAction(tr("&Backup Wallet"), this);
backupWalletAction->setStatusTip(tr("Backup wallet to another location"));
changePassphraseAction = new QAction(tr("&Change Passphrase..."), this);
changePassphraseAction = new QAction(tr("&Change Passphrase"), this);
changePassphraseAction->setStatusTip(tr("Change the passphrase used for wallet encryption"));
unlockWalletAction = new QAction(tr("&Unlock Wallet..."), this);
unlockWalletAction = new QAction(tr("&Unlock Wallet"), this);
unlockWalletAction->setToolTip(tr("Unlock wallet"));
lockWalletAction = new QAction(tr("&Lock Wallet"), this);
signMessageAction = new QAction(tr("Sign &message..."), this);
signMessageAction = new QAction(tr("Sign &message"), this);
signMessageAction->setStatusTip(tr("Sign messages with your Dash addresses to prove you own them"));
verifyMessageAction = new QAction(tr("&Verify message..."), this);
verifyMessageAction = new QAction(tr("&Verify message"), this);
verifyMessageAction->setStatusTip(tr("Verify messages to ensure they were signed with specified Dash addresses"));
m_load_psbt_action = new QAction(tr("&Load PSBT from file..."), this);
m_load_psbt_action = new QAction(tr("&Load PSBT from file"), this);
m_load_psbt_action->setStatusTip(tr("Load Partially Signed Dash Transaction"));
m_load_psbt_clipboard_action = new QAction(tr("Load PSBT from clipboard..."), this);
m_load_psbt_clipboard_action = new QAction(tr("Load PSBT from clipboard"), this);
m_load_psbt_clipboard_action->setStatusTip(tr("Load Partially Signed Bitcoin Transaction from clipboard"));
openInfoAction = new QAction(tr("&Information"), this);
@ -437,7 +437,7 @@ void BitcoinGUI::createActions()
usedReceivingAddressesAction = new QAction(tr("&Receiving addresses"), this);
usedReceivingAddressesAction->setStatusTip(tr("Show the list of used receiving addresses and labels"));
openAction = new QAction(tr("Open &URI..."), this);
openAction = new QAction(tr("Open &URI"), this);
openAction->setStatusTip(tr("Open a dash: URI"));
m_open_wallet_action = new QAction(tr("Open Wallet"), this);
@ -445,14 +445,14 @@ void BitcoinGUI::createActions()
m_open_wallet_action->setStatusTip(tr("Open a wallet"));
m_open_wallet_menu = new QMenu(this);
m_close_wallet_action = new QAction(tr("Close Wallet..."), this);
m_close_wallet_action = new QAction(tr("Close Wallet"), this);
m_close_wallet_action->setStatusTip(tr("Close wallet"));
m_create_wallet_action = new QAction(tr("Create Wallet..."), this);
m_create_wallet_action = new QAction(tr("Create Wallet"), this);
m_create_wallet_action->setEnabled(false);
m_create_wallet_action->setStatusTip(tr("Create a new wallet"));
m_close_all_wallets_action = new QAction(tr("Close All Wallets..."), this);
m_close_all_wallets_action = new QAction(tr("Close All Wallets"), this);
m_close_all_wallets_action->setStatusTip(tr("Close all wallets"));
showHelpMessageAction = new QAction(tr("&Command-line options"), this);
@ -1300,7 +1300,7 @@ void BitcoinGUI::updateHeadersSyncProgressLabel()
int headersTipHeight = clientModel->getHeaderTipHeight();
int estHeadersLeft = (GetTime() - headersTipTime) / Params().GetConsensus().nPowTargetSpacing;
if (estHeadersLeft > HEADER_HEIGHT_DELTA_SYNC)
progressBarLabel->setText(tr("Syncing Headers (%1%)...").arg(QString::number(100.0 / (headersTipHeight+estHeadersLeft)*headersTipHeight, 'f', 1)));
progressBarLabel->setText(tr("Syncing Headers (%1%)").arg(QString::number(100.0 / (headersTipHeight+estHeadersLeft)*headersTipHeight, 'f', 1)));
}
void BitcoinGUI::openOptionsDialogWithTab(OptionsDialog::Tab tab)
@ -1421,24 +1421,24 @@ void BitcoinGUI::setNumBlocks(int count, const QDateTime& blockDate, const QStri
updateHeadersSyncProgressLabel();
return;
}
progressBarLabel->setText(tr("Synchronizing with network..."));
progressBarLabel->setText(tr("Synchronizing with network"));
updateHeadersSyncProgressLabel();
break;
case BlockSource::DISK:
if (header) {
progressBarLabel->setText(tr("Indexing blocks on disk..."));
progressBarLabel->setText(tr("Indexing blocks on disk"));
} else {
progressBarLabel->setText(tr("Processing blocks on disk..."));
progressBarLabel->setText(tr("Processing blocks on disk"));
}
break;
case BlockSource::REINDEX:
progressBarLabel->setText(tr("Reindexing blocks on disk..."));
progressBarLabel->setText(tr("Reindexing blocks on disk"));
break;
case BlockSource::NONE:
if (header) {
return;
}
progressBarLabel->setText(tr("Connecting to peers..."));
progressBarLabel->setText(tr("Connecting to peers"));
break;
}
@ -1470,7 +1470,7 @@ void BitcoinGUI::setNumBlocks(int count, const QDateTime& blockDate, const QStri
progressBar->setMaximum(1000000000);
progressBar->setValue(nVerificationProgress * 1000000000.0 + 0.5);
tooltip = tr("Catching up...") + QString("<br>") + tooltip;
tooltip = tr("Catching up") + QString("<br>") + tooltip;
#ifdef ENABLE_WALLET
if(walletFrame)

View File

@ -123,7 +123,7 @@
</size>
</property>
<property name="text">
<string notr="true">...</string>
<string notr="true"></string>
</property>
<property name="autoDefault">
<bool>false</bool>

View File

@ -191,7 +191,7 @@
<item row="0" column="1">
<widget class="QLabel" name="numberOfBlocksLeft">
<property name="text">
<string>Unknown...</string>
<string>Unknown</string>
</property>
</widget>
</item>
@ -211,7 +211,7 @@
</sizepolicy>
</property>
<property name="text">
<string>Unknown...</string>
<string>Unknown</string>
</property>
</widget>
</item>
@ -243,7 +243,7 @@
<item row="4" column="1">
<widget class="QLabel" name="progressIncreasePerH">
<property name="text">
<string>calculating...</string>
<string>calculating</string>
</property>
</widget>
</item>
@ -257,7 +257,7 @@
<item row="5" column="1">
<widget class="QLabel" name="expectedTimeLeft">
<property name="text">
<string>calculating...</string>
<string>calculating</string>
</property>
</widget>
</item>

View File

@ -126,7 +126,7 @@
<item>
<widget class="QPushButton" name="saveButton">
<property name="text">
<string>Save...</string>
<string>Save</string>
</property>
</widget>
</item>

View File

@ -82,7 +82,7 @@
<item>
<widget class="QPushButton" name="button_saveImage">
<property name="text">
<string>&amp;Save Image...</string>
<string>&amp;Save Image</string>
</property>
<property name="autoDefault">
<bool>false</bool>

View File

@ -11,7 +11,7 @@
</rect>
</property>
<property name="windowTitle">
<string>Request payment to ...</string>
<string>Request payment to </string>
</property>
<layout class="QGridLayout" name="gridLayout" columnstretch="0,1">
<property name="sizeConstraint">
@ -65,7 +65,7 @@
<item row="2" column="1" alignment="Qt::AlignTop">
<widget class="QLabel" name="uri_content">
<property name="text">
<string notr="true">bitcoin:BC1...</string>
<string notr="true">bitcoin:BC1</string>
</property>
<property name="textFormat">
<enum>Qt::RichText</enum>
@ -97,7 +97,7 @@
<item row="3" column="1" alignment="Qt::AlignTop">
<widget class="QLabel" name="address_content">
<property name="text">
<string notr="true">bc1...</string>
<string notr="true">bc1</string>
</property>
<property name="textFormat">
<enum>Qt::PlainText</enum>
@ -257,7 +257,7 @@
<item>
<widget class="QPushButton" name="btnSaveAs">
<property name="text">
<string>&amp;Save Image...</string>
<string>&amp;Save Image</string>
</property>
<property name="autoDefault">
<bool>false</bool>

View File

@ -98,7 +98,7 @@
<string notr="true"/>
</property>
<property name="text">
<string>Inputs...</string>
<string>Inputs</string>
</property>
<property name="autoDefault">
<bool>false</bool>
@ -669,7 +669,7 @@
<item>
<widget class="QPushButton" name="buttonChooseFee">
<property name="text">
<string>Choose...</string>
<string>Choose</string>
</property>
</widget>
</item>
@ -939,7 +939,7 @@
<item>
<widget class="QLabel" name="labelSmartFee2">
<property name="text">
<string>(Smart fee not initialized yet. This usually takes a few blocks...)</string>
<string>(Smart fee not initialized yet. This usually takes a few blocks)</string>
</property>
</widget>
</item>

View File

@ -143,7 +143,7 @@ void MasternodeList::updateDIP3ListScheduled()
// after filter was last changed unless we want to force the update.
if (fFilterUpdatedDIP3) {
int64_t nSecondsToWait = nTimeFilterUpdatedDIP3 - GetTime() + MASTERNODELIST_FILTER_COOLDOWN_SECONDS;
ui->countLabelDIP3->setText(tr("Please wait...") + " " + QString::number(nSecondsToWait));
ui->countLabelDIP3->setText(tr("Please wait") + " " + QString::number(nSecondsToWait));
if (nSecondsToWait <= 0) {
updateDIP3List();
@ -192,7 +192,7 @@ void MasternodeList::updateDIP3List()
LOCK(cs_dip3list);
QString strToFilter;
ui->countLabelDIP3->setText(tr("Updating..."));
ui->countLabelDIP3->setText(tr("Updating"));
ui->tableWidgetMasternodesDIP3->setSortingEnabled(false);
ui->tableWidgetMasternodesDIP3->clearContents();
ui->tableWidgetMasternodesDIP3->setRowCount(0);
@ -323,7 +323,7 @@ void MasternodeList::on_filterLineEditDIP3_textChanged(const QString& strFilterI
strCurrentFilterDIP3 = strFilterIn;
nTimeFilterUpdatedDIP3 = GetTime();
fFilterUpdatedDIP3 = true;
ui->countLabelDIP3->setText(tr("Please wait...") + " " + QString::number(MASTERNODELIST_FILTER_COOLDOWN_SECONDS));
ui->countLabelDIP3->setText(tr("Please wait") + " " + QString::number(MASTERNODELIST_FILTER_COOLDOWN_SECONDS));
}
void MasternodeList::on_checkBoxMyMasternodesOnly_stateChanged(int state)

View File

@ -163,13 +163,13 @@ void ModalOverlay::tipUpdate(int count, const QDateTime& blockDate, double nVeri
ui->numberOfBlocksLeft->setText(QString::number(bestHeaderHeight - count));
} else {
UpdateHeaderSyncLabel();
ui->expectedTimeLeft->setText(tr("Unknown..."));
ui->expectedTimeLeft->setText(tr("Unknown"));
}
}
void ModalOverlay::UpdateHeaderSyncLabel() {
int est_headers_left = bestHeaderDate.secsTo(QDateTime::currentDateTime()) / Params().GetConsensus().nPowTargetSpacing;
ui->numberOfBlocksLeft->setText(tr("Unknown. Syncing Headers (%1, %2%)...").arg(bestHeaderHeight).arg(QString::number(100.0 / (bestHeaderHeight + est_headers_left) * bestHeaderHeight, 'f', 1)));
ui->numberOfBlocksLeft->setText(tr("Unknown. Syncing Headers (%1, %2%)").arg(bestHeaderHeight).arg(QString::number(100.0 / (bestHeaderHeight + est_headers_left) * bestHeaderHeight, 'f', 1)));
}
void ModalOverlay::toggleVisibility()

View File

@ -27,7 +27,7 @@ QRImageWidget::QRImageWidget(QWidget *parent):
QLabel(parent), contextMenu(nullptr)
{
contextMenu = new QMenu(this);
QAction *saveImageAction = new QAction(tr("&Save Image..."), this);
QAction *saveImageAction = new QAction(tr("&Save Image"), this);
connect(saveImageAction, &QAction::triggered, this, &QRImageWidget::saveImage);
contextMenu->addAction(saveImageAction);
QAction *copyImageAction = new QAction(tr("&Copy Image"), this);

View File

@ -454,7 +454,7 @@ bool SendCoinsDialog::send(const QList<SendCoinsRecipient>& recipients, QString&
.arg(alternativeUnits.join(" " + tr("or") + " ")));
if (formatted.size() > 1) {
informative_text = tr("To review recipient list click \"Show Details...\"");
informative_text = tr("To review recipient list click \"Show Details\"");
detailed_text = formatted.join("\n\n");
}

View File

@ -70,7 +70,7 @@ TransactionView::TransactionView(QWidget* parent) :
dateWidget->addItem(tr("This month"), ThisMonth);
dateWidget->addItem(tr("Last month"), LastMonth);
dateWidget->addItem(tr("This year"), ThisYear);
dateWidget->addItem(tr("Range..."), Range);
dateWidget->addItem(tr("Range"), Range);
dateWidget->setCurrentIndex(settings.value("transactionDate").toInt());
hlayout->addWidget(dateWidget);

View File

@ -186,7 +186,7 @@ ShutdownWindow::ShutdownWindow(QWidget *parent, Qt::WindowFlags f):
QVBoxLayout *layout = new QVBoxLayout();
layout->addWidget(new QLabel(
tr("%1 is shutting down...").arg(PACKAGE_NAME) + "<br /><br />" +
tr("%1 is shutting down").arg(PACKAGE_NAME) + "<br /><br />" +
tr("Do not shut down the computer until this window disappears.")));
setLayout(layout);

View File

@ -251,7 +251,7 @@ void CreateWalletActivity::askPassphrase()
void CreateWalletActivity::createWallet()
{
showProgressDialog(tr("Creating Wallet <b>%1</b>...").arg(m_create_wallet_dialog->walletName().toHtmlEscaped()));
showProgressDialog(tr("Creating Wallet <b>%1</b>").arg(m_create_wallet_dialog->walletName().toHtmlEscaped()));
std::string name = m_create_wallet_dialog->walletName().toStdString();
uint64_t flags = 0;
@ -334,7 +334,7 @@ void OpenWalletActivity::open(const std::string& path)
{
QString name = path.empty() ? QString("["+tr("default wallet")+"]") : QString::fromStdString(path);
showProgressDialog(tr("Opening Wallet <b>%1</b>...").arg(name.toHtmlEscaped()));
showProgressDialog(tr("Opening Wallet <b>%1</b>").arg(name.toHtmlEscaped()));
QTimer::singleShot(0, worker(), [this, path] {
std::unique_ptr<interfaces::Wallet> wallet = node().walletLoader().loadWallet(path, m_error_message, m_warning_message);

View File

@ -298,7 +298,9 @@ static RPCHelpMan addnode()
"\nAttempts to add or remove a node from the addnode list.\n"
"Or try a connection to a node once.\n"
"Nodes added using addnode (or -connect) are protected from DoS disconnection and are not required to be\n"
"full nodes as other outbound peers are (though such peers will not be synced from).\n",
"full nodes as other outbound peers are (though such peers will not be synced from).\n" +
strprintf("Addnode connections are limited to %u at a time", MAX_ADDNODE_CONNECTIONS) +
" and are counted separately from the -maxconnections limit.\n",
{
{"node", RPCArg::Type::STR, RPCArg::Optional::NO, "The node (see getpeerinfo for nodes)"},
{"command", RPCArg::Type::STR, RPCArg::Optional::NO, "'add' to add a node to the list, 'remove' to remove a node from the list, 'onetry' to try a connection to the node once"},

View File

@ -4747,7 +4747,7 @@ bool CChainState::LoadChainTip()
CVerifyDB::CVerifyDB()
{
uiInterface.ShowProgress(_("Verifying blocks...").translated, 0, false);
uiInterface.ShowProgress(_("Verifying blocks").translated, 0, false);
}
CVerifyDB::~CVerifyDB()
@ -4793,7 +4793,7 @@ bool CVerifyDB::VerifyDB(
LogPrintf("[%d%%]...", percentageDone); /* Continued */
reportDone = percentageDone/10;
}
uiInterface.ShowProgress(_("Verifying blocks...").translated, percentageDone, false);
uiInterface.ShowProgress(_("Verifying blocks").translated, percentageDone, false);
if (pindex->nHeight <= chainstate.m_chain.Height()-nCheckDepth)
break;
if ((fPruneMode || is_snapshot_cs) && !(pindex->nStatus & BLOCK_HAVE_DATA)) {
@ -4852,7 +4852,7 @@ bool CVerifyDB::VerifyDB(
LogPrintf("[%d%%]...", percentageDone); /* Continued */
reportDone = percentageDone/10;
}
uiInterface.ShowProgress(_("Verifying blocks...").translated, percentageDone, false);
uiInterface.ShowProgress(_("Verifying blocks").translated, percentageDone, false);
pindex = chainstate.m_chain.Next(pindex);
CBlock block;
if (!ReadBlockFromDisk(block, pindex, chainparams.GetConsensus()))
@ -4986,7 +4986,7 @@ bool CChainState::ReplayBlocks()
if (hashHeads.empty()) return true; // We're already in a consistent state.
if (hashHeads.size() != 2) return error("ReplayBlocks(): unknown inconsistent state");
uiInterface.ShowProgress(_("Replaying blocks...").translated, 0, false);
uiInterface.ShowProgress(_("Replaying blocks").translated, 0, false);
LogPrintf("Replaying blocks\n");
const CBlockIndex* pindexOld = nullptr; // Old tip during the interrupted flush.
@ -5038,7 +5038,7 @@ bool CChainState::ReplayBlocks()
for (int nHeight = nForkHeight + 1; nHeight <= pindexNew->nHeight; ++nHeight) {
const CBlockIndex* pindex = pindexNew->GetAncestor(nHeight);
LogPrintf("Rolling forward %s (%i)\n", pindex->GetBlockHash().ToString(), nHeight);
uiInterface.ShowProgress(_("Replaying blocks...").translated, (int) ((nHeight - nForkHeight) * 100.0 / (pindexNew->nHeight - nForkHeight)) , false);
uiInterface.ShowProgress(_("Replaying blocks").translated, (int) ((nHeight - nForkHeight) * 100.0 / (pindexNew->nHeight - nForkHeight)) , false);
if (!RollforwardBlock(pindex, cache)) return false;
}

View File

@ -42,7 +42,7 @@ bool VerifyWallets(interfaces::Chain& chain)
LogPrintf("Using wallet directory %s\n", GetWalletDir().string());
chain.initMessage(_("Verifying wallet(s)...").translated);
chain.initMessage(_("Verifying wallet(s)").translated);
// For backwards compatibility if an unnamed top level wallet exists in the
// wallets directory, include it in the default list of wallets to load.

View File

@ -524,7 +524,7 @@ RPCHelpMan importwallet()
// Use uiInterface.ShowProgress instead of pwallet.ShowProgress because pwallet.ShowProgress has a cancel button tied to AbortRescan which
// we don't want for this progress bar showing the import progress. uiInterface.ShowProgress does not have a cancel button.
pwallet->chain().showProgress(strprintf("%s " + _("Importing...").translated, pwallet->GetDisplayName()), 0, false); // show progress dialog in GUI
pwallet->chain().showProgress(strprintf("%s " + _("Importing").translated, pwallet->GetDisplayName()), 0, false); // show progress dialog in GUI
std::vector<std::tuple<CKey, int64_t, bool, std::string>> keys;
std::vector<std::pair<CScript, int64_t>> scripts;
while (file.good()) {
@ -687,7 +687,7 @@ RPCHelpMan importelectrumwallet()
int64_t nFilesize = std::max((int64_t)1, (int64_t)file.tellg());
file.seekg(0, file.beg);
pwallet->ShowProgress(_("Importing...").translated, 0); // show progress dialog in GUI
pwallet->ShowProgress(_("Importing").translated, 0); // show progress dialog in GUI
// Electrum backups were modified to include a prefix before the private key
// The new format of the private_key field is: "prefix:private key"

View File

@ -3738,7 +3738,7 @@ static RPCHelpMan wipewallettxes()
const size_t STEPS{20};
const size_t BATCH_SIZE = std::max(WALLET_SIZE / STEPS, size_t(1000));
pwallet->ShowProgress(strprintf("%s " + _("Wiping wallet transactions...").translated, pwallet->GetDisplayName()), 0);
pwallet->ShowProgress(strprintf("%s " + _("Wiping wallet transactions").translated, pwallet->GetDisplayName()), 0);
for (size_t progress = 0; progress < STEPS; ++progress) {
std::vector<uint256> vHashIn;
@ -3752,21 +3752,21 @@ static RPCHelpMan wipewallettxes()
}
if (vHashIn.size() > 0 && pwallet->ZapSelectTx(vHashIn, vHashOut) != DBErrors::LOAD_OK) {
pwallet->ShowProgress(strprintf("%s " + _("Wiping wallet transactions...").translated, pwallet->GetDisplayName()), 100);
pwallet->ShowProgress(strprintf("%s " + _("Wiping wallet transactions").translated, pwallet->GetDisplayName()), 100);
throw JSONRPCError(RPC_WALLET_ERROR, "Could not properly delete transactions.");
}
CHECK_NONFATAL(vHashOut.size() == vHashIn.size());
if (pwallet->IsAbortingRescan() || pwallet->chain().shutdownRequested()) {
pwallet->ShowProgress(strprintf("%s " + _("Wiping wallet transactions...").translated, pwallet->GetDisplayName()), 100);
pwallet->ShowProgress(strprintf("%s " + _("Wiping wallet transactions").translated, pwallet->GetDisplayName()), 100);
throw JSONRPCError(RPC_MISC_ERROR, "Wiping was aborted by user.");
}
pwallet->ShowProgress(strprintf("%s " + _("Wiping wallet transactions...").translated, pwallet->GetDisplayName()), std::max(1, std::min(99, int(progress * 100 / STEPS))));
pwallet->ShowProgress(strprintf("%s " + _("Wiping wallet transactions").translated, pwallet->GetDisplayName()), std::max(1, std::min(99, int(progress * 100 / STEPS))));
}
pwallet->ShowProgress(strprintf("%s " + _("Wiping wallet transactions...").translated, pwallet->GetDisplayName()), 100);
pwallet->ShowProgress(strprintf("%s " + _("Wiping wallet transactions").translated, pwallet->GetDisplayName()), 100);
return NullUniValue;
},

View File

@ -1433,7 +1433,7 @@ bool LegacyScriptPubKeyMan::TopUpInner(unsigned int kpSize)
constexpr int64_t PROGRESS_REPORT_INTERVAL = 1; // in seconds
const bool should_show_progress = total_missing > 100;
const std::string strMsg = _("Topping up keypool...").translated;
const std::string strMsg = _("Topping up keypool").translated;
int64_t progress_report_time = GetTime();
WalletLogPrintf("%s\n", strMsg);

View File

@ -1953,7 +1953,7 @@ CWallet::ScanResult CWallet::ScanForWalletTransactions(const uint256& start_bloc
WalletLogPrintf("Rescan started from block %s...\n", start_block.ToString());
ShowProgress(strprintf("%s " + _("Rescanning...").translated, GetDisplayName()), 0); // show rescan progress in GUI as dialog or on splashscreen, if -rescan on startup
ShowProgress(strprintf("%s " + _("Rescanning").translated, GetDisplayName()), 0); // show rescan progress in GUI as dialog or on splashscreen, if -rescan on startup
uint256 tip_hash = WITH_LOCK(cs_wallet, return GetLastBlockHash());
uint256 end_hash = tip_hash;
if (max_height) chain().findAncestorByHeight(tip_hash, *max_height, FoundBlock().hash(end_hash));
@ -1969,7 +1969,7 @@ CWallet::ScanResult CWallet::ScanForWalletTransactions(const uint256& start_bloc
m_scanning_progress = 0;
}
if (block_height % 100 == 0 && progress_end - progress_begin > 0.0) {
ShowProgress(strprintf("%s " + _("Rescanning...").translated, GetDisplayName()), std::max(1, std::min(99, (int)(m_scanning_progress * 100))));
ShowProgress(strprintf("%s " + _("Rescanning").translated, GetDisplayName()), std::max(1, std::min(99, (int)(m_scanning_progress * 100))));
}
if (Clock::now() >= current_time + LOG_INTERVAL) {
current_time = Clock::now();
@ -2031,7 +2031,7 @@ CWallet::ScanResult CWallet::ScanForWalletTransactions(const uint256& start_bloc
}
}
}
ShowProgress(strprintf("%s " + _("Rescanning...").translated, GetDisplayName()), 100); // hide progress dialog in GUI
ShowProgress(strprintf("%s " + _("Rescanning").translated, GetDisplayName()), 100); // hide progress dialog in GUI
if (block_height && fAbortRescan) {
WalletLogPrintf("Rescan aborted at block %d. Progress=%f\n", block_height, progress_current);
result.status = ScanResult::USER_ABORT;
@ -4535,7 +4535,7 @@ std::shared_ptr<CWallet> CWallet::Create(interfaces::Chain& chain, interfaces::C
{
const std::string& walletFile = database->Filename();
chain.initMessage(_("Loading wallet...").translated);
chain.initMessage(_("Loading wallet").translated);
int64_t nStart = GetTimeMillis();
bool fFirstRun = true;
@ -4836,7 +4836,7 @@ std::shared_ptr<CWallet> CWallet::Create(interfaces::Chain& chain, interfaces::C
}
}
chain.initMessage(_("Rescanning...").translated);
chain.initMessage(_("Rescanning").translated);
walletInstance->WalletLogPrintf("Rescanning last %i blocks (from block %i)...\n", *tip_height - rescan_height, rescan_height);
// No need to read and scan block if block was created before