mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-09-19 12:15:52 +00:00
* On windows it's strongly desired to be able to compile straight out of a clean checkout or source download. This means anyone can download the source and investigate something quickly, without having to worry about the hassle of figuring out how the project downloads 3rd party dependencies, fetching them, getting them registered in the right place. * This can't be put in a submodule as git submodules don't get downloaded by default so people new to git will get confusing compilation messages, and someone downloading the source from github directly without cloning via git won't get submodules included. * It does add some extra size to a fresh download/checkout which is unfortunate, but absolutely worth the cost. Shallow checkouts still aren't unfeasibly large, and it's only a one-off cost at clone time.
328 lines
13 KiB
C++
328 lines
13 KiB
C++
/****************************************************************************
|
|
**
|
|
** Copyright (C) 2016 The Qt Company Ltd.
|
|
** Contact: https://www.qt.io/licensing/
|
|
**
|
|
** This file is part of the QtWidgets module of the Qt Toolkit.
|
|
**
|
|
** $QT_BEGIN_LICENSE:LGPL$
|
|
** Commercial License Usage
|
|
** Licensees holding valid commercial Qt licenses may use this file in
|
|
** accordance with the commercial license agreement provided with the
|
|
** Software or, alternatively, in accordance with the terms contained in
|
|
** a written agreement between you and The Qt Company. For licensing terms
|
|
** and conditions see https://www.qt.io/terms-conditions. For further
|
|
** information use the contact form at https://www.qt.io/contact-us.
|
|
**
|
|
** GNU Lesser General Public License Usage
|
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
|
** General Public License version 3 as published by the Free Software
|
|
** Foundation and appearing in the file LICENSE.LGPL3 included in the
|
|
** packaging of this file. Please review the following information to
|
|
** ensure the GNU Lesser General Public License version 3 requirements
|
|
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
|
|
**
|
|
** GNU General Public License Usage
|
|
** Alternatively, this file may be used under the terms of the GNU
|
|
** General Public License version 2.0 or (at your option) the GNU General
|
|
** Public license version 3 or any later version approved by the KDE Free
|
|
** Qt Foundation. The licenses are as published by the Free Software
|
|
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
|
|
** included in the packaging of this file. Please review the following
|
|
** information to ensure the GNU General Public License requirements will
|
|
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
|
|
** https://www.gnu.org/licenses/gpl-3.0.html.
|
|
**
|
|
** $QT_END_LICENSE$
|
|
**
|
|
****************************************************************************/
|
|
|
|
#ifndef QMESSAGEBOX_H
|
|
#define QMESSAGEBOX_H
|
|
|
|
#include <QtWidgets/qtwidgetsglobal.h>
|
|
|
|
#include <QtWidgets/qdialog.h>
|
|
|
|
QT_REQUIRE_CONFIG(messagebox);
|
|
|
|
QT_BEGIN_NAMESPACE
|
|
|
|
class QLabel;
|
|
class QMessageBoxPrivate;
|
|
class QAbstractButton;
|
|
class QCheckBox;
|
|
|
|
class Q_WIDGETS_EXPORT QMessageBox : public QDialog
|
|
{
|
|
Q_OBJECT
|
|
Q_PROPERTY(QString text READ text WRITE setText)
|
|
Q_PROPERTY(Icon icon READ icon WRITE setIcon)
|
|
Q_PROPERTY(QPixmap iconPixmap READ iconPixmap WRITE setIconPixmap)
|
|
Q_PROPERTY(Qt::TextFormat textFormat READ textFormat WRITE setTextFormat)
|
|
Q_PROPERTY(StandardButtons standardButtons READ standardButtons WRITE setStandardButtons)
|
|
#if QT_CONFIG(textedit)
|
|
Q_PROPERTY(QString detailedText READ detailedText WRITE setDetailedText)
|
|
#endif
|
|
Q_PROPERTY(QString informativeText READ informativeText WRITE setInformativeText)
|
|
Q_PROPERTY(Qt::TextInteractionFlags textInteractionFlags READ textInteractionFlags WRITE setTextInteractionFlags)
|
|
|
|
public:
|
|
enum Icon {
|
|
// keep this in sync with QMessageDialogOptions::Icon
|
|
NoIcon = 0,
|
|
Information = 1,
|
|
Warning = 2,
|
|
Critical = 3,
|
|
Question = 4
|
|
};
|
|
Q_ENUM(Icon)
|
|
|
|
enum ButtonRole {
|
|
// keep this in sync with QDialogButtonBox::ButtonRole and QPlatformDialogHelper::ButtonRole
|
|
InvalidRole = -1,
|
|
AcceptRole,
|
|
RejectRole,
|
|
DestructiveRole,
|
|
ActionRole,
|
|
HelpRole,
|
|
YesRole,
|
|
NoRole,
|
|
ResetRole,
|
|
ApplyRole,
|
|
|
|
NRoles
|
|
};
|
|
|
|
enum StandardButton {
|
|
// keep this in sync with QDialogButtonBox::StandardButton and QPlatformDialogHelper::StandardButton
|
|
NoButton = 0x00000000,
|
|
Ok = 0x00000400,
|
|
Save = 0x00000800,
|
|
SaveAll = 0x00001000,
|
|
Open = 0x00002000,
|
|
Yes = 0x00004000,
|
|
YesToAll = 0x00008000,
|
|
No = 0x00010000,
|
|
NoToAll = 0x00020000,
|
|
Abort = 0x00040000,
|
|
Retry = 0x00080000,
|
|
Ignore = 0x00100000,
|
|
Close = 0x00200000,
|
|
Cancel = 0x00400000,
|
|
Discard = 0x00800000,
|
|
Help = 0x01000000,
|
|
Apply = 0x02000000,
|
|
Reset = 0x04000000,
|
|
RestoreDefaults = 0x08000000,
|
|
|
|
FirstButton = Ok, // internal
|
|
LastButton = RestoreDefaults, // internal
|
|
|
|
YesAll = YesToAll, // obsolete
|
|
NoAll = NoToAll, // obsolete
|
|
|
|
Default = 0x00000100, // obsolete
|
|
Escape = 0x00000200, // obsolete
|
|
FlagMask = 0x00000300, // obsolete
|
|
ButtonMask = ~FlagMask // obsolete
|
|
};
|
|
typedef StandardButton Button; // obsolete
|
|
|
|
Q_DECLARE_FLAGS(StandardButtons, StandardButton)
|
|
Q_FLAG(StandardButtons)
|
|
|
|
explicit QMessageBox(QWidget *parent = Q_NULLPTR);
|
|
QMessageBox(Icon icon, const QString &title, const QString &text,
|
|
StandardButtons buttons = NoButton, QWidget *parent = Q_NULLPTR,
|
|
Qt::WindowFlags flags = Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
|
|
~QMessageBox();
|
|
|
|
void addButton(QAbstractButton *button, ButtonRole role);
|
|
QPushButton *addButton(const QString &text, ButtonRole role);
|
|
QPushButton *addButton(StandardButton button);
|
|
void removeButton(QAbstractButton *button);
|
|
|
|
using QDialog::open;
|
|
void open(QObject *receiver, const char *member);
|
|
|
|
QList<QAbstractButton *> buttons() const;
|
|
ButtonRole buttonRole(QAbstractButton *button) const;
|
|
|
|
void setStandardButtons(StandardButtons buttons);
|
|
StandardButtons standardButtons() const;
|
|
StandardButton standardButton(QAbstractButton *button) const;
|
|
QAbstractButton *button(StandardButton which) const;
|
|
|
|
QPushButton *defaultButton() const;
|
|
void setDefaultButton(QPushButton *button);
|
|
void setDefaultButton(StandardButton button);
|
|
|
|
QAbstractButton *escapeButton() const;
|
|
void setEscapeButton(QAbstractButton *button);
|
|
void setEscapeButton(StandardButton button);
|
|
|
|
QAbstractButton *clickedButton() const;
|
|
|
|
QString text() const;
|
|
void setText(const QString &text);
|
|
|
|
Icon icon() const;
|
|
void setIcon(Icon);
|
|
|
|
QPixmap iconPixmap() const;
|
|
void setIconPixmap(const QPixmap &pixmap);
|
|
|
|
Qt::TextFormat textFormat() const;
|
|
void setTextFormat(Qt::TextFormat format);
|
|
|
|
void setTextInteractionFlags(Qt::TextInteractionFlags flags);
|
|
Qt::TextInteractionFlags textInteractionFlags() const;
|
|
|
|
void setCheckBox(QCheckBox *cb);
|
|
QCheckBox* checkBox() const;
|
|
|
|
static StandardButton information(QWidget *parent, const QString &title,
|
|
const QString &text, StandardButtons buttons = Ok,
|
|
StandardButton defaultButton = NoButton);
|
|
static StandardButton question(QWidget *parent, const QString &title,
|
|
const QString &text, StandardButtons buttons = StandardButtons(Yes | No),
|
|
StandardButton defaultButton = NoButton);
|
|
static StandardButton warning(QWidget *parent, const QString &title,
|
|
const QString &text, StandardButtons buttons = Ok,
|
|
StandardButton defaultButton = NoButton);
|
|
static StandardButton critical(QWidget *parent, const QString &title,
|
|
const QString &text, StandardButtons buttons = Ok,
|
|
StandardButton defaultButton = NoButton);
|
|
static void about(QWidget *parent, const QString &title, const QString &text);
|
|
static void aboutQt(QWidget *parent, const QString &title = QString());
|
|
|
|
// the following functions are obsolete:
|
|
|
|
QMessageBox(const QString &title, const QString &text, Icon icon,
|
|
int button0, int button1, int button2,
|
|
QWidget *parent = Q_NULLPTR,
|
|
Qt::WindowFlags f = Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
|
|
|
|
static int information(QWidget *parent, const QString &title,
|
|
const QString& text,
|
|
int button0, int button1 = 0, int button2 = 0);
|
|
static int information(QWidget *parent, const QString &title,
|
|
const QString& text,
|
|
const QString& button0Text,
|
|
const QString& button1Text = QString(),
|
|
const QString& button2Text = QString(),
|
|
int defaultButtonNumber = 0,
|
|
int escapeButtonNumber = -1);
|
|
inline static StandardButton information(QWidget *parent, const QString &title,
|
|
const QString& text,
|
|
StandardButton button0, StandardButton button1 = NoButton)
|
|
{ return information(parent, title, text, StandardButtons(button0), button1); }
|
|
|
|
static int question(QWidget *parent, const QString &title,
|
|
const QString& text,
|
|
int button0, int button1 = 0, int button2 = 0);
|
|
static int question(QWidget *parent, const QString &title,
|
|
const QString& text,
|
|
const QString& button0Text,
|
|
const QString& button1Text = QString(),
|
|
const QString& button2Text = QString(),
|
|
int defaultButtonNumber = 0,
|
|
int escapeButtonNumber = -1);
|
|
inline static int question(QWidget *parent, const QString &title,
|
|
const QString& text,
|
|
StandardButton button0, StandardButton button1)
|
|
{ return question(parent, title, text, StandardButtons(button0), button1); }
|
|
|
|
static int warning(QWidget *parent, const QString &title,
|
|
const QString& text,
|
|
int button0, int button1, int button2 = 0);
|
|
static int warning(QWidget *parent, const QString &title,
|
|
const QString& text,
|
|
const QString& button0Text,
|
|
const QString& button1Text = QString(),
|
|
const QString& button2Text = QString(),
|
|
int defaultButtonNumber = 0,
|
|
int escapeButtonNumber = -1);
|
|
inline static int warning(QWidget *parent, const QString &title,
|
|
const QString& text,
|
|
StandardButton button0, StandardButton button1)
|
|
{ return warning(parent, title, text, StandardButtons(button0), button1); }
|
|
|
|
static int critical(QWidget *parent, const QString &title,
|
|
const QString& text,
|
|
int button0, int button1, int button2 = 0);
|
|
static int critical(QWidget *parent, const QString &title,
|
|
const QString& text,
|
|
const QString& button0Text,
|
|
const QString& button1Text = QString(),
|
|
const QString& button2Text = QString(),
|
|
int defaultButtonNumber = 0,
|
|
int escapeButtonNumber = -1);
|
|
inline static int critical(QWidget *parent, const QString &title,
|
|
const QString& text,
|
|
StandardButton button0, StandardButton button1)
|
|
{ return critical(parent, title, text, StandardButtons(button0), button1); }
|
|
|
|
QString buttonText(int button) const;
|
|
void setButtonText(int button, const QString &text);
|
|
|
|
QString informativeText() const;
|
|
void setInformativeText(const QString &text);
|
|
|
|
#if QT_CONFIG(textedit)
|
|
QString detailedText() const;
|
|
void setDetailedText(const QString &text);
|
|
#endif
|
|
|
|
void setWindowTitle(const QString &title);
|
|
void setWindowModality(Qt::WindowModality windowModality);
|
|
|
|
|
|
static QPixmap standardIcon(Icon icon);
|
|
|
|
Q_SIGNALS:
|
|
void buttonClicked(QAbstractButton *button);
|
|
|
|
#ifdef Q_QDOC
|
|
public Q_SLOTS:
|
|
int exec();
|
|
#endif
|
|
|
|
protected:
|
|
bool event(QEvent *e) Q_DECL_OVERRIDE;
|
|
void resizeEvent(QResizeEvent *event) Q_DECL_OVERRIDE;
|
|
void showEvent(QShowEvent *event) Q_DECL_OVERRIDE;
|
|
void closeEvent(QCloseEvent *event) Q_DECL_OVERRIDE;
|
|
void keyPressEvent(QKeyEvent *event) Q_DECL_OVERRIDE;
|
|
void changeEvent(QEvent *event) Q_DECL_OVERRIDE;
|
|
|
|
private:
|
|
Q_PRIVATE_SLOT(d_func(), void _q_buttonClicked(QAbstractButton *))
|
|
Q_PRIVATE_SLOT(d_func(), void _q_clicked(QPlatformDialogHelper::StandardButton, QPlatformDialogHelper::ButtonRole))
|
|
|
|
Q_DISABLE_COPY(QMessageBox)
|
|
Q_DECLARE_PRIVATE(QMessageBox)
|
|
};
|
|
|
|
Q_DECLARE_OPERATORS_FOR_FLAGS(QMessageBox::StandardButtons)
|
|
|
|
#define QT_REQUIRE_VERSION(argc, argv, str) { QString s = QString::fromLatin1(str);\
|
|
QString sq = QString::fromLatin1(qVersion()); \
|
|
if ((sq.section(QChar::fromLatin1('.'),0,0).toInt()<<16)+\
|
|
(sq.section(QChar::fromLatin1('.'),1,1).toInt()<<8)+\
|
|
sq.section(QChar::fromLatin1('.'),2,2).toInt()<(s.section(QChar::fromLatin1('.'),0,0).toInt()<<16)+\
|
|
(s.section(QChar::fromLatin1('.'),1,1).toInt()<<8)+\
|
|
s.section(QChar::fromLatin1('.'),2,2).toInt()) { \
|
|
if (!qApp){ \
|
|
new QApplication(argc,argv); \
|
|
} \
|
|
QString s = QApplication::tr("Executable '%1' requires Qt "\
|
|
"%2, found Qt %3.").arg(qAppName()).arg(QString::fromLatin1(\
|
|
str)).arg(QString::fromLatin1(qVersion())); QMessageBox::critical(0, QApplication::tr(\
|
|
"Incompatible Qt Library Error"), s, QMessageBox::Abort, 0); qFatal("%s", s.toLatin1().data()); }}
|
|
|
|
QT_END_NAMESPACE
|
|
|
|
#endif // QMESSAGEBOX_H
|