mirror of
https://github.com/dashpay/dash.git
synced 2024-12-26 04:22:55 +01:00
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:
commit
df6d666918
@ -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
|
||||
|
||||
|
@ -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)) {
|
||||
|
10
src/init.cpp
10
src/init.cpp
@ -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();
|
||||
}
|
||||
}
|
||||
|
@ -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 "";
|
||||
}
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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();
|
||||
|
@ -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)
|
||||
|
@ -123,7 +123,7 @@
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string notr="true">...</string>
|
||||
<string notr="true">…</string>
|
||||
</property>
|
||||
<property name="autoDefault">
|
||||
<bool>false</bool>
|
||||
|
@ -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>
|
||||
|
@ -126,7 +126,7 @@
|
||||
<item>
|
||||
<widget class="QPushButton" name="saveButton">
|
||||
<property name="text">
|
||||
<string>Save...</string>
|
||||
<string>Save…</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
@ -82,7 +82,7 @@
|
||||
<item>
|
||||
<widget class="QPushButton" name="button_saveImage">
|
||||
<property name="text">
|
||||
<string>&Save Image...</string>
|
||||
<string>&Save Image…</string>
|
||||
</property>
|
||||
<property name="autoDefault">
|
||||
<bool>false</bool>
|
||||
|
@ -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>&Save Image...</string>
|
||||
<string>&Save Image…</string>
|
||||
</property>
|
||||
<property name="autoDefault">
|
||||
<bool>false</bool>
|
||||
|
@ -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>
|
||||
|
@ -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)
|
||||
|
@ -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()
|
||||
|
@ -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);
|
||||
|
@ -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");
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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"},
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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.
|
||||
|
@ -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"
|
||||
|
@ -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;
|
||||
},
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user