/*
Copyright 2006-2026 The QElectroTech Team
This file is part of QElectroTech.
QElectroTech is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
QElectroTech is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with QElectroTech. If not, see .
*/
#ifndef QET_MESSAGE_BOX_H
#define QET_MESSAGE_BOX_H
#include
namespace QET {
/**
This namespace defines static methods behaving in a very similar way to some
static methods from the QMessageBox Qt class. The behavior is expected to be
the same under X11 and Windows. However, under MacOS, when a parent widget is
provided, these methodes ensure the dialog box is "window modal" and has the
Qt:Sheet flag, thus enabling a better MacOS integration.
*/
namespace QetMessageBox {
/**
Enable non-interactive mode.
In non-interactive mode the functions below never construct a
dialog. They write the message to stderr and return an answer
immediately, so a headless run cannot block on a modal box that
nobody is there to dismiss.
This is needed because these are reachable from the command-line
tools: opening a project written by an older QElectroTech raises
a warning from QETProject::readProjectXml(), and with no display
to click it, QDialog::exec() spins its event loop forever.
The answer is chosen as: the caller's defaultButton when it gave
one, otherwise the first "carry on" button among those offered
(Ok, Open, Yes, Save, Apply...), otherwise the first button set.
So the two warnings above resolve to Open and the project loads,
which is what a batch invocation wants.
*/
void setNonInteractive(bool non_interactive);
bool isNonInteractive();
QMessageBox::StandardButton critical (
QWidget *,
const QString &,
const QString &,
QMessageBox::StandardButtons = QMessageBox::Ok,
QMessageBox::StandardButton = QMessageBox::NoButton);
QMessageBox::StandardButton information(
QWidget *,
const QString &,
const QString &,
QMessageBox::StandardButtons = QMessageBox::Ok,
QMessageBox::StandardButton = QMessageBox::NoButton);
QMessageBox::StandardButton question (
QWidget *,
const QString &,
const QString &,
QMessageBox::StandardButtons = QMessageBox::Ok,
QMessageBox::StandardButton = QMessageBox::NoButton);
QMessageBox::StandardButton warning (
QWidget *,
const QString &,
const QString &,
QMessageBox::StandardButtons = QMessageBox::Ok,
QMessageBox::StandardButton = QMessageBox::NoButton);
};
};
#endif