From e5735a93dc99e7bdf910258563c0052b94cb5d6b Mon Sep 17 00:00:00 2001 From: Fuzzbawls Date: Thu, 16 Nov 2023 17:51:47 -0800 Subject: [PATCH 1/2] [GUI] Remove unused addressbookpage references This is an artifact from before the UI redesign that came with v4.0, and is no longer used anywhere in the current wallet version. --- src/Makefile.qt.include | 4 - src/qt/CMakeLists.txt | 1 - src/qt/addressbookpage.cpp | 299 ------------------ src/qt/addressbookpage.h | 89 ------ .../settings/settingssignmessagewidgets.cpp | 17 - .../settings/settingssignmessagewidgets.h | 2 - 6 files changed, 412 deletions(-) delete mode 100644 src/qt/addressbookpage.cpp delete mode 100644 src/qt/addressbookpage.h diff --git a/src/Makefile.qt.include b/src/Makefile.qt.include index 153df1499fc5b..6d7050ef6661c 100644 --- a/src/Makefile.qt.include +++ b/src/Makefile.qt.include @@ -9,7 +9,6 @@ EXTRA_LIBRARIES += qt/libbitcoinqt.a include Makefile.qt_locale.include QT_FORMS_UI = \ - qt/forms/addressbookpage.ui \ qt/forms/askpassphrasedialog.ui \ qt/forms/coincontroldialog.ui \ qt/forms/editaddressdialog.ui \ @@ -71,7 +70,6 @@ QT_FORMS_UI = \ qt/pivx/forms/splash.ui QT_MOC_CPP = \ - qt/moc_addressbookpage.cpp \ qt/moc_addresstablemodel.cpp \ qt/moc_askpassphrasedialog.cpp \ qt/moc_bantablemodel.cpp \ @@ -174,7 +172,6 @@ QT_QRC_LOCALE_CPP = qt/qrc_pivx_locale.cpp QT_QRC_LOCALE = qt/pivx_locale.qrc BITCOIN_QT_H = \ - qt/addressbookpage.h \ qt/addresstablemodel.h \ qt/askpassphrasedialog.h \ qt/bantablemodel.h \ @@ -539,7 +536,6 @@ BITCOIN_QT_BASE_CPP = \ BITCOIN_QT_WINDOWS_CPP = qt/winshutdownmonitor.cpp BITCOIN_QT_WALLET_CPP = \ - qt/addressbookpage.cpp \ qt/addresstablemodel.cpp \ qt/askpassphrasedialog.cpp \ qt/coincontroldialog.cpp \ diff --git a/src/qt/CMakeLists.txt b/src/qt/CMakeLists.txt index 747dd9078b180..264d6d5b4111c 100644 --- a/src/qt/CMakeLists.txt +++ b/src/qt/CMakeLists.txt @@ -77,7 +77,6 @@ SET(QT_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/rpcexecutor.cpp ${CMAKE_CURRENT_SOURCE_DIR}/trafficgraphwidget.cpp ${CMAKE_CURRENT_SOURCE_DIR}/utilitydialog.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/addressbookpage.cpp ${CMAKE_CURRENT_SOURCE_DIR}/addresstablemodel.cpp ${CMAKE_CURRENT_SOURCE_DIR}/askpassphrasedialog.cpp ${CMAKE_CURRENT_SOURCE_DIR}/coincontroldialog.cpp diff --git a/src/qt/addressbookpage.cpp b/src/qt/addressbookpage.cpp deleted file mode 100644 index 17bcf454876b5..0000000000000 --- a/src/qt/addressbookpage.cpp +++ /dev/null @@ -1,299 +0,0 @@ -// Copyright (c) 2011-2014 The Bitcoin developers -// Copyright (c) 2014-2015 The Dash developers -// Copyright (c) 2015-2020 The PIVX Core developers -// Distributed under the MIT/X11 software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#if defined(HAVE_CONFIG_H) -#include "config/pivx-config.h" -#endif - -#include "addressbookpage.h" -#include "ui_addressbookpage.h" - -#include "addresstablemodel.h" -#include "qt/pivx/pivxgui.h" -#include "csvmodelwriter.h" -#include "editaddressdialog.h" -#include "guiutil.h" - -#include -#include -#include -#include - -AddressBookPage::AddressBookPage(Mode mode, Tabs tab, QWidget* parent) : QDialog(parent, Qt::WindowSystemMenuHint | Qt::WindowTitleHint | Qt::WindowCloseButtonHint), - ui(new Ui::AddressBookPage), - model(0), - mode(mode), - tab(tab) -{ - ui->setupUi(this); - -#ifdef Q_OS_MAC // Icons on push buttons are very uncommon on Mac - ui->newAddress->setIcon(QIcon()); - ui->copyAddress->setIcon(QIcon()); - ui->deleteAddress->setIcon(QIcon()); - ui->exportButton->setIcon(QIcon()); -#endif - - switch (mode) { - case ForSelection: - switch (tab) { - case SendingTab: - setWindowTitle(tr("Choose the address to send coins to")); - break; - case ReceivingTab: - setWindowTitle(tr("Choose the address to receive coins with")); - break; - } - connect(ui->tableView, &QTableView::doubleClicked, this, &QDialog::accept); - ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers); - ui->tableView->setFocus(); - ui->closeButton->setText(tr("C&hoose")); - ui->exportButton->hide(); - break; - case ForEditing: - switch (tab) { - case SendingTab: - setWindowTitle(tr("Sending addresses")); - break; - case ReceivingTab: - setWindowTitle(tr("Receiving addresses")); - break; - } - break; - } - switch (tab) { - case SendingTab: - ui->labelExplanation->setText(tr("These are your PIVX addresses for sending payments. Always check the amount and the receiving address before sending coins.")); - ui->deleteAddress->setVisible(true); - break; - case ReceivingTab: - ui->labelExplanation->setText(tr("These are your PIVX addresses for receiving payments. It is recommended to use a new receiving address for each transaction.")); - ui->deleteAddress->setVisible(false); - break; - } - - // Context menu actions - QAction* copyAddressAction = new QAction(tr("&Copy Address"), this); - QAction* copyLabelAction = new QAction(tr("Copy &Label"), this); - QAction* editAction = new QAction(tr("&Edit"), this); - deleteAction = new QAction(ui->deleteAddress->text(), this); - - // Build context menu - contextMenu = new QMenu(); - contextMenu->addAction(copyAddressAction); - contextMenu->addAction(copyLabelAction); - contextMenu->addAction(editAction); - if (tab == SendingTab) - contextMenu->addAction(deleteAction); - contextMenu->addSeparator(); - - // Connect signals for context menu actions - connect(copyAddressAction, &QAction::triggered, this, &AddressBookPage::on_copyAddress_clicked); - connect(copyLabelAction, &QAction::triggered, this, &AddressBookPage::onCopyLabelAction); - connect(editAction, &QAction::triggered, this, &AddressBookPage::onEditAction); - connect(deleteAction, &QAction::triggered, this, &AddressBookPage::on_deleteAddress_clicked); - - connect(ui->tableView, &QWidget::customContextMenuRequested, this, &AddressBookPage::contextualMenu); - - connect(ui->closeButton, &QPushButton::clicked, this, &QDialog::accept); -} - -AddressBookPage::~AddressBookPage() -{ - delete ui; -} - -void AddressBookPage::setModel(AddressTableModel* model) -{ - this->model = model; - if (!model) - return; - - proxyModel = new QSortFilterProxyModel(this); - proxyModel->setSourceModel(model); - proxyModel->setDynamicSortFilter(true); - proxyModel->setSortCaseSensitivity(Qt::CaseInsensitive); - proxyModel->setFilterCaseSensitivity(Qt::CaseInsensitive); - switch (tab) { - case ReceivingTab: - // Receive filter - proxyModel->setFilterRole(AddressTableModel::TypeRole); - proxyModel->setFilterFixedString(AddressTableModel::Receive); - break; - case SendingTab: - // Send filter - proxyModel->setFilterRole(AddressTableModel::TypeRole); - proxyModel->setFilterFixedString(AddressTableModel::Send); - break; - } - ui->tableView->setModel(proxyModel); - ui->tableView->sortByColumn(0, Qt::AscendingOrder); - - // Set column widths - ui->tableView->horizontalHeader()->setSectionResizeMode(AddressTableModel::Label, QHeaderView::Stretch); - ui->tableView->horizontalHeader()->setSectionResizeMode(AddressTableModel::Address, QHeaderView::ResizeToContents); - - connect(ui->tableView->selectionModel(), &QItemSelectionModel::selectionChanged, - this, &AddressBookPage::selectionChanged); - - // Select row for newly created address - connect(model, &AddressTableModel::rowsInserted, this, &AddressBookPage::selectNewAddress); - - selectionChanged(); -} - -void AddressBookPage::on_copyAddress_clicked() -{ - GUIUtil::copyEntryData(ui->tableView, AddressTableModel::Address); -} - -void AddressBookPage::onCopyLabelAction() -{ - GUIUtil::copyEntryData(ui->tableView, AddressTableModel::Label); -} - -void AddressBookPage::onEditAction() -{ - if (!model) - return; - - if (!ui->tableView->selectionModel()) - return; - QModelIndexList indexes = ui->tableView->selectionModel()->selectedRows(); - if (indexes.isEmpty()) - return; - - EditAddressDialog dlg( - tab == SendingTab ? - EditAddressDialog::EditSendingAddress : - EditAddressDialog::EditReceivingAddress, - this); - dlg.setModel(model); - QModelIndex origIndex = proxyModel->mapToSource(indexes.at(0)); - dlg.loadRow(origIndex.row()); - dlg.exec(); -} - -void AddressBookPage::on_newAddress_clicked() -{ - if (!model) - return; - - EditAddressDialog dlg( - tab == SendingTab ? - EditAddressDialog::NewSendingAddress : - EditAddressDialog::NewReceivingAddress, - this); - dlg.setModel(model); - if (dlg.exec()) { - newAddressToSelect = dlg.getAddress(); - } -} - -void AddressBookPage::on_deleteAddress_clicked() -{ - QTableView* table = ui->tableView; - if (!table->selectionModel()) - return; - - QModelIndexList indexes = table->selectionModel()->selectedRows(); - if (!indexes.isEmpty()) { - table->model()->removeRow(indexes.at(0).row()); - } -} - -void AddressBookPage::selectionChanged() -{ - // Set button states based on selected tab and selection - QTableView* table = ui->tableView; - if (!table->selectionModel()) - return; - - if (table->selectionModel()->hasSelection()) { - switch (tab) { - case SendingTab: - // In sending tab, allow deletion of selection - ui->deleteAddress->setEnabled(true); - ui->deleteAddress->setVisible(true); - deleteAction->setEnabled(true); - break; - case ReceivingTab: - // Deleting receiving addresses, however, is not allowed - ui->deleteAddress->setEnabled(false); - ui->deleteAddress->setVisible(false); - deleteAction->setEnabled(false); - break; - } - ui->copyAddress->setEnabled(true); - } else { - ui->deleteAddress->setEnabled(false); - ui->copyAddress->setEnabled(false); - } -} - -void AddressBookPage::done(int retval) -{ - QTableView* table = ui->tableView; - if (!table->selectionModel() || !table->model()) - return; - - // Figure out which address was selected, and return it - QModelIndexList indexes = table->selectionModel()->selectedRows(AddressTableModel::Address); - - for (QModelIndex index : indexes) { - QVariant address = table->model()->data(index); - returnValue = address.toString(); - } - - if (returnValue.isEmpty()) { - // If no address entry selected, return rejected - retval = Rejected; - } - - QDialog::done(retval); -} - -void AddressBookPage::on_exportButton_clicked() -{ - // CSV is currently the only supported format - QString filename = GUIUtil::getSaveFileName(this, - tr("Export Address List"), QString(), - tr("Comma separated file (*.csv)"), nullptr); - - if (filename.isNull()) - return; - - CSVModelWriter writer(filename); - - // name, column, role - writer.setModel(proxyModel); - writer.addColumn("Label", AddressTableModel::Label, Qt::EditRole); - writer.addColumn("Address", AddressTableModel::Address, Qt::EditRole); - - if (!writer.write()) { - QMessageBox::critical(this, tr("Exporting Failed"), - tr("There was an error trying to save the address list to %1. Please try again.").arg(filename)); - } -} - -void AddressBookPage::contextualMenu(const QPoint& point) -{ - QModelIndex index = ui->tableView->indexAt(point); - if (index.isValid()) { - contextMenu->exec(QCursor::pos()); - } -} - -void AddressBookPage::selectNewAddress(const QModelIndex& parent, int begin, int /*end*/) -{ - QModelIndex idx = proxyModel->mapFromSource(model->index(begin, AddressTableModel::Address, parent)); - if (idx.isValid() && (idx.data(Qt::EditRole).toString() == newAddressToSelect)) { - // Select row of newly created address, once - ui->tableView->setFocus(); - ui->tableView->selectRow(idx.row()); - newAddressToSelect.clear(); - } -} diff --git a/src/qt/addressbookpage.h b/src/qt/addressbookpage.h deleted file mode 100644 index 8e21d8ba9b74b..0000000000000 --- a/src/qt/addressbookpage.h +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin developers -// Copyright (c) 2017-2021 The PIVX Core developers -// Distributed under the MIT/X11 software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#ifndef BITCOIN_QT_ADDRESSBOOKPAGE_H -#define BITCOIN_QT_ADDRESSBOOKPAGE_H - -#include - -class AddressTableModel; -class OptionsModel; - -namespace Ui -{ -class AddressBookPage; -} - -QT_BEGIN_NAMESPACE -class QItemSelection; -class QMenu; -class QModelIndex; -class QSortFilterProxyModel; -class QTableView; -QT_END_NAMESPACE - -/** Widget that shows a list of sending or receiving addresses. - */ -class AddressBookPage : public QDialog -{ - Q_OBJECT - -public: - enum Tabs { - SendingTab = 0, - ReceivingTab = 1 - }; - - enum Mode { - ForSelection, /**< Open address book to pick address */ - ForEditing /**< Open address book for editing */ - }; - - explicit AddressBookPage(Mode mode, Tabs tab, QWidget* parent); - ~AddressBookPage(); - - void setModel(AddressTableModel* model); - const QString& getReturnValue() const { return returnValue; } - -public Q_SLOTS: - void done(int retval); - -private: - Ui::AddressBookPage* ui{nullptr}; - AddressTableModel* model{nullptr}; - Mode mode; - Tabs tab; - QString returnValue; - QSortFilterProxyModel* proxyModel{nullptr}; - QMenu* contextMenu{nullptr}; - QAction* deleteAction{nullptr}; // to be able to explicitly disable it - QString newAddressToSelect; - -private Q_SLOTS: - /** Delete currently selected address entry */ - void on_deleteAddress_clicked(); - /** Create a new address for receiving coins and / or add a new address book entry */ - void on_newAddress_clicked(); - /** Copy address of currently selected address entry to clipboard */ - void on_copyAddress_clicked(); - /** Copy label of currently selected address entry to clipboard (no button) */ - void onCopyLabelAction(); - /** Edit currently selected address entry (no button) */ - void onEditAction(); - /** Export button clicked */ - void on_exportButton_clicked(); - - /** Set button states based on selected tab and selection */ - void selectionChanged(); - /** Spawn contextual menu (right mouse menu) for address book entry */ - void contextualMenu(const QPoint& point); - /** New entry/entries were added to address table */ - void selectNewAddress(const QModelIndex& parent, int begin, int /*end*/); - -Q_SIGNALS: - void sendCoins(QString addr); -}; - -#endif // BITCOIN_QT_ADDRESSBOOKPAGE_H diff --git a/src/qt/pivx/settings/settingssignmessagewidgets.cpp b/src/qt/pivx/settings/settingssignmessagewidgets.cpp index 2e39e469f2de2..dcb1c2a0a6617 100644 --- a/src/qt/pivx/settings/settingssignmessagewidgets.cpp +++ b/src/qt/pivx/settings/settingssignmessagewidgets.cpp @@ -7,7 +7,6 @@ #include "key_io.h" #include "messagesigner.h" #include "qt/askpassphrasedialog.h" -#include "qt/addressbookpage.h" #include "qt/pivx/settings/forms/ui_settingssignmessagewidgets.h" #include "qt/pivx/qtutils.h" #include "qt/walletmodel.h" @@ -125,22 +124,6 @@ void SettingsSignMessageWidgets::setAddress_SM(const QString& address) ui->messageIn_SM->setFocus(); } -void SettingsSignMessageWidgets::onAddressBookButtonSMClicked() -{ - if (walletModel && walletModel->getAddressTableModel()) { - AddressBookPage dlg(AddressBookPage::ForSelection, AddressBookPage::ReceivingTab, this); - dlg.setModel(walletModel->getAddressTableModel()); - if (dlg.exec()) { - setAddress_SM(dlg.getReturnValue()); - } - } -} - -void SettingsSignMessageWidgets::onPasteButtonSMClicked() -{ - setAddress_SM(QApplication::clipboard()->text()); -} - void SettingsSignMessageWidgets::onClearAll() { ui->addressIn_SM->clear(); diff --git a/src/qt/pivx/settings/settingssignmessagewidgets.h b/src/qt/pivx/settings/settingssignmessagewidgets.h index 8e2ef4dca597f..10bd6a0dfdf9c 100644 --- a/src/qt/pivx/settings/settingssignmessagewidgets.h +++ b/src/qt/pivx/settings/settingssignmessagewidgets.h @@ -28,8 +28,6 @@ class SettingsSignMessageWidgets : public PWidget public Q_SLOTS: void onSignMessageButtonSMClicked(); void onVerifyMessage(); - void onPasteButtonSMClicked(); - void onAddressBookButtonSMClicked(); void onGoClicked(); void onClearAll(); void onAddressesClicked(); From 5bcd7d34421b2dbe3c6647a3fa9ea5c0b4df4490 Mon Sep 17 00:00:00 2001 From: Fuzzbawls Date: Thu, 7 Dec 2023 00:59:47 -0800 Subject: [PATCH 2/2] build: make translate --- src/qt/locale/pivx_en.ts | 207 ++++++++------------------------------- src/qt/pivxstrings.cpp | 1 - 2 files changed, 42 insertions(+), 166 deletions(-) diff --git a/src/qt/locale/pivx_en.ts b/src/qt/locale/pivx_en.ts index 9e0ff0804ece0..bcc3c1be724d9 100644 --- a/src/qt/locale/pivx_en.ts +++ b/src/qt/locale/pivx_en.ts @@ -35,129 +35,6 @@ - - AddressBookPage - - - Right-click to edit address or label - Right-click to edit address or label - - - - Create a new address - Create a new address - - - - &New - &New - - - - Copy the currently selected address to the system clipboard - Copy the currently selected address to the system clipboard - - - - &Copy - &Copy - - - - Delete the currently selected address from the list - Delete the currently selected address from the list - - - - &Delete - &Delete - - - - Export the data in the current tab to a file - Export the data in the current tab to a file - - - - &Export - &Export - - - - C&lose - C&lose - - - - Choose the address to send coins to - Choose the address to send coins to - - - - Choose the address to receive coins with - Choose the address to receive coins with - - - - C&hoose - C&hoose - - - - Sending addresses - Sending addresses - - - - Receiving addresses - Receiving addresses - - - - These are your PIVX addresses for sending payments. Always check the amount and the receiving address before sending coins. - - - - - These are your PIVX addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - - - - - &Copy Address - &Copy Address - - - - Copy &Label - Copy &Label - - - - &Edit - &Edit - - - - Export Address List - Export Address List - - - - Comma separated file (*.csv) - Comma separated file (*.csv) - - - - Exporting Failed - Exporting Failed - - - - There was an error trying to save the address list to %1. Please try again. - There was an error trying to save the address list to %1. Please try again. - - AddressTableModel @@ -3149,7 +3026,12 @@ Address: %4 &Wallet Repair - + + The buttons below will restart the wallet with command-line options to repair the wallet, fix issues with corrupt blockchain files or missing/obsolete transactions. + + + + Delete local Blockchain Folders @@ -3244,12 +3126,7 @@ Address: %4 - - The buttons below will restart the wallet with command-line options to repair the wallet, fix issues with corrupt blockhain files or missing/obsolete transactions. - The buttons below will restart the wallet with command-line options to repair the wallet, fix issues with corrupt blockhain files or missing/obsolete transactions. - - - + Wallet repair options. Wallet repair options. @@ -3682,7 +3559,7 @@ try unlocking the wallet SendChangeAddressDialog - + CANCEL @@ -3707,7 +3584,7 @@ try unlocking the wallet - + Invalid address @@ -3716,6 +3593,11 @@ try unlocking the wallet Cannot use cold staking addresses for change + + + Cannot use a transparent change for a shield transaction + + SendCustomFeeDialog @@ -3849,13 +3731,13 @@ try unlocking the wallet SendWidget - + Total remaining from the selected UTXO - - + + Warning! @@ -3867,22 +3749,22 @@ Do you want to continue? - + Customize Fee - + Maximum amount of outputs reached - + Parse a PIVX URI - + Invalid entry, previous entries must be valid before add a new one @@ -3907,7 +3789,7 @@ Do you want to continue? - + WARNING: Transaction spends a cold-stake delegation, voiding it. These coins will no longer be cold-staked. @@ -3924,7 +3806,7 @@ These coins will no longer be cold-staked. - + Invalid URI @@ -3944,7 +3826,7 @@ These coins will no longer be cold-staked. - + Coin Control @@ -3970,12 +3852,12 @@ These coins will no longer be cold-staked. - + Shield Coins - + Convert all transparent coins into shielded coins @@ -3985,7 +3867,7 @@ These coins will no longer be cold-staked. - + Cannot send memo to address %1 @@ -3997,12 +3879,12 @@ Do you wish to proceed without memo? - + Sapling Protocol temporarily in maintenance. Shielded transactions disabled (SPORK 20) - + On going process being executed, please wait until it's finished to create a new transaction @@ -4012,12 +3894,12 @@ Do you wish to proceed without memo? - + Processing full, refreshing amounts later - + You don't have any %1 to select. @@ -5087,7 +4969,7 @@ Are you sure? - + Select mode @@ -5139,7 +5021,7 @@ Are you sure? - + The entered address is invalid. The entered address is invalid. @@ -6672,12 +6554,7 @@ Select fewer inputs with coin control. Error - - Error: A fatal internal error occured, see debug.log for details - Error: A fatal internal error occured, see debug.log for details - - - + Error: Disk space is low! Error: Disk space is low! @@ -6712,17 +6589,17 @@ Select fewer inputs with coin control. - + This is a pre-release test build - use at your own risk - do not use for staking or merchant applications! - + Error: A fatal internal error occurred, see debug.log for details - + Cannot upgrade to Sapling wallet (already running Sapling support). Version: %d @@ -6808,7 +6685,7 @@ Select fewer inputs with coin control. - + Error: Disk space is low for %s @@ -6973,7 +6850,7 @@ Select fewer inputs with coin control. - + Cannot obtain a lock on data directory %s. %s is probably already running. @@ -7048,7 +6925,7 @@ Select fewer inputs with coin control. - + Failed to accept tx in the memory pool (reason: %s) @@ -7239,7 +7116,7 @@ Select fewer inputs with coin control. - + Invalid -wallet path '%s'. -wallet path should point to a directory where wallet.dat and database/log.?????????? files can be stored, a location where such a directory could be created or (for backwards compatibility) the name of an existing data file in -walletdir (%s) @@ -7285,7 +7162,7 @@ Select fewer inputs with coin control. - + Specified -walletdir "%s" does not exist diff --git a/src/qt/pivxstrings.cpp b/src/qt/pivxstrings.cpp index 51db9311ab686..669f916fef4ce 100644 --- a/src/qt/pivxstrings.cpp +++ b/src/qt/pivxstrings.cpp @@ -141,7 +141,6 @@ QT_TRANSLATE_NOOP("pivx-core", "Error upgrading chainstate database"), QT_TRANSLATE_NOOP("pivx-core", "Error"), QT_TRANSLATE_NOOP("pivx-core", "Error: %s must be at least %d MB"), QT_TRANSLATE_NOOP("pivx-core", "Error: %s must be true if %s is set."), -QT_TRANSLATE_NOOP("pivx-core", "Error: A fatal internal error occured, see debug.log for details"), QT_TRANSLATE_NOOP("pivx-core", "Error: A fatal internal error occurred, see debug.log for details"), QT_TRANSLATE_NOOP("pivx-core", "Error: Disk space is low for %s"), QT_TRANSLATE_NOOP("pivx-core", "Error: Disk space is low!"),