Move help message out of AppInit2

- Solves #1278, attempts to address #1049
- Removes \t's from help message that are removed afterwards anyway
- Moves UI-specific command-line options help to UI code
- Moves "-detachdb" out of #ifdef USE_UPNP
This commit is contained in:
Wladimir J. van der Laan
2012-05-13 11:36:10 +02:00
parent 5e794a9ab7
commit 9f5b11e6fd
3 changed files with 185 additions and 131 deletions

View File

@@ -129,6 +129,53 @@ static void handleRunawayException(std::exception *e)
exit(1);
}
/** Help message for Bitcoin-Qt, shown with --help. */
class HelpMessageBox: public QMessageBox
{
public:
HelpMessageBox(QWidget *parent = 0);
void exec();
private:
QString header;
QString coreOptions;
QString uiOptions;
};
#include <QSpacerItem>
#include <QGridLayout>
HelpMessageBox::HelpMessageBox(QWidget *parent):
QMessageBox(parent)
{
header = tr("Bitcoin-Qt") + " " + tr("version") + " " +
QString::fromStdString(FormatFullVersion()) + "\n\n" +
tr("Usage:") + "\n" +
" bitcoin-qt [options] " + "\n";
coreOptions = QString::fromStdString(HelpMessage());
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";
setWindowTitle(tr("Bitcoin-Qt"));
setTextFormat(Qt::PlainText);
// setMinimumWidth is ignored for QMessageBox so put in nonbreaking spaces to make it wider.
QChar em_space(0x2003);
setText(header + QString(em_space).repeated(40));
setDetailedText(coreOptions + "\n" + uiOptions);
}
void HelpMessageBox::exec()
{
#if defined(WIN32)
// On windows, show a message box, as there is no stderr in windowed applications
QMessageBox::exec();
#else
// On other operating systems, the expected action is to print the message to the console.
QString strUsage = header + "\n" + coreOptions + "\n" + uiOptions;
fprintf(stderr, "%s", strUsage.toStdString().c_str());
#endif
}
#ifdef WIN32
#define strncasecmp strnicmp
#endif
@@ -218,6 +265,15 @@ int main(int argc, char *argv[])
if (translator.load(lang_territory, ":/translations/"))
app.installTranslator(&translator);
// Show help message immediately after parsing command-line options (for "-lang") and setting locale,
// but before showing splash screen.
if (mapArgs.count("-?") || mapArgs.count("--help"))
{
HelpMessageBox help;
help.exec();
return 1;
}
QSplashScreen splash(QPixmap(":/images/splash"), 0);
if (GetBoolArg("-splash", true) && !GetBoolArg("-min"))
{
@@ -238,7 +294,7 @@ int main(int argc, char *argv[])
BitcoinGUI window;
guiref = &window;
if(AppInit2(argc, argv))
if(AppInit2())
{
{
// Put this in a block, so that the Model objects are cleaned up before