FlightGear next
QtMessageBox.cxx
Go to the documentation of this file.
1// QtMessageBox.cxx - Qt5 implementation of MessageBox
2//
3// Written by Rebecca Palmer, started November 2015.
4//
5// Copyright (C) 2015 Rebecca Palmer <rebecca_palmer@zoho.com>
6//
7// This program is free software; you can redistribute it and/or
8// modify it under the terms of the GNU General Public License as
9// published by the Free Software Foundation; either version 2 of the
10// License, or (at your option) any later version.
11//
12// This program is distributed in the hope that it will be useful, but
13// WITHOUT ANY WARRANTY; without even the implied warranty of
14// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15// General Public License for more details.
16//
17// You should have received a copy of the GNU General Public License
18// along with this program; if not, write to the Free Software
19// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20
21#include "MessageBox.hxx"
22#include "QtLauncher.hxx"
23
24// Qt
25#include <QMessageBox>
26#include <QString>
27
29QtMessageBox(const std::string& caption,
30 const std::string& msg,
31 const std::string& moreText,
32 bool fatal)
33{
34 int fakeargc = 1;
35 static char fakeargv0[] = "fgfs";
36 static char * fakeargv[2] = {fakeargv0, 0};
37 // This does nothing if it has already been run, so the fake argc/argv are
38 // only used if an error box is triggered in early startup. Don't attempt
39 // to initialize the QSettings, because this would require FGGlobals to be
40 // initialized (for globals->get_fg_home()), which would prevent using
41 // this function at early startup.
42 flightgear::initApp(fakeargc, fakeargv, false /* doInitQSettings */);
43 QMessageBox msgBox;
44 msgBox.setWindowTitle(QString::fromStdString(caption));
45 msgBox.setText(QString::fromStdString(msg));
46 msgBox.setInformativeText(QString::fromStdString(moreText));
47 if (fatal) {
48 msgBox.setIcon(QMessageBox::Critical);
49 } else {
50 msgBox.setIcon(QMessageBox::Warning);
51 }
52 msgBox.exec();
54}
flightgear::MessageBoxResult QtMessageBox(const std::string &caption, const std::string &msg, const std::string &moreText, bool fatal)
void initApp(int &argc, char **argv, bool doInitQSettings)