You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
141 lines
4.9 KiB
141 lines
4.9 KiB
// Copyright (c) 2011-2014 The Bitcoin developers |
|
// Distributed under the MIT/X11 software license, see the accompanying |
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php. |
|
|
|
#include "utilitydialog.h" |
|
|
|
#include "ui_helpmessagedialog.h" |
|
|
|
#include "bitcoingui.h" |
|
#include "clientmodel.h" |
|
#include "guiutil.h" |
|
|
|
#include "init.h" |
|
#include "version.h" |
|
|
|
#include <stdio.h> |
|
|
|
#include <QCloseEvent> |
|
#include <QLabel> |
|
#include <QRegExp> |
|
#include <QVBoxLayout> |
|
|
|
/** "Help message" or "About" dialog box */ |
|
HelpMessageDialog::HelpMessageDialog(QWidget *parent, bool about) : |
|
QDialog(parent), |
|
ui(new Ui::HelpMessageDialog) |
|
{ |
|
ui->setupUi(this); |
|
GUIUtil::restoreWindowGeometry("nHelpMessageDialogWindow", this->size(), this); |
|
|
|
QString version = tr("Bitcoin Core") + " " + tr("version") + " " + QString::fromStdString(FormatFullVersion()); |
|
/* On x86 add a bit specifier to the version so that users can distinguish between |
|
* 32 and 64 bit builds. On other architectures, 32/64 bit may be more ambigious. |
|
*/ |
|
#if defined(__x86_64__) |
|
version += " " + tr("(%1-bit)").arg(64); |
|
#elif defined(__i386__ ) |
|
version += " " + tr("(%1-bit)").arg(32); |
|
#endif |
|
|
|
if (about) |
|
{ |
|
setWindowTitle(tr("About Bitcoin Core")); |
|
|
|
/// HTML-format the license message from the core |
|
QString licenseInfo = QString::fromStdString(LicenseInfo()); |
|
QString licenseInfoHTML = licenseInfo; |
|
// Make URLs clickable |
|
QRegExp uri("<(.*)>", Qt::CaseSensitive, QRegExp::RegExp2); |
|
uri.setMinimal(true); // use non-greedy matching |
|
licenseInfoHTML.replace(uri, "<a href=\"\\1\">\\1</a>"); |
|
// Replace newlines with HTML breaks |
|
licenseInfoHTML.replace("\n\n", "<br><br>"); |
|
|
|
ui->helpMessageLabel->setTextFormat(Qt::RichText); |
|
ui->scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); |
|
text = version + "\n" + licenseInfo; |
|
ui->helpMessageLabel->setText(version + "<br><br>" + licenseInfoHTML); |
|
ui->helpMessageLabel->setWordWrap(true); |
|
} else { |
|
setWindowTitle(tr("Command-line options")); |
|
QString header = tr("Usage:") + "\n" + |
|
" bitcoin-qt [" + tr("command-line options") + "] " + "\n"; |
|
|
|
QString coreOptions = QString::fromStdString(HelpMessage(HMM_BITCOIN_QT)); |
|
|
|
QString uiOptions = tr("UI options") + ":\n" + |
|
" -choosedatadir " + tr("Choose data directory on startup (default: 0)") + "\n" + |
|
" -lang=<lang> " + tr("Set language, for example \"de_DE\" (default: system locale)") + "\n" + |
|
" -min " + tr("Start minimized") + "\n" + |
|
" -rootcertificates=<file> " + tr("Set SSL root certificates for payment request (default: -system-)") + "\n" + |
|
" -splash " + tr("Show splash screen on startup (default: 1)"); |
|
|
|
ui->helpMessageLabel->setFont(GUIUtil::bitcoinAddressFont()); |
|
text = version + "\n" + header + "\n" + coreOptions + "\n" + uiOptions; |
|
ui->helpMessageLabel->setText(text); |
|
} |
|
} |
|
|
|
HelpMessageDialog::~HelpMessageDialog() |
|
{ |
|
GUIUtil::saveWindowGeometry("nHelpMessageDialogWindow", this); |
|
delete ui; |
|
} |
|
|
|
void HelpMessageDialog::printToConsole() |
|
{ |
|
// On other operating systems, the expected action is to print the message to the console. |
|
fprintf(stdout, "%s\n", qPrintable(text)); |
|
} |
|
|
|
void HelpMessageDialog::showOrPrint() |
|
{ |
|
#if defined(WIN32) |
|
// On Windows, show a message box, as there is no stderr/stdout in windowed applications |
|
exec(); |
|
#else |
|
// On other operating systems, print help text to console |
|
printToConsole(); |
|
#endif |
|
} |
|
|
|
void HelpMessageDialog::on_okButton_accepted() |
|
{ |
|
close(); |
|
} |
|
|
|
|
|
/** "Shutdown" window */ |
|
ShutdownWindow::ShutdownWindow(QWidget *parent, Qt::WindowFlags f): |
|
QWidget(parent, f) |
|
{ |
|
QVBoxLayout *layout = new QVBoxLayout(); |
|
layout->addWidget(new QLabel( |
|
tr("Bitcoin Core is shutting down...") + "<br /><br />" + |
|
tr("Do not shut down the computer until this window disappears."))); |
|
setLayout(layout); |
|
} |
|
|
|
void ShutdownWindow::showShutdownWindow(BitcoinGUI *window) |
|
{ |
|
if (!window) |
|
return; |
|
|
|
// Show a simple window indicating shutdown status |
|
QWidget *shutdownWindow = new ShutdownWindow(); |
|
// We don't hold a direct pointer to the shutdown window after creation, so use |
|
// Qt::WA_DeleteOnClose to make sure that the window will be deleted eventually. |
|
shutdownWindow->setAttribute(Qt::WA_DeleteOnClose); |
|
shutdownWindow->setWindowTitle(window->windowTitle()); |
|
|
|
// Center shutdown window at where main window was |
|
const QPoint global = window->mapToGlobal(window->rect().center()); |
|
shutdownWindow->move(global.x() - shutdownWindow->width() / 2, global.y() - shutdownWindow->height() / 2); |
|
shutdownWindow->show(); |
|
} |
|
|
|
void ShutdownWindow::closeEvent(QCloseEvent *event) |
|
{ |
|
event->ignore(); |
|
}
|
|
|