]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiAlert.cpp
* fix spelling in comments to please John.
[lyx.git] / src / frontends / qt4 / GuiAlert.cpp
index 983d58d1c1056f6d05268c481ea7f88fc849a9b7..2a8affa33a6cfc1b2927bf28d23695d49487892c 100644 (file)
 
 #include "alert.h"
 
+
 #include "frontends/Application.h"
 
 #include "qt_helpers.h"
 #include "LyX.h" // for lyx::use_gui
-#include "ui_AskForTextUi.h"
-#include "ui_ToggleWarningUi.h"
 #include "support/gettext.h"
 
 #include "support/debug.h"
 #include "support/docstring.h"
 #include "support/lstrings.h"
+#include "support/ProgressInterface.h"
 
 #include <QApplication>
 #include <QCheckBox>
@@ -43,15 +43,6 @@ namespace lyx {
 namespace frontend {
 
 
-class GuiToggleWarningDialog : public QDialog, public Ui::ToggleWarningUi
-{
-public:
-       GuiToggleWarningDialog(QWidget * parent) : QDialog(parent)
-       {
-               Ui::ToggleWarningUi::setupUi(this);
-               QDialog::setModal(true);
-       }
-};
 
 
 static docstring const formatted(docstring const & text)
@@ -114,26 +105,18 @@ static docstring const formatted(docstring const & text)
 }
 
 
-void toggleWarning(docstring const & title, docstring const & msg)
+void noAppDialog(QString const & title, QString const & msg, QMessageBox::Icon mode)
 {
-       if (!use_gui)
-               return;
-
-       QSettings settings;
-       if (settings.value("hidden_warnings/" + toqstr(msg), false).toBool())
-               return;
-
-       GuiToggleWarningDialog * dlg =
-               new GuiToggleWarningDialog(qApp->focusWidget());
-
-       dlg->setWindowTitle(toqstr(title));
-       dlg->messageLA->setText(toqstr(formatted(msg)));
-       dlg->dontShowAgainCB->setChecked(false);
-
-       if (dlg->exec() == QDialog::Accepted)
-               if (dlg->dontShowAgainCB->isChecked())
-                       settings.setValue("hidden_warnings/"
-                               + toqstr(msg), true);
+       int argc = 1;
+       char * argv[1];
+       QApplication app(argc, argv);
+       switch (mode)
+       {
+               case QMessageBox::Information: QMessageBox::information(0, title, msg); break;
+               case QMessageBox::Warning: QMessageBox::warning(0, title, msg); break;
+               case QMessageBox::Critical: QMessageBox::critical(0, title, msg); break;
+               default: break;
+       }
 }
 
 
@@ -161,10 +144,9 @@ int prompt(docstring const & title0, docstring const & question,
 
        docstring const title = bformat(_("LyX: %1$s"), title0);
 
-       // For some reason, sometimes Qt uses an hourglass or watch cursor when
+       // For some reason, sometimes Qt uses a hourglass or watch cursor when
        // displaying the alert. Hence, we ask for the standard cursor shape.
-       // This call has no effect if the cursor has not been overridden.
-       qApp->changeOverrideCursor(Qt::ArrowCursor);
+       qApp->setOverrideCursor(Qt::ArrowCursor);
 
        // FIXME replace that with guiApp->currentView()
        //LYXERR0("FOCUS: " << qApp->focusWidget());
@@ -176,6 +158,8 @@ int prompt(docstring const & title0, docstring const & question,
                                           b3.empty() ? QString::null : toqstr(b3),
                                           default_button, cancel_button);
 
+       qApp->restoreOverrideCursor();
+
        // Qt bug: can return -1 on cancel or WM close, despite the docs.
        if (res == -1)
                res = cancel_button;
@@ -196,25 +180,27 @@ void warning(docstring const & title0, docstring const & message,
        docstring const title = bformat(_("LyX: %1$s"), title0);
 
        if (theApp() == 0) {
-               int argc = 1;
-               char * argv[1];
-               QApplication app(argc, argv);
-               QMessageBox::warning(0,
-                       toqstr(title),
-                       toqstr(formatted(message)));
+               noAppDialog(toqstr(title), toqstr(formatted(message)), QMessageBox::Warning);
                return;
        }
-       if (!askshowagain)
-               QMessageBox::warning(qApp->focusWidget(),
+
+       // Don't use a hourglass cursor while displaying the alert
+       qApp->setOverrideCursor(Qt::ArrowCursor);
+
+       if (!askshowagain) {
+               ProgressInterface::instance()->warning(
                                toqstr(title),
                                toqstr(formatted(message)));
-       else
-               toggleWarning(title, message);
-}
+       } else {
+               ProgressInterface::instance()->toggleWarning(
+                               toqstr(title),
+                               toqstr(message),
+                               toqstr(formatted(message)));
+       }
 
+       qApp->restoreOverrideCursor();
+}
 
-int argc = 1;
-char * argv[1];
 
 void error(docstring const & title0, docstring const & message)
 {
@@ -226,16 +212,20 @@ void error(docstring const & title0, docstring const & message)
                return;
 
        docstring const title = bformat(_("LyX: %1$s"), title0);
+
        if (theApp() == 0) {
-               QApplication app(argc, argv);
-               QMessageBox::critical(0,
-                       toqstr(title),
-                       toqstr(formatted(message)));
+               noAppDialog(toqstr(title), toqstr(formatted(message)), QMessageBox::Critical);
                return;
        }
-       QMessageBox::critical(qApp->focusWidget(),
-                             toqstr(title),
-                             toqstr(formatted(message)));
+
+       // Don't use a hourglass cursor while displaying the alert
+       qApp->setOverrideCursor(Qt::ArrowCursor);
+
+       ProgressInterface::instance()->error(
+               toqstr(title),
+               toqstr(formatted(message)));
+
+       qApp->restoreOverrideCursor();
 }
 
 
@@ -250,9 +240,20 @@ void information(docstring const & title0, docstring const & message)
                return;
 
        docstring const title = bformat(_("LyX: %1$s"), title0);
-       QMessageBox::information(qApp->focusWidget(),
-                                toqstr(title),
-                                toqstr(formatted(message)));
+
+       if (theApp() == 0) {
+               noAppDialog(toqstr(title), toqstr(formatted(message)), QMessageBox::Information);
+               return;
+       }
+
+       // Don't use a hourglass cursor while displaying the alert
+       qApp->setOverrideCursor(Qt::ArrowCursor);
+
+       ProgressInterface::instance()->information(
+               toqstr(title),
+               toqstr(formatted(message)));
+
+       qApp->restoreOverrideCursor();
 }