]> git.mxchange.org Git - flightgear.git/blob - src/GUI/QtMessageBox.cxx
Code cleanups, code updates and fix at least on (possible) devide-by-zero
[flightgear.git] / src / GUI / QtMessageBox.cxx
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
28 flightgear::MessageBoxResult
29 QtMessageBox(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
38     // are only used if an error box is triggered in early startup
39     flightgear::initApp(fakeargc, fakeargv);
40     QMessageBox msgBox;
41     msgBox.setWindowTitle(QString::fromStdString(caption));
42     msgBox.setText(QString::fromStdString(msg));
43     msgBox.setInformativeText(QString::fromStdString(moreText));
44     if (fatal) {
45         msgBox.setIcon(QMessageBox::Critical);
46     } else {
47         msgBox.setIcon(QMessageBox::Warning);
48     }
49     msgBox.exec();
50     return flightgear::MSG_BOX_OK;
51 }