Browse Source

[Qt] add utilitydialog.cpp/h and helpmessage class

- adds a nice and well formated dialog, which displays our -? help message
  (all options/paramaters)
- moves aboutdialog.cpp/h to the new utilitydialog
- move GUI shutdown window to utilitydialog
tags/v0.15.1
Philip Kaufmann 7 years ago
parent
commit
7b50bb2f1b

+ 1
- 0
contrib/bitcoin-qt.pro View File

@@ -4,6 +4,7 @@ FORMS += \
../src/qt/forms/askpassphrasedialog.ui \
../src/qt/forms/coincontroldialog.ui \
../src/qt/forms/editaddressdialog.ui \
../src/qt/forms/helpmessagedialog.ui \
../src/qt/forms/intro.ui \
../src/qt/forms/openuridialog.ui \
../src/qt/forms/optionsdialog.ui \

+ 5
- 4
src/qt/Makefile.am View File

@@ -80,6 +80,7 @@ QT_FORMS_UI = \
forms/askpassphrasedialog.ui \
forms/coincontroldialog.ui \
forms/editaddressdialog.ui \
forms/helpmessagedialog.ui \
forms/intro.ui \
forms/openuridialog.ui \
forms/optionsdialog.ui \
@@ -93,7 +94,6 @@ QT_FORMS_UI = \
forms/transactiondescdialog.ui

QT_MOC_CPP = \
moc_aboutdialog.cpp \
moc_addressbookpage.cpp \
moc_addresstablemodel.cpp \
moc_askpassphrasedialog.cpp \
@@ -133,6 +133,7 @@ QT_MOC_CPP = \
moc_transactionfilterproxy.cpp \
moc_transactiontablemodel.cpp \
moc_transactionview.cpp \
moc_utilitydialog.cpp \
moc_walletframe.cpp \
moc_walletmodel.cpp \
moc_walletview.cpp
@@ -155,7 +156,6 @@ PROTOBUF_H = paymentrequest.pb.h
PROTOBUF_PROTO = paymentrequest.proto

BITCOIN_QT_H = \
aboutdialog.h \
addressbookpage.h \
addresstablemodel.h \
askpassphrasedialog.h \
@@ -198,6 +198,7 @@ BITCOIN_QT_H = \
transactionrecord.h \
transactiontablemodel.h \
transactionview.h \
utilitydialog.h \
walletframe.h \
walletmodel.h \
walletmodeltransaction.h \
@@ -248,7 +249,6 @@ RES_ICONS = \
res/icons/tx_mined.png

BITCOIN_QT_CPP = \
aboutdialog.cpp \
bitcoin.cpp \
bitcoinaddressvalidator.cpp \
bitcoinamountfield.cpp \
@@ -267,7 +267,8 @@ BITCOIN_QT_CPP = \
rpcconsole.cpp \
signverifymessagedialog.cpp \
splashscreen.cpp \
trafficgraphwidget.cpp
trafficgraphwidget.cpp \
utilitydialog.cpp

if ENABLE_WALLET
BITCOIN_QT_CPP += \

+ 0
- 38
src/qt/aboutdialog.cpp View File

@@ -1,38 +0,0 @@
// Copyright (c) 2011-2013 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 "aboutdialog.h"
#include "ui_aboutdialog.h"

#include "clientmodel.h"

#include "clientversion.h"

AboutDialog::AboutDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::AboutDialog)
{
ui->setupUi(this);

// Set current copyright year
ui->copyrightLabel->setText(tr("Copyright") + QString(" © 2009-%1 ").arg(COPYRIGHT_YEAR) + tr("The Bitcoin Core developers"));
}

void AboutDialog::setModel(ClientModel *model)
{
if(model)
{
ui->versionLabel->setText(model->formatFullVersion());
}
}

AboutDialog::~AboutDialog()
{
delete ui;
}

void AboutDialog::on_buttonBox_accepted()
{
close();
}

+ 0
- 34
src/qt/aboutdialog.h View File

@@ -1,34 +0,0 @@
// Copyright (c) 2011-2013 The Bitcoin developers
// Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.

#ifndef ABOUTDIALOG_H
#define ABOUTDIALOG_H

#include <QDialog>

class ClientModel;

namespace Ui {
class AboutDialog;
}

/** "About" dialog box */
class AboutDialog : public QDialog
{
Q_OBJECT

public:
explicit AboutDialog(QWidget *parent);
~AboutDialog();

void setModel(ClientModel *model);

private:
Ui::AboutDialog *ui;

private slots:
void on_buttonBox_accepted();
};

#endif // ABOUTDIALOG_H

+ 3
- 14
src/qt/bitcoin.cpp View File

@@ -14,6 +14,7 @@
#include "intro.h"
#include "optionsmodel.h"
#include "splashscreen.h"
#include "utilitydialog.h"
#ifdef ENABLE_WALLET
#include "paymentserver.h"
#include "walletmodel.h"
@@ -36,8 +37,6 @@
#include <QTimer>
#include <QTranslator>
#include <QThread>
#include <QVBoxLayout>
#include <QLabel>

#if defined(QT_STATICPLUGIN)
#include <QtPlugin>
@@ -356,17 +355,7 @@ void BitcoinApplication::requestShutdown()
clientModel = 0;

// Show a simple window indicating shutdown status
QWidget *shutdownWindow = new QWidget();
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.")));
shutdownWindow->setLayout(layout);

// 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();
ShutdownWindow::showShutdownWindow(window);

// Request shutdown from core thread
emit requestedShutdown();
@@ -503,7 +492,7 @@ int main(int argc, char *argv[])
// but before showing splash screen.
if (mapArgs.count("-?") || mapArgs.count("--help"))
{
GUIUtil::HelpMessageBox help;
HelpMessageDialog help(NULL);
help.showOrPrint();
return 1;
}

+ 1
- 1
src/qt/bitcoingui.cpp View File

@@ -4,7 +4,6 @@

#include "bitcoingui.h"

#include "aboutdialog.h"
#include "bitcoinunits.h"
#include "clientmodel.h"
#include "guiconstants.h"
@@ -14,6 +13,7 @@
#include "optionsdialog.h"
#include "optionsmodel.h"
#include "rpcconsole.h"
#include "utilitydialog.h"
#ifdef ENABLE_WALLET
#include "walletframe.h"
#include "walletmodel.h"

+ 8
- 8
src/qt/forms/aboutdialog.ui View File

@@ -160,12 +160,12 @@ This product includes software developed by the OpenSSL Project for use in the O
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>360</x>
<y>308</y>
<x>20</x>
<y>20</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
@@ -176,12 +176,12 @@ This product includes software developed by the OpenSSL Project for use in the O
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>428</x>
<y>308</y>
<x>20</x>
<y>20</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>

+ 128
- 0
src/qt/forms/helpmessagedialog.ui View File

@@ -0,0 +1,128 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>HelpMessageDialog</class>
<widget class="QDialog" name="HelpMessageDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>400</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="windowTitle">
<string>Bitcoin Core - Command-line options</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLabel" name="graphic">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Ignored">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="pixmap">
<pixmap resource="../bitcoin.qrc">:/images/about</pixmap>
</property>
</widget>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QScrollArea" name="scrollArea">
<property name="verticalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOn</enum>
</property>
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>659</width>
<height>348</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QLabel" name="helpMessageLabel">
<property name="font">
<font>
<family>Terminal</family>
</font>
</property>
<property name="cursor">
<cursorShape>IBeamCursor</cursorShape>
</property>
<property name="textFormat">
<enum>Qt::PlainText</enum>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
<item>
<widget class="QDialogButtonBox" name="okButton">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<resources>
<include location="../bitcoin.qrc"/>
</resources>
<connections>
<connection>
<sender>okButton</sender>
<signal>accepted()</signal>
<receiver>HelpMessageDialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>20</x>
<y>20</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>okButton</sender>
<signal>rejected()</signal>
<receiver>HelpMessageDialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>20</x>
<y>20</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
</connections>
</ui>

+ 0
- 41
src/qt/guiutil.cpp View File

@@ -591,47 +591,6 @@ void restoreWindowGeometry(const QString& strSetting, const QSize& defaultSize,
parent->move(pos);
}

HelpMessageBox::HelpMessageBox(QWidget *parent) :
QMessageBox(parent)
{
header = tr("Bitcoin Core") + " " + tr("version") + " " +
QString::fromStdString(FormatFullVersion()) + "\n\n" +
tr("Usage:") + "\n" +
" bitcoin-qt [" + tr("command-line options") + "] " + "\n";

coreOptions = QString::fromStdString(HelpMessage(HMM_BITCOIN_QT));

uiOptions = tr("UI options") + ":\n" +
" -lang=<lang> " + tr("Set language, for example \"de_DE\" (default: system locale)") + "\n" +
" -min " + tr("Start minimized") + "\n" +
" -splash " + tr("Show splash screen on startup (default: 1)") + "\n" +
" -choosedatadir " + tr("Choose data directory on startup (default: 0)") + "\n";

setWindowTitle(tr("Bitcoin Core"));
setTextFormat(Qt::PlainText);
// setMinimumWidth is ignored for QMessageBox so put in non-breaking spaces to make it wider.
setText(header + QString(QChar(0x2003)).repeated(50));
setDetailedText(coreOptions + "\n" + uiOptions);
}

void HelpMessageBox::printToConsole()
{
// On other operating systems, the expected action is to print the message to the console.
QString strUsage = header + "\n" + coreOptions + "\n" + uiOptions;
fprintf(stdout, "%s", strUsage.toStdString().c_str());
}

void HelpMessageBox::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 setClipboard(const QString& str)
{
QApplication::clipboard()->setText(str, QClipboard::Clipboard);

+ 0
- 20
src/qt/guiutil.h View File

@@ -123,26 +123,6 @@ namespace GUIUtil
/** Restore window size and position */
void restoreWindowGeometry(const QString& strSetting, const QSize &defaultSizeIn, QWidget *parent);

/** Help message for Bitcoin-Qt, shown with --help. */
class HelpMessageBox : public QMessageBox
{
Q_OBJECT

public:
HelpMessageBox(QWidget *parent = 0);

/** Show message box or print help message to standard output, based on operating system. */
void showOrPrint();

/** Print help message to console */
void printToConsole();

private:
QString header;
QString coreOptions;
QString uiOptions;
};

} // namespace GUIUtil

#endif // GUIUTIL_H

+ 3
- 2
src/qt/rpcconsole.cpp View File

@@ -7,6 +7,7 @@

#include "clientmodel.h"
#include "guiutil.h"
#include "utilitydialog.h"

#include "rpcserver.h"
#include "rpcclient.h"
@@ -443,8 +444,8 @@ void RPCConsole::scrollToEnd()

void RPCConsole::on_showCLOptionsButton_clicked()
{
GUIUtil::HelpMessageBox help;
help.exec();
HelpMessageDialog *help = new HelpMessageDialog(this);
help->show();
}

void RPCConsole::on_sldGraphRange_valueChanged(int value)

+ 125
- 0
src/qt/utilitydialog.cpp View File

@@ -0,0 +1,125 @@
// 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_aboutdialog.h"
#include "ui_helpmessagedialog.h"

#include "bitcoingui.h"
#include "clientmodel.h"
#include "guiutil.h"

#include "clientversion.h"
#include "init.h"
#include "util.h"

#include <QLabel>
#include <QVBoxLayout>

/** "About" dialog box */
AboutDialog::AboutDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::AboutDialog)
{
ui->setupUi(this);

// Set current copyright year
ui->copyrightLabel->setText(tr("Copyright") + QString(" &copy; 2009-%1 ").arg(COPYRIGHT_YEAR) + tr("The Bitcoin Core developers"));
}

void AboutDialog::setModel(ClientModel *model)
{
if(model)
{
ui->versionLabel->setText(model->formatFullVersion());
}
}

AboutDialog::~AboutDialog()
{
delete ui;
}

void AboutDialog::on_buttonBox_accepted()
{
close();
}

/** "Help message" dialog box */
HelpMessageDialog::HelpMessageDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::HelpMessageDialog)
{
ui->setupUi(this);
GUIUtil::restoreWindowGeometry("nHelpMessageDialogWindow", this->size(), this);

header = tr("Bitcoin Core") + " " + tr("version") + " " +
QString::fromStdString(FormatFullVersion()) + "\n\n" +
tr("Usage:") + "\n" +
" bitcoin-qt [" + tr("command-line options") + "] " + "\n";

coreOptions = QString::fromStdString(HelpMessage(HMM_BITCOIN_QT));

uiOptions = tr("UI options") + ":\n" +
" -lang=<lang> " + tr("Set language, for example \"de_DE\" (default: system locale)") + "\n" +
" -min " + tr("Start minimized") + "\n" +
" -splash " + tr("Show splash screen on startup (default: 1)") + "\n" +
" -choosedatadir " + tr("Choose data directory on startup (default: 0)");

ui->helpMessageLabel->setFont(GUIUtil::bitcoinAddressFont());

// Set help message text
ui->helpMessageLabel->setText(header + "\n" + coreOptions + "\n" + uiOptions);
}

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.
QString strUsage = header + "\n" + coreOptions + "\n" + uiOptions;
fprintf(stdout, "%s", strUsage.toStdString().c_str());
}

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 */
void ShutdownWindow::showShutdownWindow(BitcoinGUI *window)
{
if (!window)
return;

// Show a simple window indicating shutdown status
QWidget *shutdownWindow = new QWidget();
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.")));
shutdownWindow->setLayout(layout);

// 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();
}

+ 69
- 0
src/qt/utilitydialog.h View File

@@ -0,0 +1,69 @@
// 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.

#ifndef UTILITYDIALOG_H
#define UTILITYDIALOG_H

#include <QDialog>
#include <QObject>

class BitcoinGUI;
class ClientModel;

namespace Ui {
class AboutDialog;
class HelpMessageDialog;
}

/** "About" dialog box */
class AboutDialog : public QDialog
{
Q_OBJECT

public:
explicit AboutDialog(QWidget *parent);
~AboutDialog();

void setModel(ClientModel *model);

private:
Ui::AboutDialog *ui;

private slots:
void on_buttonBox_accepted();
};

/** "Help message" dialog box */
class HelpMessageDialog : public QDialog
{
Q_OBJECT

public:
explicit HelpMessageDialog(QWidget *parent);
~HelpMessageDialog();

void printToConsole();
void showOrPrint();

private:
Ui::HelpMessageDialog *ui;
QString header;
QString coreOptions;
QString uiOptions;

private slots:
void on_okButton_accepted();
};


/** "Shutdown" window */
class ShutdownWindow : public QObject
{
Q_OBJECT

public:
static void showShutdownWindow(BitcoinGUI *window);
};

#endif // UTILITYDIALOG_H

Loading…
Cancel
Save